From e4beef9fb8472c688e603a75fda7b2e57be3a603 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 20:40:42 +0000 Subject: [PATCH] Publish source maps for version 6.0.3 --- chrome-beta/6.0.3/background.js.map | 1 + chrome-beta/6.0.3/content.js.LICENSE.txt | 29 +++++++++++++++++++++++ chrome-beta/6.0.3/content.js.map | 1 + chrome-beta/6.0.3/help.js.map | 1 + chrome-beta/6.0.3/options.js.LICENSE.txt | 29 +++++++++++++++++++++++ chrome-beta/6.0.3/options.js.map | 1 + chrome-beta/6.0.3/permissions.js.map | 1 + chrome-beta/6.0.3/popup.js.LICENSE.txt | 29 +++++++++++++++++++++++ chrome-beta/6.0.3/popup.js.map | 1 + chrome/6.0.3/background.js.map | 1 + chrome/6.0.3/content.js.LICENSE.txt | 29 +++++++++++++++++++++++ chrome/6.0.3/content.js.map | 1 + chrome/6.0.3/help.js.map | 1 + chrome/6.0.3/options.js.LICENSE.txt | 29 +++++++++++++++++++++++ chrome/6.0.3/options.js.map | 1 + chrome/6.0.3/permissions.js.map | 1 + chrome/6.0.3/popup.js.LICENSE.txt | 29 +++++++++++++++++++++++ chrome/6.0.3/popup.js.map | 1 + edge/6.0.3/background.js.map | 1 + edge/6.0.3/content.js.LICENSE.txt | 29 +++++++++++++++++++++++ edge/6.0.3/content.js.map | 1 + edge/6.0.3/help.js.map | 1 + edge/6.0.3/options.js.LICENSE.txt | 29 +++++++++++++++++++++++ edge/6.0.3/options.js.map | 1 + edge/6.0.3/permissions.js.map | 1 + edge/6.0.3/popup.js.LICENSE.txt | 29 +++++++++++++++++++++++ edge/6.0.3/popup.js.map | 1 + firefox-beta/6.0.3/background.js.map | 1 + firefox-beta/6.0.3/content.js.LICENSE.txt | 29 +++++++++++++++++++++++ firefox-beta/6.0.3/content.js.map | 1 + firefox-beta/6.0.3/help.js.map | 1 + firefox-beta/6.0.3/options.js.LICENSE.txt | 29 +++++++++++++++++++++++ firefox-beta/6.0.3/options.js.map | 1 + firefox-beta/6.0.3/permissions.js.map | 1 + firefox-beta/6.0.3/popup.js.LICENSE.txt | 29 +++++++++++++++++++++++ firefox-beta/6.0.3/popup.js.map | 1 + firefox/6.0.3/background.js.map | 1 + firefox/6.0.3/content.js.LICENSE.txt | 29 +++++++++++++++++++++++ firefox/6.0.3/content.js.map | 1 + firefox/6.0.3/help.js.map | 1 + firefox/6.0.3/options.js.LICENSE.txt | 29 +++++++++++++++++++++++ firefox/6.0.3/options.js.map | 1 + firefox/6.0.3/permissions.js.map | 1 + firefox/6.0.3/popup.js.LICENSE.txt | 29 +++++++++++++++++++++++ firefox/6.0.3/popup.js.map | 1 + safari/6.0.3/background.js.map | 1 + safari/6.0.3/content.js.LICENSE.txt | 29 +++++++++++++++++++++++ safari/6.0.3/content.js.map | 1 + safari/6.0.3/help.js.map | 1 + safari/6.0.3/options.js.LICENSE.txt | 29 +++++++++++++++++++++++ safari/6.0.3/options.js.map | 1 + safari/6.0.3/permissions.js.map | 1 + safari/6.0.3/popup.js.LICENSE.txt | 29 +++++++++++++++++++++++ safari/6.0.3/popup.js.map | 1 + 54 files changed, 558 insertions(+) create mode 100644 chrome-beta/6.0.3/background.js.map create mode 100644 chrome-beta/6.0.3/content.js.LICENSE.txt create mode 100644 chrome-beta/6.0.3/content.js.map create mode 100644 chrome-beta/6.0.3/help.js.map create mode 100644 chrome-beta/6.0.3/options.js.LICENSE.txt create mode 100644 chrome-beta/6.0.3/options.js.map create mode 100644 chrome-beta/6.0.3/permissions.js.map create mode 100644 chrome-beta/6.0.3/popup.js.LICENSE.txt create mode 100644 chrome-beta/6.0.3/popup.js.map create mode 100644 chrome/6.0.3/background.js.map create mode 100644 chrome/6.0.3/content.js.LICENSE.txt create mode 100644 chrome/6.0.3/content.js.map create mode 100644 chrome/6.0.3/help.js.map create mode 100644 chrome/6.0.3/options.js.LICENSE.txt create mode 100644 chrome/6.0.3/options.js.map create mode 100644 chrome/6.0.3/permissions.js.map create mode 100644 chrome/6.0.3/popup.js.LICENSE.txt create mode 100644 chrome/6.0.3/popup.js.map create mode 100644 edge/6.0.3/background.js.map create mode 100644 edge/6.0.3/content.js.LICENSE.txt create mode 100644 edge/6.0.3/content.js.map create mode 100644 edge/6.0.3/help.js.map create mode 100644 edge/6.0.3/options.js.LICENSE.txt create mode 100644 edge/6.0.3/options.js.map create mode 100644 edge/6.0.3/permissions.js.map create mode 100644 edge/6.0.3/popup.js.LICENSE.txt create mode 100644 edge/6.0.3/popup.js.map create mode 100644 firefox-beta/6.0.3/background.js.map create mode 100644 firefox-beta/6.0.3/content.js.LICENSE.txt create mode 100644 firefox-beta/6.0.3/content.js.map create mode 100644 firefox-beta/6.0.3/help.js.map create mode 100644 firefox-beta/6.0.3/options.js.LICENSE.txt create mode 100644 firefox-beta/6.0.3/options.js.map create mode 100644 firefox-beta/6.0.3/permissions.js.map create mode 100644 firefox-beta/6.0.3/popup.js.LICENSE.txt create mode 100644 firefox-beta/6.0.3/popup.js.map create mode 100644 firefox/6.0.3/background.js.map create mode 100644 firefox/6.0.3/content.js.LICENSE.txt create mode 100644 firefox/6.0.3/content.js.map create mode 100644 firefox/6.0.3/help.js.map create mode 100644 firefox/6.0.3/options.js.LICENSE.txt create mode 100644 firefox/6.0.3/options.js.map create mode 100644 firefox/6.0.3/permissions.js.map create mode 100644 firefox/6.0.3/popup.js.LICENSE.txt create mode 100644 firefox/6.0.3/popup.js.map create mode 100644 safari/6.0.3/background.js.map create mode 100644 safari/6.0.3/content.js.LICENSE.txt create mode 100644 safari/6.0.3/content.js.map create mode 100644 safari/6.0.3/help.js.map create mode 100644 safari/6.0.3/options.js.LICENSE.txt create mode 100644 safari/6.0.3/options.js.map create mode 100644 safari/6.0.3/permissions.js.map create mode 100644 safari/6.0.3/popup.js.LICENSE.txt create mode 100644 safari/6.0.3/popup.js.map diff --git a/chrome-beta/6.0.3/background.js.map b/chrome-beta/6.0.3/background.js.map new file mode 100644 index 00000000..6fb80340 --- /dev/null +++ b/chrome-beta/6.0.3/background.js.map @@ -0,0 +1 @@ +{"version":3,"file":"background.js","mappings":"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","sources":["webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/tab-updates.ts","webpack:///./src/background.ts","webpack:///./src/config.ts","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/requests.ts","webpack:///./node_modules/webext-polyfill-kinda/index.js","webpack:///./node_modules/webext-patterns/index.js","webpack:///./node_modules/webext-content-scripts/index.js","webpack:///./node_modules/content-scripts-register-polyfill/ponyfill.js","webpack:///./node_modules/content-scripts-register-polyfill/index.js","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage } from \"./config\";\n\nfunction onTabUpdatedListener(tabId: number) {\n chrome.tabs.sendMessage(tabId, {\n message: 'update',\n }, () => void chrome.runtime.lastError ); // Suppress error on Firefox\n}\n\nfunction onNavigationApiAvailableChange(changes: {[key: string]: chrome.storage.StorageChange}) {\n if (changes.navigationApiAvailable) {\n if (changes.navigationApiAvailable.newValue) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n } else {\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n }\n }\n}\n\nexport function setupTabUpdates(config: ProtoConfig) {\n // If Navigation API is not supported, then background has to inform content script about video change.\n // This happens on Safari, Firefox, and Chromium 101 (inclusive) and below.\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n void waitFor(() => config.local !== null).then(() => {\n if (config.local!.navigationApiAvailable) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n }\n });\n\n if (!config.configSyncListeners.includes(onNavigationApiAvailableChange)) {\n config.configSyncListeners.push(onNavigationApiAvailableChange);\n }\n}","import * as CompileConfig from \"../config.json\";\n\nimport Config from \"./config\";\nimport { Registration } from \"./types\";\nimport \"content-scripts-register-polyfill\";\nimport { sendRealRequestToCustomServer, serializeOrStringify, setupBackgroundRequestProxy } from \"../maze-utils/src/background-request-proxy\";\nimport { setupTabUpdates } from \"../maze-utils/src/tab-updates\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\n\nimport Utils from \"./utils\";\nimport { getExtensionIdsToImportFrom } from \"./utils/crossExtension\";\nimport { isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { injectUpdatedScripts } from \"../maze-utils/src/cleanup\";\nimport { logWarn } from \"./utils/logger\";\nimport { chromeP } from \"../maze-utils/src/browserApi\";\nimport { getHash } from \"../maze-utils/src/hash\";\nconst utils = new Utils({\n registerFirefoxContentScript,\n unregisterFirefoxContentScript\n});\n\nconst popupPort: Record = {};\n\n// Used only on Firefox, which does not support non persistent background pages.\nconst contentScriptRegistrations = {};\n\n// Register content script if needed\nutils.wait(() => Config.isReady()).then(function() {\n if (Config.config.supportInvidious) utils.setupExtraSiteContentScripts();\n});\n\nsetupBackgroundRequestProxy();\nsetupTabUpdates(Config);\n\nchrome.runtime.onMessage.addListener(function (request, sender, callback) {\n switch(request.message) {\n case \"openConfig\":\n chrome.tabs.create({url: chrome.runtime.getURL('options/options.html' + (request.hash ? '#' + request.hash : ''))});\n return false;\n case \"openHelp\":\n chrome.tabs.create({url: chrome.runtime.getURL('help/index.html')});\n return false;\n case \"openPage\":\n chrome.tabs.create({url: chrome.runtime.getURL(request.url)});\n return false;\n case \"submitVote\":\n submitVote(request.type, request.UUID, request.category, request.videoID).then(callback);\n\n //this allows the callback to be called later\n return true;\n case \"registerContentScript\":\n registerFirefoxContentScript(request);\n return false;\n case \"unregisterContentScript\":\n unregisterFirefoxContentScript(request.id)\n return false;\n case \"tabs\": {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n chrome.tabs.sendMessage(\n tabs[0].id,\n request.data,\n (response) => {\n callback(response);\n }\n );\n });\n return true;\n }\n case \"time\":\n case \"infoUpdated\":\n case \"videoChanged\":\n if (sender.tab) {\n try {\n popupPort[sender.tab.id]?.postMessage(request);\n } catch (e) {\n // This can happen if the popup is closed\n }\n }\n return false;\n default:\n return false;\n\t}\n});\n\nchrome.runtime.onMessageExternal.addListener((request, sender, callback) => {\n if (getExtensionIdsToImportFrom().includes(sender.id)) {\n if (request.message === \"requestConfig\") {\n callback({\n userID: Config.config.userID,\n allowExpirements: Config.config.allowExpirements,\n showDonationLink: Config.config.showDonationLink,\n showUpsells: Config.config.showUpsells,\n darkMode: Config.config.darkMode,\n })\n }\n }\n});\n\nchrome.runtime.onConnect.addListener((port) => {\n if (port.name === \"popup\") {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n popupPort[tabs[0].id] = port;\n });\n }\n});\n\n//add help page on install\nchrome.runtime.onInstalled.addListener(function () {\n // This let's the config sync to run fully before checking.\n // This is required on Firefox\n setTimeout(async () => {\n const userID = Config.config.userID;\n\n // If there is no userID, then it is the first install.\n if (!userID && !Config.local.alreadyInstalled){\n //open up the install page\n chrome.tabs.create({url: chrome.runtime.getURL(\"/help/index.html\")});\n\n //generate a userID\n const newUserID = generateUserID();\n //save this UUID\n Config.config.userID = newUserID;\n Config.local.alreadyInstalled = true;\n\n // Don't show update notification\n Config.config.categoryPillUpdate = true;\n }\n\n if (Config.config.supportInvidious) {\n if (!(await utils.containsInvidiousPermission())) {\n chrome.tabs.create({url: chrome.runtime.getURL(\"/permissions/index.html\")});\n }\n }\n\n getHash(Config.config!.userID!).then((userID) => {\n if (userID == \"60eed03c8644b7efa32df06977b3a4c11b62f63518e74a0e29baa1fd449cb54f\") {\n Config.config.prideTheme = true;\n }\n });\n }, 1500);\n\n if (!isFirefoxOrSafari()) {\n injectUpdatedScripts().catch(logWarn);\n\n waitFor(() => Config.isReady()).then(() => {\n if (Config.config.supportInvidious) {\n injectUpdatedScripts([\n utils.getExtraSiteRegistration()\n ])\n }\n }).catch(logWarn);\n }\n});\n\n/**\n * Only works on Firefox.\n * Firefox requires that it be applied after every extension restart.\n *\n * @param {JSON} options\n */\nasync function registerFirefoxContentScript(options: Registration) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n const existingRegistrations = await chromeP.scripting.getRegisteredContentScripts({\n ids: [options.id]\n }).catch(() => []);\n\n if (existingRegistrations && existingRegistrations.length > 0 \n && options.matches.every((match) => existingRegistrations[0].matches.includes(match))) {\n // No need to register another script, already registered\n return;\n }\n }\n\n await unregisterFirefoxContentScript(options.id);\n\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n await chromeP.scripting.registerContentScripts([{\n id: options.id,\n runAt: \"document_start\",\n matches: options.matches,\n allFrames: options.allFrames,\n js: options.js,\n css: options.css,\n persistAcrossSessions: true,\n }]);\n } else {\n chrome.contentScripts.register({\n allFrames: options.allFrames,\n js: options.js?.map?.(file => ({file})),\n css: options.css?.map?.(file => ({file})),\n matches: options.matches\n }).then((registration) => void (contentScriptRegistrations[options.id] = registration));\n }\n\n}\n\n/**\n * Only works on Firefox.\n * Firefox requires that this is handled by the background script\n */\nasync function unregisterFirefoxContentScript(id: string) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n try {\n await chromeP.scripting.unregisterContentScripts({\n ids: [id]\n });\n } catch (e) {\n // Not registered yet\n }\n } else {\n if (contentScriptRegistrations[id]) {\n contentScriptRegistrations[id].unregister();\n delete contentScriptRegistrations[id];\n }\n }\n}\n\nasync function submitVote(type: number, UUID: string, category: string, videoID: string) {\n let userID = Config.config.userID;\n\n if (userID == undefined || userID === \"undefined\") {\n //generate one\n userID = generateUserID();\n Config.config.userID = userID;\n }\n\n const typeSection = (type !== undefined) ? \"&type=\" + type : \"&category=\" + category;\n\n try {\n const response = await asyncRequestToServer(\"POST\", \"/api/voteOnSponsorTime?UUID=\" + UUID + \"&videoID=\" + videoID + \"&userID=\" + userID + typeSection);\n\n return {\n status: response.status,\n ok: response.ok,\n responseText: await response.text(),\n };\n } catch (e) {\n console.error(\"Error while voting:\", e);\n return {\n error: serializeOrStringify(e),\n };\n }\n}\n\n\nasync function asyncRequestToServer(type: string, address: string, data = {}) {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRealRequestToCustomServer(type, serverAddress + address, data));\n}\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","function NestedProxy(target) {\n\treturn new Proxy(target, {\n\t\tget(target, prop) {\n\t\t\tif (!target[prop]) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof target[prop] !== 'function') {\n\t\t\t\treturn new NestedProxy(target[prop]);\n\t\t\t}\n\n\t\t\treturn (...arguments_) =>\n\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\ttarget[prop](...arguments_, result => {\n\t\t\t\t\t\tif (chrome.runtime.lastError) {\n\t\t\t\t\t\t\treject(new Error(chrome.runtime.lastError.message));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t});\n}\n\nconst chromeP = globalThis.chrome && new NestedProxy(globalThis.chrome);\n\nexport default chromeP;\n","import escapeStringRegexp from 'escape-string-regexp';\n// Copied from https://github.com/mozilla/gecko-dev/blob/073cc24f53d0cf31403121d768812146e597cc9d/toolkit/components/extensions/schemas/manifest.json#L487-L491\nexport const patternValidationRegex = /^(https?|wss?|file|ftp|\\*):\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^file:\\/\\/\\/.*$|^resource:\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^about:/;\nconst isFirefox = typeof navigator === 'object' && navigator.userAgent.includes('Firefox/');\nexport const allStarsRegex = isFirefox\n ? /^(https?|wss?):[/][/][^/]+([/].*)?$/\n : /^https?:[/][/][^/]+([/].*)?$/;\nexport const allUrlsRegex = /^(https?|file|ftp):[/]+/;\nfunction getRawPatternRegex(matchPattern) {\n if (!patternValidationRegex.test(matchPattern)) {\n throw new Error(matchPattern + ' is an invalid pattern, it must match ' + String(patternValidationRegex));\n }\n let [, protocol, host, pathname] = matchPattern.split(/(^[^:]+:[/][/])([^/]+)?/);\n protocol = protocol\n .replace('*', isFirefox ? '(https?|wss?)' : 'https?') // Protocol wildcard\n .replace(/[/]/g, '[/]'); // Escape slashes\n host = (host !== null && host !== void 0 ? host : '') // Undefined for file:///\n .replace(/^[*][.]/, '([^/]+.)*') // Initial wildcard\n .replace(/^[*]$/, '[^/]+') // Only wildcard\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]$/g, '[^.]+'); // Last wildcard\n pathname = pathname\n .replace(/[/]/g, '[/]') // Escape slashes\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]/g, '.*'); // Any wildcard\n return '^' + protocol + host + '(' + pathname + ')?$';\n}\nexport function patternToRegex(...matchPatterns) {\n // No pattern, match nothing https://stackoverflow.com/q/14115522/288906\n if (matchPatterns.length === 0) {\n return /$./;\n }\n if (matchPatterns.includes('')) {\n return allUrlsRegex;\n }\n if (matchPatterns.includes('*://*/*')) {\n return allStarsRegex;\n }\n return new RegExp(matchPatterns.map(x => getRawPatternRegex(x)).join('|'));\n}\n// The parens are required by .split() to preserve the symbols\nconst globSymbols = /([?*]+)/;\nfunction splitReplace(part, index) {\n if (part === '') {\n // Shortcut for speed\n return '';\n }\n if (index % 2 === 0) {\n // Raw text, escape it\n return escapeStringRegexp(part);\n }\n // Else: Symbol\n if (part.includes('*')) { // Can be more than one and it swallows surrounding question marks\n return '.*';\n }\n return [...part].map(() => isFirefox ? '.' : '.?').join('');\n}\nfunction getRawGlobRegex(glob) {\n const regexString = glob\n .split(globSymbols)\n // eslint-disable-next-line unicorn/no-array-callback-reference -- tis ok 🤫\n .map(splitReplace)\n .join('');\n // Drop \"start with anything\" and \"end with anything\" sequences because they're the default for regex\n return ('^' + regexString + '$')\n .replace(/^[.][*]/, '')\n .replace(/[.][*]$/, '')\n .replace(/^[$]$/, '.+'); // Catch `*` and `*`\n}\nexport function globToRegex(...globs) {\n // No glob, match anything; `include_globs: []` is the default\n if (globs.length === 0) {\n return /.*/;\n }\n return new RegExp(globs.map(x => getRawGlobRegex(x)).join('|'));\n}\nexport function excludeDuplicatePatterns(matchPatterns) {\n if (matchPatterns.includes('')) {\n return [''];\n }\n if (matchPatterns.includes('*://*/*')) {\n return ['*://*/*'];\n }\n return matchPatterns.filter(possibleSubset => !matchPatterns.some(possibleSuperset => possibleSubset !== possibleSuperset && patternToRegex(possibleSuperset).test(possibleSubset)));\n}\n","import chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst gotScripting = Boolean(globalThis.chrome?.scripting);\nfunction castTarget(target) {\n return typeof target === 'object' ? target : {\n tabId: target,\n frameId: 0,\n };\n}\nfunction castAllFramesTarget(target) {\n if (typeof target === 'object') {\n return { ...target, allFrames: false };\n }\n return {\n tabId: target,\n frameId: undefined,\n allFrames: true,\n };\n}\nfunction castArray(possibleArray) {\n if (Array.isArray(possibleArray)) {\n return possibleArray;\n }\n return [possibleArray];\n}\nconst nativeFunction = /^function \\w+\\(\\) {[\\n\\s]+\\[native code][\\n\\s]+}/;\nexport async function executeFunction(target, function_, ...args) {\n if (nativeFunction.test(String(function_))) {\n throw new TypeError('Native functions need to be wrapped first, like `executeFunction(1, () => alert(1))`');\n }\n const { frameId, tabId } = castTarget(target);\n if (gotScripting) {\n const [injection] = await chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: [frameId],\n },\n func: function_,\n args,\n });\n return injection?.result;\n }\n const [result] = await chromeP.tabs.executeScript(tabId, {\n code: `(${function_.toString()})(...${JSON.stringify(args)})`,\n frameId,\n });\n return result;\n}\nfunction arrayOrUndefined(value) {\n return value === undefined ? undefined : [value];\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention -- It follows the native naming\nexport async function insertCSS({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const everyInsertion = Promise.all(files.map(async (content) => {\n if (typeof content === 'string') {\n content = { file: content };\n }\n if (gotScripting) {\n return chrome.scripting.insertCSS({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: 'file' in content ? [content.file] : undefined,\n css: 'code' in content ? content.code : undefined,\n });\n }\n return chromeP.tabs.insertCSS(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt: runAt ?? 'document_start', // CSS should prefer `document_start` when unspecified\n });\n }));\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(everyInsertion);\n }\n else {\n await everyInsertion;\n }\n}\nfunction assertNoCode(files) {\n if (files.some(content => 'code' in content)) {\n throw new Error('chrome.scripting does not support injecting strings of `code`');\n }\n}\nexport async function executeScript({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const normalizedFiles = files.map(file => typeof file === 'string' ? { file } : file);\n if (gotScripting) {\n assertNoCode(normalizedFiles);\n const injection = chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: normalizedFiles.map(({ file }) => file),\n });\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(injection);\n }\n else {\n await injection;\n }\n // Don't return `injection`; the \"return value\" of a file is generally not useful\n return;\n }\n // Don't use .map(), `code` injections can't be \"parallel\"\n const executions = [];\n for (const content of normalizedFiles) {\n // Files are executed in order, but `code` isn’t, so it must await the last script before injecting more\n if ('code' in content) {\n // eslint-disable-next-line no-await-in-loop -- On purpose, see above\n await executions.at(-1);\n }\n executions.push(chromeP.tabs.executeScript(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt,\n }));\n }\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(Promise.all(executions));\n }\n else {\n await Promise.all(executions);\n }\n}\nexport async function getTabsByUrl(matches, excludeMatches) {\n if (matches.length === 0) {\n return [];\n }\n const exclude = excludeMatches ? patternToRegex(...excludeMatches) : undefined;\n const tabs = await chromeP.tabs.query({ url: matches });\n return tabs\n .filter(tab => tab.id && tab.url && (exclude ? !exclude.test(tab.url) : true))\n .map(tab => tab.id);\n}\nexport async function injectContentScript(where, scripts, options = {}) {\n const targets = castArray(where);\n await Promise.all(targets.map(async (target) => injectContentScriptInSpecificTarget(castAllFramesTarget(target), scripts, options)));\n}\nasync function injectContentScriptInSpecificTarget({ frameId, tabId, allFrames }, scripts, options = {}) {\n const injections = castArray(scripts).flatMap(script => [\n insertCSS({\n tabId,\n frameId,\n allFrames,\n files: script.css ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n executeScript({\n tabId,\n frameId,\n allFrames,\n files: script.js ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n ]);\n await Promise.all(injections);\n}\n// Sourced from:\n// https://source.chromium.org/chromium/chromium/src/+/main:extensions/common/extension_urls.cc;drc=6b42116fe3b3d93a77750bdcc07948e98a728405;l=29\n// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts\nconst blockedPrefixes = [\n 'chrome.google.com/webstore',\n 'accounts-static.cdn.mozilla.net',\n 'accounts.firefox.com',\n 'addons.cdn.mozilla.net',\n 'addons.mozilla.org',\n 'api.accounts.firefox.com',\n 'content.cdn.mozilla.net',\n 'discovery.addons.mozilla.org',\n 'input.mozilla.org',\n 'install.mozilla.org',\n 'oauth.accounts.firefox.com',\n 'profile.accounts.firefox.com',\n 'support.mozilla.org',\n 'sync.services.mozilla.com',\n 'testpilot.firefox.com',\n];\nexport function isScriptableUrl(url) {\n if (!url.startsWith('http')) {\n return false;\n }\n const cleanUrl = url.replace(/^https?:\\/\\//, '');\n return blockedPrefixes.every(blocked => !cleanUrl.startsWith(blocked));\n}\nconst targetErrors = /^No frame with id \\d+ in tab \\d+.$|^No tab with id: \\d+.$|^The tab was closed.$|^The frame was removed.$/;\nasync function catchTargetInjectionErrors(promise) {\n try {\n await promise;\n }\n catch (error) {\n // @ts-expect-error Optional chaining is good enough\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!targetErrors.test(error?.message)) {\n throw error;\n }\n }\n}\n","import { injectContentScript } from 'webext-content-scripts';\nimport chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst noMatchesError = 'Type error for parameter contentScriptOptions (Error processing matches: Array requires at least 1 items; you have 0) for contentScripts.register.';\nconst noPermissionError = 'Permission denied to register a content script for ';\nconst gotNavigation = typeof chrome === 'object' && 'webNavigation' in chrome;\nasync function isOriginPermitted(url) {\n return chromeP.permissions.contains({\n origins: [new URL(url).origin + '/*'],\n });\n}\n// The callback is only used by webextension-polyfill\nexport default async function registerContentScript(contentScriptOptions, callback) {\n const { js = [], css = [], matchAboutBlank, matches = [], excludeMatches, runAt, } = contentScriptOptions;\n let { allFrames } = contentScriptOptions;\n if (gotNavigation) {\n allFrames = false;\n }\n else if (allFrames) {\n console.warn('`allFrames: true` requires the `webNavigation` permission to work correctly: https://github.com/fregante/content-scripts-register-polyfill#permissions');\n }\n if (matches.length === 0) {\n throw new Error(noMatchesError);\n }\n await Promise.all(matches.map(async (pattern) => {\n if (!await chromeP.permissions.contains({ origins: [pattern] })) {\n throw new Error(noPermissionError + pattern);\n }\n }));\n const matchesRegex = patternToRegex(...matches);\n const excludeMatchesRegex = patternToRegex(...excludeMatches !== null && excludeMatches !== void 0 ? excludeMatches : []);\n const inject = async (url, tabId, frameId = 0) => {\n if (!matchesRegex.test(url) // Manual `matches` glob matching\n || excludeMatchesRegex.test(url) // Manual `exclude_matches` glob matching\n || !await isOriginPermitted(url) // Without this, we might have temporary access via accessTab\n ) {\n return;\n }\n await injectContentScript({\n tabId,\n frameId,\n }, {\n css,\n js,\n matchAboutBlank,\n runAt,\n }, {\n ignoreTargetErrors: true,\n });\n };\n const tabListener = async (tabId, { status }, { url }) => {\n // Only status updates are relevant\n // No URL = no permission\n if (status === 'loading' && url) {\n void inject(url, tabId);\n }\n };\n const navListener = async ({ tabId, frameId, url, }) => {\n void inject(url, tabId, frameId);\n };\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.addListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.addListener(tabListener);\n }\n const registeredContentScript = {\n async unregister() {\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.removeListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.removeListener(tabListener);\n }\n },\n };\n if (typeof callback === 'function') {\n callback(registeredContentScript);\n }\n return registeredContentScript;\n}\n","/// \n// The .js extension is required to create ESM-compatible file\nimport register from './ponyfill.js';\nif (typeof chrome === 'object' && !chrome.contentScripts) {\n chrome.contentScripts = { register };\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(1398);\n"],"names":["sendRealRequestToCustomServer","type","url","data","headers","toLowerCase","objectToURI","fetch","method","redirect","body","JSON","stringify","isSerializable","value","window","structuredClone","serializeOrStringify","toString","String","chrome","runtime","onMessage","addListener","request","sender","callback","message","then","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","Array","from","Uint8Array","arrayBuffer","responseText","text","responseBinary","returnHeaders","entries","reduce","acc","key","status","ok","catch","error","console","getHash","times","e","Promise","resolve","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","cleanupListeners","getCleanupId","id","listener","push","source","started","performance","now","postMessage","addEventListener","extraScripts","ignoreNormalScipts","scripts","concat","getManifest","content_scripts","cs","tab","tabs","query","matches","css","length","scripting","insertCSS","target","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","match","replace","file","navigator","vendor","formatKey","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","Date","add","delayUpdate","items","clear","map","v","k","setTimeout","get","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","location","href","includes","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","isVisible","element","ignoreWidth","tagName","classList","contains","document","querySelectorAll","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","left","width","top","height","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","textContent","trim","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","node","possibleElements","disconnect","MutationObserver","observe","documentElement","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","Math","max","hours","floor","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","isNaN","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","digest","TextEncoder","encode","b","padStart","join","condition","timeout","check","interval","intervalCheck","clearInterval","Error","stack","setInterval","includeQuestionMark","counter","seperator","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","version","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","random","localizedTitle","title","localizedMessage","innerHTML","onTabUpdatedListener","onNavigationApiAvailableChange","navigationApiAvailable","onUpdated","removeListener","waitFor","utils","registerFirefoxContentScript","unregisterFirefoxContentScript","popupPort","contentScriptRegistrations","options","existingRegistrations","getRegisteredContentScripts","ids","every","registerContentScripts","runAt","allFrames","persistAcrossSessions","contentScripts","register","registration","unregisterContentScripts","unregister","wait","supportInvidious","setupExtraSiteContentScripts","setupBackgroundRequestProxy","setupTabUpdates","create","getURL","hash","UUID","category","videoID","userID","generateUserID","typeSection","address","serverAddress","testingServer","CompileConfig","testingServerAddress","asyncRequestToServer","submitVote","active","currentWindow","onMessageExternal","getExtensionIdsToImportFrom","allowExpirements","showDonationLink","showUpsells","darkMode","onConnect","port","name","onInstalled","alreadyInstalled","newUserID","categoryPillUpdate","containsInvidiousPermission","prideTheme","injectUpdatedScripts","logWarn","getExtraSiteRegistration","ConfigClass","ProtoConfig","resetToDefault","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","ytInfoPermissionGranted","showPopupDonationCount","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","hookUpdate","showChapterInfoMessage","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","s","channelID","keys","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","removeExtraSiteRegistration","applyInvidiousPermissions","enable","getMergedTimestamps","timestamps","deduped","forEach","range","startOverlaps","findIndex","other","endOverlaps","other1","splice","other2","min","slice","getTimestampsDuration","getSponsorIndexFromUUID","sponsorTimes","startsWith","getSponsorTimeFromUUID","domains","permissionRegex","findReferenceNode","referenceNode","findValidElementFromSelector","player","getElementById","firstChild","index","children","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","hidden","extension","inIncognitoContext","segmentIDData","formatJSErrorMessage","logRequest","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","segments","lastAccess","existingData","segment","uuid","Visible","indexOf","extensionImportList","safari","firefox","chromium","extensionIds","count","toISOString","log","sendRequestToCustomServer","globalThis","NestedProxy","arguments_","patternValidationRegex","isFirefox","allStarsRegex","allUrlsRegex","matchPatterns","RegExp","x","matchPattern","test","host","pathname","split","getRawPatternRegex","gotScripting","castArray","possibleArray","isArray","arrayOrUndefined","async","frameId","matchAboutBlank","ignoreTargetErrors","everyInsertion","content","frameIds","catchTargetInjectionErrors","normalizedFiles","assertNoCode","injection","executions","at","targetErrors","gotNavigation","contentScriptOptions","excludeMatches","pattern","matchesRegex","excludeMatchesRegex","inject","URL","origin","isOriginPermitted","where","targets","injections","flatMap","match_about_blank","run_at","injectContentScriptInSpecificTarget","castAllFramesTarget","injectContentScript","tabListener","navListener","webNavigation","onCommitted","registeredContentScript","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/chrome-beta/6.0.3/content.js.LICENSE.txt b/chrome-beta/6.0.3/content.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/chrome-beta/6.0.3/content.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/chrome-beta/6.0.3/content.js.map b/chrome-beta/6.0.3/content.js.map new file mode 100644 index 00000000..8cb63cc0 --- /dev/null +++ b/chrome-beta/6.0.3/content.js.map @@ -0,0 +1 @@ +{"version":3,"file":"content.js","mappings":"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","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/animationUtils.ts","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/components/Tooltip.tsx","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/CategoryPillComponent.tsx","webpack:///./src/components/ChapterVoteComponent.tsx","webpack:///./src/components/NoticeComponent.tsx","webpack:///./src/components/NoticeTextSectionComponent.tsx","webpack:///./src/components/SelectorComponent.tsx","webpack:///./src/components/SkipNoticeComponent.tsx","webpack:///./src/components/SponsorTimeEditComponent.tsx","webpack:///./src/components/SubmissionNoticeComponent.tsx","webpack:///./src/config.ts","webpack:///./src/content.ts","webpack:///./src/dearrowPromotion.ts","webpack:///./src/js-components/previewBar.ts","webpack:///./src/js-components/skipButtonControlBar.ts","webpack:///./src/render/CategoryPill.tsx","webpack:///./src/render/ChapterVote.tsx","webpack:///./src/render/GenericNotice.tsx","webpack:///./src/render/RectangleTooltip.tsx","webpack:///./src/render/SkipNotice.tsx","webpack:///./src/render/SubmissionNotice.tsx","webpack:///./src/render/Tooltip.tsx","webpack:///./src/render/UpcomingNotice.tsx","webpack:///./src/svg-icons/pencil_svg.tsx","webpack:///./src/svg-icons/sb_svg.tsx","webpack:///./src/svg-icons/thumbs_down_svg.tsx","webpack:///./src/svg-icons/thumbs_up_svg.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/arrayUtils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/compatibility.ts","webpack:///./src/utils/constants.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/genericUtils.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/mobileUtils.ts","webpack:///./src/utils/noticeUtils.ts","webpack:///./src/utils/pageCleaner.ts","webpack:///./src/utils/pageUtils.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/segmentData.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///./src/utils/thumbnails.ts","webpack:///./src/utils/urlParser.ts","webpack:///./src/utils/videoLabels.ts","webpack:///./src/utils/warnings.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n"," /**\n * Starts a spinning animation and returns a function to be called when it should be stopped\n * The callback will be called when the animation is finished \n * It waits until a full rotation is complete\n */\nfunction applyLoadingAnimation(element: HTMLElement, time: number, callback?: () => void): () => Promise {\n element.style.animation = `rotate ${time}s 0s infinite`;\n\n return async () => new Promise((resolve) => {\n // Make the animation finite\n element.style.animation = `rotate ${time}s`;\n\n // When the animation is over, hide the button\n const animationEndListener = () => {\n if (callback) callback();\n\n element.style.animation = \"none\";\n\n element.removeEventListener(\"animationend\", animationEndListener);\n\n resolve();\n };\n\n element.addEventListener(\"animationend\", animationEndListener);\n });\n}\n\nfunction setupCustomHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): { hide: () => void; show: () => void } {\n if (enabled) element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n element.classList.add(\"animationDone\");\n if (!rightSlide) element.classList.add(\"autoHideLeft\");\n\n let mouseEntered = false;\n\n return {\n hide: () => {\n mouseEntered = false;\n if (element.classList.contains(\"autoHiding\")) {\n element.classList.add(\"sbhidden\");\n }\n },\n show: () => {\n mouseEntered = true;\n element.classList.remove(\"animationDone\");\n\n // Wait for next event loop\n setTimeout(() => {\n if (mouseEntered) element.classList.remove(\"sbhidden\")\n }, 10);\n }\n };\n}\n\nfunction setupAutoHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): void {\n const { hide, show } = this.setupCustomHideAnimation(element, container, enabled, rightSlide);\n\n container.addEventListener(\"mouseleave\", () => hide());\n container.addEventListener(\"mouseenter\", () => show());\n}\n\nfunction enableAutoHideAnimation(element: Element): void {\n element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n}\n\nfunction disableAutoHideAnimation(element: Element): void {\n element.classList.remove(\"autoHiding\");\n element.classList.remove(\"sbhidden\");\n}\n\nexport const AnimationUtils = {\n applyLoadingAnimation,\n setupAutoHideAnimation,\n setupCustomHideAnimation,\n enableAutoHideAnimation,\n disableAutoHideAnimation\n};","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ButtonListener } from \"./component-types\";\nimport { isFirefoxOrSafari } from \"..\";\nimport { isSafari } from \"../config\";\n\nexport interface TooltipProps {\n text?: string;\n textBoxes?: string[];\n link?: string;\n linkOnClick?: () => void;\n secondButtonOnClick?: () => void;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n topOffset?: string;\n leftOffset?: string;\n rightOffset?: string;\n zIndex?: number;\n innerBottomMargin?: string;\n timeout?: number;\n opacity?: number;\n displayTriangle?: boolean;\n topTriangle?: boolean;\n extraClass?: string;\n showLogo?: boolean;\n showGotIt?: boolean;\n secondButtonText?: string;\n center?: boolean;\n positionRealtive?: boolean;\n containerAbsolute?: boolean;\n buttons?: ButtonListener[];\n elements?: JSX.Element[];\n buttonsAtBottom?: boolean;\n textBoxMaxHeight?: string;\n}\n\nexport class GenericTooltip {\n text?: string; \n container: HTMLDivElement;\n\n timer: NodeJS.Timeout;\n root: Root;\n \n constructor(props: TooltipProps, logoUrl: string) {\n props.bottomOffset ??= \"70px\";\n props.topOffset ??= \"inherit\";\n props.leftOffset ??= \"inherit\";\n props.rightOffset ??= \"inherit\";\n props.zIndex ??= 10000;\n props.innerBottomMargin ??= \"0px\";\n props.opacity ??= 0.7;\n props.displayTriangle ??= !props.topTriangle;\n props.topTriangle ??= false;\n props.extraClass ??= \"\";\n props.showLogo ??= true;\n props.showGotIt ??= true;\n props.positionRealtive ??= true;\n props.containerAbsolute ??= false;\n props.center ??= false;\n props.elements ??= [];\n props.buttonsAtBottom ??= false;\n props.textBoxes ??= [];\n props.textBoxMaxHeight ??= \"inherit\";\n this.text = props.text;\n\n this.container = document.createElement('div');\n this.container.id = \"sponsorTooltip\" + props.text;\n if (props.positionRealtive) this.container.style.position = \"relative\";\n if (props.containerAbsolute) this.container.style.position = \"absolute\";\n if (props.center) {\n if (isFirefoxOrSafari() && !isSafari()) {\n this.container.style.width = \"-moz-available\";\n } else {\n this.container.style.width = \"-webkit-fill-available\";\n }\n }\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n const backgroundColor = `rgba(28, 28, 28, ${props.opacity})`;\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n {props.showLogo ? \n \n \n : null}\n {this.text ? \n \n {this.getTextElements(this.text + (props.link ? \". \" : \"\"))}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : (props.linkOnClick ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null)}\n \n : null}\n\n {props.textBoxes ? props.textBoxes.map((text, index) => (\n
\n {text || String.fromCharCode(8203)} {/* Zero width space */}\n
\n )) : null}\n\n {props.elements}\n\n {!props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n
\n\n {props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n\n {props.showGotIt ?\n \n : null}\n\n {\n props.secondButtonText ?\n \n : null\n }\n
\n )\n }\n\n private getTextElements(text: string): JSX.Element[] {\n if (!text.includes(\"\\n\")) return [<>{text}];\n\n const result: JSX.Element[] = [];\n\n for (const line of text.split(\"\\n\")) {\n result.push(\n
\n {line}\n
\n );\n }\n\n return result;\n }\n\n getButtons(buttons: ButtonListener[] | undefined, buttonsAtBottom: boolean): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n const style: React.CSSProperties = {};\n if (buttonsAtBottom) {\n style.float = \"right\";\n }\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return [];\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport Config from \"../config\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface CategoryPillProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n showTextByDefault: boolean;\n showTooltipOnClick: boolean;\n}\n\nexport interface CategoryPillState {\n segment?: SponsorTime;\n show: boolean;\n open?: boolean;\n}\n\nclass CategoryPillComponent extends React.Component {\n mainRef: React.MutableRefObject;\n tooltip?: Tooltip;\n\n constructor(props: CategoryPillProps) {\n super(props);\n\n this.mainRef = React.createRef();\n\n this.state = {\n segment: null,\n show: false,\n open: false\n };\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {\n backgroundColor: this.getColor(),\n display: this.state.show ? \"flex\" : \"none\",\n color: this.getTextColor(),\n }\n\n // To be able to remove the margin from the parent\n this.mainRef?.current?.parentElement?.classList?.toggle(\"cbPillOpen\", this.state.show);\n\n return (\n this.toggleOpen(e)}\n onMouseEnter={() => this.openTooltip()}\n onMouseLeave={() => this.closeTooltip()}\n ref={this.mainRef}>\n \n \n \n \n\n {\n (this.props.showTextByDefault || this.state.open) &&\n \n {chrome.i18n.getMessage(\"category_\" + this.state.segment?.category)}\n \n }\n \n\n {this.state.open && (\n <>\n {/* Upvote Button */}\n
this.vote(e, 1)}>\n \n
\n\n {/* Downvote Button */}\n
this.vote(event, 0)}>\n \n
\n \n )}\n\n {/* Close Button */}\n {\n this.setState({ show: false });\n this.closeTooltip();\n }}>\n \n
\n );\n }\n\n private toggleOpen(event: React.MouseEvent): void {\n event.stopPropagation();\n\n if (this.state.show) {\n if (this.props.showTooltipOnClick) {\n if (this.state.open) {\n this.closeTooltip();\n } else {\n this.openTooltip();\n }\n }\n\n this.setState({ open: !this.state.open });\n }\n }\n\n private async vote(event: React.MouseEvent, type: number): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response) {\n console.error(\"[SB] Caught error while attempting to vote on a FV label\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status === 429) {\n this.setState({\n open: false,\n show: type === 1\n });\n\n this.closeTooltip();\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on FV label\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n\n private getColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-preview-${category}, var(--sb-category-${category}))`;\n }\n\n private getTextColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`;\n }\n\n private openTooltip(): void {\n if (this.tooltip) {\n this.tooltip.close();\n }\n\n const tooltipMount = document.querySelector(\"#above-the-fold, ytm-slim-owner-renderer\") as HTMLElement;\n if (tooltipMount) {\n this.tooltip = new Tooltip({\n text: this.getTitleText(),\n referenceNode: tooltipMount,\n bottomOffset: \"0px\",\n opacity: 0.95,\n displayTriangle: false,\n showLogo: false,\n showGotIt: false,\n prependElement: tooltipMount.firstElementChild as HTMLElement\n });\n }\n }\n\n private closeTooltip(): void {\n this.tooltip?.close?.();\n this.tooltip = null;\n }\n\n getTitleText(): string {\n const shortDescription = chrome.i18n.getMessage(`category_${this.state.segment?.category}_pill`);\n return (shortDescription ? shortDescription + \". \": \"\") + chrome.i18n.getMessage(\"categoryPillTitleText\");\n }\n}\n\nexport default CategoryPillComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport { ActionType, Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface ChapterVoteProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n size?: string;\n}\n\nexport interface ChapterVoteState {\n segment?: SponsorTime;\n show: boolean;\n size?: string;\n}\n\nclass ChapterVoteComponent extends React.Component {\n tooltip?: Tooltip;\n\n constructor(props: ChapterVoteProps) {\n super(props);\n\n this.state = {\n segment: null,\n show: false,\n size: props.size ?? \"22px\"\n };\n }\n\n render(): React.ReactElement {\n if (this.tooltip && !this.state.show) {\n this.tooltip.close();\n this.tooltip = null;\n }\n\n return (\n <>\n {/* Upvote Button */}\n \n\n {/* Downvote Button */}\n \n \n );\n }\n\n private async vote(event: React.MouseEvent, type: number, element?: HTMLElement): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(element ?? event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response){\n console.error(\"[SB] Caught error while attempting to vote on a chapter\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status == 429) {\n this.setState({\n show: type === 1\n });\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on chapter\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n}\n\nexport default ChapterVoteComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport SbSvg from \"../svg-icons/sb_svg\";\n\nenum CountdownMode {\n Timer,\n Paused,\n Stopped\n}\n\nexport interface NoticeProps {\n noticeTitle: string;\n\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n amountOfPreviousNotices?: number;\n showInSecondSlot?: boolean;\n timed?: boolean;\n idSuffix?: string;\n\n fadeIn?: boolean;\n fadeOut?: boolean;\n startFaded?: boolean;\n firstColumn?: React.ReactElement[] | React.ReactElement;\n firstRow?: React.ReactElement;\n bottomRow?: React.ReactElement[];\n\n smaller?: boolean;\n limitWidth?: boolean;\n extraClass?: string;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n logoFill?: string;\n\n // Callback for when this is closed\n closeListener: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n zIndex?: number;\n style?: React.CSSProperties;\n biggerCloseButton?: boolean;\n children?: React.ReactNode;\n}\n\ninterface MouseDownInfo {\n x: number;\n y: number;\n right: number;\n bottom: number;\n}\n\nexport interface NoticeState {\n maxCountdownTime: () => number;\n\n countdownTime: number;\n countdownMode: CountdownMode;\n\n mouseHovering: boolean;\n\n startFaded: boolean;\n\n mouseDownInfo: MouseDownInfo | null;\n mouseMoved: boolean;\n right: number;\n bottom: number;\n}\n\n// Limits for dragging notice around\nconst bounds = [10, 100, 10, 10];\n\nclass NoticeComponent extends React.Component {\n countdownInterval: NodeJS.Timeout;\n\n idSuffix: string;\n\n amountOfPreviousNotices: number;\n\n parentRef: React.RefObject;\n\n handleMouseMoveBinded: (e: MouseEvent) => void = this.handleMouseMove.bind(this);\n\n constructor(props: NoticeProps) {\n super(props);\n\n this.parentRef = React.createRef();\n\n const maxCountdownTime = () => {\n if (this.props.maxCountdownTime) return this.props.maxCountdownTime();\n else return Config.config.skipNoticeDuration;\n };\n \n //the id for the setInterval running the countdown\n this.countdownInterval = null;\n\n this.amountOfPreviousNotices = props.amountOfPreviousNotices || 0;\n\n this.idSuffix = props.idSuffix || \"\";\n\n // Setup state\n this.state = {\n maxCountdownTime,\n\n //the countdown until this notice closes\n countdownTime: maxCountdownTime(),\n countdownMode: CountdownMode.Timer,\n mouseHovering: false,\n\n startFaded: this.props.startFaded ?? false,\n\n mouseDownInfo: null,\n mouseMoved: false,\n right: bounds[0],\n bottom: props.showInSecondSlot ? 290 : bounds[1]\n }\n }\n\n componentDidMount(): void {\n this.startCountdown();\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = {\n zIndex: this.props.zIndex || (1000 + this.amountOfPreviousNotices),\n right: this.state.right,\n bottom: this.state.bottom,\n userSelect: this.state.mouseDownInfo && this.state.mouseMoved ? \"none\" : \"auto\",\n ...(this.props.style ?? {})\n }\n\n return (\n
this.onMouseEnter(e) }\n onMouseLeave={() => {\n this.timerMouseLeave();\n }}\n onMouseDown={(e) => {\n document.addEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: {\n x: e.clientX,\n y: e.clientY,\n right: this.state.right,\n bottom: this.state.bottom\n },\n mouseMoved: false\n });\n }}\n onMouseUp={() => {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: null\n });\n }}\n ref={this.parentRef}\n style={noticeStyle} >\n
\n \n \n\n {/* First row */}\n \n {/* Left column */}\n \n\n {this.props.firstRow}\n\n {/* Right column */}\n {!this.props.hideRightInfo &&\n \n }\n \n\n {this.props.children}\n\n {!this.props.smaller && this.props.bottomRow ? \n this.props.bottomRow\n : null}\n\n \n
\n {/* Logo */}\n {!this.props.hideLogo &&\n (\n !Config.config.prideTheme ?\n \n :\n \n )\n }\n\n \n \n {this.props.noticeTitle}\n \n\n {this.props.firstColumn}\n \n \n {/* Time left */}\n {this.props.timed ? ( \n this.toggleManualPause()}\n className=\"sponsorSkipObject sponsorSkipNoticeTimeLeft\">\n\n {this.getCountdownElements()}\n\n \n ) : \"\"}\n \n\n {/* Close button */}\n this.close()}>\n \n
\n
\n\n {/* Add as a hidden table to keep the height constant */}\n {this.props.smaller && this.props.bottomRow ? \n \n \n {this.props.bottomRow}\n \n
\n : null}\n
\n );\n }\n\n getCountdownElements(): React.ReactElement[] {\n return [(\n \n {chrome.i18n.getMessage(\"NoticeTimeAfterSkip\").replace(\"{seconds}\", Math.ceil(this.state.countdownTime).toString())}\n \n ),(\n {chrome.i18n.getMessage(\"paused\")}\n ),(\n {chrome.i18n.getMessage(\"manualPaused\")}\n )];\n }\n\n onMouseEnter(event: React.MouseEvent): void {\n if (this.props.onMouseEnter) this.props.onMouseEnter(event);\n\n this.fadedMouseEnter();\n this.timerMouseEnter();\n }\n\n fadedMouseEnter(): void {\n if (this.state.startFaded) {\n this.setState({\n startFaded: false\n });\n }\n }\n\n timerMouseEnter(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.pauseCountdown();\n\n this.setState({\n mouseHovering: true\n });\n }\n\n timerMouseLeave(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.startCountdown();\n\n this.setState({\n mouseHovering: false\n });\n }\n\n toggleManualPause(): void {\n this.setState({\n countdownMode: this.state.countdownMode === CountdownMode.Stopped ? CountdownMode.Timer : CountdownMode.Stopped\n }, () => {\n if (this.state.countdownMode === CountdownMode.Stopped || this.state.mouseHovering) {\n this.pauseCountdown();\n } else {\n this.startCountdown();\n }\n });\n }\n\n //called every second to lower the countdown before hiding the notice\n countdown(): void {\n if (!this.props.timed) return;\n\n const countdownTime = Math.min(this.state.countdownTime - 1, this.state.maxCountdownTime());\n\n if (countdownTime <= 0) {\n //remove this from setInterval\n clearInterval(this.countdownInterval);\n\n //time to close this notice\n this.close();\n\n return;\n }\n\n if (countdownTime == 3 && this.props.fadeOut) {\n //start fade out animation\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice?.style.removeProperty(\"animation\");\n notice?.classList.add(\"sponsorSkipNoticeFadeOut\");\n }\n\n this.setState({\n countdownTime\n })\n }\n \n removeFadeAnimation(): void {\n //remove the fade out class if it exists\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice.classList.remove(\"sponsorSkipNoticeFadeOut\");\n notice.style.animation = \"none\";\n }\n\n pauseCountdown(): void {\n if (!this.props.timed || this.props.dontPauseCountdown) return;\n\n //remove setInterval\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n this.countdownInterval = null;\n\n //reset countdown and inform the user\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: this.state.countdownMode === CountdownMode.Timer ? CountdownMode.Paused : this.state.countdownMode\n });\n \n this.removeFadeAnimation();\n }\n\n startCountdown(): void {\n if (!this.props.timed) return;\n\n //if it has already started, don't start it again\n if (this.countdownInterval !== null) return;\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.setupInterval();\n }\n\n setupInterval(): void {\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n\n this.countdownInterval = setInterval(this.countdown.bind(this), 1000);\n }\n\n resetCountdown(): void {\n if (!this.props.timed) return;\n\n this.setupInterval();\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.removeFadeAnimation();\n }\n \n /**\n * @param silent If true, the close listener will not be called\n */\n close(silent?: boolean): void {\n //remove setInterval\n if (this.countdownInterval !== null) clearInterval(this.countdownInterval);\n\n if (!silent) this.props.closeListener();\n }\n\n addNoticeInfoMessage(message: string, message2 = \"\"): void {\n //TODO: Replace\n\n const previousInfoMessage = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix);\n if (previousInfoMessage != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage);\n }\n\n const previousInfoMessage2 = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix + \"2\");\n if (previousInfoMessage2 != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage2);\n }\n \n //add info\n const thanksForVotingText = document.createElement(\"p\");\n thanksForVotingText.id = \"sponsorTimesInfoMessage\" + this.idSuffix;\n thanksForVotingText.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText.innerText = message;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n \n if (message2 !== undefined) {\n const thanksForVotingText2 = document.createElement(\"p\");\n thanksForVotingText2.id = \"sponsorTimesInfoMessage\" + this.idSuffix + \"2\";\n thanksForVotingText2.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText2.innerText = message2;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText2, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n }\n }\n\n getElement(): React.RefObject {\n return this.parentRef;\n }\n\n componentWillUnmount(): void {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n\n // For dragging around notice\n handleMouseMove(e: MouseEvent): void {\n if (this.state.mouseDownInfo && e.buttons === 1) {\n const [mouseX, mouseY] = [e.clientX, e.clientY];\n\n const deltaX = mouseX - this.state.mouseDownInfo.x;\n const deltaY = mouseY - this.state.mouseDownInfo.y;\n\n if (deltaX > 0 || deltaY > 0) this.setState({ mouseMoved: true });\n\n const element = this.parentRef.current;\n const parent = element.parentElement.parentElement;\n this.setState({\n right: Math.min(parent.clientWidth - element.clientWidth - bounds[2], Math.max(bounds[0], this.state.mouseDownInfo.right - deltaX)),\n bottom: Math.min(parent.clientHeight - element.clientHeight - bounds[3], Math.max(bounds[1], this.state.mouseDownInfo.bottom - deltaY))\n });\n } else {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n }\n}\n\nexport default NoticeComponent;\n","import * as React from \"react\";\n\nexport interface NoticeTextSelectionProps {\n icon?: string;\n text: string;\n idSuffix: string;\n onClick?: (event: React.MouseEvent) => unknown;\n children?: React.ReactNode;\n}\n\nexport interface NoticeTextSelectionState {\n\n}\n\nclass NoticeTextSelectionComponent extends React.Component {\n\n constructor(props: NoticeTextSelectionProps) {\n super(props);\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {};\n if (this.props.onClick) {\n style.cursor = \"pointer\";\n style.textDecoration = \"underline\"\n }\n\n return (\n \n \n \n {this.props.icon ? \n \n : null}\n\n \n {this.getTextElements(this.props.text)}\n \n \n \n );\n }\n\n private getTextElements(text: string): Array {\n const elements: Array = [];\n const textParts = text.split(/(?=\\s+)/);\n for (const textPart of textParts) {\n if (textPart.match(/^\\s*http/)) {\n elements.push(\n \n {textPart}\n \n );\n } else {\n elements.push(textPart);\n }\n\n }\n\n return elements;\n }\n}\n\nexport default NoticeTextSelectionComponent;","import * as React from \"react\";\n\nexport interface SelectorOption {\n label: string;\n}\n\nexport interface SelectorProps { \n id: string;\n options: SelectorOption[];\n onChange: (value: string) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport interface SelectorState {\n\n}\n\nclass SelectorComponent extends React.Component {\n\n constructor(props: SelectorProps) {\n super(props);\n\n // Setup state\n this.state = {\n \n }\n }\n\n render(): React.ReactElement {\n return (\n
0 ? \"inherit\" : \"none\"}}\n className=\"sbSelector\">\n
\n {this.getOptions()}\n
\n
\n );\n }\n\n getOptions(): React.ReactElement[] {\n const result: React.ReactElement[] = [];\n for (const option of this.props.options) {\n result.push(\n
{\n e.stopPropagation();\n this.props.onChange(option.label);\n }}\n key={option.label}>\n {option.label}\n
\n );\n }\n\n return result;\n }\n}\n\nexport default SelectorComponent;","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\"\nimport { Category, ContentContainer, SponsorTime, NoticeVisibilityMode, ActionType, SponsorSourceType, SegmentUUID } from \"../types\";\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport Utils from \"../utils\";\nconst utils = new Utils();\nimport { getSkippingText, getUpcomingText, getVoteText } from \"../utils/categoryUtils\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport PencilSvg from \"../svg-icons/pencil_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { getFormattedTime } from \"../../maze-utils/src/formating\";\nimport { getCurrentTime, getVideo } from \"../../maze-utils/src/video\";\n\nenum SkipButtonState {\n Undo, // Unskip\n Redo, // Reskip\n Start // Skip\n}\n\nexport interface SkipNoticeProps {\n segments: SponsorTime[];\n\n autoSkip: boolean;\n startReskip?: boolean;\n upcomingNotice?: boolean;\n voteNotice?: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n closeListener: () => void;\n showKeybindHint?: boolean;\n smaller: boolean;\n fadeIn: boolean;\n maxCountdownTime?: number;\n\n componentDidMount?: () => void;\n\n unskipTime?: number;\n}\n\nexport interface SkipNoticeState {\n noticeTitle?: string;\n\n messages?: string[];\n messageOnClick?: (event: React.MouseEvent) => unknown;\n\n countdownTime?: number;\n maxCountdownTime?: () => number;\n countdownText?: string;\n\n skipButtonStates?: SkipButtonState[];\n skipButtonCallbacks?: Array<(buttonIndex: number, index: number, forceSeek: boolean) => void>;\n showSkipButton?: boolean[];\n\n editing?: boolean;\n choosingCategory?: boolean;\n thanksForVotingText?: string; //null until the voting buttons should be hidden\n\n actionState?: SkipNoticeAction;\n\n showKeybindHint?: boolean;\n\n smaller?: boolean;\n\n voted?: SkipNoticeAction[];\n copied?: SkipNoticeAction[];\n\n}\n\nclass SkipNoticeComponent extends React.Component {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n amountOfPreviousNotices: number;\n showInSecondSlot: boolean;\n\n idSuffix: string;\n\n noticeRef: React.MutableRefObject;\n categoryOptionRef: React.RefObject;\n\n selectedColor: string;\n unselectedColor: string;\n lockedColor: string;\n\n // Used to update on config change\n configListener: () => void;\n\n constructor(props: SkipNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n this.categoryOptionRef = React.createRef();\n\n this.segments = props.segments;\n this.autoSkip = props.autoSkip;\n this.contentContainer = props.contentContainer;\n\n const noticeTitle = this.props.voteNotice ? getVoteText(this.segments) : !this.props.upcomingNotice ? getSkippingText(this.segments, this.props.autoSkip) : getUpcomingText(this.segments);\n\n const previousSkipNotices = document.querySelectorAll(\".sponsorSkipNoticeParent:not(.sponsorSkipUpcomingNotice)\");\n this.amountOfPreviousNotices = previousSkipNotices.length;\n // If there is at least one already in the first slot\n this.showInSecondSlot = previousSkipNotices.length > 0 && [...previousSkipNotices].some(notice => !notice.classList.contains(\"secondSkipNotice\"));\n\n // Sort segments\n if (this.segments.length > 1) {\n this.segments.sort((a, b) => a.segment[0] - b.segment[0]);\n }\n\n // This is the suffix added at the end of every id\n for (const segment of this.segments) {\n this.idSuffix += segment.UUID;\n }\n this.idSuffix += this.amountOfPreviousNotices;\n\n this.selectedColor = Config.config.colorPalette.red;\n this.unselectedColor = Config.config.colorPalette.white;\n this.lockedColor = Config.config.colorPalette.locked;\n\n const isMuteSegment = this.segments[0].actionType === ActionType.Mute;\n const maxCountdownTime = props.maxCountdownTime ? () => props.maxCountdownTime : (isMuteSegment ? this.getFullDurationCountdown(0) : () => Config.config.skipNoticeDuration);\n\n const defaultSkipButtonState = this.props.startReskip ? SkipButtonState.Redo : SkipButtonState.Undo;\n const skipButtonStates = [defaultSkipButtonState, isMuteSegment ? SkipButtonState.Start : defaultSkipButtonState];\n\n const defaultSkipButtonCallback = this.props.startReskip ? this.reskip.bind(this) : this.unskip.bind(this);\n const skipButtonCallbacks = [defaultSkipButtonCallback, isMuteSegment ? this.reskip.bind(this) : defaultSkipButtonCallback];\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n messageOnClick: null,\n\n //the countdown until this notice closes\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n countdownText: null,\n\n skipButtonStates,\n skipButtonCallbacks,\n showSkipButton: [true, true],\n\n editing: false,\n choosingCategory: false,\n thanksForVotingText: null,\n\n actionState: SkipNoticeAction.None,\n\n showKeybindHint: this.props.showKeybindHint ?? true,\n\n smaller: this.props.smaller ?? false,\n\n // Keep track of what segment the user interacted with.\n voted: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n copied: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n }\n\n if (!this.autoSkip) {\n // Assume manual skip is only skipping 1 submission\n Object.assign(this.state, this.getUnskippedModeInfo(null, 0, SkipButtonState.Start));\n }\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = { }\n if (this.contentContainer().onMobileYouTube) {\n noticeStyle.bottom = \"4em\";\n noticeStyle.transform = \"scale(0.8) translate(10%, 10%)\";\n }\n\n const firstColumn = this.getSkipButton(0);\n\n return (\n = NoticeVisibilityMode.FadedForAll\n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.FadedForAutoSkip && this.autoSkip)}\n timed={true}\n maxCountdownTime={this.state.maxCountdownTime}\n style={noticeStyle}\n biggerCloseButton={this.contentContainer().onMobileYouTube}\n ref={this.noticeRef}\n closeListener={() => this.closeListener()}\n smaller={this.state.smaller}\n logoFill={Config.config.barTypes[this.segments[0].category].color}\n limitWidth={true}\n firstColumn={firstColumn}\n dontPauseCountdown={!!this.props.upcomingNotice}\n bottomRow={[...this.getMessageBoxes(), ...this.getBottomRow() ]}\n extraClass={this.props.upcomingNotice ? \"sponsorSkipUpcomingNotice\" : \"\"}\n onMouseEnter={() => this.onMouseEnter() } >\n \n );\n }\n\n componentDidMount(): void {\n if (this.props.componentDidMount) {\n this.props.componentDidMount();\n }\n }\n\n getBottomRow(): JSX.Element[] {\n return [\n /* Bottom Row */\n (\n\n {/* Vote Button Container */}\n {!this.state.thanksForVotingText ?\n \n\n {/* Upvote Button */}\n
this.prepAction(SkipNoticeAction.Upvote)}>\n \n
\n\n {/* Report Button */}\n
this.prepAction(SkipNoticeAction.Downvote)}>\n \n
\n\n {/* Copy and Downvote Button */}\n {\n !this.props.voteNotice &&\n
this.openEditingOptions()}>\n \n
\n }\n \n\n :\n\n \n\n {/* Submitted string */}\n \n {this.state.thanksForVotingText}\n \n\n {/* Continue Voting Button */}\n \n \n }\n\n {/* Unskip/Skip Button */}\n {!this.props.voteNotice && (!this.props.smaller || this.segments[0].actionType === ActionType.Mute)\n ? this.getSkipButton(1) : null}\n\n {/* Never show button */}\n {!this.autoSkip || this.props.startReskip || this.props.voteNotice ? \"\" :\n \n \n \n }\n ),\n\n /* Edit Segments Row */\n (this.state.editing && !this.state.thanksForVotingText && !(this.state.choosingCategory || this.state.actionState === SkipNoticeAction.CopyDownvote) &&\n \n \n\n {/* Copy Segment */}\n \n\n {/* Category vote */}\n \n \n \n ),\n\n /* Category Chooser Row */\n (this.state.choosingCategory && !this.state.thanksForVotingText &&\n \n \n {/* Category Selector */}\n \n\n {/* Submit Button */}\n {this.segments.length === 1 &&\n \n }\n \n \n ),\n\n /* Segment Chooser Row */\n (this.state.actionState !== SkipNoticeAction.None && this.segments.length > 1 && !this.state.thanksForVotingText &&\n \n \n {this.getSubmissionChooser()}\n \n \n )\n ];\n }\n\n getSkipButton(buttonIndex: number): JSX.Element {\n if (this.state.showSkipButton[buttonIndex] && (this.segments.length > 1\n || this.segments[0].actionType !== ActionType.Poi\n || this.props.unskipTime)) {\n\n const forceSeek = buttonIndex === 1 && this.segments[0].actionType === ActionType.Mute;\n\n const style: React.CSSProperties = {\n marginLeft: \"4px\",\n color: ([SkipNoticeAction.Unskip0, SkipNoticeAction.Unskip1].includes(this.state.actionState))\n ? this.selectedColor : this.unselectedColor\n };\n if (this.contentContainer().onMobileYouTube) {\n style.padding = \"20px\";\n style.minWidth = \"100px\";\n }\n\n const showSkipButton = (buttonIndex !== 0 || this.props.smaller || !this.props.voteNotice || this.segments[0].actionType === ActionType.Mute) && !this.props.upcomingNotice;\n\n return (\n \n \n \n );\n }\n return null;\n }\n\n getSubmissionChooser(): JSX.Element[] {\n const elements: JSX.Element[] = [];\n for (let i = 0; i < this.segments.length; i++) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getSubmissionChooserOpacity(index: number): number {\n const isUpvote = this.state.actionState === SkipNoticeAction.Upvote;\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldBeGray: boolean = (isUpvote && this.state.voted[index] == SkipNoticeAction.Upvote) ||\n (isDownvote && this.state.voted[index] == SkipNoticeAction.Downvote) ||\n (isCopyDownvote && this.state.copied[index] == SkipNoticeAction.CopyDownvote);\n\n return shouldBeGray ? 0.35 : 1;\n }\n\n getSubmissionChooserColor(index: number): string {\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldWarnUser = Config.config.isVip && (isDownvote || isCopyDownvote)\n && this.segments[index].locked === 1;\n\n return shouldWarnUser ? this.lockedColor : this.unselectedColor;\n }\n\n onMouseEnter(): void {\n if (this.state.smaller && !this.props.upcomingNotice) {\n this.setState({\n smaller: false\n });\n }\n }\n\n getMessageBoxes(): JSX.Element[] {\n if (this.state.messages.length === 0) {\n // Add a spacer if there is no text\n return [\n \n \n ];\n }\n\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n \n \n \n \n )\n }\n\n return elements;\n }\n\n prepAction(action: SkipNoticeAction): void {\n if (this.segments.length === 1) {\n this.performAction(0, action);\n } else {\n if (this.state.smaller) {\n this.setState({\n smaller: false\n });\n\n this.noticeRef.current.fadedMouseEnter();\n this.noticeRef.current.resetCountdown();\n }\n\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.resetStateToStart();\n break;\n case SkipNoticeAction.Upvote:\n this.resetStateToStart(SkipNoticeAction.Upvote);\n break;\n case SkipNoticeAction.Downvote:\n this.resetStateToStart(SkipNoticeAction.Downvote);\n break;\n case SkipNoticeAction.CategoryVote:\n this.resetStateToStart(SkipNoticeAction.CategoryVote, true, true);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.resetStateToStart(SkipNoticeAction.CopyDownvote, true);\n break;\n case SkipNoticeAction.Unskip0:\n this.resetStateToStart(SkipNoticeAction.Unskip0);\n break;\n case SkipNoticeAction.Unskip1:\n this.resetStateToStart(SkipNoticeAction.Unskip1);\n break;\n }\n }\n }\n\n /**\n * Performs the action from the current state\n *\n * @param index\n */\n performAction(index: number, action?: SkipNoticeAction): void {\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.noAction(index);\n break;\n case SkipNoticeAction.Upvote:\n this.upvote(index);\n break;\n case SkipNoticeAction.Downvote:\n this.downvote(index);\n break;\n case SkipNoticeAction.CategoryVote:\n this.categoryVote(index);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.copyDownvote(index);\n break;\n case SkipNoticeAction.Unskip0:\n this.unskipAction(0, index, false);\n break;\n case SkipNoticeAction.Unskip1:\n this.unskipAction(1, index, true);\n break;\n default:\n this.resetStateToStart();\n break;\n }\n }\n\n noAction(index: number): void {\n const voted = this.state.voted;\n voted[index] = SkipNoticeAction.None;\n\n this.setState({\n voted\n });\n }\n\n upvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n this.contentContainer().vote(1, this.segments[index].UUID, undefined, this);\n }\n\n downvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n }\n\n categoryVote(index: number): void {\n this.contentContainer().vote(undefined, this.segments[index].UUID, this.categoryOptionRef.current.value as Category, this)\n }\n\n copyDownvote(index: number): void {\n const sponsorVideoID = this.props.contentContainer().sponsorVideoID;\n const sponsorTimesSubmitting : SponsorTime = {\n segment: this.segments[index].segment,\n UUID: generateUserID() as SegmentUUID,\n category: this.segments[index].category,\n actionType: this.segments[index].actionType,\n source: SponsorSourceType.Local\n };\n\n const segmentTimes = Config.local.unsubmittedSegments[sponsorVideoID] || [];\n segmentTimes.push(sponsorTimesSubmitting);\n Config.local.unsubmittedSegments[sponsorVideoID] = segmentTimes;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().sponsorTimesSubmitting.push(sponsorTimesSubmitting);\n this.props.contentContainer().updatePreviewBar();\n this.props.contentContainer().resetSponsorSubmissionNotice();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n\n const copied = this.state.copied;\n copied[index] = SkipNoticeAction.CopyDownvote;\n\n this.setState({\n copied\n });\n }\n\n unskipAction(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.state.skipButtonCallbacks[buttonIndex](buttonIndex, index, forceSeek);\n }\n\n openEditingOptions(): void {\n this.resetStateToStart(undefined, true);\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [];\n\n const categories = (CompileConfig.categoryList.filter((cat => CompileConfig.categorySupport[cat].includes(ActionType.Skip)))) as Category[];\n for (const category of categories) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getCategoryNameClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\"\n }\n\n unskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().unskipSponsorTime(this.segments[index], this.props.unskipTime, forceSeek, this.props.voteNotice);\n\n this.unskippedMode(buttonIndex, index, this.segments[0].actionType === ActionType.Poi ? SkipButtonState.Undo : SkipButtonState.Redo);\n }\n\n reskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().reskipSponsorTime(this.segments[index], forceSeek);\n this.reskippedMode(buttonIndex);\n }\n\n reskippedMode(buttonIndex: number): void {\n const skipButtonStates = this.state.skipButtonStates;\n skipButtonStates[buttonIndex] = SkipButtonState.Undo;\n\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n skipButtonCallbacks[buttonIndex] = this.unskip.bind(this);\n\n const newState: SkipNoticeState = {\n skipButtonStates,\n skipButtonCallbacks,\n\n maxCountdownTime: () => Config.config.skipNoticeDuration,\n countdownTime: Config.config.skipNoticeDuration\n };\n\n //reset countdown\n this.setState(newState, () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n /** Sets up notice to be not skipped yet */\n unskippedMode(buttonIndex: number, index: number, skipButtonState: SkipButtonState): void {\n //setup new callback and reset countdown\n this.setState(this.getUnskippedModeInfo(buttonIndex, index, skipButtonState), () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n getUnskippedModeInfo(buttonIndex: number, index: number, skipButtonState: SkipButtonState): SkipNoticeState {\n const changeCountdown = !this.props.voteNotice && this.segments[index].actionType !== ActionType.Poi;\n\n const maxCountdownTime = changeCountdown ?\n this.getFullDurationCountdown(index) : this.state.maxCountdownTime;\n\n const skipButtonStates = this.state.skipButtonStates;\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n if (buttonIndex === null) {\n for (let i = 0; i < skipButtonStates.length; i++) {\n skipButtonStates[i] = skipButtonState;\n skipButtonCallbacks[i] = this.reskip.bind(this);\n }\n } else {\n skipButtonStates[buttonIndex] = skipButtonState;\n skipButtonCallbacks[buttonIndex] = this.reskip.bind(this);\n\n if (buttonIndex === 1) {\n // Trigger both to move at once\n skipButtonStates[0] = SkipButtonState.Redo;\n skipButtonCallbacks[0] = this.reskip.bind(this);\n }\n }\n\n return {\n skipButtonStates,\n skipButtonCallbacks,\n // change max duration to however much of the sponsor is left\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n showSkipButton: buttonIndex === 1 ? [true, true] : this.state.showSkipButton\n } as SkipNoticeState;\n }\n\n getFullDurationCountdown(index: number): () => number {\n return () => {\n const sponsorTime = this.segments[index];\n const duration = Math.round((sponsorTime.segment[1] - (getCurrentTime() ?? 0)) * (1 / (getVideo()?.playbackRate ?? 1)));\n\n return Math.max(duration, Config.config.skipNoticeDuration);\n };\n }\n\n afterVote(segment: SponsorTime, type: number, category: Category): void {\n const index = utils.getSponsorIndexFromUUID(this.segments, segment.UUID);\n const wikiLinkText = CompileConfig.wikiLinks[segment.category];\n\n const voted = this.state.voted;\n switch (type) {\n case 0:\n this.clearConfigListener();\n this.setNoticeInfoMessageWithOnClick(() => window.open(wikiLinkText), chrome.i18n.getMessage(\"OpenCategoryWikiPage\"));\n\n voted[index] = SkipNoticeAction.Downvote;\n break;\n case 1:\n voted[index] = SkipNoticeAction.Upvote;\n break;\n case 20:\n voted[index] = SkipNoticeAction.None;\n break;\n }\n\n this.setState({\n voted\n });\n\n this.addVoteButtonInfo(chrome.i18n.getMessage(\"voted\"));\n\n if (segment && category) {\n // This is the segment inside the skip notice\n this.segments[index].category = category;\n }\n }\n\n setNoticeInfoMessageWithOnClick(onClick: (event: React.MouseEvent) => unknown, ...messages: string[]): void {\n this.setState({\n messages,\n messageOnClick: (event) => onClick(event)\n });\n }\n\n setNoticeInfoMessage(...messages: string[]): void {\n this.setState({\n messages\n });\n }\n\n addVoteButtonInfo(message: string): void {\n this.setState({\n thanksForVotingText: message\n });\n }\n\n resetVoteButtonInfo(): void {\n this.setState({\n thanksForVotingText: null\n });\n }\n\n closeListener(): void {\n this.clearConfigListener();\n\n this.props.closeListener();\n }\n\n clearConfigListener(): void {\n if (this.configListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configListener), 1);\n this.configListener = null;\n }\n }\n\n unmutedListener(time: number): void {\n if (this.props.segments.length === 1\n && this.props.segments[0].actionType === ActionType.Mute\n && time >= this.props.segments[0].segment[1]) {\n this.setState({\n showSkipButton: [false, true]\n });\n }\n }\n\n resetStateToStart(actionState: SkipNoticeAction = SkipNoticeAction.None, editing = false, choosingCategory = false): void {\n this.setState({\n actionState: actionState,\n editing: editing,\n choosingCategory: choosingCategory,\n thanksForVotingText: null,\n messages: []\n });\n }\n\n private getSkipButtonText(buttonIndex: number, forceType?: ActionType): string {\n switch (this.state.skipButtonStates[buttonIndex]) {\n case SkipButtonState.Undo:\n return this.getUndoText(forceType);\n case SkipButtonState.Redo:\n return this.getRedoText(forceType);\n case SkipButtonState.Start:\n return this.getStartText(forceType);\n }\n }\n\n private getUndoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"unmute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"unskip\");\n }\n }\n }\n\n private getRedoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"reskip\");\n }\n }\n }\n\n private getStartText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"skip\");\n }\n }\n }\n}\n\nexport default SkipNoticeComponent;\n","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\";\nimport { ActionType, Category, ChannelIDStatus, ContentContainer, SponsorHideType, SponsorTime } from \"../types\";\nimport SubmissionNoticeComponent from \"./SubmissionNoticeComponent\";\nimport { RectangleTooltip } from \"../render/RectangleTooltip\";\nimport SelectorComponent, { SelectorOption } from \"./SelectorComponent\";\nimport { DEFAULT_CATEGORY } from \"../utils/categoryUtils\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport { defaultPreviewTime } from \"../utils/constants\";\nimport { getVideo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface SponsorTimeEditProps {\n index: number;\n\n idSuffix: string;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n submissionNotice: SubmissionNoticeComponent;\n categoryList?: Category[];\n categoryChangeListener?: (index: number, category: Category) => void;\n children?: React.ReactNode;\n}\n\nexport interface SponsorTimeEditState {\n editing: boolean;\n sponsorTimeEdits: [string, string];\n selectedCategory: Category;\n selectedActionType: ActionType;\n description: string;\n suggestedNames: SelectorOption[];\n chapterNameSelectorOpen: boolean;\n chapterNameSelectorHovering: boolean;\n}\n\nconst categoryNamesGrams: string[] = [].concat(...CompileConfig.categoryList.filter((name) => ![\"chapter\", \"intro\"].includes(name))\n .map((name) => chrome.i18n.getMessage(\"category_\" + name).split(/\\/|\\s|-/)));\n\nclass SponsorTimeEditComponent extends React.Component {\n\n idSuffix: string;\n\n categoryOptionRef: React.RefObject;\n actionTypeOptionRef: React.RefObject;\n descriptionOptionRef: React.RefObject;\n\n configUpdateListener: () => void;\n\n previousSkipType: ActionType;\n // Used when selecting POI or Full\n timesBeforeChanging: number[] = [];\n fullVideoWarningShown = false;\n categoryNameWarningShown = false;\n\n // For description auto-complete\n fetchingSuggestions: boolean;\n\n constructor(props: SponsorTimeEditProps) {\n super(props);\n\n this.categoryOptionRef = React.createRef();\n this.actionTypeOptionRef = React.createRef();\n this.descriptionOptionRef = React.createRef();\n\n this.idSuffix = this.props.idSuffix;\n this.previousSkipType = ActionType.Skip;\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.state = {\n editing: false,\n sponsorTimeEdits: [null, null],\n selectedCategory: sponsorTime.category ?? DEFAULT_CATEGORY as Category,\n selectedActionType: sponsorTime.actionType,\n description: sponsorTime.description || \"\",\n suggestedNames: [],\n chapterNameSelectorOpen: false,\n chapterNameSelectorHovering: false\n };\n }\n\n componentDidMount(): void {\n // Prevent inputs from triggering key events\n document.getElementById(\"sponsorTimeEditContainer\" + this.idSuffix).addEventListener('keydown', (e) => {\n e.stopPropagation();\n });\n\n // Prevent scrolling while changing times\n document.getElementById(\"sponsorTimesContainer\" + this.idSuffix).addEventListener('wheel', (e) => {\n if (this.state.editing) {\n e.preventDefault();\n }\n }, {passive: false});\n\n // Add as a config listener\n if (!this.configUpdateListener) {\n this.configUpdateListener = () => this.configUpdate();\n Config.configSyncListeners.push(this.configUpdate.bind(this));\n }\n\n this.checkToShowFullVideoWarning();\n }\n\n componentWillUnmount(): void {\n if (this.configUpdateListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configUpdate.bind(this)), 1);\n }\n }\n\n render(): React.ReactElement {\n this.checkToShowFullVideoWarning();\n this.checkToShowChapterWarning();\n\n const style: React.CSSProperties = {\n textAlign: \"center\"\n };\n\n if (this.props.index != 0) {\n style.marginTop = \"15px\";\n }\n\n const borderColor = this.state.selectedCategory ? Config.config.barTypes[this.state.selectedCategory]?.color : null;\n\n // Create time display\n let timeDisplay: JSX.Element;\n const timeDisplayStyle: React.CSSProperties = {};\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segment = sponsorTime.segment;\n if (this.state.selectedActionType === ActionType.Full) timeDisplayStyle.display = \"none\";\n if (this.state.editing) {\n timeDisplay = (\n
\n\n {this.state.selectedActionType !== ActionType.Poi ? (\n this.setTimeTo(0, 0)}>\n {chrome.i18n.getMessage(\"bracketStart\")}\n \n ): \"\"}\n\n this.setTimeToNow(0)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(0, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(0, e, sponsorTime)}>\n \n\n {this.state.selectedActionType !== ActionType.Poi ? (\n \n \n {\" \" + chrome.i18n.getMessage(\"to\") + \" \"}\n \n\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(1, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(1, e, sponsorTime)}>\n \n\n this.setTimeToNow(1)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n\n this.setTimeToEnd()}>\n {chrome.i18n.getMessage(\"bracketEnd\")}\n \n \n ): \"\"}\n
\n );\n } else {\n timeDisplay = (\n \n
\n {getFormattedTime(segment[0], true) +\n ((!isNaN(segment[1]) && this.state.selectedActionType !== ActionType.Poi)\n ? \" \" + chrome.i18n.getMessage(\"to\") + \" \" + getFormattedTime(segment[1], true) : \"\")}\n
\n );\n }\n\n return (\n
\n \n {timeDisplay}\n\n {/* Category */}\n
\n \n\n {/* open in new tab */}\n \n \n \n
\n\n {/* Action Type */}\n {CompileConfig.categorySupport[sponsorTime.category] && \n (CompileConfig.categorySupport[sponsorTime.category]?.length > 1 \n || CompileConfig.categorySupport[sponsorTime.category]?.[0] === ActionType.Full) ? (\n
\n \n {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.4);\n stopAnimation();\n \n if (sponsorTime.hidden === SponsorHideType.Hidden) {\n sponsorTime.hidden = SponsorHideType.Visible;\n } else {\n sponsorTime.hidden = SponsorHideType.Hidden;\n }\n\n this.saveEditTimes();\n }}/>\n
\n ): \"\"}\n\n {/* Chapter Name */}\n {this.state.selectedActionType=== ActionType.Chapter ? (\n
this.setState({chapterNameSelectorOpen: false})}>\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onContextMenu={(e) => e.stopPropagation()}\n onChange={(e) => this.descriptionUpdate(e.target.value)}\n onFocus={() => this.setState({chapterNameSelectorOpen: true})}>\n \n {this.state.description \n && (this.state.chapterNameSelectorOpen || this.state.chapterNameSelectorHovering) &&\n this.setState({chapterNameSelectorHovering: true})}\n onMouseLeave={() => this.setState({chapterNameSelectorHovering: false})}\n onChange={(v) => this.descriptionUpdate(v)}\n />\n }\n
\n ): \"\"}\n\n {/* Editing Tools */}\n\n
\n \n {chrome.i18n.getMessage(\"delete\")}\n \n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) \n && this.state.selectedActionType !== ActionType.Chapter ? (\n this.previewTime(e.ctrlKey, e.shiftKey)}>\n {chrome.i18n.getMessage(\"preview\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {chrome.i18n.getMessage(\"inspect\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) ? (\n this.previewTime(e.ctrlKey, e.shiftKey, true)}>\n {chrome.i18n.getMessage(\"End\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {this.state.editing ? chrome.i18n.getMessage(\"save\") : chrome.i18n.getMessage(\"edit\")}\n \n ): \"\"}\n
\n\n
\n );\n }\n\n handleOnChange(index: number, e: React.ChangeEvent, sponsorTime: SponsorTime, targetValue: string): void {\n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n \n // check if change is small engough to show tooltip\n const before = getFormattedTimeToSeconds(sponsorTimeEdits[index]);\n const after = getFormattedTimeToSeconds(targetValue);\n const difference = Math.abs(before - after);\n if (0 < difference && difference < 0.5) this.showScrollToEditToolTip();\n\n sponsorTimeEdits[index] = targetValue;\n if (index === 0 && sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = targetValue;\n\n this.setState({sponsorTimeEdits}, () => this.saveEditTimes());\n }\n\n changeTimesWhenScrolling(index: number, e: React.WheelEvent, sponsorTime: SponsorTime): void {\n if (!Config.config.allowScrollingToEdit) return;\n let step = 0;\n // shift + ctrl = 1\n // ctrl = 0.1\n // default = 0.01\n // shift = 0.001\n if (e.shiftKey) {\n step = (e.ctrlKey) ? 1 : 0.001;\n } else {\n step = (e.ctrlKey) ? 0.1 : 0.01;\n }\n \n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n let timeAsNumber = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[index]);\n if (timeAsNumber !== null && e.deltaY != 0) {\n if (e.deltaY < 0) {\n timeAsNumber += step;\n } else if (timeAsNumber >= step) {\n timeAsNumber -= step;\n } else {\n timeAsNumber = 0;\n }\n \n sponsorTimeEdits[index] = getFormattedTime(timeAsNumber, true);\n if (sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = sponsorTimeEdits[0];\n\n this.setState({sponsorTimeEdits});\n this.saveEditTimes();\n }\n }\n\n showScrollToEditToolTip(): void {\n if (!Config.config.scrollToEditTimeUpdate && document.getElementById(\"sponsorRectangleTooltip\" + \"sponsorTimesContainer\" + this.idSuffix) === null) {\n this.showToolTip(chrome.i18n.getMessage(\"SponsorTimeEditScrollNewFeature\"), \"scrollToEdit\", () => { Config.config.scrollToEditTimeUpdate = true });\n }\n }\n\n showToolTip(text: string, id: string, buttonFunction?: () => void): boolean {\n const element = document.getElementById(\"sponsorTimesContainer\" + this.idSuffix);\n if (element) {\n const htmlId = `sponsorRectangleTooltip${id + this.idSuffix}`;\n if (!document.getElementById(htmlId)) {\n new RectangleTooltip({\n text,\n referenceNode: element.parentElement,\n prependElement: element,\n timeout: 15,\n bottomOffset: 0 + \"px\",\n leftOffset: -318 + \"px\",\n backgroundColor: \"rgba(28, 28, 28, 1.0)\",\n htmlId,\n buttonFunction,\n fontSize: \"14px\",\n maxHeight: \"200px\"\n });\n }\n\n return true;\n } else {\n return false;\n }\n }\n\n checkToShowFullVideoWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segmentDuration = sponsorTime.segment[1] - sponsorTime.segment[0];\n const videoPercentage = segmentDuration / getVideoDuration();\n\n if (videoPercentage > 0.6 && !this.fullVideoWarningShown \n && (sponsorTime.category === \"sponsor\" || sponsorTime.category === \"selfpromo\" || sponsorTime.category === \"chooseACategory\")) {\n if (this.showToolTip(chrome.i18n.getMessage(\"fullVideoTooltipWarning\"), \"fullVideoWarning\")) {\n this.fullVideoWarningShown = true;\n }\n }\n }\n\n checkToShowChapterWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n if (sponsorTime.actionType === ActionType.Chapter && sponsorTime.description\n && !this.categoryNameWarningShown\n && categoryNamesGrams.some(\n (category) => sponsorTime.description.toLowerCase().includes(category.toLowerCase()))) {\n if (this.showToolTip(chrome.i18n.getMessage(\"chapterNameTooltipWarning\"), \"chapterWarning\")) {\n this.categoryNameWarningShown = true;\n }\n }\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [(\n \n )];\n\n for (const category of (this.props.categoryList ?? CompileConfig.categoryList)) {\n // If permission not loaded, treat it like we have permission except chapter\n const defaultBlockCategories = [\"chapter\"];\n const permission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[category as Category]);\n if ((defaultBlockCategories.includes(category) \n || (permission !== undefined && !Config.config.showCategoryWithoutPermission)) && !permission) continue;\n\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n getCategoryLockedClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\";\n }\n\n categorySelectionChange(event: React.ChangeEvent): void {\n const chosenCategory = event.target.value as Category;\n this.setState({\n selectedCategory: chosenCategory\n });\n\n // See if show more categories was pressed\n if (chosenCategory !== DEFAULT_CATEGORY && !Config.config.categorySelections.some((category) => category.name === chosenCategory)) {\n event.target.value = DEFAULT_CATEGORY;\n \n // Alert that they have to enable this category first\n if (confirm(chrome.i18n.getMessage(\"enableThisCategoryFirst\")\n .replace(\"{0}\", chrome.i18n.getMessage(\"category_\" + chosenCategory)))) {\n // Open options page\n chrome.runtime.sendMessage({message: \"openConfig\", hash: \"behavior\"});\n }\n \n return;\n }\n\n // Hook update\n if (!Config.config.hookUpdate && chosenCategory === \"preview\") {\n Config.config.hookUpdate = true;\n\n const target = event.target.closest(\".sponsorSkipNotice tbody\");\n if (target) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"hookNewFeature\"),\n referenceNode: target.parentElement,\n prependElement: target as HTMLElement,\n bottomOffset: \"30px\",\n opacity: 0.9,\n timeout: 100\n });\n }\n }\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.handleReplacingLostTimes(chosenCategory, sponsorTime.actionType, sponsorTime);\n this.saveEditTimes();\n\n if (this.props.categoryChangeListener) {\n this.props.categoryChangeListener(this.props.index, chosenCategory);\n }\n }\n\n actionTypeSelectionChange(event: React.ChangeEvent): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n selectedActionType: event.target.value as ActionType\n });\n\n this.handleReplacingLostTimes(sponsorTime.category, event.target.value as ActionType, sponsorTime);\n this.saveEditTimes();\n }\n\n private handleReplacingLostTimes(category: Category, actionType: ActionType, segment: SponsorTime): void {\n if (CompileConfig.categorySupport[category]?.includes(ActionType.Poi)) {\n if (this.previousSkipType !== ActionType.Poi) {\n this.timesBeforeChanging = [null, segment.segment[1]];\n }\n\n this.setTimeTo(1, null);\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n if (this.props.contentContainer().sponsorTimesSubmitting\n .some((segment, i) => segment.category === category && i !== this.props.index)) {\n alert(chrome.i18n.getMessage(\"poiOnlyOneSegment\"));\n }\n\n this.previousSkipType = ActionType.Poi;\n } else if (CompileConfig.categorySupport[category]?.length === 1 \n && CompileConfig.categorySupport[category]?.[0] === ActionType.Full) {\n if (this.previousSkipType !== ActionType.Full) {\n this.timesBeforeChanging = [...segment.segment];\n }\n\n this.previousSkipType = ActionType.Full;\n } else if ((category === \"chooseACategory\" || ((CompileConfig.categorySupport[category]?.includes(ActionType.Skip)\n || CompileConfig.categorySupport[category]?.includes(ActionType.Chapter))\n && ![ActionType.Poi, ActionType.Full].includes(this.getNextActionType(category, actionType))))\n && this.previousSkipType !== ActionType.Skip) {\n if (this.timesBeforeChanging[0]) {\n this.setTimeTo(0, this.timesBeforeChanging[0]);\n }\n if (this.timesBeforeChanging[1]) {\n this.setTimeTo(1, this.timesBeforeChanging[1]);\n }\n\n this.previousSkipType = ActionType.Skip;\n }\n }\n\n getActionTypeOptions(sponsorTime: SponsorTime): React.ReactElement[] {\n const elements = [];\n\n for (const actionType of CompileConfig.categorySupport[sponsorTime.category]) {\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n setTimeToNow(index: number): void {\n this.setTimeTo(index, this.props.contentContainer().getRealCurrentTime());\n }\n\n setTimeToEnd(): void {\n this.setTimeTo(1, getVideoDuration());\n }\n\n /**\n * @param index \n * @param time If null, will set time to the first index's time\n */\n setTimeTo(index: number, time: number): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n if (time === null) time = sponsorTime.segment[0];\n\n const addedTime = sponsorTime.segment.length === 1;\n sponsorTime.segment[index] = time;\n if (sponsorTime.actionType === ActionType.Poi) sponsorTime.segment[1] = time;\n\n if (addedTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n this.setState({\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n }, () => this.saveEditTimes());\n }\n\n toggleEditTime(): void {\n if (this.state.editing) {\n \n this.setState({\n editing: false\n });\n\n this.saveEditTimes(); \n } else {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n editing: true,\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n });\n }\n }\n\n /** Returns an array in the sponsorTimeEdits form (formatted time string) from a normal seconds sponsor time */\n getFormattedSponsorTimesEdits(sponsorTime: SponsorTime): [string, string] {\n return [getFormattedTime(sponsorTime.segment[0], true),\n getFormattedTime(sponsorTime.segment[1], true)];\n }\n\n lastEditTime = 0;\n editTimeTimeout: NodeJS.Timeout | null = null;\n saveEditTimes(): void {\n // Rate limit edits\n const timeSinceLastEdit = Date.now() - this.lastEditTime;\n const rateLimitTime = 200;\n if (timeSinceLastEdit < rateLimitTime) {\n if (!this.editTimeTimeout) {\n this.editTimeTimeout = setTimeout(() => {\n this.saveEditTimes();\n }, rateLimitTime - timeSinceLastEdit)\n }\n\n return;\n }\n\n this.lastEditTime = Date.now();\n this.editTimeTimeout = null;\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n const category = this.categoryOptionRef.current.value as Category\n\n if (this.state.editing) {\n const startTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[0]);\n const endTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[1]);\n\n // Change segment time only if the format was correct\n if (startTime !== null && endTime !== null) {\n const addingTime = sponsorTimesSubmitting[this.props.index].segment.length === 1;\n sponsorTimesSubmitting[this.props.index].segment = [startTime, endTime];\n\n if (addingTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n } else if (startTime !== null) {\n // Only start time is valid, still an incomplete segment\n sponsorTimesSubmitting[this.props.index].segment[0] = startTime;\n }\n } else if (this.state.sponsorTimeEdits[1] === null && category === \"outro\" && !sponsorTimesSubmitting[this.props.index].segment[1]) {\n sponsorTimesSubmitting[this.props.index].segment[1] = getVideoDuration();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n sponsorTimesSubmitting[this.props.index].category = category;\n\n const actionType = this.getNextActionType(category, this.actionTypeOptionRef?.current?.value as ActionType);\n sponsorTimesSubmitting[this.props.index].actionType = actionType;\n this.setState({\n selectedActionType: actionType\n });\n\n const description = actionType === ActionType.Chapter ? this.descriptionOptionRef?.current?.value : \"\";\n sponsorTimesSubmitting[this.props.index].description = description;\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n\n if (sponsorTimesSubmitting[this.props.index].actionType === ActionType.Full \n && (sponsorTimesSubmitting[this.props.index].segment[0] !== 0 || sponsorTimesSubmitting[this.props.index].segment[1] !== 0)) {\n this.setTimeTo(0, 0);\n this.setTimeTo(1, 0);\n }\n }\n\n private getNextActionType(category: Category, actionType: ActionType): ActionType {\n return actionType && CompileConfig.categorySupport[category]?.includes(actionType) ? actionType\n : CompileConfig.categorySupport[category]?.[0] ?? ActionType.Skip\n }\n\n previewTime(ctrlPressed = false, shiftPressed = false, skipToEndTime = false): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n let seekTime = defaultPreviewTime;\n if (ctrlPressed) seekTime = 0.5;\n if (shiftPressed) seekTime = 0.25;\n\n const startTime = sponsorTimes[index].segment[0];\n const endTime = sponsorTimes[index].segment[1];\n\n // If segment starts at 0:00, start playback at the end of the segment\n const skipTime = (startTime === 0 || skipToEndTime) ? endTime : (startTime - (seekTime * getVideo().playbackRate));\n\n this.props.contentContainer().previewTime(skipTime, !skipToEndTime);\n }\n\n inspectTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n\n const skipTime = sponsorTimes[index].segment[0];\n\n this.props.contentContainer().previewTime(skipTime + 0.0001, false);\n }\n\n deleteTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n const removingIncomplete = sponsorTimes[index].segment.length < 2;\n\n sponsorTimes.splice(index, 1);\n \n //save this\n if (sponsorTimes.length > 0) {\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimes;\n } else {\n delete Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n \n //if they are all removed\n if (sponsorTimes.length == 0) {\n this.props.submissionNotice.cancel();\n } else {\n //update display\n this.props.submissionNotice.forceUpdate();\n }\n\n //if it is not a complete segment, or all are removed\n if (sponsorTimes.length === 0 || removingIncomplete) {\n //update video player\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n }\n\n descriptionUpdate(description: string): void {\n this.setState({\n description\n }, () => {\n this.saveEditTimes();\n });\n\n if (!this.fetchingSuggestions) {\n this.fetchSuggestions(description);\n }\n }\n\n async fetchSuggestions(description: string): Promise {\n if (this.props.contentContainer().channelIDInfo.status !== ChannelIDStatus.Found) return;\n\n this.fetchingSuggestions = true;\n try {\n const result = await asyncRequestToServer(\"GET\", \"/api/chapterNames\", {\n description,\n channelID: this.props.contentContainer().channelIDInfo.id\n });\n if (result.ok) {\n const names = JSON.parse(result.responseText) as {description: string}[];\n this.setState({\n suggestedNames: names.map(n => ({\n label: n.description\n }))\n });\n } else if (result.status !== 404) {\n logRequest(result, \"SB\", \"chapter suggestion\")\n }\n } catch (e) {\n console.warn(\"[SB] Caught error while fetching chapter suggestions\", e);\n } finally {\n this.fetchingSuggestions = false;\n }\n }\n\n configUpdate(): void {\n this.forceUpdate();\n }\n}\n\nexport default SponsorTimeEditComponent;\n","import * as React from \"react\";\nimport Config from \"../config\"\nimport GenericNotice from \"../render/GenericNotice\";\nimport { Category, ContentContainer } from \"../types\";\nimport * as CompileConfig from \"../../config.json\";\n\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport SponsorTimeEditComponent from \"./SponsorTimeEditComponent\";\nimport { getGuidelineInfo } from \"../utils/constants\";\nimport { exportTimes } from \"../utils/exporter\";\nimport { getVideo, isCurrentTimeWrong } from \"../../maze-utils/src/video\";\n\nexport interface SubmissionNoticeProps { \n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => Promise;\n\n closeListener: () => void;\n}\n\nexport interface SubmissionNoticeState {\n noticeTitle: string;\n messages: string[];\n idSuffix: string;\n}\n\nclass SubmissionNoticeComponent extends React.Component {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => unknown;\n\n noticeRef: React.MutableRefObject;\n timeEditRefs: React.RefObject[];\n\n videoObserver: MutationObserver;\n\n guidelinesReminder: GenericNotice;\n\n lastSegmentCount: number;\n\n constructor(props: SubmissionNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n\n this.contentContainer = props.contentContainer;\n this.callback = props.callback;\n \n const noticeTitle = chrome.i18n.getMessage(\"confirmNoticeTitle\");\n\n this.lastSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n idSuffix: \"SubmissionNotice\"\n };\n }\n\n componentDidMount(): void {\n // Catch and rerender when the video size changes\n //TODO: Use ResizeObserver when it is supported in TypeScript\n this.videoObserver = new MutationObserver(() => {\n this.forceUpdate();\n });\n\n this.videoObserver.observe(getVideo(), {\n attributes: true\n });\n\n // Prevent zooming while changing times\n document.getElementById(\"sponsorSkipNoticeMiddleRow\" + this.state.idSuffix).addEventListener('wheel', function (event) {\n if (event.ctrlKey) {\n event.preventDefault();\n }\n }, {passive: false});\n }\n\n componentWillUnmount(): void {\n if (this.videoObserver) {\n this.videoObserver.disconnect();\n }\n }\n\n componentDidUpdate() {\n const currentSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n if (currentSegmentCount > this.lastSegmentCount) {\n this.lastSegmentCount = currentSegmentCount;\n\n this.scrollToBottom();\n }\n }\n\n scrollToBottom() {\n const scrollElement = this.noticeRef.current.getElement().current.querySelector(\"#sponsorSkipNoticeMiddleRowSubmissionNotice\");\n scrollElement.scrollTo({\n top: scrollElement.scrollHeight + 1000\n });\n }\n\n render(): React.ReactElement {\n const sortButton = \n this.sortSegments()}\n title={chrome.i18n.getMessage(\"sortSegments\")}\n key=\"sortButton\"\n src={chrome.runtime.getURL(\"icons/sort.svg\")}>\n ;\n const exportButton = \n this.exportSegments()}\n title={chrome.i18n.getMessage(\"exportSegments\")}\n key=\"exportButton\"\n src={chrome.runtime.getURL(\"icons/export.svg\")}>\n ;\n return (\n \n\n {/* Text Boxes */}\n {this.getMessageBoxes()}\n\n {/* Sponsor Time List */}\n e.stopPropagation()}>\n \n {this.getSponsorTimeMessages()}\n \n \n\n {/* Last Row */}\n \n\n \n\n {/* Guidelines button */}\n \n\n {/* Submit Button */}\n \n \n \n\n \n );\n }\n\n getSponsorTimeMessages(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n this.timeEditRefs = [];\n\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n const timeRef = React.createRef();\n\n elements.push(\n \n \n );\n\n this.timeEditRefs.push(timeRef);\n }\n\n return elements;\n }\n\n getMessageBoxes(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n );\n }\n\n return elements;\n }\n\n cancel(): void {\n this.guidelinesReminder?.close();\n this.noticeRef.current.close(true);\n\n this.contentContainer().resetSponsorSubmissionNotice(false);\n\n this.props.closeListener();\n }\n\n submit(): void {\n if (isCurrentTimeWrong()) {\n alert(chrome.i18n.getMessage(\"submissionFailedServerSideAds\"));\n return;\n }\n\n // save all items\n for (const ref of this.timeEditRefs) {\n ref.current.saveEditTimes();\n }\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"chooseACategory\") {\n alert(chrome.i18n.getMessage(\"youMustSelectACategory\"));\n return;\n }\n }\n\n // Check if any non music categories are being used on a music video\n if (this.contentContainer().videoInfo?.microformat?.playerMicroformatRenderer?.category === \"Music\") {\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"sponsor\") {\n if (!confirm(chrome.i18n.getMessage(\"nonMusicCategoryOnMusic\"))) return;\n\n break;\n }\n }\n }\n\n this.props.callback().then((success) => {\n if (success) {\n this.cancel();\n }\n });\n }\n\n sortSegments(): void {\n let sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n sponsorTimesSubmitting = sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.forceUpdate();\n }\n\n exportSegments() {\n const sponsorTimesSubmitting = this.props.contentContainer()\n .sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n window.navigator.clipboard.writeText(exportTimes(sponsorTimesSubmitting));\n\n new GenericNotice(null, \"exportCopied\", {\n title: chrome.i18n.getMessage(`CopiedExclamation`),\n timed: true,\n maxCountdownTime: () => 0.6,\n referenceNode: document.querySelector(\".noticeLeftIcon\"),\n dontPauseCountdown: true,\n style: {\n top: 0,\n bottom: 0,\n minWidth: 0,\n right: \"30px\",\n margin: \"auto\"\n },\n hideLogo: true,\n hideRightInfo: true,\n extraClass: \"exportCopiedNotice\"\n });\n }\n\n categoryChangeListener(index: number, category: Category): void {\n const dialogWidth = this.noticeRef?.current?.getElement()?.current?.offsetWidth;\n if (category !== \"chooseACategory\" && Config.config.showCategoryGuidelines\n && getVideo().offsetWidth > dialogWidth * 2) {\n const options = {\n title: chrome.i18n.getMessage(`category_${category}`),\n textBoxes: getGuidelineInfo(category),\n buttons: [{\n name: chrome.i18n.getMessage(\"FullDetails\"),\n listener: () => window.open(CompileConfig.wikiLinks[category])\n },\n {\n name: chrome.i18n.getMessage(\"Hide\"),\n listener: () => {\n Config.config.showCategoryGuidelines = false;\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }],\n timed: false,\n style: {\n right: `${dialogWidth + 10}px`,\n },\n extraClass: \"sb-guidelines-notice\"\n };\n\n if (options.textBoxes) {\n if (this.guidelinesReminder) {\n this.guidelinesReminder.update(options);\n } else {\n this.guidelinesReminder = new GenericNotice(null, \"GuidelinesReminder\", options);\n }\n } else {\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }\n }\n}\n\nexport default SubmissionNoticeComponent;\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import Config from \"./config\";\nimport {\n ActionType,\n Category,\n CategorySkipOption,\n ChannelIDStatus,\n ContentContainer,\n ScheduledTime,\n SegmentUUID,\n SkipToTimeParams,\n SponsorHideType,\n SponsorSourceType,\n SponsorTime,\n ToggleSkippable,\n VideoID,\n VideoInfo,\n} from \"./types\";\nimport Utils from \"./utils\";\nimport PreviewBar, { PreviewBarSegment } from \"./js-components/previewBar\";\nimport SkipNotice from \"./render/SkipNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport UpcomingNotice from \"./render/UpcomingNotice\";\nimport SubmissionNotice from \"./render/SubmissionNotice\";\nimport { Message, MessageResponse, VoteResponse } from \"./messageTypes\";\nimport { SkipButtonControlBar } from \"./js-components/skipButtonControlBar\";\nimport { getStartTimeFromUrl } from \"./utils/urlParser\";\nimport { getControls, getExistingChapters, getHashParams, hasAutogeneratedChapters, isPlayingPlaylist, isVisible } from \"./utils/pageUtils\";\nimport { CategoryPill } from \"./render/CategoryPill\";\nimport { AnimationUtils } from \"../maze-utils/src/animationUtils\";\nimport { GenericUtils } from \"./utils/genericUtils\";\nimport { logDebug, logWarn } from \"./utils/logger\";\nimport { importTimes } from \"./utils/exporter\";\nimport { ChapterVote } from \"./render/ChapterVote\";\nimport { openWarningDialog } from \"./utils/warnings\";\nimport { extensionUserAgent, isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { formatJSErrorMessage, getFormattedTime, getLongErrorMessage } from \"../maze-utils/src/formating\";\nimport { getChannelIDInfo, getVideo, getIsAdPlaying, getIsLivePremiere, setIsAdPlaying, checkVideoIDChange, getVideoID, getYouTubeVideoID, setupVideoModule, checkIfNewVideoID, isOnInvidious, isOnMobileYouTube, isOnYouTubeMusic, isOnYTTV, getLastNonInlineVideoID, triggerVideoIDChange, triggerVideoElementChange, getIsInline, getCurrentTime, setCurrentTime, getVideoDuration, verifyCurrentTime, waitForVideo } from \"../maze-utils/src/video\";\nimport { Keybind, StorageChangesObject, isSafari, keybindEquals, keybindToString } from \"../maze-utils/src/config\";\nimport { findValidElement } from \"../maze-utils/src/dom\"\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\nimport { updateAll } from \"../maze-utils/src/thumbnailManagement\";\nimport { setupThumbnailListener } from \"./utils/thumbnails\";\nimport * as documentScript from \"../dist/js/document.js\";\nimport { isVorapisInstalled, runCompatibilityChecks } from \"./utils/compatibility\";\nimport { cleanPage } from \"./utils/pageCleaner\";\nimport { addCleanupListener } from \"../maze-utils/src/cleanup\";\nimport { hideDeArrowPromotion, tryShowingDeArrowPromotion } from \"./dearrowPromotion\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { isMobileControlsOpen } from \"./utils/mobileUtils\";\nimport { defaultPreviewTime } from \"./utils/constants\";\nimport { onVideoPage } from \"../maze-utils/src/pageInfo\";\nimport { getSegmentsForVideo } from \"./utils/segmentData\";\nimport { getCategoryDefaultSelection, getCategorySelection } from \"./utils/skipRule\";\nimport { getSkipProfileBool, getSkipProfileIDForTab, hideTooShortSegments, setCurrentTabSkipProfile } from \"./utils/skipProfiles\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\n\ncleanPage();\n\nconst utils = new Utils();\n\nutils.wait(() => Config.isReady(), 5000, 10).then(() => {\n // Hack to get the CSS loaded on permission-based sites (Invidious)\n addCSS();\n setCategoryColorCSSVariables();\n\n runCompatibilityChecks();\n});\n\nconst skipBuffer = 0.003;\n// If this close to the end, skip to the end\nconst endTimeSkipBuffer = 0.5;\n\n//was sponsor data found when doing SponsorsLookup\nlet sponsorDataFound = false;\n//the actual sponsorTimes if loaded and UUIDs associated with them\nlet sponsorTimes: SponsorTime[] = [];\nlet existingChaptersImported = false;\nlet importingChaptersWaitingForFocus = false;\nlet importingChaptersWaiting = false;\nlet loopedChapter :SponsorTime = null;\n// List of open skip notices\nconst skipNotices: SkipNotice[] = [];\nlet upcomingNotice: UpcomingNotice | null = null;\nlet activeSkipKeybindElement: ToggleSkippable = null;\nlet shownSegmentFailedToFetchWarning = false;\nlet selectedSegment: SegmentUUID | null = null;\nlet previewedSegment = false;\n\n// JSON video info\nlet videoInfo: VideoInfo = null;\n// Locked Categories in this tab, like: [\"sponsor\",\"intro\",\"outro\"]\nlet lockedCategories: Category[] = [];\n// Used to calculate a more precise \"virtual\" video time\nconst lastKnownVideoTime: { videoTime: number; preciseTime: number; fromPause: boolean; approximateDelay: number } = {\n videoTime: null,\n preciseTime: null,\n fromPause: false,\n approximateDelay: null,\n};\n// It resumes with a slightly later time on chromium\nlet lastTimeFromWaitingEvent: number = null;\nconst lastNextChapterKeybind = {\n time: 0,\n date: 0\n};\n\n// Skips are scheduled to ensure precision.\n// Skips are rescheduled every seeking event.\n// Skips are canceled every seeking event\nlet currentSkipSchedule: NodeJS.Timeout = null;\nlet currentSkipInterval: NodeJS.Timeout = null;\nlet currentVirtualTimeInterval: NodeJS.Timeout = null;\nlet currentUpcomingSchedule: NodeJS.Timeout = null;\n\n/** Has the sponsor been skipped */\nlet sponsorSkipped: boolean[] = [];\n\nlet videoMuted = false; // Has it been attempted to be muted\nconst controlsWithEventListeners: HTMLElement[] = [];\n\nsetupVideoModule({\n videoIDChange,\n channelIDChange,\n videoElementChange,\n playerInit: () => {\n previewBar = null; // remove old previewbar\n createPreviewBar();\n },\n updatePlayerBar: () => {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n },\n resetValues,\n documentScript: chrome.runtime.getManifest().manifest_version === 2 ? documentScript : undefined\n}, () => Config);\nsetupThumbnailListener();\n\n// Is the video currently being switched\nlet switchingVideos = null;\n\n// Used by the play and playing listeners to make sure two aren't\n// called at the same time\nlet lastCheckTime = 0;\nlet lastCheckVideoTime = -1;\n\n// To determine if a video resolution change is happening\nlet firstPlay = true;\n\nlet previewBar: PreviewBar = null;\n// Skip to highlight button\nlet skipButtonControlBar: SkipButtonControlBar = null;\n// For full video sponsors/selfpromo\nlet categoryPill: CategoryPill = null;\n\n/** Element containing the player controls on the YouTube player. */\nlet controls: HTMLElement | null = null;\n\n/** Contains buttons created by `createButton()`. */\nconst playerButtons: Record = {};\n\naddHotkeyListener();\n\n/** Segments created by the user which have not yet been submitted. */\nlet sponsorTimesSubmitting: SponsorTime[] = [];\nlet loadedPreloadedSegment = false;\n\n//becomes true when isInfoFound is called\n//this is used to close the popup on YouTube when the other popup opens\nlet popupInitialised = false;\n\nlet submissionNotice: SubmissionNotice = null;\n\nlet lastResponseStatus: number | Error | string;\n\n// Contains all of the functions and variables needed by the skip notice\nconst skipNoticeContentContainer: ContentContainer = () => ({\n vote,\n dontShowNoticeAgain,\n unskipSponsorTime,\n sponsorTimes,\n sponsorTimesSubmitting,\n skipNotices,\n sponsorVideoID: getVideoID(),\n reskipSponsorTime,\n updatePreviewBar,\n onMobileYouTube: isOnMobileYouTube(),\n sponsorSubmissionNotice: submissionNotice,\n resetSponsorSubmissionNotice,\n updateEditButtonsOnPlayer,\n previewTime,\n videoInfo,\n getRealCurrentTime: getRealCurrentTime,\n lockedCategories,\n channelIDInfo: getChannelIDInfo()\n});\n\n// value determining when to count segment as skipped and send telemetry to server (percent based)\nconst manualSkipPercentCount = 0.5;\n\n//get messages from the background script and the popup\nchrome.runtime.onMessage.addListener(messageListener);\n\nfunction messageListener(request: Message, sender: unknown, sendResponse: (response: MessageResponse) => void): void | boolean {\n //messages from popup script\n switch(request.message){\n case \"update\":\n checkVideoIDChange();\n break;\n case \"sponsorStart\":\n startOrEndTimingNewSegment()\n\n sendResponse({\n creatingSegment: isSegmentCreationInProgress(),\n });\n\n break;\n case \"isInfoFound\":\n //send the sponsor times along with if it's found\n sendResponse({\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n\n if (!request.updating && popupInitialised && document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //the popup should be closed now that another is opening\n closeInfoMenu();\n }\n\n popupInitialised = true;\n break;\n case \"getChannelID\":\n sendResponse({\n channelID: getChannelIDInfo().id,\n isYTTV: (document.location.host === \"tv.youtube.com\")\n });\n\n break;\n case \"submitTimes\":\n openSubmissionMenu();\n break;\n case \"refreshSegments\":\n // update video on refresh if videoID invalid\n if (!getVideoID()) {\n checkVideoIDChange();\n }\n // if popup rescieves no response, or the videoID is invalid,\n // it will assume the page is not a video page and stop the refresh animation\n sendResponse({ hasVideo: getVideoID() != null });\n // fetch segments\n if (getVideoID()) {\n sponsorsLookup(false, true);\n }\n\n break;\n case \"unskip\":\n unskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), null, true);\n break;\n case \"reskip\":\n reskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), true);\n break;\n case \"selectSegment\":\n selectSegment(request.UUID);\n break;\n case \"submitVote\":\n vote(request.type, request.UUID).then((response) => sendResponse(response));\n return true;\n case \"hideSegment\":\n utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID).hidden = request.type;\n utils.addHiddenSegment(getVideoID(), request.UUID, request.type);\n updatePreviewBar();\n\n if (skipButtonControlBar?.isEnabled()\n && sponsorTimesSubmitting.every((s) => s.hidden !== SponsorHideType.Visible || s.actionType !== ActionType.Poi)) {\n skipButtonControlBar.disable();\n }\n break;\n case \"closePopup\":\n closeInfoMenu();\n break;\n case \"copyToClipboard\":\n navigator.clipboard.writeText(request.text);\n break;\n case \"loopChapter\":\n if (!request.UUID){\n loopedChapter = null;\n break;\n }\n loopedChapter = {...utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID)};\n loopedChapter.segment = [loopedChapter.segment[1], loopedChapter.segment[0]];\n break;\n case \"importSegments\": {\n const importedSegments = importTimes(request.data, getVideoDuration());\n let addedSegments = false;\n for (const segment of importedSegments) {\n if (!sponsorTimesSubmitting.some(\n (s) => Math.abs(s.segment[0] - segment.segment[0]) < 1\n && Math.abs(s.segment[1] - segment.segment[1]) < 1\n && s.description === segment.description)) {\n const hasChaptersPermission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[\"chapter\"]);\n if (segment.category === \"chapter\" && (!getCategoryDefaultSelection(\"chapter\") || !hasChaptersPermission)) {\n segment.category = \"chooseACategory\" as Category;\n segment.actionType = ActionType.Skip;\n segment.description = \"\";\n }\n\n sponsorTimesSubmitting.push(segment);\n addedSegments = true;\n }\n }\n\n if (addedSegments) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n openSubmissionMenu();\n }\n\n sendResponse({\n importedSegments\n });\n break;\n }\n case \"keydown\":\n (document.body || document).dispatchEvent(new KeyboardEvent('keydown', {\n key: request.key,\n keyCode: request.keyCode,\n code: request.code,\n which: request.which,\n shiftKey: request.shiftKey,\n ctrlKey: request.ctrlKey,\n altKey: request.altKey,\n metaKey: request.metaKey\n }));\n break;\n case \"getLogs\":\n sendResponse({\n debug: window[\"SBLogs\"].debug,\n warn: window[\"SBLogs\"].warn\n });\n break;\n case \"setCurrentTabSkipProfile\":\n setCurrentTabSkipProfile(request.configID);\n channelIDChange();\n break;\n }\n\n sendResponse({});\n}\n\n/**\n * Called when the config is updated\n */\nfunction contentConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"hideVideoPlayerControls\":\n case \"hideInfoButtonPlayerControls\":\n case \"hideDeleteButtonPlayerControls\":\n updateVisibilityOfPlayerControlsButton()\n break;\n case \"categorySelections\":\n channelIDChange();\n break;\n case \"barTypes\":\n setCategoryColorCSSVariables();\n break;\n case \"fullVideoSegments\":\n case \"fullVideoLabelsOnThumbnails\":\n updateAll();\n break;\n }\n }\n}\nfunction contentLocalConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"channelSkipProfileIDs\":\n case \"skipProfiles\":\n case \"skipProfileTemp\":\n channelIDChange();\n break;\n }\n }\n}\n\nif (!window.location.href.includes(\"youtube.com/live_chat\")) {\n if (!Config.configSyncListeners.includes(contentConfigUpdateListener)) {\n Config.configSyncListeners.push(contentConfigUpdateListener);\n }\n\n if (!Config.configLocalListeners.includes(contentLocalConfigUpdateListener)) {\n Config.configLocalListeners.push(contentLocalConfigUpdateListener);\n }\n}\n\nfunction resetValues() {\n lastCheckTime = 0;\n lastCheckVideoTime = -1;\n previewedSegment = false;\n firstPlay = true;\n\n sponsorTimes = [];\n existingChaptersImported = false;\n sponsorSkipped = [];\n loopedChapter = null;\n lastResponseStatus = 0;\n shownSegmentFailedToFetchWarning = false;\n\n videoInfo = null;\n lockedCategories = [];\n\n //empty the preview bar\n if (previewBar !== null) {\n previewBar.clear();\n }\n\n //reset sponsor data found check\n sponsorDataFound = false;\n\n // When first loading a video, it is not switching videos\n // Hover play also doesn't need this check\n if (switchingVideos === null || !onVideoPage()) {\n switchingVideos = false;\n } else {\n switchingVideos = true;\n logDebug(\"Setting switching videos to true (reset data)\");\n }\n\n skipButtonControlBar?.disable();\n categoryPill?.setVisibility(false);\n\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop()?.close();\n }\n\n if (upcomingNotice) {\n upcomingNotice.close();\n upcomingNotice = null;\n }\n\n hideDeArrowPromotion();\n}\n\nfunction videoIDChange(): void {\n //setup the preview bar\n if (previewBar === null) {\n if (isOnMobileYouTube()) {\n // Mobile YouTube workaround\n const observer = new MutationObserver(handleMobileControlsMutations);\n let controlsContainer = null;\n\n utils.wait(() => {\n controlsContainer = document.getElementById(\"player-control-container\")\n return controlsContainer !== null\n }).then(() => {\n observer.observe(document.getElementById(\"player-control-container\"), {\n attributes: true,\n childList: true,\n subtree: true\n });\n }).catch();\n } else {\n utils.wait(getControls).then(createPreviewBar);\n }\n }\n\n // Notify the popup about the video change\n chrome.runtime.sendMessage({\n message: \"videoChanged\",\n videoID: getVideoID(),\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author\n });\n\n sponsorsLookup();\n\n // Make sure all player buttons are properly added\n updateVisibilityOfPlayerControlsButton();\n\n // Clear unsubmitted segments from the previous video\n sponsorTimesSubmitting = [];\n updateSponsorTimesSubmitting();\n\n tryShowingDeArrowPromotion().catch(logWarn);\n\n checkPreviewbarState();\n\n if (getIsInline()) {\n // Hover preview progress bar can take some time to appear\n // and if the miniplayer is also active then it would \n // attach to the wrong one\n setTimeout(checkPreviewbarState, 500);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 3000);\n }\n}\n\nfunction handleMobileControlsMutations(): void {\n // Don't update while scrubbing\n if (!chrome.runtime?.id \n || document.querySelector(\".YtProgressBarProgressBarPlayheadDotInDragging\")) return;\n\n updateVisibilityOfPlayerControlsButton();\n\n skipButtonControlBar?.updateMobileControls();\n\n if (previewBar !== null) {\n if (!previewBar.parent.contains(previewBar.container) && isMobileControlsOpen()) {\n previewBar.createElement();\n updatePreviewBar();\n\n return;\n } else if (!previewBar.parent.isConnected) {\n // The parent does not exist anymore, remove that old preview bar\n previewBar.remove();\n previewBar = null;\n }\n }\n\n // Create the preview bar if needed (the function hasn't returned yet)\n createPreviewBar();\n}\n\nfunction getPreviewBarAttachElement(): HTMLElement | null {\n const progressElementOptions = [{\n // For newer mobile YouTube (Sept 2024)\n selector: \".ytChapteredProgressBarHost, .ytProgressBarLineHost, .YtProgressBarLineHost, .YtChapteredProgressBarHost\",\n isVisibleCheck: true\n }, {\n // For newer mobile YouTube (May 2024)\n selector: \".YtmProgressBarProgressBarLine\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube hover play\n // Priority is given to the hover play progress bar over the main progress bar\n // for miniplayer + hover preview case\n // Second is new hover play selector\n selector: \"#video-preview .ytp-progress-bar, #video-preview .YtProgressBarLineHost\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".ytp-progress-bar\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".no-model.cue-range-marker\",\n isVisibleCheck: true\n }, {\n // For Invidious/VideoJS\n selector: \".vjs-progress-holder\",\n isVisibleCheck: false\n }, {\n // For Youtube Music and YTKids\n // there are two sliders, one for volume and one for progress - both called #progressContainer\n selector: \"#progress-bar>#sliderContainer>div>#sliderBar>#progressContainer\",\n }, {\n // For piped\n selector: \".shaka-ad-markers\",\n isVisibleCheck: false\n }, {\n // For Vorapis v3\n selector: \".ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\"\n }, {\n // For YTTV\n selector: \".yssi-slider > div.ytu-ss-timeline-container\",\n isVisibleCheck: false\n }\n ];\n\n for (const option of progressElementOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.isVisibleCheck ? findValidElement(allElements) : allElements[0];\n\n if (el) {\n return el;\n }\n }\n\n return null;\n}\n\n/**\n * Creates a preview bar on the video\n */\nfunction createPreviewBar(): void {\n if (previewBar !== null) return;\n\n const el = getPreviewBarAttachElement();\n\n if (el) {\n const chapterVote = new ChapterVote(voteAsync);\n previewBar = new PreviewBar(el, isOnMobileYouTube(), isOnInvidious(), isOnYTTV(), chapterVote, () => importExistingChapters(true));\n\n updatePreviewBar();\n }\n}\n\n/**\n * Triggered every time the video duration changes.\n * This happens when the resolution changes or at random time to clear memory.\n */\nfunction durationChangeListener(): void {\n updateAdFlag();\n updatePreviewBar();\n}\n\n/**\n * Triggered once the video is ready.\n * This is mainly to attach to embedded players who don't have a video element visible.\n */\nfunction videoOnReadyListener(): void {\n createPreviewBar();\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton()\n}\n\nfunction cancelSponsorSchedule(): void {\n logDebug(\"Pausing skipping\");\n\n if (currentSkipSchedule !== null) {\n clearTimeout(currentSkipSchedule);\n currentSkipSchedule = null;\n }\n\n if (currentSkipInterval !== null) {\n clearInterval(currentSkipInterval);\n currentSkipInterval = null;\n }\n\n if (currentUpcomingSchedule !== null) {\n clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = null;\n }\n}\n\n/**\n * @param currentTime Optional if you don't want to use the actual current time\n */\nasync function startSponsorSchedule(includeIntersectingSegments = false, currentTime?: number, includeNonIntersectingSegments = true): Promise {\n cancelSponsorSchedule();\n\n // Don't skip if advert playing and reset last checked time\n if (getIsAdPlaying()) {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n logDebug(\"[SB] Ad playing, pausing skipping\");\n\n return;\n }\n\n // Give up if video changed, and trigger a videoID change if so\n if (await checkIfNewVideoID()) {\n return;\n }\n\n logDebug(`Considering to start skipping: ${!getVideo()}, ${getVideo()?.paused}`);\n if (!getVideo()) return;\n if (currentTime === undefined || currentTime === null) {\n currentTime = getVirtualTime();\n }\n clearWaitingTime();\n\n updateActiveSegment(currentTime);\n\n if ((getVideo().paused && getCurrentTime() !== 0) // Allow autoplay disabled videos to skip before playing\n || (getCurrentTime() >= getVideoDuration() - 0.01 && getVideoDuration() > 1)) return;\n const skipInfo = getNextSkipIndex(currentTime, includeIntersectingSegments, includeNonIntersectingSegments);\n\n const currentSkip = skipInfo.array[skipInfo.index];\n const skipTime: number[] = [currentSkip?.scheduledTime, skipInfo.array[skipInfo.endIndex]?.segment[1]];\n const timeUntilSponsor = skipTime?.[0] - currentTime;\n const videoID = getVideoID();\n\n if (videoMuted && !inMuteSegment(currentTime, skipInfo.index !== -1\n && timeUntilSponsor < skipBuffer && shouldAutoSkip(currentSkip))) {\n getVideo().muted = false;\n videoMuted = false;\n\n for (const notice of skipNotices) {\n // So that the notice can hide buttons\n notice.unmutedListener(currentTime);\n }\n }\n\n logDebug(`Ready to start skipping: ${skipInfo.index} at ${currentTime}`);\n if (skipInfo.index === -1) return;\n\n if (Config.config.disableSkipping || (getChannelIDInfo().status === ChannelIDStatus.Fetching && Config.config.forceChannelCheck)){\n return;\n }\n\n if (incorrectVideoCheck()) return;\n\n // Find all indexes in between the start and end\n let skippingSegments = [skipInfo.array[skipInfo.index]];\n if (skipInfo.index !== skipInfo.endIndex) {\n skippingSegments = [];\n\n for (const segment of skipInfo.array) {\n if (shouldAutoSkip(segment) &&\n segment.segment[0] >= skipTime[0] && segment.segment[1] <= skipTime[1]\n && segment.segment[0] === segment.scheduledTime) { // Don't include artificial scheduled segments (end times for mutes)\n skippingSegments.push(segment);\n }\n }\n }\n\n logDebug(`Next step in starting skipping: ${!shouldSkip(currentSkip)}, ${!sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)}`);\n\n const skippingFunction = (forceVideoTime?: number) => {\n let forcedSkipTime: number = null;\n let forcedIncludeIntersectingSegments = false;\n let forcedIncludeNonIntersectingSegments = true;\n\n if (incorrectVideoCheck(videoID, currentSkip)) return;\n forceVideoTime ||= Math.max(getCurrentTime(), getVirtualTime());\n\n if ((shouldSkip(currentSkip)\n || sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment\n && segment.actionType !== ActionType.Chapter\n && segment.hidden === SponsorHideType.Visible))) {\n if (forceVideoTime >= skipTime[0] - skipBuffer && (forceVideoTime < skipTime[1] || skipTime[1] < skipTime[0])) {\n skipToTime({\n v: getVideo(),\n skipTime,\n skippingSegments,\n openNotice: skipInfo.openNotice\n });\n\n // These are segments that start at the exact same time but need separate notices\n for (const extra of skipInfo.extraIndexes) {\n const extraSkip = skipInfo.array[extra];\n if (shouldSkip(extraSkip)) {\n skipToTime({\n v: getVideo(),\n skipTime: [extraSkip.scheduledTime, extraSkip.segment[1]],\n skippingSegments: [extraSkip],\n openNotice: skipInfo.openNotice\n });\n }\n }\n\n if (getCategorySelection(currentSkip)?.option === CategorySkipOption.ManualSkip\n || currentSkip.actionType === ActionType.Mute) {\n forcedSkipTime = skipTime[0] + 0.001;\n } else {\n forcedSkipTime = skipTime[1];\n forcedIncludeNonIntersectingSegments = false;\n\n // Only if not at the end of the video\n if (Math.abs(skipTime[1] - getVideoDuration()) > endTimeSkipBuffer) {\n forcedIncludeIntersectingSegments = true;\n }\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n\n // Don't pretend to be earlier than we are, could result in loops\n if (forcedSkipTime !== null && forceVideoTime > forcedSkipTime && skipTime[1] > skipTime[0]) {\n forcedSkipTime = forceVideoTime;\n }\n\n startSponsorSchedule(forcedIncludeIntersectingSegments, forcedSkipTime, forcedIncludeNonIntersectingSegments);\n };\n\n if (timeUntilSponsor < skipBuffer) {\n skippingFunction(currentTime);\n } else {\n let delayTime = timeUntilSponsor * 1000 * (1 / getVideo().playbackRate);\n if (delayTime < (isFirefoxOrSafari() && !isSafari() ? 750 : 300)\n && shouldAutoSkip(skippingSegments[0])) {\n let forceStartIntervalTime: number | null = null;\n if (isFirefoxOrSafari() && !isSafari() && delayTime > 300) {\n forceStartIntervalTime = await waitForNextTimeChange();\n }\n\n // Use interval instead of timeout near the end to combat imprecise video time\n const startIntervalTime = forceStartIntervalTime || performance.now();\n const startVideoTime = Math.max(currentTime, getVirtualTime());\n delayTime = (skipTime?.[0] - startVideoTime) * 1000 * (1 / getVideo().playbackRate);\n\n let startWaitingForReportedTimeToChange = true;\n const reportedVideoTimeAtStart = getCurrentTime();\n logDebug(`Starting setInterval skipping ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n if (currentSkipInterval !== null) clearInterval(currentSkipInterval);\n currentSkipInterval = setInterval(() => {\n // Estimate delay, but only take the current time right after a change\n // Current time remains the same for many \"frames\" on Firefox\n if (isFirefoxOrSafari() && !lastKnownVideoTime.fromPause && startWaitingForReportedTimeToChange\n && reportedVideoTimeAtStart !== getCurrentTime()) {\n startWaitingForReportedTimeToChange = false;\n const delay = getVirtualTime() - getCurrentTime();\n if (delay > 0) lastKnownVideoTime.approximateDelay = delay;\n }\n\n const intervalDuration = performance.now() - startIntervalTime;\n if (intervalDuration + skipBuffer * 1000 >= delayTime || getVirtualTime() + skipBuffer >= skipTime[0]) {\n clearInterval(currentSkipInterval);\n if (!isFirefoxOrSafari() && !getVideo().muted && !inMuteSegment(getCurrentTime(), true)) {\n // Workaround for more accurate skipping on Chromium\n getVideo().muted = true;\n getVideo().muted = false;\n }\n\n skippingFunction(Math.max(getVirtualTime(), startVideoTime + getVideo().playbackRate * Math.max(delayTime, intervalDuration) / 1000));\n }\n }, 0);\n } else {\n logDebug(`Starting timeout to skip ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n const offset = (isFirefoxOrSafari() && !isSafari() ? 600 : 150);\n // Schedule for right before to be more precise than normal timeout\n const offsetDelayTime = Math.max(0, delayTime - offset);\n currentSkipSchedule = setTimeout(skippingFunction, offsetDelayTime);\n\n // Show the notice only if the segment hasn't already started\n if (Config.config.showUpcomingNotice && getCurrentTime() < skippingSegments[0].segment[0] \n && !sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)\n && [ActionType.Skip, ActionType.Mute].includes(skippingSegments[0].actionType)\n && getCategorySelection(skippingSegments[0])?.option > CategorySkipOption.ShowOverlay\n && !getVideo()?.paused) {\n const maxPopupTime = 3000;\n const timeUntilPopup = Math.max(0, offsetDelayTime - maxPopupTime);\n const popupTime = offsetDelayTime - timeUntilPopup;\n const autoSkip = shouldAutoSkip(skippingSegments[0]);\n\n if (currentUpcomingSchedule) clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = setTimeout(createUpcomingNotice, timeUntilPopup, [skippingSegments[0]], popupTime, autoSkip);\n }\n }\n }\n}\n\n/**\n * Used on Firefox only, waits for the next animation frame until\n * the video time has changed\n */\nfunction waitForNextTimeChange(): Promise {\n return new Promise((resolve) => {\n getVideo().addEventListener(\"timeupdate\", () => resolve(performance.now()), { once: true });\n });\n}\n\nfunction getVirtualTime(): number {\n const virtualTime = lastTimeFromWaitingEvent ?? (lastKnownVideoTime.videoTime !== null ?\n (performance.now() - lastKnownVideoTime.preciseTime) * (getVideo()?.playbackRate || 1) / 1000 + lastKnownVideoTime.videoTime : null);\n\n if (Config.config.useVirtualTime && !isSafari() && virtualTime\n && virtualTime > getCurrentTime() && virtualTime - getCurrentTime() < 0.8 && getCurrentTime() !== 0) {\n return Math.max(virtualTime, getCurrentTime());\n } else {\n return getCurrentTime();\n }\n}\n\nfunction inMuteSegment(currentTime: number, includeOverlap: boolean): boolean {\n const checkFunction = (segment) => segment.actionType === ActionType.Mute\n && segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime\n && (segment.segment[1] > currentTime || (includeOverlap && segment.segment[1] + 0.02 > currentTime));\n return sponsorTimes?.some(checkFunction) || sponsorTimesSubmitting.some(checkFunction);\n}\n\n/**\n * This makes sure the videoID is still correct and if the sponsorTime is included\n */\nfunction incorrectVideoCheck(videoID?: string, sponsorTime?: SponsorTime): boolean {\n if (!onVideoPage()) return false;\n\n const currentVideoID = getYouTubeVideoID();\n const recordedVideoID = videoID || getVideoID();\n if (currentVideoID !== recordedVideoID || (sponsorTime\n && (!sponsorTimes || !sponsorTimes?.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1]))\n && !sponsorTimesSubmitting.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1])\n && (!isLoopedChapter(sponsorTime)))) {\n // Something has really gone wrong\n console.error(\"[SponsorBlock] The videoID recorded when trying to skip is different than what it should be.\");\n console.error(\"[SponsorBlock] VideoID recorded: \" + recordedVideoID + \". Actual VideoID: \" + currentVideoID);\n console.error(\"[SponsorBlock] SponsorTime\", sponsorTime, \"sponsorTimes\", sponsorTimes, \"sponsorTimesSubmitting\", sponsorTimesSubmitting);\n\n // Video ID change occured\n checkVideoIDChange();\n\n return true;\n } else {\n return false;\n }\n}\n\nlet playbackRateCheckInterval: NodeJS.Timeout | null = null;\nlet lastPlaybackSpeed = 1;\nlet setupVideoListenersFirstTime = true;\nfunction setupVideoListeners(video: HTMLVideoElement) {\n if (!video) return; // Maybe video became invisible\n\n //wait until it is loaded\n video.addEventListener('loadstart', videoOnReadyListener)\n video.addEventListener('durationchange', durationChangeListener);\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('loadstart', videoOnReadyListener);\n video.removeEventListener('durationchange', durationChangeListener);\n });\n }\n\n if (!Config.config.disableSkipping) {\n switchingVideos = false;\n\n let startedWaiting = false;\n let lastPausedAtZero = true;\n let lastVideoDataChange = 0;\n\n const rateChangeListener = () => {\n updateVirtualTime();\n clearWaitingTime();\n\n startSponsorSchedule();\n };\n video.addEventListener('ratechange', rateChangeListener);\n // Used by videospeed extension (https://github.com/igrigorik/videospeed/pull/740)\n video.addEventListener('videoSpeed_ratechange', rateChangeListener);\n\n const playListener = () => {\n // Prevent video resolution changes from causing skips\n if (!firstPlay && Date.now() - lastVideoDataChange < 200 && video.currentTime === 0) return;\n\n firstPlay = false;\n updateVirtualTime();\n checkForMiniplayerPlaying();\n\n if (switchingVideos || lastPausedAtZero) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n lastPausedAtZero = false;\n\n // Check if an ad is playing\n updateAdFlag();\n\n // Make sure it doesn't get double called with the playing event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n };\n video.addEventListener('play', playListener);\n\n const playingListener = () => {\n updateVirtualTime();\n lastPausedAtZero = false;\n\n if (startedWaiting) {\n startedWaiting = false;\n logDebug(`[SB] Playing event after buffering: ${Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)}`);\n }\n\n if (switchingVideos) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n // Make sure it doesn't get double called with the play event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n lastPlaybackSpeed = video.playbackRate;\n\n // Video speed controller compatibility\n // That extension makes rate change events not propagate\n if (document.body.classList.contains(\"vsc-initialized\")) {\n playbackRateCheckInterval = setInterval(() => {\n if ((!getVideoID() || video.paused) && playbackRateCheckInterval) {\n // Video is gone, stop checking\n clearInterval(playbackRateCheckInterval);\n return;\n }\n \n if (video.playbackRate !== lastPlaybackSpeed) {\n lastPlaybackSpeed = video.playbackRate;\n \n rateChangeListener();\n }\n }, 2000);\n }\n };\n video.addEventListener('playing', playingListener);\n \n const seekingListener = () => {\n lastKnownVideoTime.fromPause = false;\n\n if (!video.paused){\n // Reset lastCheckVideoTime\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n updateVirtualTime();\n clearWaitingTime();\n\n // Sometimes looped videos loop back to almost zero, but not quite\n if (video.loop && video.currentTime < 0.2 && getCurrentTime() < 0.2) {\n startSponsorSchedule(false, 0);\n } else {\n startSponsorSchedule();\n }\n } else {\n updateActiveSegment(getCurrentTime());\n\n if (getCurrentTime() === 0) {\n lastPausedAtZero = true;\n }\n }\n };\n video.addEventListener('seeking', seekingListener);\n \n const stoppedPlayback = () => {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n\n lastKnownVideoTime.videoTime = null;\n lastKnownVideoTime.preciseTime = null;\n updateWaitingTime(video);\n\n cancelSponsorSchedule();\n };\n const pauseListener = () => {\n lastKnownVideoTime.fromPause = true;\n\n stoppedPlayback();\n };\n video.addEventListener('pause', pauseListener);\n const waitingListener = () => {\n logDebug(\"[SB] Not skipping due to buffering\");\n startedWaiting = true;\n\n stoppedPlayback();\n };\n video.addEventListener('waiting', waitingListener);\n\n // When video data is changed\n const emptyListener = () => {\n lastVideoDataChange = Date.now();\n\n if (firstPlay && video.currentTime === 0) {\n playListener();\n }\n }\n video.addEventListener('emptied', emptyListener);\n\n // For when autoplay is off to skip before starting playback\n const metadataLoadedListener = () => {\n if (firstPlay && getCurrentTime() === 0) {\n playListener();\n }\n }\n video.addEventListener('loadedmetadata', metadataLoadedListener)\n\n startSponsorSchedule();\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('play', playListener);\n video.removeEventListener('playing', playingListener);\n video.removeEventListener('seeking', seekingListener);\n video.removeEventListener('ratechange', rateChangeListener);\n video.removeEventListener('videoSpeed_ratechange', rateChangeListener);\n video.removeEventListener('pause', pauseListener);\n video.removeEventListener('waiting', waitingListener);\n video.removeEventListener('empty', emptyListener);\n video.removeEventListener('loadedmetadata', metadataLoadedListener);\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n });\n }\n }\n\n setupVideoListenersFirstTime = false;\n}\n\nfunction updateVirtualTime() {\n if (currentVirtualTimeInterval) clearInterval(currentVirtualTimeInterval);\n\n lastKnownVideoTime.videoTime = getCurrentTime();\n lastKnownVideoTime.preciseTime = performance.now();\n\n // If on Firefox, wait for the second time change (time remains fixed for many \"frames\" for privacy reasons)\n if (isFirefoxOrSafari()) {\n let count = 0;\n let rawCount = 0;\n let lastTime = lastKnownVideoTime.videoTime;\n let lastPerformanceTime = performance.now();\n\n currentVirtualTimeInterval = setInterval(() => {\n const frameTime = performance.now() - lastPerformanceTime;\n if (lastTime !== getCurrentTime()) {\n rawCount++;\n\n // If there is lag, give it another shot at finding a good change time\n if (frameTime < 20 || rawCount > 30) {\n count++;\n }\n lastTime = getCurrentTime();\n }\n\n if (count > 1) {\n const delay = lastKnownVideoTime.fromPause && lastKnownVideoTime.approximateDelay ?\n lastKnownVideoTime.approximateDelay : 0;\n\n lastKnownVideoTime.videoTime = getCurrentTime() + delay;\n lastKnownVideoTime.preciseTime = performance.now();\n\n clearInterval(currentVirtualTimeInterval);\n currentVirtualTimeInterval = null;\n }\n\n lastPerformanceTime = performance.now();\n }, 1);\n }\n}\n\nfunction updateWaitingTime(video: HTMLVideoElement): void {\n lastTimeFromWaitingEvent = video.currentTime;\n}\n\nfunction clearWaitingTime(): void {\n lastTimeFromWaitingEvent = null;\n}\n\nfunction setupSkipButtonControlBar() {\n if (!skipButtonControlBar) {\n skipButtonControlBar = new SkipButtonControlBar({\n skip: (segment) => skipToTime({\n v: getVideo(),\n skipTime: segment.segment,\n skippingSegments: [segment],\n openNotice: true,\n forceAutoSkip: true\n }),\n selectSegment,\n onMobileYouTube: isOnMobileYouTube(),\n onYTTV: isOnYTTV(),\n });\n }\n\n skipButtonControlBar.attachToPage();\n}\n\nfunction setupCategoryPill() {\n if (!categoryPill) {\n categoryPill = new CategoryPill();\n }\n\n categoryPill.attachToPage(isOnMobileYouTube(), isOnInvidious(), voteAsync);\n}\n\nasync function sponsorsLookup(keepOldSubmissions = true, ignoreCache = false) {\n const videoID = getVideoID();\n if (!videoID) {\n console.error(\"[SponsorBlock] Attempted to fetch segments with a null/undefined videoID.\");\n return;\n }\n\n const segmentData = await getSegmentsForVideo(videoID, ignoreCache);\n\n // Make sure an old pending request doesn't get used.\n if (videoID !== getVideoID()) return;\n\n // store last response status\n lastResponseStatus = segmentData.status;\n if (segmentData.status === 200) {\n const receivedSegments = segmentData.segments;\n\n if (receivedSegments && receivedSegments.length) {\n sponsorDataFound = receivedSegments.findIndex((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled) !== -1;\n\n // Check if any old submissions should be kept\n if (sponsorTimes !== null && keepOldSubmissions) {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].source === SponsorSourceType.Local) {\n // This is a user submission, keep it\n receivedSegments.push(sponsorTimes[i]);\n }\n }\n }\n\n const oldSegments = sponsorTimes || [];\n sponsorTimes = receivedSegments;\n existingChaptersImported = false;\n\n if (keepOldSubmissions) {\n for (const segment of oldSegments) {\n const otherSegment = sponsorTimes.find((other) => segment.UUID === other.UUID);\n if (otherSegment) {\n // If they downvoted it, or changed the category, keep it\n otherSegment.hidden = segment.hidden;\n otherSegment.category = segment.category;\n }\n }\n }\n\n // See if some segments should be hidden\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const downvotedData = Config.local.downvotedSegments[hashPrefix];\n if (downvotedData) {\n for (const segment of sponsorTimes) {\n const hashedUUID = await getHash(segment.UUID, 1);\n const segmentDownvoteData = downvotedData.segments.find((downvote) => downvote.uuid === hashedUUID);\n if (segmentDownvoteData) {\n segment.hidden = segmentDownvoteData.hidden;\n }\n }\n }\n\n hideTooShortSegments(sponsorTimes);\n\n if (!getVideo()) {\n //there is still no video here\n await waitForVideo();\n }\n\n startSkipScheduleCheckingForStartSponsors();\n\n if (!isNaN(getVideoDuration())) {\n updatePreviewBar();\n }\n }\n }\n\n notifyPopupOfSegments();\n importExistingChapters(true);\n\n if (Config.config.isVip) {\n lockedCategoriesLookup();\n }\n}\n\nfunction notifyPopupOfSegments(): void {\n // notify popup of segment changes\n chrome.runtime.sendMessage({\n message: \"infoUpdated\",\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n}\n\nfunction importExistingChapters(wait: boolean) {\n if (!existingChaptersImported && !importingChaptersWaiting && onVideoPage() && !isOnMobileYouTube()) {\n const waitCondition = () => getVideoDuration() && getExistingChapters(getVideoID(), getVideoDuration());\n\n if (wait && !document.hasFocus() && !importingChaptersWaitingForFocus && !waitCondition()) {\n importingChaptersWaitingForFocus = true;\n const listener = () => {\n importExistingChapters(wait);\n window.removeEventListener(\"focus\", listener);\n };\n window.addEventListener(\"focus\", listener);\n } else {\n importingChaptersWaiting = true;\n waitFor(waitCondition,\n wait ? 15000 : 0, 400, (c) => c?.length > 0).then((chapters) => {\n importingChaptersWaiting = false;\n\n if (!existingChaptersImported && chapters?.length > 0) {\n sponsorTimes = (sponsorTimes ?? []).concat(...chapters).sort((a, b) => a.segment[0] - b.segment[0]);\n existingChaptersImported = true;\n updatePreviewBar();\n }\n }).catch(() => { importingChaptersWaiting = false; });\n\n if (!getSkipProfileBool(\"showAutogeneratedChapters\")) {\n waitFor(() => hasAutogeneratedChapters(), wait ? 15000 : 0, 400).then(() => {\n updateActiveSegment(getCurrentTime());\n }).catch(() => { }); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n }\n }\n}\n\nfunction handleExistingChaptersChannelChange() {\n if (existingChaptersImported && hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\")) {\n sponsorTimes = sponsorTimes.filter((segment) => segment.source !== SponsorSourceType.Autogenerated);\n }\n}\n\nasync function lockedCategoriesLookup(): Promise {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n try {\n const response = await asyncRequestToServer(\"GET\", \"/api/lockCategories/\" + hashPrefix);\n\n if (response.ok) {\n const categoriesResponse = JSON.parse(response.responseText).filter((lockInfo) => lockInfo.videoID === getVideoID())[0]?.categories;\n if (Array.isArray(categoriesResponse)) {\n lockedCategories = categoriesResponse;\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"locked categories\")\n }\n } catch (e) {\n console.warn(`[SB] Caught error while looking up category locks for hashprefix ${hashPrefix}`, e)\n }\n}\n\n/**\n * Only should be used when it is okay to skip a sponsor when in the middle of it\n *\n * Ex. When segments are first loaded\n */\nfunction startSkipScheduleCheckingForStartSponsors() {\n\t// switchingVideos is ignored in Safari due to event fire order. See #1142\n if ((!switchingVideos || isSafari()) && sponsorTimes) {\n // See if there are any starting sponsors\n let startingSegmentTime = getStartTimeFromUrl(document.URL) || -1;\n let found = false;\n for (const time of sponsorTimes) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n if (!found) {\n for (const time of sponsorTimesSubmitting) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n }\n\n // For highlight category\n const poiSegments = sponsorTimes\n .filter((time) => time.segment[1] > getCurrentTime()\n && time.actionType === ActionType.Poi\n && time.hidden === SponsorHideType.Visible\n && getCategorySelection(time).option !== CategorySkipOption.Disabled)\n .sort((a, b) => b.segment[0] - a.segment[0]);\n for (const time of poiSegments) {\n const skipOption = getCategorySelection(time)?.option;\n if (skipOption !== CategorySkipOption.ShowOverlay) {\n skipToTime({\n v: getVideo(),\n skipTime: time.segment,\n skippingSegments: [time],\n openNotice: true,\n unskipTime: getCurrentTime()\n });\n if (skipOption === CategorySkipOption.AutoSkip) break;\n }\n }\n\n if (startingSegmentTime !== -1) {\n startSponsorSchedule(undefined, startingSegmentTime);\n } else {\n startSponsorSchedule();\n }\n }\n}\n\nfunction selectSegment(UUID: SegmentUUID): void {\n selectedSegment = UUID;\n updatePreviewBar();\n}\n\nfunction updatePreviewBar(): void {\n if (previewBar === null) return;\n\n if (getIsAdPlaying()) {\n previewBar.clear();\n return;\n }\n\n if (getVideo() === null) return;\n\n const hashParams = getHashParams();\n const requiredSegment = hashParams?.requiredSegment as SegmentUUID || undefined;\n const previewBarSegments: PreviewBarSegment[] = [];\n if (sponsorTimes) {\n sponsorTimes.forEach((segment) => {\n if (segment.hidden !== SponsorHideType.Visible || getCategorySelection(segment).option === CategorySkipOption.Disabled) return;\n\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: false,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source,\n requiredSegment: requiredSegment && (segment.UUID === requiredSegment || segment.UUID?.startsWith(requiredSegment) || requiredSegment.startsWith(segment.UUID)),\n selectedSegment: selectedSegment && segment.UUID === selectedSegment\n });\n });\n }\n\n sponsorTimesSubmitting.forEach((segment) => {\n if (segment.hidden === SponsorHideType.Visible\n && (segment.actionType !== ActionType.Chapter || segment.segment.length > 1)) {\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: true,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source\n });\n }\n });\n\n previewBar.set(previewBarSegments.filter((segment) => segment.actionType !== ActionType.Full), getVideoDuration())\n if (getVideo()) updateActiveSegment(getCurrentTime());\n\n if (Config.config.showTimeWithSkips) {\n const skippedDuration = utils.getTimestampsDuration(previewBarSegments\n .filter(({actionType}) => ![ActionType.Mute, ActionType.Chapter].includes(actionType))\n .map(({segment}) => segment));\n\n showTimeWithoutSkips(skippedDuration);\n }\n}\n\nfunction updateCategoryPill() {\n const fullVideoSegment = sponsorTimes.filter((time) => time.actionType === ActionType.Full)[0];\n if (fullVideoSegment && getSkipProfileBool(\"fullVideoSegments\")) {\n categoryPill?.setSegment(fullVideoSegment);\n } else {\n categoryPill?.setVisibility(false);\n }\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nasync function channelIDChange() {\n // check if the start of segments were missed\n if (Config.config.forceChannelCheck && sponsorTimes?.length > 0) startSkipScheduleCheckingForStartSponsors();\n\n hideTooShortSegments(sponsorTimes);\n handleExistingChaptersChannelChange();\n updatePreviewBar();\n updateCategoryPill();\n notifyPopupOfSegments();\n}\n\nfunction videoElementChange(newVideo: boolean, video: HTMLVideoElement): void {\n waitFor(() => Config.isReady()).then(() => {\n if (newVideo) {\n setupVideoListeners(video);\n setupSkipButtonControlBar();\n setupCategoryPill();\n }\n \n updatePreviewBar();\n checkPreviewbarState();\n \n // Incase the page is still transitioning, check again in a few seconds\n setTimeout(checkPreviewbarState, 100);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 5000);\n })\n}\n\nlet checkingPreviewbarAgain = false;\nfunction checkPreviewbarState(): void {\n if (!getPreviewBarAttachElement() && !checkingPreviewbarAgain && getVideo() && getVideoID()) {\n checkingPreviewbarAgain = true;\n setTimeout(() => {\n checkingPreviewbarAgain = false;\n checkPreviewbarState();\n }, 500);\n\n return;\n }\n\n if (previewBar && !getPreviewBarAttachElement()?.contains(previewBar.container)) {\n previewBar.remove();\n previewBar = null;\n }\n\n createPreviewBar();\n}\n\n/**\n * Returns info about the next upcoming sponsor skip\n */\nfunction getNextSkipIndex(currentTime: number, includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean):\n {array: ScheduledTime[]; index: number; endIndex: number; extraIndexes: number[]; openNotice: boolean} {\n\n const autoSkipSorter = (segment: ScheduledTime) => {\n const skipOption = getCategorySelection(segment)?.option;\n if (segment.hidden !== SponsorHideType.Visible) {\n // Hidden segments sometimes end up here if another segment is at the same time, use them last\n return 3;\n } else if ((skipOption === CategorySkipOption.AutoSkip || shouldAutoSkip(segment))\n && (segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter)) {\n return 0;\n } else if (skipOption !== CategorySkipOption.ShowOverlay) {\n return 1;\n } else {\n return 2;\n }\n }\n\n const { includedTimes: submittedArray, scheduledTimes: sponsorStartTimes } =\n getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: sponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, true);\n\n // This is an array in-case multiple segments have the exact same start time\n const minSponsorTimeIndexes = GenericUtils.indexesOf(sponsorStartTimes, Math.min(...sponsorStartTimesAfterCurrentTime));\n // Find auto skipping segments if possible, sort by duration otherwise\n const minSponsorTimeIndex = minSponsorTimeIndexes.sort(\n (a, b) => ((autoSkipSorter(submittedArray[a]) - autoSkipSorter(submittedArray[b]))\n || (submittedArray[a].segment[1] - submittedArray[a].segment[0]) - (submittedArray[b].segment[1] - submittedArray[b].segment[0])))[0] ?? -1;\n // Store extra indexes for the non-auto skipping segments if others occur at the exact same start time\n const extraIndexes = minSponsorTimeIndexes.filter((i) => i !== minSponsorTimeIndex && autoSkipSorter(submittedArray[i]) !== 0);\n\n const endTimeIndex = getLatestEndTimeIndex(submittedArray, minSponsorTimeIndex);\n\n const { includedTimes: unsubmittedArray, scheduledTimes: unsubmittedSponsorStartTimes } =\n getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: unsubmittedSponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, false);\n\n const minUnsubmittedSponsorTimeIndex = unsubmittedSponsorStartTimes.indexOf(Math.min(...unsubmittedSponsorStartTimesAfterCurrentTime));\n const previewEndTimeIndex = getLatestEndTimeIndex(unsubmittedArray, minUnsubmittedSponsorTimeIndex);\n\n if ((minUnsubmittedSponsorTimeIndex === -1 && minSponsorTimeIndex !== -1) ||\n sponsorStartTimes[minSponsorTimeIndex] < unsubmittedSponsorStartTimes[minUnsubmittedSponsorTimeIndex]) {\n return {\n array: submittedArray,\n index: minSponsorTimeIndex,\n endIndex: endTimeIndex,\n extraIndexes, // Segments at same time that need separate notices\n openNotice: true\n };\n } else {\n return {\n array: unsubmittedArray,\n index: minUnsubmittedSponsorTimeIndex,\n endIndex: previewEndTimeIndex,\n extraIndexes: [], // No manual things for unsubmitted\n openNotice: false\n };\n }\n}\n\n/**\n * This returns index if the skip option is not AutoSkip\n *\n * Finds the last endTime that occurs in a segment that the given\n * segment skips into that is part of an AutoSkip category.\n *\n * Used to find where a segment should truely skip to if there are intersecting submissions due to\n * them having different categories.\n *\n * @param sponsorTimes\n * @param index Index of the given sponsor\n * @param hideHiddenSponsors\n */\nfunction getLatestEndTimeIndex(sponsorTimes: SponsorTime[], index: number, hideHiddenSponsors = true): number {\n // Only combine segments for AutoSkip\n if (index == -1 ||\n !shouldAutoSkip(sponsorTimes[index])\n || sponsorTimes[index].actionType !== ActionType.Skip) {\n return index;\n }\n\n let latestEndTimeIndex = -1;\n // Default to looped chapter if its end would have been skipped\n if (loopedChapter\n && (loopedChapter.segment[0] > sponsorTimes[index].segment[0]\n && loopedChapter.segment[0] <= sponsorTimes[index]?.segment[1])){\n latestEndTimeIndex = sponsorTimes.length - 1;\n } else {\n // or the normal end time otherwise \n latestEndTimeIndex = index;\n }\n\n for (let i = 0; i < sponsorTimes?.length; i++) {\n const currentSegment = sponsorTimes[i].segment;\n const latestEndTime = sponsorTimes[latestEndTimeIndex].segment[1];\n\n if (currentSegment[0] - skipBuffer <= latestEndTime && currentSegment[1] > latestEndTime\n && (!hideHiddenSponsors || sponsorTimes[i].hidden === SponsorHideType.Visible)\n && shouldAutoSkip(sponsorTimes[i])\n && sponsorTimes[i].actionType === ActionType.Skip) {\n // Overlapping segment\n latestEndTimeIndex = i;\n }\n }\n\n // Keep going if required\n if (latestEndTimeIndex !== index) {\n latestEndTimeIndex = getLatestEndTimeIndex(sponsorTimes, latestEndTimeIndex, hideHiddenSponsors);\n }\n\n return latestEndTimeIndex;\n}\n\n/**\n * Gets just the start times from a sponsor times array.\n * Optionally specify a minimum\n *\n * @param sponsorTimes\n * @param minimum\n * @param hideHiddenSponsors\n * @param includeIntersectingSegments If true, it will include segments that start before\n * the current time, but end after\n */\nfunction getStartTimes(sponsorTimes: SponsorTime[], includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean,\n minimum?: number, hideHiddenSponsors = false): {includedTimes: ScheduledTime[]; scheduledTimes: number[]} {\n if (!sponsorTimes) return {includedTimes: [], scheduledTimes: []};\n\n const includedTimes: ScheduledTime[] = [];\n const scheduledTimes: number[] = [];\n\n const shouldIncludeTime = (segment: ScheduledTime ) => (minimum === undefined\n || ((includeNonIntersectingSegments && segment.scheduledTime >= minimum)\n || (includeIntersectingSegments && segment.scheduledTime < minimum\n && ((segment.segment[1] > minimum && shouldSkip(segment)) // Only include intersecting skippable segments\n || isLoopedChapter(segment)))))\n && (!hideHiddenSponsors || segment.hidden === SponsorHideType.Visible)\n && segment.segment.length === 2\n && segment.actionType !== ActionType.Poi\n && segment.actionType !== ActionType.Full;\n\n const possibleTimes = sponsorTimes.map((sponsorTime) => ({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[0]\n }));\n\n // Schedule at the end time to know when to unmute and remove title from seek bar\n sponsorTimes.forEach(sponsorTime => {\n if (!possibleTimes.some((time) => sponsorTime.segment[1] === time.scheduledTime && shouldIncludeTime(time))\n && (minimum === undefined || sponsorTime.segment[1] > minimum)) {\n possibleTimes.push({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[1]\n });\n }\n });\n\n if (loopedChapter){\n possibleTimes.push({\n ...loopedChapter,\n scheduledTime: loopedChapter.segment[0]})\n }\n\n for (let i = 0; i < possibleTimes.length; i++) {\n if (shouldIncludeTime(possibleTimes[i])) {\n scheduledTimes.push(possibleTimes[i].scheduledTime);\n includedTimes.push(possibleTimes[i]);\n }\n }\n\n return { includedTimes, scheduledTimes };\n}\n\n/**\n * Skip to exact time in a video and autoskips\n *\n * @param time\n */\nfunction previewTime(time: number, unpause = true) {\n previewedSegment = true;\n setCurrentTime(time);\n\n // Unpause the video if needed\n if (unpause && getVideo().paused){\n getVideo().play();\n }\n}\n\n//send telemetry and count skip\nfunction sendTelemetryAndCount(skippingSegments: SponsorTime[], secondsSkipped: number, fullSkip: boolean) {\n for (const segment of skippingSegments) {\n if (!previewedSegment && sponsorTimesSubmitting.some((s) => s.segment === segment.segment)) {\n // Count that as a previewed segment\n previewedSegment = true;\n }\n }\n\n if (!Config.config.trackViewCount || (!Config.config.trackViewCountInPrivate && chrome.extension.inIncognitoContext)) return;\n\n let counted = false;\n for (const segment of skippingSegments) {\n const index = sponsorTimes?.findIndex((s) => s.segment === segment.segment);\n if (index !== -1 && !sponsorSkipped[index]) {\n sponsorSkipped[index] = true;\n if (!counted) {\n Config.config.minutesSaved = Config.config.minutesSaved + secondsSkipped / 60;\n if (segment.actionType !== ActionType.Chapter) {\n Config.config.skipCount = Config.config.skipCount + 1;\n }\n counted = true;\n }\n\n if (fullSkip) asyncRequestToServer(\"POST\", \"/api/viewedVideoSponsorTime?UUID=\" + segment.UUID + \"&videoID=\" + getVideoID())\n .then(r => {\n if (!r.ok) logRequest(r, \"SB\", \"segment skip log\");\n })\n .catch(e => console.warn(\"[SB] Caught error while attempting to log segment skip\", e));\n }\n }\n}\n\n//skip from the start time to the end time for a certain index sponsor time\nfunction skipToTime({v, skipTime, skippingSegments, openNotice, forceAutoSkip, unskipTime}: SkipToTimeParams): void {\n if (Config.config.disableSkipping) return;\n\n // There will only be one submission if it is manual skip\n const autoSkip: boolean = forceAutoSkip || shouldAutoSkip(skippingSegments[0]);\n const isSubmittingSegment = sponsorTimesSubmitting.some((time) => time.segment === skippingSegments[0].segment);\n\n if ((autoSkip || isSubmittingSegment)\n && getCurrentTime() !== skipTime[1]) {\n switch(skippingSegments[0].actionType) {\n case ActionType.Poi:\n case ActionType.Chapter:\n case ActionType.Skip: {\n // Fix for looped videos not working when skipping to the end #426\n // for some reason you also can't skip to 1 second before the end\n if (v.loop && getVideoDuration() > 1 && skipTime[1] >= getVideoDuration() - 1) {\n setCurrentTime(0);\n } else if (getVideoDuration() > 1 && skipTime[1] >= getVideoDuration()\n && (navigator.vendor === \"Apple Computer, Inc.\" || isPlayingPlaylist())) {\n // MacOS will loop otherwise #1027\n // Sometimes playlists loop too #1804\n setCurrentTime(getVideoDuration() - 0.001);\n } else if (getVideoDuration() > 1 && Math.abs(skipTime[1] - getVideoDuration()) < endTimeSkipBuffer\n && isFirefoxOrSafari() && !isSafari()) {\n setCurrentTime(getVideoDuration());\n } else {\n if (inMuteSegment(skipTime[1], true)) {\n // Make sure not to mute if skipping into a mute segment\n v.muted = true;\n videoMuted = true;\n }\n\n setCurrentTime(skipTime[1]);\n }\n\n break;\n }\n case ActionType.Mute: {\n if (!v.muted) {\n v.muted = true;\n videoMuted = true;\n }\n break;\n }\n }\n }\n\n if (autoSkip && Config.config.audioNotificationOnSkip\n && !isSubmittingSegment && !getVideo()?.muted) {\n const beep = new Audio(chrome.runtime.getURL(\"icons/beep.oga\"));\n beep.volume = getVideo().volume * 0.1;\n const oldMetadata = navigator.mediaSession.metadata\n beep.play();\n beep.addEventListener(\"ended\", () => {\n navigator.mediaSession.metadata = null;\n setTimeout(() => {\n navigator.mediaSession.metadata = oldMetadata;\n beep.remove();\n });\n })\n }\n\n if (!autoSkip\n && skippingSegments.length === 1\n && skippingSegments[0].actionType === ActionType.Poi) {\n waitFor(() => skipButtonControlBar).then(() => {\n skipButtonControlBar.enable(skippingSegments[0]);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) skipButtonControlBar.setShowKeybindHint(false);\n \n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = skipButtonControlBar;\n })\n } else {\n if (openNotice) {\n //send out the message saying that a sponsor message was skipped\n if (!Config.config.dontShowNotice || !autoSkip) {\n createSkipNotice(skippingSegments, autoSkip, unskipTime, false);\n } else if (autoSkip) {\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = {\n setShowKeybindHint: () => {}, //eslint-disable-line @typescript-eslint/no-empty-function\n toggleSkip: () => {\n unskipSponsorTime(skippingSegments[0], unskipTime);\n\n createSkipNotice(skippingSegments, autoSkip, unskipTime, true);\n }\n };\n }\n }\n }\n\n //send telemetry that a this sponsor was skipped\n if (autoSkip || isSubmittingSegment) sendTelemetryAndCount(skippingSegments, skipTime[1] - skipTime[0], true);\n}\n\nfunction createSkipNotice(skippingSegments: SponsorTime[], autoSkip: boolean, unskipTime: number, startReskip: boolean, voteNotice = false) {\n for (const skipNotice of skipNotices) {\n if (skippingSegments.length === skipNotice.segments.length\n && skippingSegments.every((segment) => skipNotice.segments.some((s) => s.UUID === segment.UUID))) {\n // Skip notice already exists\n return;\n }\n }\n\n const upcomingNoticeShown = !!upcomingNotice && !upcomingNotice.closed;\n\n const newSkipNotice = new SkipNotice(skippingSegments, autoSkip, skipNoticeContentContainer, () => {\n upcomingNotice?.close();\n upcomingNotice = null;\n }, unskipTime, startReskip, upcomingNoticeShown, voteNotice);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) newSkipNotice.setShowKeybindHint(false);\n skipNotices.push(newSkipNotice);\n\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = newSkipNotice;\n}\n\nfunction createUpcomingNotice(skippingSegments: SponsorTime[], timeLeft: number, autoSkip: boolean): void {\n if (upcomingNotice \n && !upcomingNotice.closed\n && upcomingNotice.sameNotice(skippingSegments)) {\n return;\n }\n\n upcomingNotice?.close();\n upcomingNotice = new UpcomingNotice(skippingSegments, skipNoticeContentContainer, timeLeft / 1000, autoSkip);\n}\n\nfunction unskipSponsorTime(segment: SponsorTime, unskipTime: number = null, forceSeek = false, voteNotice = false) {\n if (segment.actionType === ActionType.Mute) {\n getVideo().muted = false;\n videoMuted = false;\n }\n\n if (forceSeek || segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter || voteNotice) {\n //add a tiny bit of time to make sure it is not skipped again\n setCurrentTime(unskipTime ?? segment.segment[0] + 0.001);\n }\n\n}\n\nfunction reskipSponsorTime(segment: SponsorTime, forceSeek = false) {\n if (segment.actionType === ActionType.Mute && !forceSeek) {\n getVideo().muted = true;\n videoMuted = true;\n } else {\n const skippedTime = Math.max(segment.segment[1] - getCurrentTime(), 0);\n const segmentDuration = segment.segment[1] - segment.segment[0];\n const fullSkip = skippedTime / segmentDuration > manualSkipPercentCount;\n\n setCurrentTime(segment.segment[1]);\n sendTelemetryAndCount([segment], segment.actionType !== ActionType.Chapter ? skippedTime : 0, fullSkip);\n startSponsorSchedule(true, segment.segment[1], false);\n }\n}\n\nfunction createButton(baseID: string, title: string, callback: () => void, imageName: string, isDraggable = false): HTMLElement {\n const existingElement = document.getElementById(baseID + \"Button\");\n if (existingElement !== null) return existingElement;\n\n // Button HTML\n const newButton = document.createElement(\"button\");\n newButton.draggable = isDraggable;\n newButton.id = baseID + \"Button\";\n newButton.classList.add(\"playerButton\");\n newButton.classList.add(\"ytp-button\");\n if (Config.config.prideTheme) newButton.classList.add(\"prideTheme\");\n if (isOnYTTV()) {\n // Some style needs to be set here, but the numbers don't matter \n newButton.setAttribute(\"style\", \"width: 40px; height: 40px\");\n }\n newButton.setAttribute(\"title\", chrome.i18n.getMessage(title));\n newButton.addEventListener(\"click\", () => {\n callback();\n });\n\n // Image HTML\n const newButtonImage = document.createElement(\"img\");\n newButton.draggable = isDraggable;\n newButtonImage.id = baseID + \"Image\";\n newButtonImage.className = \"playerButtonImage\";\n newButtonImage.src = chrome.runtime.getURL(\"icons/\" + imageName);\n\n // Append image to button\n newButton.appendChild(newButtonImage);\n\n // Add the button to player\n if (controls) controls.prepend(newButton);\n\n // Store the elements to prevent unnecessary querying\n playerButtons[baseID] = {\n button: newButton,\n image: newButtonImage,\n setupListener: false\n };\n\n return newButton;\n}\n\nfunction shouldAutoSkip(segment: SponsorTime): boolean {\n const canSkipNonMusic = !Config.config.skipNonMusicOnlyOnYoutubeMusic || isOnYouTubeMusic();\n if (segment.category === \"music_offtopic\" && !canSkipNonMusic) {\n return false;\n }\n\n return (!getSkipProfileBool(\"manualSkipOnFullVideo\") || !sponsorTimes?.some((s) => s.category === segment.category && s.actionType === ActionType.Full))\n && (getCategorySelection(segment)?.option === CategorySkipOption.AutoSkip ||\n (getSkipProfileBool(\"autoSkipOnMusicVideos\") && canSkipNonMusic && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || sponsorTimesSubmitting.some((s) => s.segment === segment.segment))\n || isLoopedChapter(segment);\n}\n\nfunction shouldSkip(segment: SponsorTime): boolean {\n return segment.hidden === SponsorHideType.Visible && (segment.actionType !== ActionType.Full\n && getCategorySelection(segment)?.option > CategorySkipOption.ShowOverlay)\n || (getSkipProfileBool(\"autoSkipOnMusicVideos\") && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || isLoopedChapter(segment);\n}\n\nfunction isLoopedChapter(segment: SponsorTime): boolean{\n return !!segment && !!loopedChapter && segment.segment[1] != undefined\n && segment.segment[0] === loopedChapter.segment[0] && segment.segment[1] === loopedChapter.segment[1];\n}\n\n/** Creates any missing buttons on the YouTube player if possible. */\nasync function createButtons(): Promise {\n controls = await utils.wait(getControls).catch();\n\n // Add button if does not already exist in html\n createButton(\"startSegment\", \"sponsorStart\", () => startOrEndTimingNewSegment(), \"PlayerStartIconSponsorBlocker.svg\");\n createButton(\"cancelSegment\", \"sponsorCancel\", () => cancelCreatingSegment(), \"PlayerCancelSegmentIconSponsorBlocker.svg\");\n createButton(\"delete\", \"clearTimes\", () => clearSponsorTimes(), \"PlayerDeleteIconSponsorBlocker.svg\");\n createButton(\"submit\", \"OpenSubmissionMenu\", () => openSubmissionMenu(), \"PlayerUploadIconSponsorBlocker.svg\");\n createButton(\"info\", \"openPopup\", () => openInfoMenu(), \"PlayerInfoIconSponsorBlocker.svg\");\n\n const controlsContainer = getControls();\n if (Config.config.autoHideInfoButton && !isOnInvidious() && controlsContainer\n && playerButtons[\"info\"]?.button && !controlsWithEventListeners.includes(controlsContainer)) {\n controlsWithEventListeners.push(controlsContainer);\n\n AnimationUtils.setupAutoHideAnimation(playerButtons[\"info\"].button, controlsContainer);\n }\n}\n\n/** Creates any missing buttons on the player and updates their visiblity. */\nasync function updateVisibilityOfPlayerControlsButton(): Promise {\n // Not on a proper video yet\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n await createButtons();\n\n updateEditButtonsOnPlayer();\n\n // Don't show the info button on embeds\n if (Config.config.hideInfoButtonPlayerControls || document.URL.includes(\"/embed/\") || isOnInvidious() || isOnYTTV()\n || document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n playerButtons.info.button.style.display = \"none\";\n } else {\n playerButtons.info.button.style.removeProperty(\"display\");\n }\n}\n\n/** Updates the visibility of buttons on the player related to creating segments. */\nfunction updateEditButtonsOnPlayer(): void {\n // Don't try to update the buttons if we aren't on a YouTube video page\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n const buttonsEnabled = !(Config.config.hideVideoPlayerControls || isOnInvidious());\n\n let creatingSegment = false;\n let submitButtonVisible = false;\n let deleteButtonVisible = false;\n\n // Only check if buttons should be visible if they're enabled\n if (buttonsEnabled) {\n creatingSegment = isSegmentCreationInProgress();\n\n // Show only if there are any segments to submit\n submitButtonVisible = sponsorTimesSubmitting.length > 0;\n\n // Show only if there are any segments to delete\n deleteButtonVisible = sponsorTimesSubmitting.length > 1 || (sponsorTimesSubmitting.length > 0 && !creatingSegment);\n }\n\n // Update the elements\n playerButtons.startSegment.button.style.display = buttonsEnabled ? \"unset\" : \"none\";\n playerButtons.cancelSegment.button.style.display = buttonsEnabled && creatingSegment ? \"unset\" : \"none\";\n\n if (buttonsEnabled) {\n if (creatingSegment) {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStopIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorEnd\"));\n } else {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStartIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorStart\"));\n }\n }\n\n playerButtons.submit.button.style.display = submitButtonVisible && !Config.config.hideUploadButtonPlayerControls ? \"unset\" : \"none\";\n playerButtons.delete.button.style.display = deleteButtonVisible && !Config.config.hideDeleteButtonPlayerControls ? \"unset\" : \"none\";\n}\n\n/**\n * Used for submitting. This will use the HTML displayed number when required as the video's\n * current time is out of date while scrubbing or at the end of the getVideo(). This is not needed\n * for sponsor skipping as the video is not playing during these times.\n */\nfunction getRealCurrentTime(): number {\n // Used to check if replay button\n const playButtonSVGData = document.querySelector(\".ytp-play-button\")?.querySelector(\".ytp-svg-fill\")?.getAttribute(\"d\");\n const replaceSVGData = \"M 18,11 V 7 l -5,5 5,5 v -4 c 3.3,0 6,2.7 6,6 0,3.3 -2.7,6 -6,6 -3.3,0 -6,-2.7 -6,-6 h -2 c 0,4.4 3.6,8 8,8 4.4,0 8,-3.6 8,-8 0,-4.4 -3.6,-8 -8,-8 z\";\n\n if (playButtonSVGData === replaceSVGData) {\n // At the end of the video\n return getVideoDuration();\n } else {\n return getCurrentTime();\n }\n}\n\nfunction startOrEndTimingNewSegment() {\n if (isOnYTTV() && getIsLivePremiere()) {\n alert(chrome.i18n.getMessage(\"yttvLiveContentWarning\"));\n return;\n }\n\n verifyCurrentTime(getRealCurrentTime());\n const roundedTime = Math.round((getRealCurrentTime() + Number.EPSILON) * 1000) / 1000;\n if (!isSegmentCreationInProgress()) {\n sponsorTimesSubmitting.push({\n segment: [roundedTime],\n UUID: generateUserID() as SegmentUUID,\n category: Config.config.defaultCategory,\n actionType: ActionType.Skip,\n source: SponsorSourceType.Local\n });\n } else {\n // Finish creating the new segment\n const existingSegment = getIncompleteSegment();\n const existingTime = existingSegment.segment[0];\n const currentTime = roundedTime;\n\n // Swap timestamps if the user put the segment end before the start\n existingSegment.segment = [Math.min(existingTime, currentTime), Math.max(existingTime, currentTime)];\n }\n\n // Save the newly created segment\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Make sure they know if someone has already submitted something it while they were watching\n sponsorsLookup(true, true);\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n\n importExistingChapters(false);\n\n if (lastResponseStatus !== 200 && lastResponseStatus !== 404\n && !shownSegmentFailedToFetchWarning && Config.config.showSegmentFailedToFetchWarning) {\n alert(chrome.i18n.getMessage(\"segmentFetchFailureWarning\"));\n\n shownSegmentFailedToFetchWarning = true;\n }\n}\n\nfunction getIncompleteSegment(): SponsorTime {\n return sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1];\n}\n\n/** Is the latest submitting segment incomplete */\nfunction isSegmentCreationInProgress(): boolean {\n const segment = getIncompleteSegment();\n return segment && segment?.segment?.length !== 2;\n}\n\nfunction cancelCreatingSegment() {\n if (isSegmentCreationInProgress()) {\n if (sponsorTimesSubmitting.length > 1) { // If there's more than one segment: remove last\n sponsorTimesSubmitting.pop();\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n } else { // Otherwise delete the video entry & close submission menu\n resetSponsorSubmissionNotice();\n sponsorTimesSubmitting = [];\n delete Config.local.unsubmittedSegments[getVideoID()];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n}\n\nfunction updateSponsorTimesSubmitting(getFromConfig = true) {\n const segmentTimes = Config.local.unsubmittedSegments[getVideoID()];\n\n //see if this data should be saved in the sponsorTimesSubmitting variable\n if (getFromConfig && segmentTimes != undefined) {\n sponsorTimesSubmitting = [];\n\n for (const segmentTime of segmentTimes) {\n sponsorTimesSubmitting.push({\n segment: segmentTime.segment,\n UUID: segmentTime.UUID,\n category: segmentTime.category,\n actionType: segmentTime.actionType,\n description: segmentTime.description,\n hidden: segmentTime.hidden,\n source: segmentTime.source\n });\n }\n\n if (sponsorTimesSubmitting.length > 0) {\n // Assume they already previewed a segment\n previewedSegment = true;\n\n importExistingChapters(true);\n }\n }\n\n updatePreviewBar();\n\n // Restart skipping schedule\n if (getVideo() !== null) startSponsorSchedule();\n\n if (submissionNotice !== null) {\n submissionNotice.update();\n }\n\n checkForPreloadedSegment();\n}\n\nfunction openInfoMenu() {\n if (document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //it's already added\n return;\n }\n\n popupInitialised = false;\n\n //hide info button\n if (playerButtons.info) playerButtons.info.button.style.display = \"none\";\n\n const popup = document.createElement(\"div\");\n popup.id = \"sponsorBlockPopupContainer\";\n\n const frame = document.createElement(\"iframe\");\n frame.width = \"374\";\n frame.height = \"500\";\n frame.style.borderRadius = \"12px\";\n frame.addEventListener(\"load\", async () => {\n frame.contentWindow.postMessage(\"\", \"*\");\n\n // To support userstyles applying to the popup\n const stylusStyle = document.querySelector(\".stylus\");\n if (stylusStyle) {\n frame.contentWindow.postMessage({\n type: \"style\",\n css: stylusStyle.textContent\n }, \"*\");\n }\n\n const enhancerStyle = document.getElementById(\"efyt-theme\");\n if (enhancerStyle) {\n const enhancerStyleVariables = document.getElementById(\"efyt-theme-variables\");\n if (enhancerStyleVariables) {\n const enhancerCss = await fetch(enhancerStyle.getAttribute(\"href\")).then((response) => response.text());\n const enhancerVariablesCss = await fetch(enhancerStyleVariables.getAttribute(\"href\")).then((response) => response.text());\n\n if (enhancerCss && enhancerVariablesCss) {\n frame.contentWindow.postMessage({\n type: \"style\",\n // Image needs needs to reference the full url now\n css: enhancerCss.replace(\"./images/youtube-deep-dark/IconSponsorBlocker256px.png\",\n \"https://raw.githubusercontent.com/RaitaroH/YouTube-DeepDark/master/YT_Images/IconSponsorBlocker256px.png\")\n + enhancerVariablesCss\n }, \"*\");\n }\n }\n }\n });\n frame.src = chrome.runtime.getURL(\"popup.html\");\n popup.appendChild(frame);\n\n const elemHasChild = (elements: NodeListOf): Element => {\n let parentNode: Element;\n for (const node of elements) {\n if (node.firstElementChild !== null) {\n parentNode = node;\n }\n }\n return parentNode\n }\n\n const parentNodeOptions = [{\n // YouTube\n selector: \"#secondary-inner\",\n hasChildCheck: true\n }, {\n // old youtube theme\n selector: \"#watch7-sidebar-contents\",\n }];\n for (const option of parentNodeOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.hasChildCheck ? elemHasChild(allElements) : allElements[0];\n\n if (el) {\n if (option.hasChildCheck) el.insertBefore(popup, el.firstChild);\n break;\n }\n }\n}\n\nfunction closeInfoMenu() {\n const popup = document.getElementById(\"sponsorBlockPopupContainer\");\n if (popup === null) return;\n\n popup.remove();\n\n // Show info button if it's not an embed\n if (!document.URL.includes(\"/embed/\") && playerButtons.info) {\n playerButtons.info.button.style.display = \"unset\";\n }\n}\n\nfunction clearSponsorTimes() {\n const currentVideoID = getVideoID();\n\n const sponsorTimes = Config.local.unsubmittedSegments[currentVideoID];\n\n if (sponsorTimes != undefined && sponsorTimes.length > 0) {\n const confirmMessage = chrome.i18n.getMessage(\"clearThis\") + getSegmentsMessage(sponsorTimes)\n + \"\\n\" + chrome.i18n.getMessage(\"confirmMSG\")\n if(!confirm(confirmMessage)) return;\n\n resetSponsorSubmissionNotice();\n\n //clear the sponsor times\n delete Config.local.unsubmittedSegments[currentVideoID];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n //clear sponsor times submitting\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateEditButtonsOnPlayer();\n }\n}\n\n//if skipNotice is null, it will not affect the UI\nasync function vote(type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent): Promise {\n if (skipNotice !== null && skipNotice !== undefined) {\n //add loading info\n skipNotice.addVoteButtonInfo(chrome.i18n.getMessage(\"Loading\"))\n skipNotice.setNoticeInfoMessage();\n }\n\n const response = await voteAsync(type, UUID, category);\n if (response != undefined) {\n //see if it was a success or failure\n if (skipNotice != null) {\n if (\"error\" in response) {\n skipNotice.setNoticeInfoMessage(formatJSErrorMessage(response.error))\n skipNotice.resetVoteButtonInfo();\n } else if (response.ok || response.status === 429) {\n //success (treat rate limits as a success)\n skipNotice.afterVote(utils.getSponsorTimeFromUUID(sponsorTimes, UUID), type, category);\n } else {\n logRequest({headers: null, ...response}, \"SB\", \"vote on segment\");\n if (response.status === 403 && response.responseText.startsWith(\"Vote rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n skipNotice.setNoticeInfoMessage(getLongErrorMessage(response.status, response.responseText))\n }\n\n skipNotice.resetVoteButtonInfo();\n }\n }\n }\n\n return response;\n}\n\nasync function voteAsync(type: number, UUID: SegmentUUID, category?: Category): Promise {\n const sponsorIndex = utils.getSponsorIndexFromUUID(sponsorTimes, UUID);\n\n // Don't vote for preview sponsors\n if (sponsorIndex == -1 || sponsorTimes[sponsorIndex].source !== SponsorSourceType.Server) return Promise.resolve(undefined);\n\n // See if the local time saved count and skip count should be saved\n if (type === 0 && sponsorSkipped[sponsorIndex] || type === 1 && !sponsorSkipped[sponsorIndex]) {\n let factor = 1;\n if (type == 0) {\n factor = -1;\n\n sponsorSkipped[sponsorIndex] = false;\n }\n\n // Count this as a skip\n Config.config.minutesSaved = Config.config.minutesSaved + factor * (sponsorTimes[sponsorIndex].segment[1] - sponsorTimes[sponsorIndex].segment[0]) / 60;\n\n Config.config.skipCount = Config.config.skipCount + factor;\n }\n\n return new Promise((resolve) => {\n chrome.runtime.sendMessage({\n message: \"submitVote\",\n type: type,\n UUID: UUID,\n category: category,\n videoID: getVideoID()\n }, (response) => {\n if (response.ok === true) {\n // Change the sponsor locally\n const segment = utils.getSponsorTimeFromUUID(sponsorTimes, UUID);\n if (segment) {\n if (type === 0) {\n segment.hidden = SponsorHideType.Downvoted;\n } else if (category) {\n segment.category = category;\n } else if (type === 1) {\n segment.hidden = SponsorHideType.Visible;\n }\n\n if (!category && !Config.config.isVip) {\n utils.addHiddenSegment(getVideoID(), segment.UUID, segment.hidden);\n }\n\n updatePreviewBar();\n }\n }\n\n resolve(response);\n });\n });\n}\n\n//Closes all notices that tell the user that a sponsor was just skipped\nfunction closeAllSkipNotices(){\n const notices = document.getElementsByClassName(\"sponsorSkipNotice\");\n for (let i = 0; i < notices.length; i++) {\n notices[i].remove();\n }\n}\n\nfunction dontShowNoticeAgain() {\n Config.config.dontShowNotice = true;\n closeAllSkipNotices();\n}\n\n/**\n * Helper method for the submission notice to clear itself when it closes\n */\nfunction resetSponsorSubmissionNotice(callRef = true) {\n submissionNotice?.close(callRef);\n submissionNotice = null;\n}\n\nfunction closeSubmissionMenu() {\n submissionNotice?.close();\n submissionNotice = null;\n}\n\nfunction openSubmissionMenu() {\n if (submissionNotice !== null){\n closeSubmissionMenu();\n return;\n }\n\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n submissionNotice = new SubmissionNotice(skipNoticeContentContainer, sendSubmitMessage);\n }\n}\n\nfunction previewRecentSegment() {\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n previewTime(sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment[0] - defaultPreviewTime);\n \n if (submissionNotice) {\n submissionNotice.scrollToBottom();\n }\n }\n}\n\nfunction submitSegments() {\n if (sponsorTimesSubmitting !== undefined\n && sponsorTimesSubmitting.length > 0\n && submissionNotice !== null) {\n submissionNotice.submit();\n }\n\n}\n\n//send the message to the background js\n//called after all the checks have been made that it's okay to do so\nasync function sendSubmitMessage(): Promise {\n // check if all segments are full video\n const onlyFullVideo = sponsorTimesSubmitting.every((segment) => segment.actionType === ActionType.Full);\n // Block if submitting on a running livestream or premiere\n if (!onlyFullVideo && (getIsLivePremiere() || isVisible(document.querySelector(\".ytp-live-badge\")))) {\n alert(chrome.i18n.getMessage(\"liveOrPremiere\"));\n return false;\n }\n\n if (!previewedSegment \n && !sponsorTimesSubmitting.every((segment) => \n [ActionType.Full, ActionType.Chapter, ActionType.Poi].includes(segment.actionType) \n || segment.segment[1] >= getVideoDuration()\n || segment.segment[0] === 0)) {\n alert(`${chrome.i18n.getMessage(\"previewSegmentRequired\")} ${keybindToString(Config.config.previewKeybind)}`);\n return false;\n }\n\n // Add loading animation\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadIconSponsorBlocker.svg\");\n const stopAnimation = AnimationUtils.applyLoadingAnimation(playerButtons.submit.button, 1, () => updateEditButtonsOnPlayer());\n\n //check if a sponsor exceeds the duration of the video\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n if (sponsorTimesSubmitting[i].segment[1] > getVideoDuration()) {\n sponsorTimesSubmitting[i].segment[1] = getVideoDuration();\n }\n }\n\n //update sponsorTimes\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Check to see if any of the submissions are below the minimum duration set\n if (Config.config.minDuration > 0) {\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n const duration = sponsorTimesSubmitting[i].segment[1] - sponsorTimesSubmitting[i].segment[0];\n if (duration > 0 && duration < Config.config.minDuration) {\n const confirmShort = chrome.i18n.getMessage(\"shortCheck\") + \"\\n\\n\" +\n getSegmentsMessage(sponsorTimesSubmitting);\n\n if(!confirm(confirmShort)) return false;\n }\n }\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"POST\", \"/api/skipSegments\", {\n videoID: getVideoID(),\n userID: Config.config.userID,\n segments: sponsorTimesSubmitting,\n videoDuration: getVideoDuration(),\n userAgent: extensionUserAgent(),\n });\n } catch (e) {\n console.error(\"[SB] Caught error while attempting to submit segments\", e);\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n alert(formatJSErrorMessage(e));\n return false;\n }\n\n if (response.status === 200) {\n stopAnimation();\n\n // Remove segments from storage since they've already been submitted\n delete Config.local.unsubmittedSegments[getVideoID()];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n const newSegments = sponsorTimesSubmitting;\n try {\n const receivedNewSegments = JSON.parse(response.responseText);\n if (receivedNewSegments?.length === newSegments.length) {\n for (let i = 0; i < receivedNewSegments.length; i++) {\n newSegments[i].UUID = receivedNewSegments[i].UUID;\n newSegments[i].source = SponsorSourceType.Server;\n }\n }\n } catch(e) {} // eslint-disable-line no-empty\n\n // Add submissions to current sponsors list\n sponsorTimes = (sponsorTimes || []).concat(newSegments).sort((a, b) => a.segment[0] - b.segment[0]);\n\n // Increase contribution count\n Config.config.sponsorTimesContributed = Config.config.sponsorTimesContributed + sponsorTimesSubmitting.length;\n\n // New count just used to see if a warning \"Read The Guidelines!!\" message needs to be shown\n // One per time submitting\n Config.config.submissionCountSinceCategories = Config.config.submissionCountSinceCategories + 1;\n\n // Empty the submitting times\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateCategoryPill();\n\n return true;\n } else {\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n\n if (response.status === 403 && response.responseText.startsWith(\"Submission rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n logRequest(response, \"SB\", \"segment submission\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n\n return false;\n}\n\n//get the message that visually displays the video times\nfunction getSegmentsMessage(sponsorTimes: SponsorTime[]): string {\n let sponsorTimesMessage = \"\";\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n for (let s = 0; s < sponsorTimes[i].segment.length; s++) {\n let timeMessage = getFormattedTime(sponsorTimes[i].segment[s]);\n //if this is an end time\n if (s == 1) {\n timeMessage = \" \" + chrome.i18n.getMessage(\"to\") + \" \" + timeMessage;\n } else if (i > 0) {\n //add commas if necessary\n timeMessage = \", \" + timeMessage;\n }\n\n sponsorTimesMessage += timeMessage;\n }\n }\n\n return sponsorTimesMessage;\n}\n\nfunction updateActiveSegment(currentTime: number): void {\n if (!chrome.runtime?.id) return;\n\n previewBar?.updateChapterText(sponsorTimes, sponsorTimesSubmitting, currentTime);\n\n chrome.runtime.sendMessage({\n message: \"time\",\n time: currentTime\n });\n}\n\nfunction nextChapter(): void {\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) return;\n\n lastNextChapterKeybind.time = getCurrentTime();\n lastNextChapterKeybind.date = Date.now();\n\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime());\n if (nextChapter !== -1) {\n setCurrentTime(chapters[nextChapter].segment[0]);\n } else {\n setCurrentTime(getVideoDuration());\n }\n}\n\nfunction previousChapter(): void {\n if (Date.now() - lastNextChapterKeybind.date < 3000) {\n setCurrentTime(lastNextChapterKeybind.time);\n lastNextChapterKeybind.date = 0;\n return;\n }\n\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) {\n setCurrentTime(0);\n return;\n }\n\n // subtract 5 seconds to allow skipping back to the previous chapter if close to start of\n // the current one\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime() - Math.min(5, time.segment[1] - time.segment[0]));\n const previousChapter = nextChapter !== -1 ? (nextChapter - 1) : (chapters.length - 1);\n if (previousChapter !== -1) {\n setCurrentTime(chapters[previousChapter].segment[0]);\n } else {\n setCurrentTime(0);\n }\n}\n\nasync function handleKeybindVote(type: number): Promise{\n let lastSkipNotice = skipNotices[0]?.skipNoticeRef.current;\n lastSkipNotice?.onMouseEnter();\n\n if (!lastSkipNotice) {\n const lastSegment = [...sponsorTimes].reverse()?.find((s) => s.source == SponsorSourceType.Server && (s.segment[0] <= getCurrentTime() && getCurrentTime() - (s.segment[1] || s.segment[0]) <= Config.config.skipNoticeDuration));\n if (!lastSegment) return;\n\n createSkipNotice([lastSegment], shouldAutoSkip(lastSegment), lastSegment?.segment[0] + 0.001,false, true);\n lastSkipNotice = await skipNotices[0].waitForSkipNoticeRef();\n lastSkipNotice?.reskippedMode(0);\n }\n\n vote(type,lastSkipNotice?.segments[0]?.UUID, undefined, lastSkipNotice);\n return;\n}\n\nfunction addHotkeyListener(): void {\n document.addEventListener(\"keydown\", hotkeyListener, true);\n document.addEventListener(\"keyup\", hotkeyPropagationListener, true);\n\n addCleanupListener(() => {\n document.body.removeEventListener(\"keydown\", hotkeyListener, true);\n document.body.removeEventListener(\"keyup\", hotkeyPropagationListener, true);\n });\n}\n\nfunction hotkeyListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const skipKey = Config.config.skipKeybind;\n const skipToHighlightKey = Config.config.skipToHighlightKeybind;\n const closeSkipNoticeKey = Config.config.closeSkipNoticeKeybind;\n const startSponsorKey = Config.config.startSponsorKeybind;\n const submitKey = Config.config.actuallySubmitKeybind;\n const previewKey = Config.config.previewKeybind;\n const openSubmissionMenuKey = Config.config.submitKeybind;\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n const upvoteKey = Config.config.upvoteKeybind;\n const downvoteKey = Config.config.downvoteKeybind;\n\n if (keybindEquals(key, skipKey)) {\n if (activeSkipKeybindElement && !(activeSkipKeybindElement instanceof SkipButtonControlBar)) {\n activeSkipKeybindElement.toggleSkip.call(activeSkipKeybindElement);\n }\n\n return;\n } else if (keybindEquals(key, skipToHighlightKey)) {\n if (skipButtonControlBar) {\n skipButtonControlBar.toggleSkip.call(skipButtonControlBar);\n }\n\n return;\n } else if (keybindEquals(key, closeSkipNoticeKey)) {\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop().close();\n }\n \n upcomingNotice?.close();\n upcomingNotice = null;\n return;\n } else if (keybindEquals(key, startSponsorKey)) {\n startOrEndTimingNewSegment();\n return;\n } else if (keybindEquals(key, submitKey)) {\n submitSegments();\n return;\n } else if (keybindEquals(key, openSubmissionMenuKey)) {\n e.preventDefault();\n\n openSubmissionMenu();\n return;\n } else if (keybindEquals(key, previewKey)) {\n previewRecentSegment();\n return;\n } else if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n nextChapter();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n previousChapter();\n return;\n } else if (keybindEquals(key, upvoteKey)) {\n handleKeybindVote(1);\n return;\n } else if (keybindEquals(key, downvoteKey)) {\n handleKeybindVote(0);\n return;\n }\n}\n\nfunction hotkeyPropagationListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n\n if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n }\n}\n\n/**\n * Adds the CSS to the page if needed. Required on optional sites with Chrome.\n */\nfunction addCSS() {\n if (!isFirefoxOrSafari() && Config.config.invidiousInstances.includes(new URL(document.URL).hostname)) {\n const onLoad = () => {\n const head = document.getElementsByTagName(\"head\")[0];\n\n for (const file of utils.css) {\n const fileref = document.createElement(\"link\");\n\n fileref.rel = \"stylesheet\";\n fileref.type = \"text/css\";\n fileref.href = chrome.runtime.getURL(file);\n\n head.appendChild(fileref);\n }\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n document.addEventListener(\"DOMContentLoaded\", onLoad);\n }\n }\n}\n\n/**\n * Update the isAdPlaying flag and hide preview bar/controls if ad is playing\n */\nfunction updateAdFlag(): void {\n const wasAdPlaying = getIsAdPlaying();\n setIsAdPlaying(document.getElementsByClassName('ad-showing').length > 0);\n if(wasAdPlaying != getIsAdPlaying()) {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n }\n}\n\nfunction showTimeWithoutSkips(skippedDuration: number): void {\n if (isNaN(skippedDuration) || skippedDuration < 0) {\n skippedDuration = 0;\n }\n\n // YouTube player time display\n const selector =\n isOnInvidious() ? \".vjs-duration\" :\n isOnYTTV() ? \".ypl-full-controls .ypmcs-control .time-info-bar\" :\n isOnMobileYouTube() ? \".ytwPlayerTimeDisplayContent\" :\n \".ytp-time-display.notranslate .ytp-time-wrapper .ytp-time-contents\";\n const display = document.querySelector(selector);\n if (!display) return;\n\n const durationID = \"sponsorBlockDurationAfterSkips\";\n let duration = document.getElementById(durationID);\n\n // Create span if needed\n if (duration === null) {\n duration = document.createElement('span');\n duration.id = durationID;\n\n if (isOnMobileYouTube()) {\n duration.style.paddingLeft = \"4px\";\n display.insertBefore(duration, display.lastChild);\n } else {\n display.appendChild(duration);\n }\n }\n\n const durationAfterSkips = getFormattedTime(getVideoDuration() - skippedDuration);\n\n duration.innerText = (durationAfterSkips == null || skippedDuration <= 0) ? \"\" : \" (\" + durationAfterSkips + \")\";\n}\n\nfunction checkForPreloadedSegment() {\n if (loadedPreloadedSegment) return;\n\n loadedPreloadedSegment = true;\n const hashParams = getHashParams();\n\n let pushed = false;\n const segments = hashParams.segments;\n if (Array.isArray(segments)) {\n for (const segment of segments) {\n if (Array.isArray(segment.segment)) {\n if (!sponsorTimesSubmitting.some((s) => s.segment[0] === segment.segment[0] && s.segment[1] === s.segment[1])) {\n sponsorTimesSubmitting.push({\n segment: segment.segment,\n UUID: generateUserID() as SegmentUUID,\n category: segment.category ? segment.category : Config.config.defaultCategory,\n actionType: segment.actionType ? segment.actionType : ActionType.Skip,\n description: segment.description ?? \"\",\n source: SponsorSourceType.Local\n });\n\n pushed = true;\n }\n }\n }\n }\n\n if (pushed) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n}\n\n// Generate and inject a stylesheet that creates CSS variables with configured category colors\nfunction setCategoryColorCSSVariables() {\n let styleContainer = document.getElementById(\"sbCategoryColorStyle\");\n if (!styleContainer) {\n styleContainer = document.createElement(\"style\");\n styleContainer.id = \"sbCategoryColorStyle\";\n if (isVorapisInstalled()) {\n // Vorapi deletes styles\n styleContainer.className = 'stylus';\n }\n\n const head = (document.head || document.documentElement);\n head.appendChild(styleContainer)\n }\n\n let css = \":root {\"\n for (const [category, config] of Object.entries(Config.config.barTypes)) {\n css += `--sb-category-${category}: ${config.color};`;\n css += `--darkreader-bg--sb-category-${category}: ${config.color};`;\n\n const luminance = GenericUtils.getLuminance(config.color);\n css += `--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n css += `--darkreader-text--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n }\n css += \"}\";\n\n styleContainer.innerText = css;\n}\n\n/**\n * If mini player starts playing, then videoID change might have to be called\n */\nfunction checkForMiniplayerPlaying() {\n const miniPlayerUI = document.querySelector(\".miniplayer\") as HTMLElement;\n if (!onVideoPage() && isVisible(miniPlayerUI)) {\n const videoID = getLastNonInlineVideoID();\n if (videoID) {\n triggerVideoIDChange(videoID);\n\n // treat as if video element has changed\n const video = miniPlayerUI.querySelector(\"video\") as HTMLVideoElement;\n if (video && getVideo() !== video) {\n triggerVideoElementChange(video);\n }\n }\n }\n}\n","import { waitFor } from \"../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../maze-utils/src/elements\";\nimport { getHash } from \"../maze-utils/src/hash\";\nimport { getVideoID, isOnInvidious, isOnMobileYouTube } from \"../maze-utils/src/video\";\nimport Config from \"./config\";\nimport { Tooltip } from \"./render/Tooltip\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\nimport { isVisible } from \"./utils/pageUtils\";\nimport { asyncRequestToServer } from \"./utils/requests\";\n\nlet tooltip: Tooltip = null;\nconst showDeArrowPromotion = false;\nexport async function tryShowingDeArrowPromotion() {\n if (showDeArrowPromotion\n && Config.config.showDeArrowPromotion\n && !isOnMobileYouTube()\n && !isOnInvidious()\n && document.URL.includes(\"watch\")\n && Config.config.showUpsells \n && Config.config.showNewFeaturePopups\n && (Config.config.skipCount > 30 || !Config.config.trackViewCount)) {\n\n if (!await isDeArrowInstalled()) {\n try {\n const element = await waitFor(() => getYouTubeTitleNode(), 5000, 500, (e) => isVisible(e)) as HTMLElement;\n if (element && element.innerText && badTitle(element.innerText)) {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n const deArrowData = await asyncRequestToServer(\"GET\", \"/api/branding/\" + hashPrefix);\n if (!deArrowData.ok) return;\n\n const deArrowDataJson = JSON.parse(deArrowData.responseText);\n const title = deArrowDataJson?.[getVideoID()]?.titles?.[0];\n if (title && title.title && (title.locked || title.votes > 0)) {\n Config.config.showDeArrowPromotion = false;\n\n tooltip = new Tooltip({\n text: chrome.i18n.getMessage(\"DeArrowTitleReplacementSuggestion\") + \"\\n\\n\" + title.title,\n linkOnClick: () => {\n window.open(\"https://dearrow.ajay.app\");\n Config.config.shownDeArrowPromotion = true;\n },\n secondButtonText: chrome.i18n.getMessage(\"hideNewFeatureUpdates\"),\n referenceNode: element,\n prependElement: element.firstElementChild as HTMLElement,\n timeout: 15000,\n positionRealtive: false,\n containerAbsolute: true,\n bottomOffset: \"inherit\",\n topOffset: \"55px\",\n leftOffset: \"0\",\n rightOffset: \"0\",\n topTriangle: true,\n center: true,\n opacity: 1\n });\n }\n }\n } catch { } // eslint-disable-line no-empty\n } else {\n Config.config.showDeArrowPromotion = false;\n }\n }\n}\n\n/**\n * Two upper case words (at least 2 letters long)\n */\nfunction badTitle(title: string): boolean {\n return !!title.match(/\\p{Lu}{2,} \\p{Lu}{2,}[.!? ]/u);\n}\n\nexport function hideDeArrowPromotion(): void {\n if (tooltip) tooltip.close();\n}\n","/*\nBased on code from\nhttps://github.com/videosegments/videosegments/commits/f1e111bdfe231947800c6efdd51f62a4e7fef4d4/segmentsbar/segmentsbar.js\n*/\n\nimport Config from \"../config\";\nimport { ChapterVote } from \"../render/ChapterVote\";\nimport { ActionType, Category, CategorySkipOption, SegmentContainer, SponsorHideType, SponsorSourceType, SponsorTime } from \"../types\";\nimport { partition } from \"../utils/arrayUtils\";\nimport { DEFAULT_CATEGORY, shortCategoryName } from \"../utils/categoryUtils\";\nimport { normalizeChapterName } from \"../utils/exporter\";\nimport { findNonEmptyElement, findValidElement } from \"../../maze-utils/src/dom\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\nimport { hasAutogeneratedChapters, isVisible } from \"../utils/pageUtils\";\nimport { isVorapisInstalled } from \"../utils/compatibility\";\nimport { isOnYTTV } from \"../../maze-utils/src/video\";\nimport { getCategorySelection } from \"../utils/skipRule\";\nimport { getSkipProfileBool } from \"../utils/skipProfiles\";\n\nconst TOOLTIP_VISIBLE_CLASS = 'sponsorCategoryTooltipVisible';\nconst MIN_CHAPTER_SIZE = 0.003;\n\nexport interface PreviewBarSegment {\n segment: [number, number];\n category: Category;\n actionType: ActionType;\n unsubmitted: boolean;\n showLarger: boolean;\n description: string;\n source: SponsorSourceType;\n requiredSegment?: boolean;\n selectedSegment?: boolean;\n}\n\ninterface ChapterGroup extends SegmentContainer {\n originalDuration: number;\n actionType: ActionType;\n}\n\nclass PreviewBar {\n container: HTMLUListElement;\n categoryTooltip?: HTMLDivElement;\n categoryTooltipContainer?: HTMLElement;\n chapterTooltip?: HTMLDivElement;\n\n // ScrubTooltips for YTTV only\n categoryScrubTooltip?: HTMLDivElement;\n categoryScrubTooltipContainer?: HTMLElement;\n chapterScrubTooltip?: HTMLDivElement;\n\n lastSmallestSegment: Record = {};\n\n parent: HTMLElement;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n onYTTV: boolean;\n progressBar: HTMLElement;\n\n segments: PreviewBarSegment[] = [];\n hasYouTubeChapters = false;\n existingChapters: PreviewBarSegment[] = [];\n videoDuration = 0;\n updateExistingChapters: () => void;\n lastChapterUpdate = 0;\n\n // For chapter bar\n hoveredSection: HTMLElement;\n customChaptersBar: HTMLElement;\n chaptersBarSegments: PreviewBarSegment[];\n chapterVote: ChapterVote;\n originalChapterBar: HTMLElement;\n originalChapterBarBlocks: NodeListOf;\n chapterMargin: number;\n lastRenderedSegments: PreviewBarSegment[];\n unfilteredChapterGroups: ChapterGroup[];\n chapterGroups: ChapterGroup[];\n\n constructor(parent: HTMLElement, onMobileYouTube: boolean, onInvidious: boolean, onYTTV: boolean, chapterVote: ChapterVote, updateExistingChapters: () => void, test=false) {\n if (test) return;\n this.container = document.createElement('ul');\n this.container.id = 'previewbar';\n\n if (onYTTV) {\n this.container.classList.add(\"sponsorblock-yttv-container\");\n }\n\n this.parent = parent;\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.onYTTV = onYTTV;\n this.chapterVote = chapterVote;\n this.updateExistingChapters = updateExistingChapters;\n\n this.updatePageElements();\n this.createElement(parent);\n this.createChapterMutationObservers();\n\n this.setupHoverText();\n }\n\n setupHoverText(): void {\n if (this.onMobileYouTube || this.onInvidious) return;\n\n // delete old ones\n document.querySelectorAll(`.sponsorCategoryTooltip`)\n .forEach((e) => e.remove());\n\n // Create label placeholder\n this.categoryTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.categoryTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.categoryTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n this.chapterTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.chapterTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.chapterTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n\n if (isOnYTTV()) {\n this.categoryScrubTooltip = document.createElement(\"div\");\n this.categoryScrubTooltip.className = \"sponsorCategoryTooltip\";\n this.chapterScrubTooltip = document.createElement(\"div\");\n this.chapterScrubTooltip.className = \"sponsorCategoryTooltip\";\n }\n\n // global chapter tooltip or duration tooltip\n // YT, Vorapis, unknown, YTTV\n const tooltipTextWrapper = document.querySelector(\".ytp-tooltip-text-wrapper, .ytp-progress-tooltip-text-container, .yssi-slider .ys-seek-details .time-info-bar\") ?? document.querySelector(\"#progress-bar-container.ytk-player > #hover-time-info\");\n const defaultTooltipSelector = \".ytp-tooltip-title:not(.sponsorCategoryTooltip), .ytp-tooltip-title:not(.sponsorCategoryTooltip) span, .ytp-progress-tooltip-text:not(.sponsorCategoryTooltip), .current-time:not(.sponsorCategoryTooltip)\";\n const originalTooltip = findNonEmptyElement([\n defaultTooltipSelector,\n \".ytp-tooltip-progress-bar-pill-title\"\n ]) ?? document.querySelector(defaultTooltipSelector);\n if (!tooltipTextWrapper || !tooltipTextWrapper.parentElement) return;\n\n // Grab the tooltip from the text wrapper as the tooltip doesn't have its classes on init\n this.categoryTooltipContainer = tooltipTextWrapper.parentElement;\n // YT, Vorapis, YTTV\n const titleTooltip = tooltipTextWrapper.querySelector(\".ytp-tooltip-title, .ytp-progress-tooltip-text, .current-time\") as HTMLElement;\n if (!this.categoryTooltipContainer || !titleTooltip) return;\n\n tooltipTextWrapper.insertBefore(this.categoryTooltip, titleTooltip.nextSibling);\n tooltipTextWrapper.insertBefore(this.chapterTooltip, titleTooltip.nextSibling);\n\n if (isOnYTTV()) {\n const scrubTooltipTextWrapper = document.querySelector(\".yssi-slider .ysl-filmstrip-lens .time-info-bar\")\n if (!this.categoryTooltipContainer) return;\n \n scrubTooltipTextWrapper.appendChild(this.categoryScrubTooltip);\n scrubTooltipTextWrapper.appendChild(this.chapterScrubTooltip);\n }\n\n const seekBar = (document.querySelector(\".ytp-progress-bar-container, .ypcs-scrub-slider-slot.ytu-player-controls\"));\n if (!seekBar) return;\n\n let mouseOnSeekBar = false;\n\n seekBar.addEventListener(\"mouseenter\", () => {\n mouseOnSeekBar = true;\n });\n\n seekBar.addEventListener(\"mouseleave\", () => {\n mouseOnSeekBar = false;\n });\n\n seekBar.addEventListener(\"mousemove\", (e: MouseEvent) => {\n if (!mouseOnSeekBar || !this.categoryTooltip || !this.categoryTooltipContainer || !chrome.runtime?.id) return;\n\n let noYoutubeChapters = !!tooltipTextWrapper.querySelector(\".ytp-tooltip-text.ytp-tooltip-text-no-title, .ytp-progress-tooltip-timestamp\");\n const timeInSeconds = this.decimalToTime((e.clientX - seekBar.getBoundingClientRect().x) / seekBar.clientWidth);\n\n // Find the segment at that location, using the shortest if multiple found\n const [normalSegments, chapterSegments] =\n partition(this.segments,\n (segment) => segment.actionType !== ActionType.Chapter);\n let mainSegment = this.getSmallestSegment(timeInSeconds, normalSegments, \"normal\");\n let secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments, \"chapter\");\n if (mainSegment === null && secondarySegment !== null) {\n mainSegment = secondarySegment;\n secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments.filter((s) => s !== secondarySegment));\n }\n\n const hasAYouTubeChapterRemoved = this.hasYouTubeChapters\n || (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters());\n if (hasAYouTubeChapterRemoved) {\n // Hide original tooltip if some chapter has been filtered out\n originalTooltip.style.display = \"none\";\n noYoutubeChapters = true;\n }\n\n if (mainSegment === null && secondarySegment === null) {\n if (!hasAYouTubeChapterRemoved) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n originalTooltip.style.removeProperty(\"display\");\n }\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n } else {\n this.categoryTooltipContainer.classList.add(TOOLTIP_VISIBLE_CLASS);\n const hasTwoTooltips = mainSegment !== null && secondarySegment !== null;\n if (hasTwoTooltips) {\n this.categoryTooltipContainer.classList.add(\"sponsorTwoTooltips\");\n } else {\n this.categoryTooltipContainer.classList.remove(\"sponsorTwoTooltips\");\n }\n\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n if (isVorapisInstalled()) {\n const tooltipParent = tooltipTextWrapper.parentElement!;\n tooltipParent.classList.add(\"with-text\");\n }\n\n if (normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.categoryTooltip.textContent)\n || normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.chapterTooltip.textContent)\n || !originalTooltip.textContent) {\n if (originalTooltip.style.display !== \"none\") originalTooltip.style.display = \"none\";\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = true;\n } else if (originalTooltip.style.display === \"none\") {\n originalTooltip.style.removeProperty(\"display\");\n this.categoryTooltipContainer.classList.add(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = false;\n }\n\n // To prevent offset issue\n this.categoryTooltip.style.right = titleTooltip.style.right;\n this.chapterTooltip.style.right = titleTooltip.style.right;\n this.categoryTooltip.style.textAlign = titleTooltip.style.textAlign;\n this.chapterTooltip.style.textAlign = titleTooltip.style.textAlign;\n }\n\n // Used to prevent overlapping\n this.categoryTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n this.chapterTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n });\n }\n\n private setTooltipTitle(segment: PreviewBarSegment, tooltip: HTMLElement): void {\n if (segment) {\n const name = segment.description || shortCategoryName(segment.category);\n if (segment.unsubmitted) {\n tooltip.textContent = chrome.i18n.getMessage(\"unsubmitted\") + \" \" + name;\n } else {\n tooltip.textContent = name;\n }\n\n tooltip.style.removeProperty(\"display\");\n\n // For July 2025 test layout\n if (document.querySelector(\".ytp-delhi-modern\")) {\n tooltip.style.display = \"inline-block\";\n\n // Class gets added back, so grab the top value for when the class is removed\n tooltip.style.removeProperty(\"top\");\n tooltip.classList.remove(\"ytp-tooltip-text-no-title\");\n\n if (tooltip === this.chapterTooltip) {\n tooltip.style.top = `calc(${window.getComputedStyle(tooltip).getPropertyValue(\"top\")} + 5px)`;\n } else {\n tooltip.style.top = window.getComputedStyle(tooltip).getPropertyValue(\"top\");\n }\n }\n } else {\n tooltip.style.display = \"none\";\n }\n }\n\n createElement(parent?: HTMLElement): void {\n if (parent) this.parent = parent;\n\n if (this.onMobileYouTube) {\n this.container.style.transform = \"none\";\n } else if (!this.onInvidious) {\n this.container.classList.add(\"sbNotInvidious\");\n }\n\n // On the seek bar\n if (this.onYTTV) {\n // order of sibling elements matters on YTTV\n this.parent.insertBefore(this.container, this.parent.firstChild.nextSibling.nextSibling);\n } else {\n this.parent.prepend(this.container);\n }\n }\n\n clear(): void {\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild);\n }\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar?.style?.removeProperty(\"display\");\n this.chapterVote?.setVisibility(false);\n\n document.querySelectorAll(`.sponsorBlockChapterBar`).forEach((e) => {\n if (e !== this.customChaptersBar) {\n e.remove();\n }\n });\n }\n\n set(segments: PreviewBarSegment[], videoDuration: number): void {\n this.segments = segments ?? [];\n this.videoDuration = videoDuration ?? 0;\n this.hasYouTubeChapters = segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source));\n\n // Remove unnecessary original chapters if submitted replacements exist\n for (const chapter of this.segments.filter((s) => s.actionType === ActionType.Chapter && s.source === SponsorSourceType.Server)) {\n const segmentDuration = chapter.segment[1] - chapter.segment[0];\n \n const duplicate = this.segments.find((s) => s.actionType === ActionType.Chapter \n && [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source) \n && Math.abs(s.segment[0] - chapter.segment[0]) < Math.min(3, segmentDuration / 3)\n && Math.abs(s.segment[1] - chapter.segment[1]) < Math.min(3, segmentDuration / 3));\n \n if (duplicate) {\n const index = this.segments.indexOf(duplicate);\n this.segments.splice(index, 1);\n }\n }\n\n this.updatePageElements();\n // Sometimes video duration is inaccurate, pull from accessibility info\n const ariaDuration = parseInt(this.progressBar?.getAttribute('aria-valuemax')) ?? 0;\n const multipleActiveVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v)).length > 1;\n if (!multipleActiveVideos && ariaDuration && Math.abs(ariaDuration - this.videoDuration) > 3) {\n this.videoDuration = ariaDuration;\n }\n\n this.update();\n }\n\n private updatePageElements(): void {\n // YT, Vorapis v3\n const allProgressBars = document.querySelectorAll(\".ytp-progress-bar, .ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\") as NodeListOf;\n this.progressBar = findValidElement(allProgressBars) ?? allProgressBars?.[0];\n\n if (this.progressBar) {\n const newChapterBar = this.progressBar.querySelector(\".ytp-chapters-container:not(.sponsorBlockChapterBar)\") as HTMLElement;\n if (this.originalChapterBar !== newChapterBar) {\n // Make sure changes are undone on old bar\n this.originalChapterBar?.style?.removeProperty(\"display\");\n\n this.originalChapterBar = newChapterBar;\n }\n }\n }\n\n private update(): void {\n this.clear();\n const chapterChevron = this.getChapterChevron();\n\n if (!this.segments) {\n chapterChevron?.style?.removeProperty(\"display\");\n }\n\n this.chapterMargin = 2;\n if (this.originalChapterBar) {\n this.originalChapterBarBlocks = this.originalChapterBar.querySelectorAll(\":scope > div\") as NodeListOf\n this.existingChapters = this.segments.filter((s) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source)).sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (this.existingChapters?.length > 0) {\n const margin = parseFloat(this.originalChapterBarBlocks?.[0]?.style?.marginRight?.replace(\"px\", \"\"));\n if (margin) this.chapterMargin = margin;\n }\n }\n\n const sortedSegments = this.segments.sort(({ segment: a }, { segment: b }) => {\n // Sort longer segments before short segments to make shorter segments render later\n return (b[1] - b[0]) - (a[1] - a[0]);\n });\n for (const segment of sortedSegments) {\n if (segment.actionType === ActionType.Chapter) continue;\n const bar = this.createBar(segment);\n\n this.container.appendChild(bar);\n }\n\n this.createChaptersBar(this.segments.sort((a, b) => a.segment[0] - b.segment[0]));\n\n if (chapterChevron) {\n if (this.segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))) {\n chapterChevron.style.removeProperty(\"display\");\n } else if (this.segments) {\n chapterChevron.style.display = \"none\";\n }\n }\n }\n\n createBar(barSegment: PreviewBarSegment): HTMLLIElement {\n const { category, unsubmitted, segment, showLarger } = barSegment;\n\n const bar = document.createElement('li');\n bar.classList.add('previewbar');\n if (barSegment.requiredSegment) bar.classList.add(\"requiredSegment\");\n if (barSegment.selectedSegment) bar.classList.add(\"selectedSegment\");\n bar.innerHTML = showLarger ? '  ' : ' ';\n\n const fullCategoryName = (unsubmitted ? 'preview-' : '') + category;\n bar.setAttribute('sponsorblock-category', fullCategoryName);\n\n // Handled by setCategoryColorCSSVariables() of content.ts\n bar.style.backgroundColor = `var(--sb-category-${fullCategoryName})`;\n if (!this.onMobileYouTube) bar.style.opacity = Config.config.barTypes[fullCategoryName]?.opacity;\n\n bar.style.position = \"absolute\";\n const duration = Math.min(segment[1], this.videoDuration) - segment[0];\n const startTime = segment[1] ? Math.min(this.videoDuration, segment[0]) : segment[0];\n const endTime = Math.min(this.videoDuration, segment[1]);\n bar.style.left = this.timeToPercentage(startTime);\n\n if (duration > 0) {\n bar.style.right = this.timeToRightPercentage(endTime);\n }\n if (this.chapterFilter(barSegment) && segment[1] < this.videoDuration) {\n bar.style.marginRight = `${this.chapterMargin}px`;\n }\n\n if (this.onYTTV) {\n bar.classList.add(\"previewbar-yttv\");\n }\n\n return bar;\n }\n\n createChaptersBar(segments: PreviewBarSegment[]): void {\n if (!this.progressBar || !this.originalChapterBar || this.originalChapterBar.childElementCount <= 0) {\n if (this.originalChapterBar) this.originalChapterBar.style.removeProperty(\"display\");\n\n // Make sure other video types lose their chapter bar\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n this.customChaptersBar = null;\n return;\n }\n\n const remakingBar = segments !== this.lastRenderedSegments;\n if (remakingBar) {\n this.lastRenderedSegments = segments;\n\n // Merge overlapping chapters\n this.unfilteredChapterGroups = this.createChapterRenderGroups(segments);\n }\n \n if ((segments.every((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))\n || (!Config.config.renderSegmentsAsChapters\n && segments.every((segment) => segment.actionType !== ActionType.Chapter\n || [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))))\n && !(hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\"))) {\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n const filteredSegments = segments?.filter((segment) => this.chapterFilter(segment));\n if (filteredSegments) {\n let groups = this.unfilteredChapterGroups;\n if (filteredSegments.length !== segments.length) {\n groups = this.createChapterRenderGroups(filteredSegments);\n }\n this.chapterGroups = groups.filter((segment) => this.chapterGroupFilter(segment));\n\n if (groups.length !== this.chapterGroups.length) {\n // Fix missing sections due to filtered segments\n for (let i = 1; i < this.chapterGroups.length; i++) {\n if (this.chapterGroups[i].segment[0] !== this.chapterGroups[i - 1].segment[1]) {\n this.chapterGroups[i - 1].segment[1] = this.chapterGroups[i].segment[0]\n }\n }\n }\n } else {\n this.chapterGroups = this.unfilteredChapterGroups;\n }\n\n if (this.chapterGroups.length === 0 && !getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Add placeholder chapter group for whole video\n this.chapterGroups = [{\n segment: [0, this.videoDuration],\n originalDuration: 0,\n actionType: null\n }];\n }\n\n if (!this.chapterGroups || this.chapterGroups.length <= 0) {\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n // Create it from cloning\n let createFromScratch = false;\n if (!this.customChaptersBar || !this.progressBar.contains(this.customChaptersBar)) {\n // Clear anything remaining\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n\n createFromScratch = true;\n this.customChaptersBar = this.originalChapterBar.cloneNode(true) as HTMLElement;\n this.customChaptersBar.classList.add(\"sponsorBlockChapterBar\");\n }\n\n this.customChaptersBar.style.display = \"none\";\n const originalSections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\");\n const originalSection = originalSections[0];\n\n // For switching to a video with less chapters\n if (originalSections.length > this.chapterGroups.length) {\n for (let i = originalSections.length - 1; i >= this.chapterGroups.length; i--) {\n this.customChaptersBar.removeChild(originalSections[i]);\n }\n }\n\n // Modify it to have sections for each segment\n for (let i = 0; i < this.chapterGroups.length; i++) {\n const chapter = this.chapterGroups[i].segment;\n let newSection = originalSections[i] as HTMLElement;\n if (!newSection) {\n newSection = originalSection.cloneNode(true) as HTMLElement;\n\n this.firstTimeSetupChapterSection(newSection);\n this.customChaptersBar.appendChild(newSection);\n } else if (createFromScratch) {\n this.firstTimeSetupChapterSection(newSection);\n }\n\n this.setupChapterSection(newSection, chapter[0], chapter[1], i !== this.chapterGroups.length - 1);\n }\n\n // Hide old bar\n this.originalChapterBar.style.display = \"none\";\n this.customChaptersBar.style.removeProperty(\"display\");\n\n if (createFromScratch) {\n if (this.container?.parentElement === this.progressBar) {\n this.progressBar.insertBefore(this.customChaptersBar, this.container.nextSibling);\n } else {\n this.progressBar.prepend(this.customChaptersBar);\n }\n }\n\n if (remakingBar) {\n this.updateChapterAllMutation(this.originalChapterBar, this.progressBar, true);\n }\n }\n\n createChapterRenderGroups(segments: PreviewBarSegment[]): ChapterGroup[] {\n const result: ChapterGroup[] = [];\n\n segments?.forEach((segment, index) => {\n const latestChapter = result[result.length - 1];\n if (latestChapter && latestChapter.segment[1] > segment.segment[0]) {\n const segmentDuration = segment.segment[1] - segment.segment[0];\n if (segment.segment[0] < latestChapter.segment[0]\n || segmentDuration < latestChapter.originalDuration) {\n // Remove latest if it starts too late\n let latestValidChapter = latestChapter;\n const chaptersToAddBack: ChapterGroup[] = []\n while (latestValidChapter?.segment[0] >= segment.segment[0]) {\n const invalidChapter = result.pop();\n if (invalidChapter.segment[1] > segment.segment[1]) {\n if (invalidChapter.segment[0] === segment.segment[0]) {\n invalidChapter.segment[0] = segment.segment[1];\n }\n\n chaptersToAddBack.push(invalidChapter);\n }\n latestValidChapter = result[result.length - 1];\n }\n\n const priorityActionType = this.getActionTypePrioritized([segment.actionType, latestChapter?.actionType]);\n\n // Split the latest chapter if smaller\n result.push({\n segment: [segment.segment[0], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: priorityActionType\n });\n if (latestValidChapter?.segment[1] > segment.segment[1]) {\n result.push({\n segment: [segment.segment[1], latestValidChapter.segment[1]],\n originalDuration: latestValidChapter.originalDuration,\n actionType: latestValidChapter.actionType\n });\n }\n\n chaptersToAddBack.reverse();\n let lastChapterChecked: number[] = segment.segment;\n for (const chapter of chaptersToAddBack) {\n if (chapter.segment[0] < lastChapterChecked[1]) {\n chapter.segment[0] = lastChapterChecked[1];\n }\n\n lastChapterChecked = chapter.segment;\n }\n result.push(...chaptersToAddBack);\n if (latestValidChapter) latestValidChapter.segment[1] = segment.segment[0];\n } else {\n // Start at end of old one otherwise\n result.push({\n segment: [latestChapter.segment[1], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: segment.actionType\n });\n }\n } else {\n // Add empty buffer before segment if needed\n const lastTime = latestChapter?.segment[1] || 0;\n if (segment.segment[0] > lastTime) {\n result.push({\n segment: [lastTime, segment.segment[0]],\n originalDuration: 0,\n actionType: null\n });\n }\n\n // Normal case\n const endTime = Math.min(segment.segment[1], this.videoDuration);\n result.push({\n segment: [segment.segment[0], endTime],\n originalDuration: endTime - segment.segment[0],\n actionType: segment.actionType\n });\n }\n\n // Add empty buffer after segment if needed\n if (index === segments.length - 1) {\n const nextSegment = segments[index + 1];\n const nextTime = nextSegment ? nextSegment.segment[0] : this.videoDuration;\n const lastTime = result[result.length - 1]?.segment[1] || segment.segment[1];\n if (this.intervalToDecimal(lastTime, nextTime) > MIN_CHAPTER_SIZE) {\n result.push({\n segment: [lastTime, nextTime],\n originalDuration: 0,\n actionType: null\n });\n }\n }\n });\n\n return result;\n }\n\n private getActionTypePrioritized(actionTypes: ActionType[]): ActionType {\n if (actionTypes.includes(ActionType.Skip)) {\n return ActionType.Skip;\n } else if (actionTypes.includes(ActionType.Mute)) {\n return ActionType.Mute;\n } else {\n return actionTypes.find(a => a) ?? actionTypes[0];\n }\n }\n\n private setupChapterSection(section: HTMLElement, startTime: number, endTime: number, addMargin: boolean): void {\n const sizePercent = this.intervalToPercentage(startTime, endTime);\n if (addMargin) {\n section.style.marginRight = `${this.chapterMargin}px`;\n section.style.width = `calc(${sizePercent} - ${this.chapterMargin}px)`;\n } else {\n section.style.marginRight = \"0\";\n section.style.width = sizePercent;\n }\n\n section.setAttribute(\"decimal-width\", String(this.intervalToDecimal(startTime, endTime)));\n }\n\n private firstTimeSetupChapterSection(section: HTMLElement): void {\n section.addEventListener(\"mouseenter\", () => {\n this.hoveredSection?.classList.remove(\"ytp-exp-chapter-hover-effect\");\n section.classList.add(\"ytp-exp-chapter-hover-effect\");\n this.hoveredSection = section;\n });\n }\n\n private createChapterMutationObservers(): void {\n if (!this.progressBar || !this.originalChapterBar) return;\n\n const attributeObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n const currentElement = mutation.target as HTMLElement;\n if (mutation.type === \"attributes\"\n && currentElement.parentElement?.classList.contains(\"ytp-progress-list\")) {\n changes[currentElement.classList[0]] = mutation.target as HTMLElement;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n attributeObserver.observe(this.originalChapterBar, {\n subtree: true,\n attributes: true,\n attributeFilter: [\"style\", \"class\"]\n });\n\n const childListObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n if (mutation.type === \"childList\") {\n this.update();\n break;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n // Only direct children, no subtree\n childListObserver.observe(this.originalChapterBar, {\n childList: true\n });\n\n addCleanupListener(() => {\n attributeObserver.disconnect();\n childListObserver.disconnect();\n });\n }\n\n private updateChapterAllMutation(originalChapterBar: HTMLElement, progressBar: HTMLElement, firstUpdate = false): void {\n const elements = originalChapterBar.querySelectorAll(\".ytp-progress-list > *\");\n const changes: Record = {};\n for (const element of elements) {\n changes[element.classList[0]] = element as HTMLElement;\n }\n\n this.updateChapterMutation(changes, progressBar, firstUpdate);\n }\n\n private updateChapterMutation(changes: Record, progressBar: HTMLElement, firstUpdate = false): void {\n // Go through each newly generated chapter bar and update the width based on changes array\n if (this.customChaptersBar) {\n // Width reached so far in decimal percent\n let cursor = 0;\n\n const sections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\") as NodeListOf;\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i];\n\n const sectionWidthDecimal = parseFloat(section.getAttribute(\"decimal-width\"));\n const sectionWidthDecimalNoMargin = sectionWidthDecimal - this.chapterMargin / progressBar.clientWidth;\n\n for (const className in changes) {\n const selector = `.${className}`\n const customChangedElement = section.querySelector(selector) as HTMLElement;\n if (customChangedElement) {\n const fullSectionWidth = i === sections.length - 1 ? sectionWidthDecimal : sectionWidthDecimalNoMargin;\n const changedElement = changes[className];\n const changedData = this.findLeftAndScale(selector, changedElement, progressBar);\n\n const left = (changedData.left) / progressBar.clientWidth;\n const calculatedLeft = Math.max(0, Math.min(1, (left - cursor) / fullSectionWidth));\n if (!isNaN(left) && !isNaN(calculatedLeft)) {\n customChangedElement.style.left = `${calculatedLeft * 100}%`;\n customChangedElement.style.removeProperty(\"display\");\n }\n\n if (changedData.scale !== null) {\n const transformScale = (changedData.scale) / progressBar.clientWidth;\n\n const scale = Math.max(0, Math.min(1 - calculatedLeft, (transformScale - cursor) / fullSectionWidth - calculatedLeft));\n customChangedElement.style.transform =\n `scaleX(${scale})`;\n if (customChangedElement.style.backgroundSize) {\n const backgroundSize = Math.max(changedData.scale / scale, fullSectionWidth * progressBar.clientWidth);\n customChangedElement.style.backgroundSize = `${backgroundSize}px`;\n\n if (changedData.scale < (cursor + fullSectionWidth) * progressBar.clientWidth) {\n customChangedElement.style.backgroundPosition = `-${backgroundSize - fullSectionWidth * progressBar.clientWidth}px`;\n } else {\n // Passed this section\n customChangedElement.style.backgroundPosition = `-${cursor * progressBar.clientWidth}px`;\n }\n }\n\n if (firstUpdate) {\n customChangedElement.style.transition = \"none\";\n setTimeout(() => customChangedElement.style.removeProperty(\"transition\"), 50);\n }\n }\n\n if (customChangedElement.className !== changedElement.className) {\n customChangedElement.className = changedElement.className;\n }\n }\n }\n\n cursor += sectionWidthDecimal;\n }\n\n if (sections.length !== 0 && sections.length !== this.existingChapters?.length\n && Date.now() - this.lastChapterUpdate > 3000) {\n this.lastChapterUpdate = Date.now();\n this.updateExistingChapters();\n }\n }\n }\n\n private findLeftAndScale(selector: string, currentElement: HTMLElement, progressBar: HTMLElement):\n { left: number; scale: number } {\n const sections = currentElement.parentElement.parentElement.parentElement.children;\n let currentWidth = 0;\n let lastWidth = 0;\n\n let left = 0;\n let leftPosition = 0;\n\n let scale = null;\n let scalePosition = 0;\n let scaleWidth = 0;\n let lastScalePosition = 0;\n\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i] as HTMLElement;\n const checkElement = section.querySelector(selector) as HTMLElement;\n const currentSectionWidthNoMargin = this.getPartialChapterSectionStyle(section, \"width\") ?? progressBar.clientWidth;\n const currentSectionWidth = currentSectionWidthNoMargin\n + this.getPartialChapterSectionStyle(section, \"marginRight\");\n\n // First check for left\n const checkLeft = parseFloat(checkElement.style.left.replace(\"px\", \"\"));\n if (checkLeft !== 0) {\n left = checkLeft;\n leftPosition = currentWidth;\n }\n\n // Then check for scale\n const transformMatch = checkElement.style.transform.match(/scaleX\\(([0-9.]+?)\\)/);\n if (transformMatch) {\n const transformScale = parseFloat(transformMatch[1]);\n const endPosition = transformScale + checkLeft / currentSectionWidthNoMargin;\n\n if (lastScalePosition > 0.99999 && endPosition === 0) {\n // Last one was an end section that was fully filled\n scalePosition = currentWidth - lastWidth;\n break;\n }\n\n lastScalePosition = endPosition;\n\n scale = transformScale;\n scaleWidth = currentSectionWidthNoMargin;\n\n if ((i === sections.length - 1 || endPosition < 0.99999) && endPosition > 0) {\n // reached the end of this section for sure\n // if the scale is always zero, then it will go through all sections but still return 0\n\n scalePosition = currentWidth;\n if (checkLeft !== 0) {\n scalePosition += left;\n }\n break;\n }\n }\n\n lastWidth = currentSectionWidth;\n currentWidth += lastWidth;\n }\n\n return {\n left: left + leftPosition,\n scale: scale !== null ? scale * scaleWidth + scalePosition : null\n };\n }\n\n private getPartialChapterSectionStyle(element: HTMLElement, param: string): number {\n const data = element.style[param];\n if (data?.includes(\"%\")) {\n return this.customChaptersBar.clientWidth * (parseFloat(data.replace(\"%\", \"\")) / 100);\n } else {\n return parseInt(element.style[param].match(/\\d+/g)?.[0]) || 0;\n }\n }\n\n updateChapterText(segments: SponsorTime[], submittingSegments: SponsorTime[], currentTime: number): SponsorTime[] {\n if (!Config.config.showSegmentNameInChapterBar\n || Config.config.disableSkipping\n || ((!segments || segments.length <= 0) && submittingSegments?.length <= 0 \n && (getSkipProfileBool(\"showAutogeneratedChapters\") || !hasAutogeneratedChapters()))) {\n const chaptersContainer = this.getChaptersContainer();\n if (chaptersContainer) {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n \n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n }\n\n return [];\n }\n\n segments ??= [];\n if (submittingSegments?.length > 0) segments = segments.concat(submittingSegments);\n const activeSegments = segments.filter((segment) => {\n return segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime && segment.segment[1] > currentTime\n && segment.category !== DEFAULT_CATEGORY\n && getCategorySelection(segment).option !== CategorySkipOption.Disabled\n });\n\n this.setActiveSegments(activeSegments);\n return activeSegments;\n }\n\n /**\n * Adds the text to the chapters slot if not filled by default\n */\n private setActiveSegments(segments: SponsorTime[]): void {\n const chaptersContainer = this.getChaptersContainer();\n\n if (chaptersContainer) {\n if (segments.length > 0) {\n chaptersContainer.classList.add(\"sponsorblock-chapter-visible\");\n\n const chosenSegment = segments.sort((a, b) => {\n if (a.actionType === ActionType.Chapter && b.actionType !== ActionType.Chapter) {\n return -1;\n } else if (a.actionType !== ActionType.Chapter && b.actionType === ActionType.Chapter) {\n return 1;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source === SponsorSourceType.Server && b.source !== SponsorSourceType.Server) {\n return -0.5;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source !== SponsorSourceType.Server && b.source === SponsorSourceType.Server) {\n return 0.5;\n } else {\n return (b.segment[0] - a.segment[0]) * 4;\n }\n })[0];\n\n const chapterButton = this.getChapterButton(chaptersContainer);\n if (chapterButton) {\n chapterButton.classList.remove(\"ytp-chapter-container-disabled\");\n chapterButton.disabled = false;\n }\n\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n chapterTitle.style.display = \"none\";\n\n const chapterCustomText = (chapterTitle.parentElement.querySelector(\".sponsorChapterText\") || (() => {\n const elem = document.createElement(\"div\");\n chapterTitle.parentElement.insertBefore(elem, chapterTitle);\n elem.classList.add(\"sponsorChapterText\");\n if (document.location.host === \"tv.youtube.com\") {\n elem.style.lineHeight = \"initial\";\n }\n return elem;\n })()) as HTMLDivElement;\n chapterCustomText.innerText = chosenSegment.description || shortCategoryName(chosenSegment.category);\n\n if (chosenSegment.actionType !== ActionType.Chapter) {\n chapterTitle.classList.add(\"sponsorBlock-segment-title\");\n } else {\n chapterTitle.classList.remove(\"sponsorBlock-segment-title\");\n }\n\n if (chosenSegment.source === SponsorSourceType.Server) {\n const chapterVoteContainer = this.chapterVote.getContainer();\n if (document.location.host === \"tv.youtube.com\") {\n if (!chaptersContainer.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n chaptersContainer.appendChild(chapterVoteContainer);\n }\n } else if (!chapterButton.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n\n chapterButton.insertBefore(chapterVoteContainer, this.getChapterChevron());\n }\n\n this.chapterVote.setVisibility(true);\n this.chapterVote.setSegment(chosenSegment);\n } else {\n this.chapterVote.setVisibility(false);\n }\n } else if (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Keep original hidden\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.display = \"none\";\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n\n const titlePrefixDot = chaptersContainer.querySelector(\".ytp-chapter-title-prefix\") as HTMLElement;\n if (titlePrefixDot) titlePrefixDot.style.display = \"none\";\n \n this.chapterVote.setVisibility(false);\n } else {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n \n this.chapterVote.setVisibility(false);\n }\n }\n }\n\n private getChaptersContainer(): HTMLElement {\n if (document.location.host === \"tv.youtube.com\") {\n if (!document.querySelector(\".ytp-chapter-container\")) {\n const dest = document.querySelector(\".ypcs-control-buttons-left\");\n if (!dest) return null;\n const sbChapterContainer = document.createElement(\"div\");\n sbChapterContainer.className = \"ytp-chapter-container\";\n const sbChapterTitleContent = document.createElement(\"div\");\n sbChapterTitleContent.className = \"ytp-chapter-title-content\";\n sbChapterContainer.appendChild(sbChapterTitleContent);\n dest.appendChild(sbChapterContainer);\n }\n }\n return document.querySelector(\".ytp-chapter-container\") as HTMLElement;\n }\n\n private getChapterButton(chaptersContainer: HTMLElement): HTMLButtonElement {\n return (chaptersContainer ?? this.getChaptersContainer())\n ?.querySelector(\"button.ytp-chapter-title\") as HTMLButtonElement;\n }\n\n remove(): void {\n this.container.remove();\n\n if (this.categoryTooltip) {\n this.categoryTooltip.remove();\n this.categoryTooltip = undefined;\n }\n\n if (this.categoryTooltipContainer) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n this.categoryTooltipContainer = undefined;\n }\n }\n\n private chapterFilter(segment: PreviewBarSegment): boolean {\n return (Config.config.renderSegmentsAsChapters || segment.actionType === ActionType.Chapter)\n && segment.actionType !== ActionType.Poi\n && this.chapterGroupFilter(segment);\n }\n\n private chapterGroupFilter(segment: SegmentContainer): boolean {\n return segment.segment.length === 2 && this.intervalToDecimal(segment.segment[0], segment.segment[1]) > MIN_CHAPTER_SIZE;\n }\n\n intervalToPercentage(startTime: number, endTime: number) {\n return `${this.intervalToDecimal(startTime, endTime) * 100}%`;\n }\n\n intervalToDecimal(startTime: number, endTime: number) {\n return (this.timeToDecimal(endTime) - this.timeToDecimal(startTime));\n }\n\n timeToPercentage(time: number): string {\n return `${this.timeToDecimal(time) * 100}%`\n }\n\n timeToRightPercentage(time: number): string {\n return `${(1 - this.timeToDecimal(time)) * 100}%`\n }\n\n timeToDecimal(time: number): number {\n return this.decimalTimeConverter(time, true);\n }\n\n decimalToTime(decimal: number): number {\n return this.decimalTimeConverter(decimal, false);\n }\n\n /**\n * Decimal to time or time to decimal\n */\n decimalTimeConverter(value: number, isTime: boolean): number {\n if (this.originalChapterBarBlocks?.length > 1 && this.existingChapters.length === this.originalChapterBarBlocks?.length) {\n // Parent element to still work when display: none\n const totalPixels = this.originalChapterBar.parentElement.clientWidth;\n let pixelOffset = 0;\n let lastCheckedChapter = -1;\n for (let i = 0; i < this.originalChapterBarBlocks.length; i++) {\n const chapterElement = this.originalChapterBarBlocks[i];\n const widthPixels = parseFloat(chapterElement.style.width.replace(\"px\", \"\"));\n\n const marginPixels = chapterElement.style.marginRight ? parseFloat(chapterElement.style.marginRight.replace(\"px\", \"\")) : 0;\n if ((isTime && value >= this.existingChapters[i].segment[1])\n || (!isTime && value >= (pixelOffset + widthPixels + marginPixels) / totalPixels)) {\n pixelOffset += widthPixels + marginPixels;\n lastCheckedChapter = i;\n } else {\n break;\n }\n }\n\n // The next chapter is the one we are currently inside of\n const latestChapter = this.existingChapters[lastCheckedChapter + 1];\n if (latestChapter) {\n const latestWidth = parseFloat(this.originalChapterBarBlocks[lastCheckedChapter + 1].style.width.replace(\"px\", \"\"));\n const latestChapterDuration = latestChapter.segment[1] - latestChapter.segment[0];\n\n if (isTime) {\n const percentageInCurrentChapter = (value - latestChapter.segment[0]) / latestChapterDuration;\n const sizeOfCurrentChapter = latestWidth / totalPixels;\n return Math.min(1, ((pixelOffset / totalPixels) + (percentageInCurrentChapter * sizeOfCurrentChapter)));\n } else {\n const percentageInCurrentChapter = (value * totalPixels - pixelOffset) / latestWidth;\n return Math.max(0, latestChapter.segment[0] + (percentageInCurrentChapter * latestChapterDuration));\n }\n }\n }\n\n if (isTime) {\n return Math.min(1, value / this.videoDuration);\n } else {\n return Math.max(0, value * this.videoDuration);\n }\n }\n\n /*\n * Approximate size on preview bar for smallest element (due to  )\n */\n getMinimumSize(showLarger = false): number {\n return this.videoDuration * (showLarger ? 0.006 : 0.003);\n }\n\n // Name parameter used for cache\n private getSmallestSegment(timeInSeconds: number, segments: PreviewBarSegment[], name?: string): PreviewBarSegment | null {\n const proposedIndex = name ? this.lastSmallestSegment[name]?.index : null;\n const startSearchIndex = proposedIndex && segments[proposedIndex] === this.lastSmallestSegment[name].segment ? proposedIndex : 0;\n const direction = startSearchIndex > 0 && timeInSeconds < this.lastSmallestSegment[name].segment.segment[0] ? -1 : 1;\n\n let segment: PreviewBarSegment | null = null;\n let index = -1;\n let currentSegmentLength = Infinity;\n\n for (let i = startSearchIndex; i < segments.length && i >= 0; i += direction) {\n const seg = segments[i];\n const segmentLength = seg.segment[1] - seg.segment[0];\n const minSize = this.getMinimumSize(seg.showLarger);\n\n const startTime = segmentLength !== 0 ? seg.segment[0] : Math.floor(seg.segment[0]);\n const endTime = segmentLength > minSize ? seg.segment[1] : Math.ceil(seg.segment[0] + minSize);\n if (startTime <= timeInSeconds && endTime >= timeInSeconds) {\n if (segmentLength < currentSegmentLength) {\n currentSegmentLength = segmentLength;\n segment = seg;\n index = i;\n }\n }\n\n if (direction === 1 && seg.segment[0] > timeInSeconds) {\n break;\n }\n }\n\n if (segment) {\n this.lastSmallestSegment[name] = {\n index: index,\n segment: segment\n };\n }\n\n return segment;\n }\n\n private getChapterChevron(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-chevron\");\n }\n}\n\nexport default PreviewBar;\n","import Config from \"../config\";\nimport { SegmentUUID, SponsorTime } from \"../types\";\nimport { getSkippingText } from \"../utils/categoryUtils\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { isMobileControlsOpen } from \"../utils/mobileUtils\";\n\nexport interface SkipButtonControlBarProps {\n skip: (segment: SponsorTime) => void;\n selectSegment: (UUID: SegmentUUID) => void;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n}\n\nexport class SkipButtonControlBar {\n\n container: HTMLElement;\n skipIcon: HTMLImageElement;\n textContainer: HTMLElement;\n chapterText: HTMLElement;\n segment: SponsorTime;\n\n showKeybindHint = true;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n\n enabled = false;\n\n timeout: NodeJS.Timeout;\n duration = 0;\n\n skip: (segment: SponsorTime) => void;\n\n // Used if on mobile page\n hideButton: () => void;\n showButton: () => void;\n\n // Used by mobile only for swiping away\n left = 0;\n swipeStart = 0;\n\n constructor(props: SkipButtonControlBarProps) {\n this.skip = props.skip;\n this.onMobileYouTube = props.onMobileYouTube;\n this.onYTTV = props.onYTTV;\n\n this.container = document.createElement(\"div\");\n this.container.classList.add(\"skipButtonControlBarContainer\");\n this.container.classList.add(\"sbhidden\");\n if (this.onMobileYouTube) this.container.classList.add(\"mobile\");\n\n this.skipIcon = document.createElement(\"img\");\n this.skipIcon.src = chrome.runtime.getURL(\"icons/skipIcon.svg\");\n this.skipIcon.classList.add(\"ytp-button\");\n this.skipIcon.id = \"sbSkipIconControlBarImage\";\n if (this.onYTTV) {\n this.skipIcon.style.width = \"24px\";\n this.skipIcon.style.height = \"24px\";\n }\n\n this.textContainer = document.createElement(\"div\");\n\n this.container.appendChild(this.skipIcon);\n this.container.appendChild(this.textContainer);\n this.container.addEventListener(\"click\", () => this.toggleSkip());\n this.container.addEventListener(\"mouseenter\", () => {\n this.stopTimer();\n\n if (this.segment) {\n props.selectSegment(this.segment.UUID);\n }\n });\n this.container.addEventListener(\"mouseleave\", () => {\n this.startTimer();\n\n props.selectSegment(null);\n });\n if (this.onMobileYouTube) {\n this.container.addEventListener(\"touchstart\", (e) => this.handleTouchStart(e));\n this.container.addEventListener(\"touchmove\", (e) => this.handleTouchMove(e));\n this.container.addEventListener(\"touchend\", () => this.handleTouchEnd());\n }\n }\n\n getElement(): HTMLElement {\n return this.container;\n }\n\n attachToPage(): void {\n const mountingContainer = this.getMountingContainer();\n this.chapterText = document.querySelector(\".ytp-chapter-container\");\n\n if (mountingContainer && !mountingContainer.contains(this.container)) {\n if (this.onMobileYouTube || this.onYTTV) {\n mountingContainer.appendChild(this.container);\n } else {\n mountingContainer.insertBefore(this.container, this.chapterText);\n }\n\n if (!this.onMobileYouTube) {\n AnimationUtils.setupAutoHideAnimation(this.skipIcon, mountingContainer, false, false);\n } else {\n const { hide, show } = AnimationUtils.setupCustomHideAnimation(this.skipIcon, mountingContainer, false, false);\n this.hideButton = hide;\n this.showButton = show;\n }\n }\n }\n\n private getMountingContainer(): HTMLElement {\n if (!this.onMobileYouTube && !this.onYTTV) {\n return document.querySelector(\".ytp-left-controls\");\n } else if (this.onYTTV) {\n return document.querySelector(\".ypcs-control-buttons-left\");\n } else {\n return document.getElementById(\"player-container-id\");\n }\n }\n\n enable(segment: SponsorTime, duration?: number): void {\n if (duration) this.duration = duration;\n this.segment = segment;\n this.enabled = true;\n\n this.refreshText();\n this.container?.classList?.remove(\"textDisabled\");\n this.textContainer?.classList?.remove(\"sbhidden\");\n AnimationUtils.disableAutoHideAnimation(this.skipIcon);\n\n this.startTimer();\n }\n\n refreshText(): void {\n if (this.segment) {\n this.chapterText?.classList?.add(\"sbhidden\");\n this.container.classList.remove(\"sbhidden\");\n this.textContainer.innerText = this.getTitle();\n this.skipIcon.setAttribute(\"title\", this.getTitle());\n }\n }\n\n setShowKeybindHint(show: boolean): void {\n this.showKeybindHint = show;\n\n this.refreshText();\n }\n\n stopTimer(): void {\n if (this.timeout) clearTimeout(this.timeout);\n }\n\n startTimer(): void {\n this.stopTimer();\n this.timeout = setTimeout(() => this.disableText(), Math.max(Config.config.skipNoticeDuration, this.duration) * 1000);\n }\n\n disable(): void {\n this.container.classList.add(\"sbhidden\");\n\n this.chapterText?.classList?.remove(\"sbhidden\");\n this.getChapterPrefix()?.classList?.remove(\"sbhidden\");\n\n this.enabled = false;\n }\n\n isEnabled(): boolean {\n return this.enabled;\n }\n\n toggleSkip(): void {\n if (this.segment && this.enabled) {\n this.skip(this.segment);\n this.disableText();\n }\n }\n\n disableText(): void {\n if (Config.config.hideSkipButtonPlayerControls) {\n this.disable();\n return;\n }\n\n this.container.classList.add(\"textDisabled\");\n this.textContainer?.classList?.add(\"sbhidden\");\n this.chapterText?.classList?.remove(\"sbhidden\");\n\n this.getChapterPrefix()?.classList?.add(\"sbhidden\");\n\n AnimationUtils.enableAutoHideAnimation(this.skipIcon);\n if (this.onMobileYouTube) {\n this.hideButton();\n }\n }\n\n updateMobileControls(): void {\n if (this.enabled) {\n if (isMobileControlsOpen()) {\n this.showButton();\n } else {\n this.hideButton();\n }\n }\n }\n\n private getTitle(): string {\n return getSkippingText([this.segment], false) + (this.showKeybindHint ? \" (\" + keybindToString(Config.config.skipToHighlightKeybind) + \")\" : \"\");\n }\n\n private getChapterPrefix(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-prefix\");\n }\n\n // Swiping away on mobile\n private handleTouchStart(event: TouchEvent): void {\n this.swipeStart = event.touches[0].clientX;\n }\n\n // Swiping away on mobile\n private handleTouchMove(event: TouchEvent): void {\n const distanceMoved = this.swipeStart - event.touches[0].clientX;\n this.left = Math.min(-distanceMoved, 0);\n\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private handleTouchEnd(): void {\n if (this.left < -this.container.offsetWidth / 2) {\n this.disableText();\n\n // Don't let animation play\n this.skipIcon.style.display = \"none\";\n setTimeout(() => this.skipIcon.style.removeProperty(\"display\"), 200);\n }\n\n this.left = 0;\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private updateLeftStyle() {\n this.container.style.left = this.left + \"px\";\n }\n}\n","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport CategoryPillComponent, { CategoryPillState } from \"../components/CategoryPillComponent\";\nimport Config from \"../config\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\nimport { Tooltip } from \"./Tooltip\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../../maze-utils/src/elements\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\n\nconst id = \"categoryPill\";\n\nexport class CategoryPill {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n lastState: CategoryPillState;\n\n mutationObserver?: MutationObserver;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n \n constructor() {\n this.ref = React.createRef();\n\n addCleanupListener(() => {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n });\n }\n\n async attachToPage(onMobileYouTube: boolean, onInvidious: boolean,\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise): Promise {\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.vote = vote;\n\n this.attachToPageInternal();\n }\n\n private async attachToPageInternal(): Promise {\n let referenceNode =\n await waitFor(() => getYouTubeTitleNode());\n\n // Experimental YouTube layout with description on right\n const isOnDescriptionOnRightLayout = document.querySelector(\"#title #description\");\n if (isOnDescriptionOnRightLayout) {\n referenceNode = referenceNode.parentElement;\n }\n\n if (referenceNode && !referenceNode.contains(this.container)) {\n if (!this.container) {\n this.container = document.createElement('span');\n this.container.id = id;\n this.container.style.display = \"relative\";\n\n this.root = createRoot(this.container);\n this.ref = React.createRef();\n this.root.render();\n\n if (this.onMobileYouTube) {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n \n this.mutationObserver = new MutationObserver((changes) => {\n if (changes.some((change) => change.removedNodes.length > 0)) {\n this.attachToPageInternal();\n }\n });\n \n this.mutationObserver.observe(referenceNode, { \n childList: true,\n subtree: true\n });\n }\n }\n\n if (this.lastState) {\n waitFor(() => this.ref.current).then(() => {\n this.ref.current?.setState(this.lastState);\n });\n }\n\n // Use a parent because YouTube does weird things to the top level object\n // react would have to rerender if container was the top level\n const parent = document.createElement(\"span\");\n parent.id = \"categoryPillParent\";\n parent.appendChild(this.container);\n\n referenceNode.prepend(parent);\n if (!isOnDescriptionOnRightLayout) {\n referenceNode.style.display = \"flex\";\n }\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n open: show ? this.ref.current?.state.open : false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n }\n\n async setSegment(segment: SponsorTime): Promise {\n await waitFor(() => this.ref.current);\n\n if (this.ref.current?.state?.segment !== segment || !this.ref.current?.state?.show) {\n const newState = {\n segment,\n show: true,\n open: false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n\n if (!Config.config.categoryPillUpdate) {\n Config.config.categoryPillUpdate = true;\n\n const watchDiv = await waitFor(() => document.querySelector(\"#info.ytd-watch-flexy\") as HTMLElement);\n if (watchDiv) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"categoryPillNewFeature\"),\n link: \"https://blog.ajay.app/full-video-sponsorblock\",\n referenceNode: watchDiv,\n prependElement: watchDiv.firstChild as HTMLElement,\n bottomOffset: \"-10px\",\n opacity: 0.95,\n timeout: 50000\n });\n }\n }\n }\n\n if (this.onMobileYouTube && !document.contains(this.container)) {\n this.attachToPageInternal();\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport ChapterVoteComponent, { ChapterVoteState } from \"../components/ChapterVoteComponent\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nexport class ChapterVote {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n unsavedState: ChapterVoteState;\n\n mutationObserver?: MutationObserver;\n \n constructor(vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise) {\n this.ref = React.createRef();\n\n this.container = document.createElement('span');\n this.container.id = \"chapterVote\";\n this.container.style.height = \"100%\";\n\n if (document.location.host === \"tv.youtube.com\") {\n this.container.style.lineHeight = \"initial\";\n }\n\n this.root = createRoot(this.container);\n this.root.render();\n }\n\n getContainer(): HTMLElement {\n return this.container;\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n ...(!show ? { segment: null } : {})\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n\n async setSegment(segment: SponsorTime): Promise {\n if (this.ref.current?.state?.segment !== segment) {\n const newState = {\n segment,\n show: true\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nexport interface RectangleTooltipProps {\n text: string; \n link?: string;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n leftOffset?: string;\n timeout?: number;\n htmlId?: string;\n maxHeight?: string;\n maxWidth?: string;\n backgroundColor?: string;\n fontSize?: string;\n buttonFunction?: () => void;\n}\n\nexport class RectangleTooltip {\n text: string; \n container: HTMLDivElement;\n root: Root;\n timer: NodeJS.Timeout;\n \n constructor(props: RectangleTooltipProps) {\n props.bottomOffset ??= \"0px\";\n props.leftOffset ??= \"0px\";\n props.maxHeight ??= \"100px\";\n props.maxWidth ??= \"300px\";\n props.backgroundColor ??= \"rgba(28, 28, 28, 0.7)\";\n this.text = props.text;\n props.fontSize ??= \"10px\";\n\n this.container = document.createElement('div');\n props.htmlId ??= \"sponsorRectangleTooltip\" + props.text;\n this.container.id = props.htmlId;\n this.container.style.display = \"relative\";\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n \n \n \n {this.text + (props.link ? \". \" : \"\")}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null}\n \n
\n \n
\n )\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nimport { SponsorTime, ContentContainer, NoticeVisibilityMode } from \"../types\";\nimport Config from \"../config\";\nimport { SkipNoticeAction } from \"../utils/noticeUtils\";\n\nclass SkipNotice {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n skipNoticeRef: React.MutableRefObject;\n root: Root;\n\n constructor(segments: SponsorTime[], autoSkip = false, contentContainer: ContentContainer, componentDidMount: () => void, unskipTime: number = null, startReskip = false, upcomingNoticeShown: boolean, voteNotice = false) {\n this.skipNoticeRef = React.createRef();\n\n this.segments = segments;\n this.autoSkip = autoSkip;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n \n const amountOfPreviousNotices = document.getElementsByClassName(\"sponsorSkipNotice\").length;\n //this is the suffix added at the end of every id\n let idSuffix = \"\";\n for (const segment of this.segments) {\n idSuffix += segment.UUID;\n }\n idSuffix += amountOfPreviousNotices;\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={!voteNotice && (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAll \n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAutoSkip && autoSkip))}\n fadeIn={!upcomingNoticeShown && !voteNotice}\n unskipTime={unskipTime}\n componentDidMount={componentDidMount} />\n );\n }\n\n setShowKeybindHint(value: boolean): void {\n this.skipNoticeRef?.current?.setState({\n showKeybindHint: value\n });\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n\n const skipNotices = this.contentContainer().skipNotices;\n skipNotices.splice(skipNotices.indexOf(this), 1);\n }\n\n toggleSkip(): void {\n this.skipNoticeRef?.current?.prepAction(SkipNoticeAction.Unskip0);\n }\n\n unmutedListener(time: number): void {\n this.skipNoticeRef?.current?.unmutedListener(time);\n }\n\n async waitForSkipNoticeRef(): Promise {\n const waitForRef = () => new Promise((resolve) => {\n const observer = new MutationObserver(() => {\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n observer.observe(document.getElementsByClassName(\"sponsorSkipNoticeContainer\")[0], { childList: true, subtree: true});\n\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n return this.skipNoticeRef?.current || await waitForRef();\n }\n}\n\nexport default SkipNotice;","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SubmissionNoticeComponent from \"../components/SubmissionNoticeComponent\";\nimport { ContentContainer } from \"../types\";\n\nclass SubmissionNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: () => unknown;\n\n callback: () => Promise;\n\n noticeRef: React.MutableRefObject;\n\n noticeElement: HTMLDivElement;\n\n root: Root;\n\n constructor(contentContainer: ContentContainer, callback: () => Promise) {\n this.noticeRef = React.createRef();\n\n this.contentContainer = contentContainer;\n this.callback = callback;\n\n const referenceNode = utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.id = \"submissionNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close(false)} />\n );\n }\n\n update(): void {\n this.noticeRef.current.forceUpdate();\n }\n\n close(callRef = true): void {\n if (callRef) this.noticeRef.current.cancel();\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n\n submit(): void {\n this.noticeRef.current?.submit?.();\n }\n\n scrollToBottom(): void {\n this.noticeRef.current?.scrollToBottom?.();\n }\n}\n\nexport default SubmissionNotice;","import { GenericTooltip, TooltipProps } from \"../../maze-utils/src/components/Tooltip\";\n\nexport class Tooltip extends GenericTooltip {\n constructor(props: TooltipProps) {\n super(props, \"icons/IconSponsorBlocker256px.png\")\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ContentContainer, SponsorTime } from \"../types\";\n\nimport Utils from \"../utils\";\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nconst utils = new Utils();\n\nclass UpcomingNotice {\n segments: SponsorTime[];\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n upcomingNoticeRef: React.MutableRefObject;\n root: Root;\n\n closed = false;\n\n constructor(segments: SponsorTime[], contentContainer: ContentContainer, timeLeft: number, autoSkip: boolean) {\n this.upcomingNoticeRef = React.createRef();\n\n this.segments = segments;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={true}\n fadeIn={true}\n maxCountdownTime={timeLeft} />\n );\n }\n\n close(): void {\n this.root.unmount();\n this.noticeElement.remove();\n\n this.closed = true;\n }\n\n sameNotice(segments: SponsorTime[]): boolean {\n if (segments.length !== this.segments.length) return false;\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i].UUID !== this.segments[i].UUID) return false;\n }\n\n return true;\n }\n}\n\nexport default UpcomingNotice;","import * as React from \"react\";\n\nconst pencilSvg = ({\n fill = \"#ffffff\"\n }): JSX.Element => (\n \n \n \n );\n\nexport default pencilSvg;\n","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import * as React from \"react\";\n\nconst thumbsDownSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n \n \n \n \n );\n\nexport default thumbsDownSvg;\n","import * as React from \"react\";\n\nconst thumbsUpSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n \n \n \n );\n\nexport default thumbsUpSvg;\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","export function partition(array: T[], filter: (element: T) => boolean): [T[], T[]] {\n const pass = [], fail = [];\n array.forEach((element) => (filter(element) ? pass : fail).push(element));\n \n return [pass, fail];\n}","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function runCompatibilityChecks() {\n if (Config.config.showZoomToFillError2 && document.URL.includes(\"watch?v=\")) {\n setTimeout(() => {\n const zoomToFill = document.querySelector(\".zoomtofillBtn\");\n \n if (zoomToFill) {\n alert(chrome.i18n.getMessage(\"zoomToFillUnsupported\"));\n }\n\n Config.config.showZoomToFillError2 = false;\n }, 10000);\n }\n}\n\nexport function isVorapisInstalled() {\n return document.querySelector(`.v3`);\n}","import { TextBox } from \"../render/GenericNotice\";\nimport { Category } from \"../types\";\n\nexport function getGuidelineInfo(category: Category): TextBox[] {\n switch (category) {\n case \"sponsor\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"selfpromo\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"exclusive_access\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }];\n case \"interaction\":\n return [{\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"intro\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"outro\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"preview\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"hook\":\n return [{\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"filler\":\n return [{\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"music_offtopic\":\n return [{\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"poi_highlight\":\n return [{\n icon: \"icons/star.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n case \"chapter\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n default:\n return [{\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n }\n}\n\nexport const defaultPreviewTime = 2;","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","/* Gets percieved luminance of a color */\nfunction getLuminance(color: string): number {\n const {r, g, b} = hexToRgb(color);\n return Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\n}\n\n/* Converts hex color to rgb color */\nconst hexChars = \"0123456789abcdef\";\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n if (hex.length == 4)\n hex = \"#\" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\n return /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n ? {\n r: hexChars.indexOf(hex[1]) * 16 + hexChars.indexOf(hex[2]),\n g: hexChars.indexOf(hex[3]) * 16 + hexChars.indexOf(hex[4]),\n b: hexChars.indexOf(hex[5]) * 16 + hexChars.indexOf(hex[6]),\n }: null;\n}\n\n/**\n * List of all indexes that have the specified value\n * https://stackoverflow.com/a/54954694/1985387\n */\nfunction indexesOf(array: T[], value: T): number[] {\n return array.map((v, i) => v === value ? i : -1).filter(i => i !== -1);\n}\n\nexport const GenericUtils = {\n getLuminance,\n indexesOf\n}\n","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","export function isMobileControlsOpen(): boolean {\n const overlay = document.getElementById(\"player-control-overlay\");\n\n if (overlay) {\n return !!overlay?.classList?.contains(\"fadein\");\n }\n\n return false;\n}","import Config from \"../config\";\nimport { SponsorTime } from \"../types\";\n\nexport enum SkipNoticeAction {\n None,\n Upvote,\n Downvote,\n CategoryVote,\n CopyDownvote,\n Unskip0,\n Unskip1\n}\n\nexport function downvoteButtonColor(segments: SponsorTime[], actionState: SkipNoticeAction, downvoteType: SkipNoticeAction): string {\n // Also used for \"Copy and Downvote\"\n if (segments?.length > 1) {\n return (actionState === downvoteType) ? Config.config.colorPalette.red : Config.config.colorPalette.white;\n } else {\n // You dont have segment selectors so the lockbutton needs to be colored and cannot be selected.\n return Config.config.isVip && segments?.[0].locked === 1 ? Config.config.colorPalette.locked : Config.config.colorPalette.white;\n }\n}","export function cleanPage() {\n // For live-updates\n if (document.readyState === \"complete\") {\n for (const element of document.querySelectorAll(\"#categoryPillParent, .playerButton, .sponsorThumbnailLabel, #submissionNoticeContainer, .sponsorSkipNoticeContainer, #sponsorBlockPopupContainer, .skipButtonControlBarContainer, #previewbar, .sponsorBlockChapterBar\")) {\n element.remove();\n }\n }\n}","import { ActionType, Category, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { getSkipProfileBool } from \"./skipProfiles\";\n\nexport function getControls(): HTMLElement {\n const controlsSelectors = [\n // YouTube\n \".ytp-right-controls\",\n // Mobile YouTube\n \".player-controls-top\",\n // Invidious/videojs video element's controls element\n \".vjs-control-bar\",\n // Piped shaka player\n \".shaka-bottom-controls\",\n // Vorapis v3\n \".html5-player-chrome\",\n // tv.youtube.com\n \".ypcs-control-buttons-right\"\n ];\n\n for (const controlsSelector of controlsSelectors) {\n const controls = Array.from(document.querySelectorAll(controlsSelector)).filter(el => !isInPreviewPlayer(el));\n\n if (controls.length > 0) {\n return controls[controls.length - 1];\n }\n }\n\n return null;\n}\n\nexport function isInPreviewPlayer(element: Element): boolean {\n return !!element.closest(\"#inline-preview-player\");\n}\n\nexport function isVisible(element: HTMLElement): boolean {\n return element && element.offsetWidth > 0 && element.offsetHeight > 0;\n}\n\nexport function getHashParams(): Record {\n const windowHash = window.location.hash.slice(1);\n if (windowHash) {\n const params: Record = windowHash.split('&').reduce((acc, param) => {\n const [key, value] = param.split('=');\n const decoded = decodeURIComponent(value);\n try {\n acc[key] = decoded?.match(/{|\\[/) ? JSON.parse(decoded) : value;\n } catch (e) {\n console.error(`Failed to parse hash parameter ${key}: ${value}`);\n }\n\n return acc;\n }, {});\n\n return params;\n }\n\n return {};\n}\n\nexport function hasAutogeneratedChapters(): boolean {\n return !!document.querySelector(\"ytd-engagement-panel-section-list-renderer ytd-macro-markers-list-renderer #menu\");\n}\n\nexport function getExistingChapters(currentVideoID: VideoID, duration: number): SponsorTime[] {\n const chaptersBox = document.querySelector(\"ytd-macro-markers-list-renderer\");\n const title = chaptersBox?.closest(\"ytd-engagement-panel-section-list-renderer\")?.querySelector(\"#title-text.ytd-engagement-panel-title-header-renderer\");\n if (title?.textContent?.includes(\"Key moment\")) return [];\n\n const autogenerated = hasAutogeneratedChapters();\n if (!getSkipProfileBool(\"showAutogeneratedChapters\") && autogenerated) return [];\n\n const chapters: SponsorTime[] = [];\n // .ytp-timed-markers-container indicates that key-moments are present, which should not be divided\n if (chaptersBox) {\n let lastSegment: SponsorTime = null;\n const links = chaptersBox.querySelectorAll(\"ytd-macro-markers-list-item-renderer > a\");\n for (const link of links) {\n const timeElement = link.querySelector(\"#time\") as HTMLElement;\n const description = link.querySelector(\"#details h4\") as HTMLElement;\n if (timeElement && description?.innerText?.length > 0 && link.getAttribute(\"href\")?.includes(currentVideoID)) {\n const time = getFormattedTimeToSeconds(timeElement.innerText.replace(/\\./g, \":\"));\n if (time === null) return [];\n\n if (lastSegment) {\n lastSegment.segment[1] = time;\n chapters.push(lastSegment);\n }\n\n lastSegment = {\n segment: [time, null],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: description.innerText,\n source: autogenerated ? SponsorSourceType.Autogenerated : SponsorSourceType.YouTube,\n UUID: null\n };\n }\n }\n\n if (lastSegment) {\n lastSegment.segment[1] = duration;\n chapters.push(lastSegment);\n }\n }\n\n return chapters;\n}\n\nexport function isPlayingPlaylist() {\n return !!document.URL.includes(\"&list=\");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { DataCache } from \"../../maze-utils/src/cache\";\nimport { getHash, HashedValue } from \"../../maze-utils/src/hash\";\nimport Config, { } from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { ActionTypes, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getHashParams } from \"./pageUtils\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { extensionUserAgent } from \"../../maze-utils/src\";\nimport { logRequest, serializeOrStringify } from \"../../maze-utils/src/background-request-proxy\";\n\nconst segmentDataCache = new DataCache(() => {\n return {\n segments: null,\n status: 200\n };\n}, 5);\n\nconst pendingList: Record> = {};\n\nexport interface SegmentResponse {\n segments: SponsorTime[] | null;\n status: number | Error | string;\n}\n\nexport async function getSegmentsForVideo(videoID: VideoID, ignoreCache: boolean): Promise {\n if (!ignoreCache) {\n const cachedData = segmentDataCache.getFromCache(videoID);\n if (cachedData) {\n segmentDataCache.cacheUsed(videoID);\n return cachedData;\n }\n }\n\n if (pendingList[videoID]) {\n return await pendingList[videoID];\n }\n\n const pendingData = fetchSegmentsForVideo(videoID);\n pendingList[videoID] = pendingData;\n\n let result: Awaited;\n try {\n result = await pendingData;\n } catch (e) {\n console.error(\"[SB] Caught error while fetching segments\", e);\n return {\n segments: null,\n status: serializeOrStringify(e),\n }\n } finally {\n delete pendingList[videoID];\n }\n\n return result;\n}\n\nasync function fetchSegmentsForVideo(videoID: VideoID): Promise {\n const extraRequestData: Record = {};\n const hashParams = getHashParams();\n if (hashParams.requiredSegment) extraRequestData.requiredSegment = hashParams.requiredSegment;\n\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 5) as VideoID & HashedValue;\n const hasDownvotedSegments = !!Config.local.downvotedSegments[hashPrefix.slice(0, 4)];\n const response = await asyncRequestToServer('GET', \"/api/skipSegments/\" + hashPrefix, {\n categories: CompileConfig.categoryList,\n actionTypes: ActionTypes,\n trimUUIDs: hasDownvotedSegments ? null : 5,\n ...extraRequestData\n }, {\n \"X-CLIENT-NAME\": extensionUserAgent(),\n });\n\n if (response.ok) {\n const receivedSegments: SponsorTime[] = JSON.parse(response.responseText)\n ?.filter((video) => video.videoID === videoID)\n ?.map((video) => video.segments)?.[0]\n ?.map((segment) => ({\n ...segment,\n source: SponsorSourceType.Server\n }))\n ?.sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (receivedSegments && receivedSegments.length) {\n const result = {\n segments: receivedSegments,\n status: response.status\n };\n\n segmentDataCache.setupCache(videoID).segments = result.segments;\n return result;\n } else {\n // Setup with null data\n segmentDataCache.setupCache(videoID);\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"skip segments\");\n }\n\n return {\n segments: null,\n status: response.status\n };\n}","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","import { getCurrentPageTitle } from \"../../maze-utils/src/elements\";\nimport { getChannelIDInfo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { CategorySelection, CategorySkipOption, SponsorSourceType, SponsorTime } from \"../types\";\nimport { getSkipProfile, getSkipProfileBool } from \"./skipProfiles\";\nimport { VideoLabelsCacheData } from \"./videoLabels\";\n\nexport interface Permission {\n canSubmit: boolean;\n}\n\nexport enum SkipRuleAttribute {\n StartTime = \"time.start\",\n EndTime = \"time.end\",\n Duration = \"time.duration\",\n StartTimePercent = \"time.startPercent\",\n EndTimePercent = \"time.endPercent\",\n DurationPercent = \"time.durationPercent\",\n Category = \"category\",\n ActionType = \"actionType\",\n Description = \"chapter.name\",\n Source = \"chapter.source\",\n ChannelID = \"channel.id\",\n ChannelName = \"channel.name\",\n VideoDuration = \"video.duration\",\n Title = \"video.title\"\n}\n\nexport enum SkipRuleOperator {\n Less = \"<\",\n LessOrEqual = \"<=\",\n Greater = \">\",\n GreaterOrEqual = \">=\",\n Equal = \"==\",\n NotEqual = \"!=\",\n Contains = \"*=\",\n NotContains = \"!*=\",\n Regex = \"~=\",\n RegexIgnoreCase = \"~i=\",\n NotRegex = \"!~=\",\n NotRegexIgnoreCase = \"!~i=\"\n}\n\nexport interface AdvancedSkipRule {\n attribute: SkipRuleAttribute;\n operator: SkipRuleOperator;\n value: string | number;\n}\n\nexport interface AdvancedSkipRuleSet {\n rules: AdvancedSkipRule[];\n skipOption: CategorySkipOption;\n comment: string;\n}\n\nexport function getCategorySelection(segment: SponsorTime | VideoLabelsCacheData): CategorySelection {\n // First check skip rules\n for (const ruleSet of Config.local.skipRules) {\n if (ruleSet.rules.every((rule) => isSkipRulePassing(segment, rule))) {\n return { name: segment.category, option: ruleSet.skipOption } as CategorySelection;\n }\n }\n\n // Action type filters\n if (\"actionType\" in segment && (segment as SponsorTime).actionType === \"mute\" && !getSkipProfileBool(\"muteSegments\")) {\n return { name: segment.category, option: CategorySkipOption.Disabled } as CategorySelection;\n }\n\n // Then check skip profile\n const profile = getSkipProfile();\n if (profile) {\n const profileSelection = profile.categorySelections.find(selection => selection.name === segment.category);\n if (profileSelection) {\n return profileSelection;\n }\n }\n\n // Then fallback to default\n for (const selection of Config.config.categorySelections) {\n if (selection.name === segment.category) {\n return selection;\n }\n }\n return { name: segment.category, option: CategorySkipOption.Disabled} as CategorySelection;\n}\n\nfunction getSkipRuleValue(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): string | number | undefined {\n switch (rule.attribute) {\n case SkipRuleAttribute.StartTime:\n return (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.EndTime:\n return (segment as SponsorTime).segment?.[1];\n case SkipRuleAttribute.Duration:\n return (segment as SponsorTime).segment?.[1] - (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.StartTimePercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n if (startTime === undefined) return undefined;\n\n return startTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.EndTimePercent: {\n const endTime = (segment as SponsorTime).segment?.[1];\n if (endTime === undefined) return undefined;\n\n return endTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.DurationPercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n const endTime = (segment as SponsorTime).segment?.[1];\n if (startTime === undefined || endTime === undefined) return undefined;\n\n return (endTime - startTime) / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.Category:\n return segment.category;\n case SkipRuleAttribute.ActionType:\n return (segment as SponsorTime).actionType;\n case SkipRuleAttribute.Description:\n return (segment as SponsorTime).description || \"\";\n case SkipRuleAttribute.Source:\n switch ((segment as SponsorTime).source) {\n case SponsorSourceType.Local:\n return \"local\";\n case SponsorSourceType.YouTube:\n return \"youtube\";\n case SponsorSourceType.Autogenerated:\n return \"autogenerated\";\n case SponsorSourceType.Server:\n return \"server\";\n default:\n return undefined;\n }\n case SkipRuleAttribute.ChannelID:\n return getChannelIDInfo().id;\n case SkipRuleAttribute.ChannelName:\n return getChannelIDInfo().author;\n case SkipRuleAttribute.VideoDuration:\n return getVideoDuration();\n case SkipRuleAttribute.Title:\n return getCurrentPageTitle() || \"\";\n default:\n return undefined;\n }\n}\n\nfunction isSkipRulePassing(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): boolean {\n const value = getSkipRuleValue(segment, rule);\n \n switch (rule.operator) {\n case SkipRuleOperator.Less:\n return typeof value === \"number\" && value < (rule.value as number);\n case SkipRuleOperator.LessOrEqual:\n return typeof value === \"number\" && value <= (rule.value as number);\n case SkipRuleOperator.Greater:\n return typeof value === \"number\" && value > (rule.value as number);\n case SkipRuleOperator.GreaterOrEqual:\n return typeof value === \"number\" && value >= (rule.value as number);\n case SkipRuleOperator.Equal:\n return value === rule.value;\n case SkipRuleOperator.NotEqual:\n return value !== rule.value;\n case SkipRuleOperator.Contains:\n return String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.NotContains:\n return !String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.Regex:\n return new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.RegexIgnoreCase:\n return new RegExp(rule.value as string, \"i\").test(String(value));\n case SkipRuleOperator.NotRegex:\n return !new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.NotRegexIgnoreCase:\n return !new RegExp(rule.value as string, \"i\").test(String(value));\n default:\n return false;\n }\n}\n\nexport function getCategoryDefaultSelection(category: string): CategorySelection {\n for (const selection of Config.config.categorySelections) {\n if (selection.name === category) {\n return selection;\n }\n }\n return { name: category, option: CategorySkipOption.Disabled} as CategorySelection;\n}","import { extractVideoID, isOnInvidious } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { getHasStartSegment, getVideoLabel } from \"./videoLabels\";\nimport { getThumbnailSelector, setThumbnailListener } from \"../../maze-utils/src/thumbnailManagement\";\nimport { VideoID } from \"../types\";\nimport { getSegmentsForVideo } from \"./segmentData\";\nimport { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport async function handleThumbnails(thumbnails: HTMLImageElement[]): Promise {\n await Promise.all(thumbnails.map((t) => {\n labelThumbnail(t);\n setupThumbnailHover(t);\n }));\n}\n\nexport async function labelThumbnail(thumbnail: HTMLImageElement): Promise {\n if (!Config.config?.fullVideoSegments || !Config.config?.fullVideoLabelsOnThumbnails) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n \n const videoID = await extractVideoIDFromElement(thumbnail);\n if (!videoID) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const category = await getVideoLabel(videoID);\n if (!category) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const { overlay, text } = createOrGetThumbnail(thumbnail);\n\n overlay.style.setProperty('--category-color', `var(--sb-category-preview-${category}, var(--sb-category-${category}))`);\n overlay.style.setProperty('--category-text-color', `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`);\n text.innerText = chrome.i18n.getMessage(`category_${category}`);\n overlay.classList.add(\"sponsorThumbnailLabelVisible\");\n\n return overlay;\n}\n\nexport async function setupThumbnailHover(thumbnail: HTMLImageElement): Promise {\n // Cache would be reset every load due to no SPA\n if (isOnInvidious()) return;\n\n const mainElement = thumbnail.closest(\"#dismissible\") as HTMLElement;\n if (mainElement) {\n mainElement.removeEventListener(\"mouseenter\", thumbnailHoverListener);\n mainElement.addEventListener(\"mouseenter\", thumbnailHoverListener);\n }\n}\n\nfunction thumbnailHoverListener(e: MouseEvent) {\n if (!chrome.runtime?.id) return;\n\n const thumbnail = (e.target as HTMLElement).querySelector(getThumbnailSelector()) as HTMLImageElement;\n if (!thumbnail) return;\n\n // Pre-fetch data for this video\n let fetched = false;\n const preFetch = async () => {\n fetched = true;\n const videoID = await extractVideoIDFromElement(thumbnail);\n if (videoID && await getHasStartSegment(videoID)) {\n void getSegmentsForVideo(videoID, false);\n }\n };\n const timeout = setTimeout(preFetch, 100);\n const onMouseDown = () => {\n clearTimeout(timeout);\n if (!fetched) {\n preFetch();\n }\n };\n\n e.target.addEventListener(\"mousedown\", onMouseDown, { once: true });\n e.target.addEventListener(\"mouseleave\", () => {\n clearTimeout(timeout);\n e.target.removeEventListener(\"mousedown\", onMouseDown);\n }, { once: true });\n}\n\nfunction getLink(thumbnail: HTMLImageElement): HTMLAnchorElement | null {\n if (isOnInvidious()) {\n return thumbnail.parentElement as HTMLAnchorElement | null;\n } else if (!onMobile()) {\n const link = thumbnail.querySelector(\"a#thumbnail, a.reel-item-endpoint, a.yt-lockup-metadata-view-model__title, a.yt-lockup-metadata-view-model__title-link, a.yt-lockup-view-model__content-image, a.yt-lockup-metadata-view-model-wiz__title\") as HTMLAnchorElement;\n if (link) {\n return link;\n } else if (thumbnail.nodeName === \"YTD-HERO-PLAYLIST-THUMBNAIL-RENDERER\"\n || thumbnail.nodeName === \"YT-THUMBNAIL-VIEW-MODEL\"\n ) {\n return thumbnail.closest(\"a\") as HTMLAnchorElement;\n } else {\n return null;\n }\n } else {\n // Big thumbnails, compact thumbnails, shorts, channel feature, playlist header\n return thumbnail.querySelector(\"a.media-item-thumbnail-container, a.compact-media-item-image, a.reel-item-endpoint, :scope > a, .amsterdam-playlist-thumbnail-wrapper > a\") as HTMLAnchorElement;\n }\n}\n\nasync function extractVideoIDFromElement(thumbnail: HTMLImageElement): Promise {\n const link = getLink(thumbnail);\n if (!link || link.nodeName !== \"A\" || !link.href) return null; // no link found\n\n return await extractVideoID(link);\n}\n\nfunction getOldThumbnailLabel(thumbnail: HTMLImageElement): HTMLElement | null {\n return thumbnail.querySelector(\".sponsorThumbnailLabel\") as HTMLElement | null;\n} \n\nfunction hideThumbnailLabel(thumbnail: HTMLImageElement): void {\n const oldLabel = getOldThumbnailLabel(thumbnail);\n if (oldLabel) {\n oldLabel.classList.remove(\"sponsorThumbnailLabelVisible\");\n }\n}\n\nfunction createOrGetThumbnail(thumbnail: HTMLImageElement): { overlay: HTMLElement; text: HTMLElement } {\n const oldElement = getOldThumbnailLabel(thumbnail);\n if (oldElement) {\n return {\n overlay: oldElement as HTMLElement,\n text: oldElement.querySelector(\"span\") as HTMLElement\n };\n }\n\n const overlay = document.createElement(\"div\") as HTMLElement;\n overlay.classList.add(\"sponsorThumbnailLabel\");\n // Disable hover autoplay\n overlay.addEventListener(\"pointerenter\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerleave\", { bubbles: true }));\n });\n overlay.addEventListener(\"pointerleave\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerenter\", { bubbles: true }));\n });\n\n const icon = createSBIconElement();\n const text = document.createElement(\"span\");\n overlay.appendChild(icon);\n overlay.appendChild(text);\n thumbnail.appendChild(overlay);\n\n return {\n overlay,\n text\n };\n}\n\nfunction createSBIconElement(): SVGSVGElement {\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"viewBox\", \"0 0 565.15 568\");\n const use = document.createElementNS(\"http://www.w3.org/2000/svg\", \"use\");\n use.setAttribute(\"href\", \"#SponsorBlockIcon\");\n svg.appendChild(use);\n return svg;\n}\n\n\n// Inserts the icon svg definition, so it can be used elsewhere\nfunction insertSBIconDefinition() {\n const container = document.createElement(\"span\");\n\n // svg from /public/icons/PlayerStartIconSponsorBlocker.svg, with useless stuff removed\n container.innerHTML = `\n\n \n \n \n \n \n \n`;\n document.body.appendChild(container.children[0]);\n}\n\nexport function setupThumbnailListener(): void {\n setThumbnailListener(handleThumbnails, () => {\n insertSBIconDefinition();\n }, () => Config.isReady());\n}","\nexport function getStartTimeFromUrl(url: string): number {\n const urlParams = new URLSearchParams(url);\n const time = urlParams?.get('t') || urlParams?.get('time_continue');\n\n return urlTimeToSeconds(time);\n}\n\nexport function urlTimeToSeconds(time: string): number {\n if (!time) {\n return 0;\n }\n\n const re = /(?:(\\d{1,3})h)?(?:(\\d{1,2})m)?(\\d+)s?/;\n const match = re.exec(time);\n\n if (match) {\n const hours = parseInt(match[1] ?? '0', 10);\n const minutes = parseInt(match[2] ?? '0', 10);\n const seconds = parseInt(match[3] ?? '0', 10);\n\n return hours * 3600 + minutes * 60 + seconds;\n } else if (/\\d+/.test(time)) {\n return parseInt(time, 10);\n } else {\n return 0;\n }\n}","import { Category, CategorySkipOption, VideoID } from \"../types\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { logWarn } from \"./logger\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { getCategorySelection } from \"./skipRule\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface VideoLabelsCacheData {\n category: Category;\n hasStartSegment: boolean;\n}\n\nexport interface LabelCacheEntry {\n timestamp: number;\n videos: Record;\n}\n\nconst labelCache: Record = {};\nconst cacheLimit = 1000;\n\nasync function getLabelHashBlock(hashPrefix: string): Promise {\n // Check cache\n const cachedEntry = labelCache[hashPrefix];\n if (cachedEntry) {\n return cachedEntry;\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"GET\", `/api/videoLabels/${hashPrefix}?hasStartSegment=true`);\n } catch (e) {\n console.error(\"[SB] Caught error while fetching video labels\", e)\n return null;\n }\n if (response.status !== 200) {\n logRequest(response, \"SB\", \"video labels\");\n // No video labels or server down\n labelCache[hashPrefix] = {\n timestamp: Date.now(),\n videos: {},\n };\n return null;\n }\n\n try {\n const data = JSON.parse(response.responseText);\n\n const newEntry: LabelCacheEntry = {\n timestamp: Date.now(),\n videos: Object.fromEntries(data.map(video => [video.videoID, {\n category: video.segments[0]?.category,\n hasStartSegment: video.hasStartSegment\n }])),\n };\n labelCache[hashPrefix] = newEntry;\n\n if (Object.keys(labelCache).length > cacheLimit) {\n // Remove oldest entry\n const oldestEntry = Object.entries(labelCache).reduce((a, b) => a[1].timestamp < b[1].timestamp ? a : b);\n delete labelCache[oldestEntry[0]];\n }\n\n return newEntry;\n } catch (e) {\n logWarn(`Error parsing video labels: ${e}`);\n\n return null;\n }\n}\n\nexport async function getVideoLabel(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n const category = result.videos[videoID]?.category;\n if (category && getCategorySelection(result.videos[videoID]).option !== CategorySkipOption.Disabled) {\n return category;\n } else {\n return null;\n }\n }\n\n return null;\n}\n\nexport async function getHasStartSegment(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n return result?.videos[videoID]?.hasStartSegment ?? false;\n }\n\n return null;\n}\n","import { objectToURI } from \"../../maze-utils/src\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport Config from \"../config\";\nimport GenericNotice, { NoticeOptions } from \"../render/GenericNotice\";\nimport { ContentContainer } from \"../types\";\nimport { asyncRequestToServer } from \"./requests\";\n\nexport interface ChatConfig {\n displayName: string;\n composerInitialValue?: string;\n customDescription?: string;\n}\n\nexport async function openWarningDialog(contentContainer: ContentContainer): Promise {\n let userInfo: FetchResponse;\n try {\n userInfo = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config.userID),\n values: [\"warningReason\"]\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to fetch user's active warnings\", e)\n return;\n }\n\n if (userInfo.ok) {\n const warningReason = JSON.parse(userInfo.responseText)?.warningReason;\n let userName = \"\";\n try {\n const userNameData = await asyncRequestToServer(\"GET\", \"/api/getUsername?userID=\" + Config.config.userID);\n userName = userNameData.ok ? JSON.parse(userNameData.responseText).userName : \"\";\n } catch (e) {\n console.warn(\"[SB] Caught non-fatal error while trying to resolve user's username\", e);\n }\n const publicUserID = await getHash(Config.config.userID);\n\n let notice: GenericNotice = null;\n const options: NoticeOptions = {\n title: chrome.i18n.getMessage(\"deArrowMessageRecieved\"),\n textBoxes: [{\n text: chrome.i18n.getMessage(\"warningChatInfo\"),\n icon: null\n }, ...warningReason.split(\"\\n\").map((reason) => ({\n text: reason,\n icon: null\n }))],\n buttons: [{\n name: chrome.i18n.getMessage(\"questionButton\"),\n listener: () => openChat({\n displayName: `${userName ? userName : ``}${userName !== publicUserID ? ` | ${publicUserID}` : ``}`\n })\n },\n {\n name: chrome.i18n.getMessage(\"warningConfirmButton\"),\n listener: async () => {\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"POST\", \"/api/warnUser\", {\n userID: Config.config.userID,\n enabled: false\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to acknowledge user's active warning\", e);\n alert(formatJSErrorMessage(e));\n }\n\n if (result.ok) {\n notice?.close();\n } else {\n logRequest(result, \"SB\", \"warning acknowledgement\");\n alert(getLongErrorMessage(result.status, result.responseText));\n }\n }\n }],\n timed: false\n };\n\n notice = new GenericNotice(contentContainer, \"warningNotice\", options);\n } else {\n logRequest(userInfo, \"SB\", \"user's active warnings\");\n }\n}\n\nexport function openChat(config: ChatConfig): void {\n window.open(\"https://chat.sponsor.ajay.app/#\" + objectToURI(\"\", config, false));\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(6069);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","logoUrl","bottomOffset","topOffset","leftOffset","rightOffset","innerBottomMargin","displayTriangle","topTriangle","extraClass","showLogo","showGotIt","positionRealtive","containerAbsolute","center","elements","buttonsAtBottom","textBoxes","textBoxMaxHeight","position","prependElement","referenceNode","timeout","timer","close","backgroundColor","root","bottom","right","margin","undefined","className","marginBottom","maxHeight","overflowY","getURL","getTextElements","textDecoration","rel","i18n","getMessage","linkOnClick","marginLeft","cursor","onAuxClick","getButtons","float","secondButtonText","secondButtonOnClick","result","line","padding","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","fetchConfig","all","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","getYouTubeTitleNode","titleNode","formattedText","innerText","elem","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CategoryPillComponent","React","mainRef","segment","open","getColor","getTextColor","toggle","showTextByDefault","getTitleText","toggleOpen","onMouseEnter","openTooltip","onMouseLeave","closeTooltip","prideTheme","category","vote","fill","colorPalette","white","downvoteButtonColor","SkipNoticeAction","Downvote","showTooltipOnClick","stopAnimation","UUID","formatJSErrorMessage","logRequest","getLongErrorMessage","tooltip","tooltipMount","Tooltip","firstElementChild","shortDescription","ChapterVoteComponent","draggable","chapterNode","actionType","ActionType","Chapter","outerBounding","buttonBounding","CountdownMode","bounds","NoticeComponent","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","showInSecondSlot","startCountdown","noticeStyle","userSelect","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","limitWidth","hideLogo","logoFill","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","icon","textParts","textPart","SelectorComponent","getOptions","option","onChange","label","utils","SkipButtonState","SkipNoticeComponent","noticeRef","categoryOptionRef","segments","autoSkip","contentContainer","voteNotice","getVoteText","upcomingNotice","getUpcomingText","getSkippingText","previousSkipNotices","selectedColor","red","unselectedColor","lockedColor","locked","isMuteSegment","Mute","getFullDurationCountdown","defaultSkipButtonState","startReskip","Redo","Undo","skipButtonStates","Start","defaultSkipButtonCallback","reskip","unskip","skipButtonCallbacks","messages","messageOnClick","countdownText","showSkipButton","editing","choosingCategory","actionState","None","showKeybindHint","voted","copied","getUnskippedModeInfo","transform","getSkipButton","noticeVisibilityMode","NoticeVisibilityMode","FadedForAll","FadedForAutoSkip","barTypes","getMessageBoxes","getBottomRow","prepAction","Upvote","openEditingOptions","CopyDownvote","dontShowNoticeAgain","CategoryVote","resetStateToStart","getCategoryOptions","getSubmissionChooser","buttonIndex","Poi","unskipTime","forceSeek","Unskip0","Unskip1","minWidth","getSkipButtonText","Skip","keybindToString","skipKeybind","getSubmissionChooserOpacity","getSubmissionChooserColor","performAction","getFormattedTime","isUpvote","isDownvote","isCopyDownvote","isVip","noAction","upvote","downvote","categoryVote","copyDownvote","unskipAction","sponsorVideoID","sponsorTimesSubmitting","generateUserID","SponsorSourceType","Local","segmentTimes","unsubmittedSegments","updatePreviewBar","resetSponsorSubmissionNotice","updateEditButtonsOnPlayer","categories","CompileConfig","categoryList","cat","categorySupport","getCategoryNameClass","lockedCategories","unskipSponsorTime","unskippedMode","reskipSponsorTime","reskippedMode","newState","skipButtonState","sponsorTime","round","playbackRate","afterVote","getSponsorIndexFromUUID","wikiLinkText","wikiLinks","clearConfigListener","setNoticeInfoMessageWithOnClick","addVoteButtonInfo","setNoticeInfoMessage","resetVoteButtonInfo","configListener","unmutedListener","forceType","getUndoText","getRedoText","getStartText","categoryNamesGrams","SponsorTimeEditComponent","timesBeforeChanging","fullVideoWarningShown","categoryNameWarningShown","lastEditTime","editTimeTimeout","actionTypeOptionRef","descriptionOptionRef","previousSkipType","sponsorTimeEdits","selectedCategory","DEFAULT_CATEGORY","selectedActionType","description","suggestedNames","chapterNameSelectorOpen","chapterNameSelectorHovering","configUpdateListener","configUpdate","checkToShowFullVideoWarning","checkToShowChapterWarning","textAlign","marginTop","borderColor","timeDisplay","timeDisplayStyle","Full","setTimeTo","setTimeToNow","onKeyDown","onKeyUp","handleOnChange","onWheel","changeTimesWhenScrolling","setTimeToEnd","toggleEditTime","categorySelectionChange","actionTypeSelectionChange","getActionTypeOptions","hidden","SponsorHideType","Hidden","Visible","saveEditTimes","onBlur","onContextMenu","descriptionUpdate","onFocus","deleteTime","previewTime","inspectTime","targetValue","before","getFormattedTimeToSeconds","after","difference","abs","showScrollToEditToolTip","allowScrollingToEdit","step","timeAsNumber","scrollToEditTimeUpdate","showToolTip","buttonFunction","htmlId","RectangleTooltip","fontSize","getVideoDuration","defaultBlockCategories","permission","showCategoryWithoutPermission","permissions","getCategoryLockedClass","chosenCategory","categorySelections","confirm","hash","hookUpdate","handleReplacingLostTimes","categoryChangeListener","getNextActionType","getRealCurrentTime","addedTime","getFormattedSponsorTimesEdits","timeSinceLastEdit","endTime","addingTime","ctrlPressed","shiftPressed","skipToEndTime","sponsorTimes","seekTime","defaultPreviewTime","skipTime","removingIncomplete","submissionNotice","cancel","fetchingSuggestions","fetchSuggestions","asyncRequestToServer","names","parse","SubmissionNoticeComponent","lastSegmentCount","videoObserver","currentSegmentCount","scrollToBottom","scrollElement","scrollTo","scrollHeight","sortButton","sortSegments","exportButton","exportSegments","getSponsorTimeMessages","submissionCountSinceCategories","submit","timeEditRefs","timeRef","guidelinesReminder","isCurrentTimeWrong","videoInfo","microformat","playerMicroformatRenderer","success","clipboard","writeText","exportTimes","dialogWidth","showCategoryGuidelines","getGuidelineInfo","update","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","categoryPillUpdate","showChapterInfoMessage","darkMode","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","downvotedSegments","alreadyInstalled","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","cleanPage","wait","getElementsByTagName","fileref","addCSS","setCategoryColorCSSVariables","runCompatibilityChecks","skipBuffer","endTimeSkipBuffer","sponsorDataFound","existingChaptersImported","importingChaptersWaitingForFocus","importingChaptersWaiting","loopedChapter","skipNotices","activeSkipKeybindElement","shownSegmentFailedToFetchWarning","selectedSegment","previewedSegment","lastKnownVideoTime","videoTime","preciseTime","fromPause","approximateDelay","lastTimeFromWaitingEvent","lastNextChapterKeybind","currentSkipSchedule","currentSkipInterval","currentVirtualTimeInterval","currentUpcomingSchedule","sponsorSkipped","videoMuted","controlsWithEventListeners","setupVideoModule","previewBar","isOnMobileYouTube","handleMobileControlsMutations","controlsContainer","getControls","createPreviewBar","getVideoID","getChannelIDInfo","channelAuthor","sponsorsLookup","updateVisibilityOfPlayerControlsButton","updateSponsorTimesSubmitting","tryShowingDeArrowPromotion","logWarn","checkPreviewbarState","getIsInline","videoOnReadyListener","durationChangeListener","setupVideoListenersFirstTime","switchingVideos","startedWaiting","lastPausedAtZero","lastVideoDataChange","rateChangeListener","updateVirtualTime","clearWaitingTime","startSponsorSchedule","playListener","firstPlay","miniPlayerUI","onVideoPage","getLastNonInlineVideoID","triggerVideoIDChange","triggerVideoElementChange","checkForMiniplayerPlaying","logDebug","startSkipScheduleCheckingForStartSponsors","updateAdFlag","lastCheckVideoTime","lastCheckTime","playingListener","playbackRateCheckInterval","lastPlaybackSpeed","seekingListener","updateActiveSegment","loop","stoppedPlayback","updateWaitingTime","cancelSponsorSchedule","pauseListener","waitingListener","emptyListener","metadataLoadedListener","setupVideoListeners","skipButtonControlBar","SkipButtonControlBar","skip","skipToTime","skippingSegments","openNotice","forceAutoSkip","selectSegment","isOnYTTV","attachToPage","categoryPill","CategoryPill","voteAsync","lastResponseStatus","disable","setVisibility","hideDeArrowPromotion","manifest_version","setupThumbnailListener","controls","playerButtons","hotkeyListener","hotkeyPropagationListener","loadedPreloadedSegment","popupInitialised","skipNoticeContentContainer","sponsorSubmissionNotice","manualSkipPercentCount","contentConfigUpdateListener","updateAll","contentLocalConfigUpdateListener","updateMobileControls","isMobileControlsOpen","isConnected","getPreviewBarAttachElement","progressElementOptions","isVisibleCheck","allElements","chapterVote","ChapterVote","importExistingChapters","includeIntersectingSegments","includeNonIntersectingSegments","getIsAdPlaying","checkIfNewVideoID","getVirtualTime","skipInfo","autoSkipSorter","skipOption","getCategorySelection","shouldAutoSkip","includedTimes","submittedArray","scheduledTimes","sponsorStartTimes","getStartTimes","sponsorStartTimesAfterCurrentTime","minSponsorTimeIndexes","GenericUtils","indexesOf","minSponsorTimeIndex","extraIndexes","endTimeIndex","getLatestEndTimeIndex","unsubmittedArray","unsubmittedSponsorStartTimes","unsubmittedSponsorStartTimesAfterCurrentTime","minUnsubmittedSponsorTimeIndex","previewEndTimeIndex","array","endIndex","getNextSkipIndex","currentSkip","scheduledTime","timeUntilSponsor","inMuteSegment","muted","incorrectVideoCheck","shouldSkip","skippingFunction","forceVideoTime","forcedSkipTime","forcedIncludeIntersectingSegments","forcedIncludeNonIntersectingSegments","extra","extraSkip","delayTime","forceStartIntervalTime","once","startIntervalTime","startVideoTime","startWaitingForReportedTimeToChange","reportedVideoTimeAtStart","intervalDuration","offsetDelayTime","maxPopupTime","timeUntilPopup","popupTime","createUpcomingNotice","virtualTime","includeOverlap","checkFunction","currentVideoID","recordedVideoID","isLoopedChapter","checkVideoIDChange","sendResponse","startOrEndTimingNewSegment","creatingSegment","isSegmentCreationInProgress","Disabled","currentTabSkipProfileID","getSkipProfileIDForTab","updating","closeInfoMenu","isYTTV","openSubmissionMenu","hasVideo","getSponsorTimeFromUUID","addHiddenSegment","isEnabled","every","importedSegments","importTimes","addedSegments","hasChaptersPermission","getCategoryDefaultSelection","KeyboardEvent","setCurrentTabSkipProfile","configID","rawCount","lastTime","lastPerformanceTime","frameTime","keepOldSubmissions","segmentData","getSegmentsForVideo","receivedSegments","oldSegments","otherSegment","other","hashPrefix","downvotedData","hashedUUID","segmentDownvoteData","uuid","hideTooShortSegments","waitForVideo","notifyPopupOfSegments","categoriesResponse","lockInfo","lockedCategoriesLookup","waitCondition","getExistingChapters","hasFocus","chapters","getSkipProfileBool","hasAutogeneratedChapters","startingSegmentTime","getStartTimeFromUrl","poiSegments","hashParams","getHashParams","requiredSegment","previewBarSegments","unsubmitted","showLarger","skippedDuration","durationID","paddingLeft","durationAfterSkips","showTimeWithoutSkips","getTimestampsDuration","updateCategoryPill","fullVideoSegment","setSegment","Autogenerated","checkingPreviewbarAgain","hideHiddenSponsors","latestEndTimeIndex","currentSegment","latestEndTime","minimum","shouldIncludeTime","possibleTimes","unpause","setCurrentTime","play","sendTelemetryAndCount","secondsSkipped","fullSkip","extension","inIncognitoContext","counted","isSubmittingSegment","isPlayingPlaylist","beep","Audio","volume","oldMetadata","mediaSession","setShowKeybindHint","toggleSkip","createSkipNotice","enable","skipNotice","upcomingNoticeShown","closed","newSkipNotice","timeLeft","sameNotice","skippedTime","createButton","baseID","imageName","isDraggable","existingElement","newButton","newButtonImage","prepend","setupListener","canSkipNonMusic","isOnYouTubeMusic","confirmMessage","getSegmentsMessage","clearSponsorTimes","info","popup","frame","borderRadius","stylusStyle","enhancerStyle","enhancerStyleVariables","enhancerCss","enhancerVariablesCss","elemHasChild","parentNodeOptions","hasChildCheck","openInfoMenu","createButtons","buttonsEnabled","submitButtonVisible","deleteButtonVisible","startSegment","cancelSegment","getIsLivePremiere","verifyCurrentTime","roundedTime","Number","EPSILON","existingSegment","getIncompleteSegment","existingTime","getFromConfig","segmentTime","pushed","checkForPreloadedSegment","openWarningDialog","sponsorIndex","Server","factor","Downvoted","notices","getElementsByClassName","closeAllSkipNotices","callRef","sendSubmitMessage","confirmShort","videoDuration","extensionUserAgent","newSegments","receivedNewSegments","sponsorTimesMessage","timeMessage","updateChapterText","handleKeybindVote","lastSkipNotice","skipNoticeRef","lastSegment","waitForSkipNoticeRef","isContentEditable","skipKey","skipToHighlightKey","closeSkipNoticeKey","startSponsorKey","submitKey","previewKey","openSubmissionMenuKey","nextChapterKey","previousChapterKey","upvoteKey","downvoteKey","unfilteredChapterGroups","nextChapter","previousChapter","wasAdPlaying","setIsAdPlaying","styleContainer","isVorapisInstalled","luminance","getLuminance","TOOLTIP_VISIBLE_CLASS","updateExistingChapters","lastSmallestSegment","hasYouTubeChapters","existingChapters","lastChapterUpdate","updatePageElements","createChapterMutationObservers","setupHoverText","categoryTooltip","chapterTooltip","categoryScrubTooltip","chapterScrubTooltip","tooltipTextWrapper","defaultTooltipSelector","originalTooltip","findNonEmptyElement","categoryTooltipContainer","titleTooltip","scrubTooltipTextWrapper","seekBar","mouseOnSeekBar","noYoutubeChapters","timeInSeconds","decimalToTime","normalSegments","chapterSegments","partition","mainSegment","getSmallestSegment","secondarySegment","hasAYouTubeChapterRemoved","setTooltipTitle","normalizeChapterName","shortCategoryName","getComputedStyle","getPropertyValue","customChaptersBar","originalChapterBar","YouTube","chapter","segmentDuration","duplicate","ariaDuration","progressBar","allProgressBars","newChapterBar","chapterChevron","getChapterChevron","chapterMargin","originalChapterBarBlocks","sortedSegments","bar","createBar","createChaptersBar","barSegment","fullCategoryName","timeToPercentage","timeToRightPercentage","chapterFilter","childElementCount","remakingBar","lastRenderedSegments","createChapterRenderGroups","filteredSegments","groups","chapterGroups","chapterGroupFilter","originalDuration","createFromScratch","cloneNode","originalSections","originalSection","newSection","firstTimeSetupChapterSection","setupChapterSection","updateChapterAllMutation","latestChapter","latestValidChapter","chaptersToAddBack","invalidChapter","priorityActionType","getActionTypePrioritized","lastChapterChecked","nextSegment","nextTime","intervalToDecimal","actionTypes","section","addMargin","sizePercent","intervalToPercentage","hoveredSection","attributeObserver","currentElement","updateChapterMutation","attributeFilter","childListObserver","firstUpdate","sections","sectionWidthDecimal","sectionWidthDecimalNoMargin","customChangedElement","fullSectionWidth","changedElement","changedData","findLeftAndScale","calculatedLeft","scale","transformScale","backgroundSize","backgroundPosition","currentWidth","lastWidth","leftPosition","scalePosition","scaleWidth","lastScalePosition","checkElement","currentSectionWidthNoMargin","getPartialChapterSectionStyle","currentSectionWidth","checkLeft","transformMatch","endPosition","submittingSegments","chaptersContainer","getChaptersContainer","activeSegments","setActiveSegments","chosenSegment","chapterButton","getChapterButton","chapterTitle","chapterVoteContainer","getContainer","oldVoteContainers","oldVoteContainer","titlePrefixDot","dest","sbChapterContainer","sbChapterTitleContent","timeToDecimal","decimalTimeConverter","decimal","isTime","totalPixels","pixelOffset","lastCheckedChapter","chapterElement","widthPixels","marginPixels","latestWidth","latestChapterDuration","percentageInCurrentChapter","sizeOfCurrentChapter","getMinimumSize","proposedIndex","startSearchIndex","direction","currentSegmentLength","seg","segmentLength","minSize","swipeStart","skipIcon","textContainer","stopTimer","startTimer","handleTouchStart","handleTouchMove","handleTouchEnd","mountingContainer","getMountingContainer","chapterText","hideButton","showButton","refreshText","getTitle","disableText","getChapterPrefix","distanceMoved","updateLeftStyle","mutationObserver","attachToPageInternal","isOnDescriptionOnRightLayout","change","removedNodes","lastState","watchDiv","unsavedState","findReferenceNode","noticeElement","maxWidth","MiniForAll","MiniForAutoSkip","waitForRef","GenericTooltip","upcomingNoticeRef","xmlns","viewBox","points","ActionTypes","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","endOverlaps","other1","other2","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","segmentUUID","segmentIDData","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","pass","fail","categoryName","messageId","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","inTest","chapterNames","exportTime","removeIf","matchers","matcher","lines","timeRegex","anyLineHasTime","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","hashparamSegments","hexChars","hex","sqrt","toISOString","overlay","downvoteType","isInPreviewPlayer","controlsSelectors","controlsSelector","windowHash","decoded","decodeURIComponent","chaptersBox","autogenerated","links","timeElement","address","testingServerAddress","sendRequestToCustomServer","segmentDataCache","pendingList","pendingData","extraRequestData","hasDownvotedSegments","trimUUIDs","fetchSegmentsForVideo","currentTabSkipProfile","getSkipProfileIDForTime","getSkipProfileIDForVideo","getSkipProfileIDForChannel","getSkipProfileID","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","MinimumDuration","SkipRuleAttribute","SkipRuleOperator","isSkipRulePassing","rule","attribute","StartTime","EndTime","Duration","StartTimePercent","EndTimePercent","DurationPercent","Category","Description","Source","ChannelID","ChannelName","VideoDuration","Title","getCurrentPageTitle","getSkipRuleValue","operator","Less","LessOrEqual","Greater","GreaterOrEqual","Equal","NotEqual","Contains","toLocaleLowerCase","NotContains","Regex","RegExp","RegexIgnoreCase","NotRegex","NotRegexIgnoreCase","ruleSet","rules","profileSelection","handleThumbnails","labelThumbnail","setupThumbnailHover","hideThumbnailLabel","extractVideoIDFromElement","getVideoLabel","oldElement","getOldThumbnailLabel","PointerEvent","svg","use","createSBIconElement","createOrGetThumbnail","mainElement","thumbnailHoverListener","fetched","preFetch","getHasStartSegment","getLink","extractVideoID","oldLabel","setThumbnailListener","insertSBIconDefinition","urlTimeToSeconds","urlParams","URLSearchParams","labelCache","getLabelHashBlock","cachedEntry","timestamp","videos","newEntry","fromEntries","hasStartSegment","oldestEntry","openChat","userInfo","publicUserID","warningReason","userName","userNameData","reason","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/chrome-beta/6.0.3/help.js.map b/chrome-beta/6.0.3/help.js.map new file mode 100644 index 00000000..ca9403e3 --- /dev/null +++ b/chrome-beta/6.0.3/help.js.map @@ -0,0 +1 @@ +{"version":3,"file":"help.js","mappings":"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","sources":["webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./src/config.ts","webpack:///./src/help.ts","webpack:///./src/types.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import { localizeHtmlPage } from \"../maze-utils/src/setup\";\nimport Config from \"./config\";\nimport { showDonationLink } from \"./utils/configUtils\";\n\nimport { waitFor } from \"../maze-utils/src\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\n\nif (document.readyState === \"complete\") {\n init();\n} else {\n document.addEventListener(\"DOMContentLoaded\", init);\n}\n\n// DeArrow promotion\nwaitFor(() => Config.isReady()).then(() => {\n if (Config.config.showNewFeaturePopups && Config.config.showUpsells) {\n isDeArrowInstalled().then((installed) => {\n if (!installed) {\n const deArrowPromotion = document.getElementById(\"dearrow-link\");\n deArrowPromotion.classList.remove(\"hidden\");\n\n deArrowPromotion.addEventListener(\"click\", () => Config.config.showDeArrowPromotion = false);\n\n const text = deArrowPromotion.querySelector(\"#dearrow-link-text\");\n text.textContent = `${chrome.i18n.getMessage(\"DeArrowPromotionMessage2\").split(\"?\")[0]}? ${chrome.i18n.getMessage(\"DeArrowPromotionMessage3\")}`;\n\n const closeButton = deArrowPromotion.querySelector(\".close-button\");\n closeButton.addEventListener(\"click\", (e) => {\n e.preventDefault();\n\n deArrowPromotion.classList.add(\"hidden\");\n Config.config.showDeArrowPromotion = false;\n Config.config.showDeArrowInSettings = false;\n });\n }\n });\n }\n});\n\nasync function init() {\n localizeHtmlPage();\n\n await waitFor(() => Config.config !== null);\n\n if (!Config.config.darkMode) {\n document.documentElement.setAttribute(\"data-theme\", \"light\");\n }\n\n if (!showDonationLink()) {\n document.getElementById(\"donate-component\").style.display = \"none\";\n }\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(3105);\n"],"names":["isSafari","navigator","vendor","formatKey","key","length","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","then","result","sync","configProxy","chrome","storage","onChanged","addListener","changes","areaName","newValue","callback","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","value","Date","now","add","delayUpdate","items","clear","map","v","reduce","acc","k","setTimeout","get","data","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","error","runtime","lastError","alert","i18n","getMessage","fetchConfig","Promise","all","resolve","undefined","window","location","href","includes","isFirefoxOrSafari","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","condition","timeout","check","predicate","reject","interval","intervalCheck","clearInterval","toString","Error","stack","setInterval","url","includeQuestionMark","counter","seperator","JSON","stringify","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","id","getManifest","version","getLocalizedMessage","text","valNewH","replace","match","v1","charset","cryptoFuncs","crypto","getRandomValues","values","Uint32Array","i","Math","floor","random","localizedTitle","document","title","body","querySelector","localizedMessage","innerHTML","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","supportInvidious","serverAddress","CompileConfig","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","prideTheme","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","name","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","navigationApiAvailable","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","filter","s","channelID","keys","some","push","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","init","localizeHtmlPage","waitFor","documentElement","setAttribute","getElementById","style","display","readyState","addEventListener","isDeArrowInstalled","installed","deArrowPromotion","classList","textContent","split","e","preventDefault","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","count","sendMessage","message","response","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/chrome-beta/6.0.3/options.js.LICENSE.txt b/chrome-beta/6.0.3/options.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/chrome-beta/6.0.3/options.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/chrome-beta/6.0.3/options.js.map b/chrome-beta/6.0.3/options.js.map new file mode 100644 index 00000000..9b985b31 --- /dev/null +++ b/chrome-beta/6.0.3/options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"options.js","mappings":"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","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/options/AdvancedSkipOptionsComponent.tsx","webpack:///./src/components/options/CategoryChooserComponent.tsx","webpack:///./src/components/options/CategorySkipOptionsComponent.tsx","webpack:///./src/components/options/KeybindComponent.tsx","webpack:///./src/components/options/KeybindDialogComponent.tsx","webpack:///./src/components/options/NumberInputOptionComponent.tsx","webpack:///./src/components/options/SelectOptionComponent.tsx","webpack:///./src/components/options/ToggleOptionComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListItem.tsx","webpack:///./src/components/options/UnsubmittedVideosComponent.tsx","webpack:///./src/config.ts","webpack:///./src/options.ts","webpack:///./src/render/AdvancedSkipOptions.tsx","webpack:///./src/render/CategoryChooser.tsx","webpack:///./src/render/UnsubmittedVideos.tsx","webpack:///./src/svg-icons/resetIcon.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport * as CompileConfig from \"../../../config.json\";\n\nimport Config from \"../../config\";\nimport { AdvancedSkipRuleSet, SkipRuleAttribute, SkipRuleOperator } from \"../../utils/skipRule\";\nimport { ActionType, ActionTypes, CategorySkipOption } from \"../../types\";\n\nlet configSaveTimeout: NodeJS.Timeout | null = null;\n\nexport function AdvancedSkipOptionsComponent() {\n const [optionsOpen, setOptionsOpen] = React.useState(false);\n const [config, setConfig] = React.useState(configToText(Config.local.skipRules));\n const [configValid, setConfigValid] = React.useState(true);\n\n return (\n
\n
{\n setOptionsOpen(!optionsOpen);\n }}>\n {chrome.i18n.getMessage(\"openAdvancedSkipOptions\")}\n
\n\n {\n optionsOpen &&\n
\n
\n \n {chrome.i18n.getMessage(\"advancedSkipSettingsHelp\")}\n \n\n \n {\" - \"}\n {chrome.i18n.getMessage(\"advancedSkipNotSaved\")}\n \n
\n\n \n\n \n \n
\n )\n}\n","import * as React from \"react\";\nimport { VideoID } from \"../types\";\nimport Config from \"../config\";\nimport { Message, MessageResponse } from \"../messageTypes\";\nimport { LoadingStatus } from \"./PopupComponent\";\n\ninterface SegmentSubmissionComponentProps {\n videoID: VideoID;\n status: LoadingStatus;\n\n sendMessage: (request: Message) => Promise;\n}\n\nexport const SegmentSubmissionComponent = (props: SegmentSubmissionComponentProps) => {\n const segments = Config.local.unsubmittedSegments[props.videoID];\n\n const [showSubmitButton, setShowSubmitButton] = React.useState(segments && segments.length > 0);\n const [showStartSegment, setShowStartSegment] = React.useState(!segments || segments[segments.length - 1].segment.length === 2);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"recordTimesDescription\")}\n

\n \n {chrome.i18n.getMessage(\"popupHint\")}\n \n
\n \n \n
\n \n {chrome.i18n.getMessage(\"submissionEditHint\")}\n \n
\n );\n};","import * as React from \"react\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { formatJSErrorMessage, getShortErrorMessage } from \"../../maze-utils/src/formating\";\nimport Config from \"../config\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport PencilIcon from \"../svg-icons/pencilIcon\";\nimport ClipboardIcon from \"../svg-icons/clipboardIcon\";\nimport CheckIcon from \"../svg-icons/checkIcon\";\nimport { showDonationLink } from \"../utils/configUtils\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport const YourWorkComponent = () => {\n const [isSettingUsername, setIsSettingUsername] = React.useState(false);\n const [username, setUsername] = React.useState(\"\");\n const [newUsername, setNewUsername] = React.useState(\"\");\n const [usernameSubmissionStatus, setUsernameSubmissionStatus] = React.useState(\"\");\n const [submissionCount, setSubmissionCount] = React.useState(\"\");\n const [viewCount, setViewCount] = React.useState(0);\n const [minutesSaved, setMinutesSaved] = React.useState(0);\n const [showDonateMessage, setShowDonateMessage] = React.useState(false);\n\n React.useEffect(() => {\n (async () => {\n const values = [\"userName\", \"viewCount\", \"minutesSaved\", \"vip\", \"permissions\", \"segmentCount\"];\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config!.userID!),\n values\n });\n } catch (e) {\n console.error(\"[SB] Caught error while fetching user info\", e);\n return\n }\n\n if (result.ok) {\n const userInfo = JSON.parse(result.responseText);\n setUsername(userInfo.userName);\n setSubmissionCount(Math.max(Config.config.sponsorTimesContributed ?? 0, userInfo.segmentCount).toLocaleString());\n setViewCount(userInfo.viewCount);\n setMinutesSaved(userInfo.minutesSaved);\n\n if (username === \"sponege\") {\n Config.config.prideTheme = true;\n }\n\n Config.config!.isVip = userInfo.vip;\n Config.config!.permissions = userInfo.permissions;\n\n setShowDonateMessage(Config.config.showDonationLink && Config.config.donateClicked <= 0 && Config.config.showPopupDonationCount < 5\n && viewCount < 50000 && !Config.config.isVip && Config.config.skipCount > 10 && showDonationLink());\n } else {\n logRequest(result, \"SB\", \"user info\");\n }\n })();\n }, []);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"yourWork\")}\n

\n
\n {/* Username */}\n
\n

\n {chrome.i18n.getMessage(\"Username\")}:\n {/* loading/errors */}\n \n {usernameSubmissionStatus}\n \n

\n
\n

{username}

\n \n \n
\n
\n {\n setNewUsername(e.target.value);\n }}/>\n \n
\n
\n \n
\n\n \n\n {showDonateMessage && {\n setShowDonateMessage(false);\n Config.config.showPopupDonationCount = 100;\n }} />}\n\n
\n );\n};\n\nfunction SubmissionCounts(props: { isSettingUsername: boolean; submissionCount: string }): JSX.Element {\n return <>\n
\n

\n {chrome.i18n.getMessage(\"Submissions\")}:\n

\n

{props.submissionCount}

\n
\n \n}\n\nfunction TimeSavedMessage({ viewCount, minutesSaved }: { viewCount: number; minutesSaved: number }): JSX.Element {\n return (\n <>\n {\n viewCount > 0 &&\n

\n {chrome.i18n.getMessage(\"savedPeopleFrom\")}\n \n {viewCount.toLocaleString()}{\" \"}\n \n {viewCount !== 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}\n
\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(minutesSaved)}{\" \"}\n {minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {chrome.i18n.getMessage(\"youHaveSavedTimeEnd\")}{\" \"}\n {\" )\"}\n \n

\n }\n

\n {chrome.i18n.getMessage(\"youHaveSkipped\")}\n \n {Config.config.skipCount}{\" \"}\n \n {Config.config.skipCount > 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}{\" \"}\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(Config.config.minutesSaved)}{\" \"}\n {Config.config.minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {\")\"}\n \n

\n \n );\n}\n\nfunction DonateMessage(props: { onClose: () => void }): JSX.Element {\n return (\n \n );\n}\n\n/**\n * Converts time in minutes to 2d 5h 25.1\n * If less than 1 hour, just returns minutes\n *\n * @param {float} minutes\n * @returns {string}\n */\nfunction getFormattedHours(minutes) {\n minutes = Math.round(minutes * 10) / 10;\n const years = Math.floor(minutes / 525600); // Assumes 365.0 days in a year\n const days = Math.floor(minutes / 1440) % 365;\n const hours = Math.floor(minutes / 60) % 24;\n return (years > 0 ? years + chrome.i18n.getMessage(\"yearAbbreviation\") + \" \" : \"\") + (days > 0 ? days + chrome.i18n.getMessage(\"dayAbbreviation\") + \" \" : \"\") + (hours > 0 ? hours + chrome.i18n.getMessage(\"hourAbbreviation\") + \" \" : \"\") + (minutes % 60).toFixed(1);\n}\n","import * as React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { PopupComponent } from \"./PopupComponent\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport Config from \"../config\";\n\n\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n await waitFor(() => Config.isReady());\n\n const root = createRoot(document.body);\n root.render();\n})","import { Message, MessageResponse } from \"../messageTypes\";\n\nexport function copyToClipboardPopup(text: string, sendMessage: (request: Message) => Promise): void {\n if (window === window.top) {\n window.navigator.clipboard.writeText(text);\n } else {\n sendMessage({\n message: \"copyToClipboard\",\n text\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\n\nexport interface CheckIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst CheckIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: CheckIconProps): JSX.Element => (\n \n \n \n);\n\nexport default CheckIcon;","import * as React from \"react\";\n\nexport interface ClipboardIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ClipboardIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: ClipboardIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ClipboardIcon;","import * as React from \"react\";\n\nexport interface PencilIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst PencilIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: PencilIconProps): JSX.Element => (\n \n \n \n);\n\nexport default PencilIcon;","import * as React from \"react\";\n\nexport interface AddIconProps {\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ResetIcon = ({\n className = \"\",\n style = {},\n onClick\n}: AddIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ResetIcon;","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4901);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","timeout","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","innerText","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CountdownMode","bounds","NoticeComponent","React","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","right","bottom","showInSecondSlot","startCountdown","noticeStyle","userSelect","className","extraClass","onMouseEnter","onMouseLeave","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","prideTheme","limitWidth","hideLogo","getURL","fill","logoFill","float","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","close","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","cursor","textDecoration","icon","getTextElements","textParts","textPart","rel","SelectOptionComponent","label","htmlFor","onChange","option","showResetButton","onReset","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","CompileConfig","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","downvotedSegments","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","LoadingStatus","loadRetryCount","loadSegments","updating","segmentsLoaded","setStatus","NoVideo","SegmentsFound","JSError","NoSegmentsFound","ConnectionError","StillLoading","setVideoID","Video","setCurrentTime","setChanelIDInfo","channelAuthor","setCurrentTabSkipProfile","currentTabSkipProfileID","setSegments","sponsorTimes","segment","SponsorSourceType","Server","actionType","ActionType","Full","setLoopedChapter","loopedChapter","active","currentWindow","setupComPort","port","connect","onDisconnect","msg","SkipProfileButton","menuOpen","setMenuOpen","channelSkipProfileSet","getSkipProfileIDForChannel","skipProfileSet","getSkipProfileID","role","tabIndex","setShowForceChannelCheckWarning","viewBox","SkipProfileMenu","open","PopupComponent","Loading","extensionEnabled","setExtensionEnabled","showForceChannelCheckWarning","showNoticeButton","setShowNoticeButton","segments","forwardClickEvents","getVideoStatusText","stopAnimation","SegmentListComponent","SegmentSubmissionComponent","YourWorkComponent","logs","copyToClipboardPopup","generateDebugDetails","origin","endsWith","skipProfileOptions","getSkipProfileIDForTime","getSkipProfileIDForTab","getSkipProfileIDForVideo","configID","setConfigID","selectedSkipProfileAction","setSelectedSkipProfileAction","allSkipProfiles","setAllSkipProfiles","getChannelIDInfo","isOnYTTV","position","hash","updateSkipProfileSetting","SkipProfileRadioButtons","setSelected","updateConfig","alreadySelected","highlighted","overridden","SkipOptionActionComponent","getVideoID","SegmentListTab","isSegment","Chapter","isChapter","SegmentListItem","tabFilter","voteMessage","setVoteMessage","hidden","setHidden","SponsorHideType","Visible","isLooped","setIsLooped","UUID","extraInfo","Downvoted","MinimumDuration","Hidden","onDoubleClick","skipSegment","selectSegment","backgroundColor","category","description","shortCategoryName","margin","getFormattedTime","Poi","vote","segmentIDData","asyncRequestToServer","logRequest","loopChapter","Skip","Mute","newState","innerChapters","InnerChapterList","chapters","chapter","messageDuration","formatJSErrorMessage","getShortErrorMessage","ImportSegments","importMenuVisible","setImportMenuVisible","textArea","exportTimes","referenceNode","minWidth","rows","setTab","setIsVip","hasSegments","hasChapters","setTabBasedOnConfig","preferChapters","Chapters","segmentsWithNesting","chapterStack","seg","lastChapter","showSubmitButton","setShowSubmitButton","showStartSegment","setShowStartSegment","textAlign","SubmissionCounts","isSettingUsername","submissionCount","TimeSavedMessage","viewCount","toLocaleString","getFormattedHours","DonateMessage","alignItems","justifyContent","paddingLeft","onClose","round","years","days","setIsSettingUsername","username","setUsername","newUsername","setNewUsername","usernameSubmissionStatus","setUsernameSubmissionStatus","setSubmissionCount","setViewCount","setMinutesSaved","showDonateMessage","setShowDonateMessage","publicUserID","userInfo","userName","segmentCount","vip","clipboard","writeText","placeholder","utils","contentContainer","noticeRef","findReferenceNode","noticeElement","prepend","root","update","textBoxes","maxHeight","getMessageBoxes","getButtons","xmlns","points","ActionTypes","backgroundScriptContainer","wait","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","enable","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","other","endOverlaps","other1","other2","getTimestampsDuration","getSponsorIndexFromUUID","getSponsorTimeFromUUID","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","extension","inIncognitoContext","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","uuid","autoSkip","categoryName","messageId","DEFAULT_CATEGORY","inTest","chapterNames","categoryList","names","exportTime","removeIf","matchers","matcher","YouTube","Autogenerated","videoDuration","lines","timeRegex","anyLineHasTime","line","getFormattedTimeToSeconds","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","Local","generateUserID","hashparamSegments","address","testingServerAddress","sendRequestToCustomServer","currentTabSkipProfile","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/chrome/6.0.3/background.js.map b/chrome/6.0.3/background.js.map new file mode 100644 index 00000000..6fb80340 --- /dev/null +++ b/chrome/6.0.3/background.js.map @@ -0,0 +1 @@ +{"version":3,"file":"background.js","mappings":"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","sources":["webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/tab-updates.ts","webpack:///./src/background.ts","webpack:///./src/config.ts","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/requests.ts","webpack:///./node_modules/webext-polyfill-kinda/index.js","webpack:///./node_modules/webext-patterns/index.js","webpack:///./node_modules/webext-content-scripts/index.js","webpack:///./node_modules/content-scripts-register-polyfill/ponyfill.js","webpack:///./node_modules/content-scripts-register-polyfill/index.js","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage } from \"./config\";\n\nfunction onTabUpdatedListener(tabId: number) {\n chrome.tabs.sendMessage(tabId, {\n message: 'update',\n }, () => void chrome.runtime.lastError ); // Suppress error on Firefox\n}\n\nfunction onNavigationApiAvailableChange(changes: {[key: string]: chrome.storage.StorageChange}) {\n if (changes.navigationApiAvailable) {\n if (changes.navigationApiAvailable.newValue) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n } else {\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n }\n }\n}\n\nexport function setupTabUpdates(config: ProtoConfig) {\n // If Navigation API is not supported, then background has to inform content script about video change.\n // This happens on Safari, Firefox, and Chromium 101 (inclusive) and below.\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n void waitFor(() => config.local !== null).then(() => {\n if (config.local!.navigationApiAvailable) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n }\n });\n\n if (!config.configSyncListeners.includes(onNavigationApiAvailableChange)) {\n config.configSyncListeners.push(onNavigationApiAvailableChange);\n }\n}","import * as CompileConfig from \"../config.json\";\n\nimport Config from \"./config\";\nimport { Registration } from \"./types\";\nimport \"content-scripts-register-polyfill\";\nimport { sendRealRequestToCustomServer, serializeOrStringify, setupBackgroundRequestProxy } from \"../maze-utils/src/background-request-proxy\";\nimport { setupTabUpdates } from \"../maze-utils/src/tab-updates\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\n\nimport Utils from \"./utils\";\nimport { getExtensionIdsToImportFrom } from \"./utils/crossExtension\";\nimport { isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { injectUpdatedScripts } from \"../maze-utils/src/cleanup\";\nimport { logWarn } from \"./utils/logger\";\nimport { chromeP } from \"../maze-utils/src/browserApi\";\nimport { getHash } from \"../maze-utils/src/hash\";\nconst utils = new Utils({\n registerFirefoxContentScript,\n unregisterFirefoxContentScript\n});\n\nconst popupPort: Record = {};\n\n// Used only on Firefox, which does not support non persistent background pages.\nconst contentScriptRegistrations = {};\n\n// Register content script if needed\nutils.wait(() => Config.isReady()).then(function() {\n if (Config.config.supportInvidious) utils.setupExtraSiteContentScripts();\n});\n\nsetupBackgroundRequestProxy();\nsetupTabUpdates(Config);\n\nchrome.runtime.onMessage.addListener(function (request, sender, callback) {\n switch(request.message) {\n case \"openConfig\":\n chrome.tabs.create({url: chrome.runtime.getURL('options/options.html' + (request.hash ? '#' + request.hash : ''))});\n return false;\n case \"openHelp\":\n chrome.tabs.create({url: chrome.runtime.getURL('help/index.html')});\n return false;\n case \"openPage\":\n chrome.tabs.create({url: chrome.runtime.getURL(request.url)});\n return false;\n case \"submitVote\":\n submitVote(request.type, request.UUID, request.category, request.videoID).then(callback);\n\n //this allows the callback to be called later\n return true;\n case \"registerContentScript\":\n registerFirefoxContentScript(request);\n return false;\n case \"unregisterContentScript\":\n unregisterFirefoxContentScript(request.id)\n return false;\n case \"tabs\": {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n chrome.tabs.sendMessage(\n tabs[0].id,\n request.data,\n (response) => {\n callback(response);\n }\n );\n });\n return true;\n }\n case \"time\":\n case \"infoUpdated\":\n case \"videoChanged\":\n if (sender.tab) {\n try {\n popupPort[sender.tab.id]?.postMessage(request);\n } catch (e) {\n // This can happen if the popup is closed\n }\n }\n return false;\n default:\n return false;\n\t}\n});\n\nchrome.runtime.onMessageExternal.addListener((request, sender, callback) => {\n if (getExtensionIdsToImportFrom().includes(sender.id)) {\n if (request.message === \"requestConfig\") {\n callback({\n userID: Config.config.userID,\n allowExpirements: Config.config.allowExpirements,\n showDonationLink: Config.config.showDonationLink,\n showUpsells: Config.config.showUpsells,\n darkMode: Config.config.darkMode,\n })\n }\n }\n});\n\nchrome.runtime.onConnect.addListener((port) => {\n if (port.name === \"popup\") {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n popupPort[tabs[0].id] = port;\n });\n }\n});\n\n//add help page on install\nchrome.runtime.onInstalled.addListener(function () {\n // This let's the config sync to run fully before checking.\n // This is required on Firefox\n setTimeout(async () => {\n const userID = Config.config.userID;\n\n // If there is no userID, then it is the first install.\n if (!userID && !Config.local.alreadyInstalled){\n //open up the install page\n chrome.tabs.create({url: chrome.runtime.getURL(\"/help/index.html\")});\n\n //generate a userID\n const newUserID = generateUserID();\n //save this UUID\n Config.config.userID = newUserID;\n Config.local.alreadyInstalled = true;\n\n // Don't show update notification\n Config.config.categoryPillUpdate = true;\n }\n\n if (Config.config.supportInvidious) {\n if (!(await utils.containsInvidiousPermission())) {\n chrome.tabs.create({url: chrome.runtime.getURL(\"/permissions/index.html\")});\n }\n }\n\n getHash(Config.config!.userID!).then((userID) => {\n if (userID == \"60eed03c8644b7efa32df06977b3a4c11b62f63518e74a0e29baa1fd449cb54f\") {\n Config.config.prideTheme = true;\n }\n });\n }, 1500);\n\n if (!isFirefoxOrSafari()) {\n injectUpdatedScripts().catch(logWarn);\n\n waitFor(() => Config.isReady()).then(() => {\n if (Config.config.supportInvidious) {\n injectUpdatedScripts([\n utils.getExtraSiteRegistration()\n ])\n }\n }).catch(logWarn);\n }\n});\n\n/**\n * Only works on Firefox.\n * Firefox requires that it be applied after every extension restart.\n *\n * @param {JSON} options\n */\nasync function registerFirefoxContentScript(options: Registration) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n const existingRegistrations = await chromeP.scripting.getRegisteredContentScripts({\n ids: [options.id]\n }).catch(() => []);\n\n if (existingRegistrations && existingRegistrations.length > 0 \n && options.matches.every((match) => existingRegistrations[0].matches.includes(match))) {\n // No need to register another script, already registered\n return;\n }\n }\n\n await unregisterFirefoxContentScript(options.id);\n\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n await chromeP.scripting.registerContentScripts([{\n id: options.id,\n runAt: \"document_start\",\n matches: options.matches,\n allFrames: options.allFrames,\n js: options.js,\n css: options.css,\n persistAcrossSessions: true,\n }]);\n } else {\n chrome.contentScripts.register({\n allFrames: options.allFrames,\n js: options.js?.map?.(file => ({file})),\n css: options.css?.map?.(file => ({file})),\n matches: options.matches\n }).then((registration) => void (contentScriptRegistrations[options.id] = registration));\n }\n\n}\n\n/**\n * Only works on Firefox.\n * Firefox requires that this is handled by the background script\n */\nasync function unregisterFirefoxContentScript(id: string) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n try {\n await chromeP.scripting.unregisterContentScripts({\n ids: [id]\n });\n } catch (e) {\n // Not registered yet\n }\n } else {\n if (contentScriptRegistrations[id]) {\n contentScriptRegistrations[id].unregister();\n delete contentScriptRegistrations[id];\n }\n }\n}\n\nasync function submitVote(type: number, UUID: string, category: string, videoID: string) {\n let userID = Config.config.userID;\n\n if (userID == undefined || userID === \"undefined\") {\n //generate one\n userID = generateUserID();\n Config.config.userID = userID;\n }\n\n const typeSection = (type !== undefined) ? \"&type=\" + type : \"&category=\" + category;\n\n try {\n const response = await asyncRequestToServer(\"POST\", \"/api/voteOnSponsorTime?UUID=\" + UUID + \"&videoID=\" + videoID + \"&userID=\" + userID + typeSection);\n\n return {\n status: response.status,\n ok: response.ok,\n responseText: await response.text(),\n };\n } catch (e) {\n console.error(\"Error while voting:\", e);\n return {\n error: serializeOrStringify(e),\n };\n }\n}\n\n\nasync function asyncRequestToServer(type: string, address: string, data = {}) {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRealRequestToCustomServer(type, serverAddress + address, data));\n}\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","function NestedProxy(target) {\n\treturn new Proxy(target, {\n\t\tget(target, prop) {\n\t\t\tif (!target[prop]) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof target[prop] !== 'function') {\n\t\t\t\treturn new NestedProxy(target[prop]);\n\t\t\t}\n\n\t\t\treturn (...arguments_) =>\n\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\ttarget[prop](...arguments_, result => {\n\t\t\t\t\t\tif (chrome.runtime.lastError) {\n\t\t\t\t\t\t\treject(new Error(chrome.runtime.lastError.message));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t});\n}\n\nconst chromeP = globalThis.chrome && new NestedProxy(globalThis.chrome);\n\nexport default chromeP;\n","import escapeStringRegexp from 'escape-string-regexp';\n// Copied from https://github.com/mozilla/gecko-dev/blob/073cc24f53d0cf31403121d768812146e597cc9d/toolkit/components/extensions/schemas/manifest.json#L487-L491\nexport const patternValidationRegex = /^(https?|wss?|file|ftp|\\*):\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^file:\\/\\/\\/.*$|^resource:\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^about:/;\nconst isFirefox = typeof navigator === 'object' && navigator.userAgent.includes('Firefox/');\nexport const allStarsRegex = isFirefox\n ? /^(https?|wss?):[/][/][^/]+([/].*)?$/\n : /^https?:[/][/][^/]+([/].*)?$/;\nexport const allUrlsRegex = /^(https?|file|ftp):[/]+/;\nfunction getRawPatternRegex(matchPattern) {\n if (!patternValidationRegex.test(matchPattern)) {\n throw new Error(matchPattern + ' is an invalid pattern, it must match ' + String(patternValidationRegex));\n }\n let [, protocol, host, pathname] = matchPattern.split(/(^[^:]+:[/][/])([^/]+)?/);\n protocol = protocol\n .replace('*', isFirefox ? '(https?|wss?)' : 'https?') // Protocol wildcard\n .replace(/[/]/g, '[/]'); // Escape slashes\n host = (host !== null && host !== void 0 ? host : '') // Undefined for file:///\n .replace(/^[*][.]/, '([^/]+.)*') // Initial wildcard\n .replace(/^[*]$/, '[^/]+') // Only wildcard\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]$/g, '[^.]+'); // Last wildcard\n pathname = pathname\n .replace(/[/]/g, '[/]') // Escape slashes\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]/g, '.*'); // Any wildcard\n return '^' + protocol + host + '(' + pathname + ')?$';\n}\nexport function patternToRegex(...matchPatterns) {\n // No pattern, match nothing https://stackoverflow.com/q/14115522/288906\n if (matchPatterns.length === 0) {\n return /$./;\n }\n if (matchPatterns.includes('')) {\n return allUrlsRegex;\n }\n if (matchPatterns.includes('*://*/*')) {\n return allStarsRegex;\n }\n return new RegExp(matchPatterns.map(x => getRawPatternRegex(x)).join('|'));\n}\n// The parens are required by .split() to preserve the symbols\nconst globSymbols = /([?*]+)/;\nfunction splitReplace(part, index) {\n if (part === '') {\n // Shortcut for speed\n return '';\n }\n if (index % 2 === 0) {\n // Raw text, escape it\n return escapeStringRegexp(part);\n }\n // Else: Symbol\n if (part.includes('*')) { // Can be more than one and it swallows surrounding question marks\n return '.*';\n }\n return [...part].map(() => isFirefox ? '.' : '.?').join('');\n}\nfunction getRawGlobRegex(glob) {\n const regexString = glob\n .split(globSymbols)\n // eslint-disable-next-line unicorn/no-array-callback-reference -- tis ok 🤫\n .map(splitReplace)\n .join('');\n // Drop \"start with anything\" and \"end with anything\" sequences because they're the default for regex\n return ('^' + regexString + '$')\n .replace(/^[.][*]/, '')\n .replace(/[.][*]$/, '')\n .replace(/^[$]$/, '.+'); // Catch `*` and `*`\n}\nexport function globToRegex(...globs) {\n // No glob, match anything; `include_globs: []` is the default\n if (globs.length === 0) {\n return /.*/;\n }\n return new RegExp(globs.map(x => getRawGlobRegex(x)).join('|'));\n}\nexport function excludeDuplicatePatterns(matchPatterns) {\n if (matchPatterns.includes('')) {\n return [''];\n }\n if (matchPatterns.includes('*://*/*')) {\n return ['*://*/*'];\n }\n return matchPatterns.filter(possibleSubset => !matchPatterns.some(possibleSuperset => possibleSubset !== possibleSuperset && patternToRegex(possibleSuperset).test(possibleSubset)));\n}\n","import chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst gotScripting = Boolean(globalThis.chrome?.scripting);\nfunction castTarget(target) {\n return typeof target === 'object' ? target : {\n tabId: target,\n frameId: 0,\n };\n}\nfunction castAllFramesTarget(target) {\n if (typeof target === 'object') {\n return { ...target, allFrames: false };\n }\n return {\n tabId: target,\n frameId: undefined,\n allFrames: true,\n };\n}\nfunction castArray(possibleArray) {\n if (Array.isArray(possibleArray)) {\n return possibleArray;\n }\n return [possibleArray];\n}\nconst nativeFunction = /^function \\w+\\(\\) {[\\n\\s]+\\[native code][\\n\\s]+}/;\nexport async function executeFunction(target, function_, ...args) {\n if (nativeFunction.test(String(function_))) {\n throw new TypeError('Native functions need to be wrapped first, like `executeFunction(1, () => alert(1))`');\n }\n const { frameId, tabId } = castTarget(target);\n if (gotScripting) {\n const [injection] = await chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: [frameId],\n },\n func: function_,\n args,\n });\n return injection?.result;\n }\n const [result] = await chromeP.tabs.executeScript(tabId, {\n code: `(${function_.toString()})(...${JSON.stringify(args)})`,\n frameId,\n });\n return result;\n}\nfunction arrayOrUndefined(value) {\n return value === undefined ? undefined : [value];\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention -- It follows the native naming\nexport async function insertCSS({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const everyInsertion = Promise.all(files.map(async (content) => {\n if (typeof content === 'string') {\n content = { file: content };\n }\n if (gotScripting) {\n return chrome.scripting.insertCSS({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: 'file' in content ? [content.file] : undefined,\n css: 'code' in content ? content.code : undefined,\n });\n }\n return chromeP.tabs.insertCSS(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt: runAt ?? 'document_start', // CSS should prefer `document_start` when unspecified\n });\n }));\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(everyInsertion);\n }\n else {\n await everyInsertion;\n }\n}\nfunction assertNoCode(files) {\n if (files.some(content => 'code' in content)) {\n throw new Error('chrome.scripting does not support injecting strings of `code`');\n }\n}\nexport async function executeScript({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const normalizedFiles = files.map(file => typeof file === 'string' ? { file } : file);\n if (gotScripting) {\n assertNoCode(normalizedFiles);\n const injection = chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: normalizedFiles.map(({ file }) => file),\n });\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(injection);\n }\n else {\n await injection;\n }\n // Don't return `injection`; the \"return value\" of a file is generally not useful\n return;\n }\n // Don't use .map(), `code` injections can't be \"parallel\"\n const executions = [];\n for (const content of normalizedFiles) {\n // Files are executed in order, but `code` isn’t, so it must await the last script before injecting more\n if ('code' in content) {\n // eslint-disable-next-line no-await-in-loop -- On purpose, see above\n await executions.at(-1);\n }\n executions.push(chromeP.tabs.executeScript(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt,\n }));\n }\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(Promise.all(executions));\n }\n else {\n await Promise.all(executions);\n }\n}\nexport async function getTabsByUrl(matches, excludeMatches) {\n if (matches.length === 0) {\n return [];\n }\n const exclude = excludeMatches ? patternToRegex(...excludeMatches) : undefined;\n const tabs = await chromeP.tabs.query({ url: matches });\n return tabs\n .filter(tab => tab.id && tab.url && (exclude ? !exclude.test(tab.url) : true))\n .map(tab => tab.id);\n}\nexport async function injectContentScript(where, scripts, options = {}) {\n const targets = castArray(where);\n await Promise.all(targets.map(async (target) => injectContentScriptInSpecificTarget(castAllFramesTarget(target), scripts, options)));\n}\nasync function injectContentScriptInSpecificTarget({ frameId, tabId, allFrames }, scripts, options = {}) {\n const injections = castArray(scripts).flatMap(script => [\n insertCSS({\n tabId,\n frameId,\n allFrames,\n files: script.css ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n executeScript({\n tabId,\n frameId,\n allFrames,\n files: script.js ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n ]);\n await Promise.all(injections);\n}\n// Sourced from:\n// https://source.chromium.org/chromium/chromium/src/+/main:extensions/common/extension_urls.cc;drc=6b42116fe3b3d93a77750bdcc07948e98a728405;l=29\n// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts\nconst blockedPrefixes = [\n 'chrome.google.com/webstore',\n 'accounts-static.cdn.mozilla.net',\n 'accounts.firefox.com',\n 'addons.cdn.mozilla.net',\n 'addons.mozilla.org',\n 'api.accounts.firefox.com',\n 'content.cdn.mozilla.net',\n 'discovery.addons.mozilla.org',\n 'input.mozilla.org',\n 'install.mozilla.org',\n 'oauth.accounts.firefox.com',\n 'profile.accounts.firefox.com',\n 'support.mozilla.org',\n 'sync.services.mozilla.com',\n 'testpilot.firefox.com',\n];\nexport function isScriptableUrl(url) {\n if (!url.startsWith('http')) {\n return false;\n }\n const cleanUrl = url.replace(/^https?:\\/\\//, '');\n return blockedPrefixes.every(blocked => !cleanUrl.startsWith(blocked));\n}\nconst targetErrors = /^No frame with id \\d+ in tab \\d+.$|^No tab with id: \\d+.$|^The tab was closed.$|^The frame was removed.$/;\nasync function catchTargetInjectionErrors(promise) {\n try {\n await promise;\n }\n catch (error) {\n // @ts-expect-error Optional chaining is good enough\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!targetErrors.test(error?.message)) {\n throw error;\n }\n }\n}\n","import { injectContentScript } from 'webext-content-scripts';\nimport chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst noMatchesError = 'Type error for parameter contentScriptOptions (Error processing matches: Array requires at least 1 items; you have 0) for contentScripts.register.';\nconst noPermissionError = 'Permission denied to register a content script for ';\nconst gotNavigation = typeof chrome === 'object' && 'webNavigation' in chrome;\nasync function isOriginPermitted(url) {\n return chromeP.permissions.contains({\n origins: [new URL(url).origin + '/*'],\n });\n}\n// The callback is only used by webextension-polyfill\nexport default async function registerContentScript(contentScriptOptions, callback) {\n const { js = [], css = [], matchAboutBlank, matches = [], excludeMatches, runAt, } = contentScriptOptions;\n let { allFrames } = contentScriptOptions;\n if (gotNavigation) {\n allFrames = false;\n }\n else if (allFrames) {\n console.warn('`allFrames: true` requires the `webNavigation` permission to work correctly: https://github.com/fregante/content-scripts-register-polyfill#permissions');\n }\n if (matches.length === 0) {\n throw new Error(noMatchesError);\n }\n await Promise.all(matches.map(async (pattern) => {\n if (!await chromeP.permissions.contains({ origins: [pattern] })) {\n throw new Error(noPermissionError + pattern);\n }\n }));\n const matchesRegex = patternToRegex(...matches);\n const excludeMatchesRegex = patternToRegex(...excludeMatches !== null && excludeMatches !== void 0 ? excludeMatches : []);\n const inject = async (url, tabId, frameId = 0) => {\n if (!matchesRegex.test(url) // Manual `matches` glob matching\n || excludeMatchesRegex.test(url) // Manual `exclude_matches` glob matching\n || !await isOriginPermitted(url) // Without this, we might have temporary access via accessTab\n ) {\n return;\n }\n await injectContentScript({\n tabId,\n frameId,\n }, {\n css,\n js,\n matchAboutBlank,\n runAt,\n }, {\n ignoreTargetErrors: true,\n });\n };\n const tabListener = async (tabId, { status }, { url }) => {\n // Only status updates are relevant\n // No URL = no permission\n if (status === 'loading' && url) {\n void inject(url, tabId);\n }\n };\n const navListener = async ({ tabId, frameId, url, }) => {\n void inject(url, tabId, frameId);\n };\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.addListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.addListener(tabListener);\n }\n const registeredContentScript = {\n async unregister() {\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.removeListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.removeListener(tabListener);\n }\n },\n };\n if (typeof callback === 'function') {\n callback(registeredContentScript);\n }\n return registeredContentScript;\n}\n","/// \n// The .js extension is required to create ESM-compatible file\nimport register from './ponyfill.js';\nif (typeof chrome === 'object' && !chrome.contentScripts) {\n chrome.contentScripts = { register };\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(1398);\n"],"names":["sendRealRequestToCustomServer","type","url","data","headers","toLowerCase","objectToURI","fetch","method","redirect","body","JSON","stringify","isSerializable","value","window","structuredClone","serializeOrStringify","toString","String","chrome","runtime","onMessage","addListener","request","sender","callback","message","then","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","Array","from","Uint8Array","arrayBuffer","responseText","text","responseBinary","returnHeaders","entries","reduce","acc","key","status","ok","catch","error","console","getHash","times","e","Promise","resolve","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","cleanupListeners","getCleanupId","id","listener","push","source","started","performance","now","postMessage","addEventListener","extraScripts","ignoreNormalScipts","scripts","concat","getManifest","content_scripts","cs","tab","tabs","query","matches","css","length","scripting","insertCSS","target","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","match","replace","file","navigator","vendor","formatKey","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","Date","add","delayUpdate","items","clear","map","v","k","setTimeout","get","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","location","href","includes","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","isVisible","element","ignoreWidth","tagName","classList","contains","document","querySelectorAll","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","left","width","top","height","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","textContent","trim","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","node","possibleElements","disconnect","MutationObserver","observe","documentElement","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","Math","max","hours","floor","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","isNaN","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","digest","TextEncoder","encode","b","padStart","join","condition","timeout","check","interval","intervalCheck","clearInterval","Error","stack","setInterval","includeQuestionMark","counter","seperator","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","version","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","random","localizedTitle","title","localizedMessage","innerHTML","onTabUpdatedListener","onNavigationApiAvailableChange","navigationApiAvailable","onUpdated","removeListener","waitFor","utils","registerFirefoxContentScript","unregisterFirefoxContentScript","popupPort","contentScriptRegistrations","options","existingRegistrations","getRegisteredContentScripts","ids","every","registerContentScripts","runAt","allFrames","persistAcrossSessions","contentScripts","register","registration","unregisterContentScripts","unregister","wait","supportInvidious","setupExtraSiteContentScripts","setupBackgroundRequestProxy","setupTabUpdates","create","getURL","hash","UUID","category","videoID","userID","generateUserID","typeSection","address","serverAddress","testingServer","CompileConfig","testingServerAddress","asyncRequestToServer","submitVote","active","currentWindow","onMessageExternal","getExtensionIdsToImportFrom","allowExpirements","showDonationLink","showUpsells","darkMode","onConnect","port","name","onInstalled","alreadyInstalled","newUserID","categoryPillUpdate","containsInvidiousPermission","prideTheme","injectUpdatedScripts","logWarn","getExtraSiteRegistration","ConfigClass","ProtoConfig","resetToDefault","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","ytInfoPermissionGranted","showPopupDonationCount","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","hookUpdate","showChapterInfoMessage","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","s","channelID","keys","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","removeExtraSiteRegistration","applyInvidiousPermissions","enable","getMergedTimestamps","timestamps","deduped","forEach","range","startOverlaps","findIndex","other","endOverlaps","other1","splice","other2","min","slice","getTimestampsDuration","getSponsorIndexFromUUID","sponsorTimes","startsWith","getSponsorTimeFromUUID","domains","permissionRegex","findReferenceNode","referenceNode","findValidElementFromSelector","player","getElementById","firstChild","index","children","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","hidden","extension","inIncognitoContext","segmentIDData","formatJSErrorMessage","logRequest","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","segments","lastAccess","existingData","segment","uuid","Visible","indexOf","extensionImportList","safari","firefox","chromium","extensionIds","count","toISOString","log","sendRequestToCustomServer","globalThis","NestedProxy","arguments_","patternValidationRegex","isFirefox","allStarsRegex","allUrlsRegex","matchPatterns","RegExp","x","matchPattern","test","host","pathname","split","getRawPatternRegex","gotScripting","castArray","possibleArray","isArray","arrayOrUndefined","async","frameId","matchAboutBlank","ignoreTargetErrors","everyInsertion","content","frameIds","catchTargetInjectionErrors","normalizedFiles","assertNoCode","injection","executions","at","targetErrors","gotNavigation","contentScriptOptions","excludeMatches","pattern","matchesRegex","excludeMatchesRegex","inject","URL","origin","isOriginPermitted","where","targets","injections","flatMap","match_about_blank","run_at","injectContentScriptInSpecificTarget","castAllFramesTarget","injectContentScript","tabListener","navListener","webNavigation","onCommitted","registeredContentScript","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/chrome/6.0.3/content.js.LICENSE.txt b/chrome/6.0.3/content.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/chrome/6.0.3/content.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/chrome/6.0.3/content.js.map b/chrome/6.0.3/content.js.map new file mode 100644 index 00000000..8cb63cc0 --- /dev/null +++ b/chrome/6.0.3/content.js.map @@ -0,0 +1 @@ +{"version":3,"file":"content.js","mappings":"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","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/animationUtils.ts","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/components/Tooltip.tsx","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/CategoryPillComponent.tsx","webpack:///./src/components/ChapterVoteComponent.tsx","webpack:///./src/components/NoticeComponent.tsx","webpack:///./src/components/NoticeTextSectionComponent.tsx","webpack:///./src/components/SelectorComponent.tsx","webpack:///./src/components/SkipNoticeComponent.tsx","webpack:///./src/components/SponsorTimeEditComponent.tsx","webpack:///./src/components/SubmissionNoticeComponent.tsx","webpack:///./src/config.ts","webpack:///./src/content.ts","webpack:///./src/dearrowPromotion.ts","webpack:///./src/js-components/previewBar.ts","webpack:///./src/js-components/skipButtonControlBar.ts","webpack:///./src/render/CategoryPill.tsx","webpack:///./src/render/ChapterVote.tsx","webpack:///./src/render/GenericNotice.tsx","webpack:///./src/render/RectangleTooltip.tsx","webpack:///./src/render/SkipNotice.tsx","webpack:///./src/render/SubmissionNotice.tsx","webpack:///./src/render/Tooltip.tsx","webpack:///./src/render/UpcomingNotice.tsx","webpack:///./src/svg-icons/pencil_svg.tsx","webpack:///./src/svg-icons/sb_svg.tsx","webpack:///./src/svg-icons/thumbs_down_svg.tsx","webpack:///./src/svg-icons/thumbs_up_svg.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/arrayUtils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/compatibility.ts","webpack:///./src/utils/constants.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/genericUtils.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/mobileUtils.ts","webpack:///./src/utils/noticeUtils.ts","webpack:///./src/utils/pageCleaner.ts","webpack:///./src/utils/pageUtils.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/segmentData.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///./src/utils/thumbnails.ts","webpack:///./src/utils/urlParser.ts","webpack:///./src/utils/videoLabels.ts","webpack:///./src/utils/warnings.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n"," /**\n * Starts a spinning animation and returns a function to be called when it should be stopped\n * The callback will be called when the animation is finished \n * It waits until a full rotation is complete\n */\nfunction applyLoadingAnimation(element: HTMLElement, time: number, callback?: () => void): () => Promise {\n element.style.animation = `rotate ${time}s 0s infinite`;\n\n return async () => new Promise((resolve) => {\n // Make the animation finite\n element.style.animation = `rotate ${time}s`;\n\n // When the animation is over, hide the button\n const animationEndListener = () => {\n if (callback) callback();\n\n element.style.animation = \"none\";\n\n element.removeEventListener(\"animationend\", animationEndListener);\n\n resolve();\n };\n\n element.addEventListener(\"animationend\", animationEndListener);\n });\n}\n\nfunction setupCustomHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): { hide: () => void; show: () => void } {\n if (enabled) element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n element.classList.add(\"animationDone\");\n if (!rightSlide) element.classList.add(\"autoHideLeft\");\n\n let mouseEntered = false;\n\n return {\n hide: () => {\n mouseEntered = false;\n if (element.classList.contains(\"autoHiding\")) {\n element.classList.add(\"sbhidden\");\n }\n },\n show: () => {\n mouseEntered = true;\n element.classList.remove(\"animationDone\");\n\n // Wait for next event loop\n setTimeout(() => {\n if (mouseEntered) element.classList.remove(\"sbhidden\")\n }, 10);\n }\n };\n}\n\nfunction setupAutoHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): void {\n const { hide, show } = this.setupCustomHideAnimation(element, container, enabled, rightSlide);\n\n container.addEventListener(\"mouseleave\", () => hide());\n container.addEventListener(\"mouseenter\", () => show());\n}\n\nfunction enableAutoHideAnimation(element: Element): void {\n element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n}\n\nfunction disableAutoHideAnimation(element: Element): void {\n element.classList.remove(\"autoHiding\");\n element.classList.remove(\"sbhidden\");\n}\n\nexport const AnimationUtils = {\n applyLoadingAnimation,\n setupAutoHideAnimation,\n setupCustomHideAnimation,\n enableAutoHideAnimation,\n disableAutoHideAnimation\n};","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ButtonListener } from \"./component-types\";\nimport { isFirefoxOrSafari } from \"..\";\nimport { isSafari } from \"../config\";\n\nexport interface TooltipProps {\n text?: string;\n textBoxes?: string[];\n link?: string;\n linkOnClick?: () => void;\n secondButtonOnClick?: () => void;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n topOffset?: string;\n leftOffset?: string;\n rightOffset?: string;\n zIndex?: number;\n innerBottomMargin?: string;\n timeout?: number;\n opacity?: number;\n displayTriangle?: boolean;\n topTriangle?: boolean;\n extraClass?: string;\n showLogo?: boolean;\n showGotIt?: boolean;\n secondButtonText?: string;\n center?: boolean;\n positionRealtive?: boolean;\n containerAbsolute?: boolean;\n buttons?: ButtonListener[];\n elements?: JSX.Element[];\n buttonsAtBottom?: boolean;\n textBoxMaxHeight?: string;\n}\n\nexport class GenericTooltip {\n text?: string; \n container: HTMLDivElement;\n\n timer: NodeJS.Timeout;\n root: Root;\n \n constructor(props: TooltipProps, logoUrl: string) {\n props.bottomOffset ??= \"70px\";\n props.topOffset ??= \"inherit\";\n props.leftOffset ??= \"inherit\";\n props.rightOffset ??= \"inherit\";\n props.zIndex ??= 10000;\n props.innerBottomMargin ??= \"0px\";\n props.opacity ??= 0.7;\n props.displayTriangle ??= !props.topTriangle;\n props.topTriangle ??= false;\n props.extraClass ??= \"\";\n props.showLogo ??= true;\n props.showGotIt ??= true;\n props.positionRealtive ??= true;\n props.containerAbsolute ??= false;\n props.center ??= false;\n props.elements ??= [];\n props.buttonsAtBottom ??= false;\n props.textBoxes ??= [];\n props.textBoxMaxHeight ??= \"inherit\";\n this.text = props.text;\n\n this.container = document.createElement('div');\n this.container.id = \"sponsorTooltip\" + props.text;\n if (props.positionRealtive) this.container.style.position = \"relative\";\n if (props.containerAbsolute) this.container.style.position = \"absolute\";\n if (props.center) {\n if (isFirefoxOrSafari() && !isSafari()) {\n this.container.style.width = \"-moz-available\";\n } else {\n this.container.style.width = \"-webkit-fill-available\";\n }\n }\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n const backgroundColor = `rgba(28, 28, 28, ${props.opacity})`;\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n {props.showLogo ? \n \n \n : null}\n {this.text ? \n \n {this.getTextElements(this.text + (props.link ? \". \" : \"\"))}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : (props.linkOnClick ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null)}\n \n : null}\n\n {props.textBoxes ? props.textBoxes.map((text, index) => (\n
\n {text || String.fromCharCode(8203)} {/* Zero width space */}\n
\n )) : null}\n\n {props.elements}\n\n {!props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n
\n\n {props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n\n {props.showGotIt ?\n \n : null}\n\n {\n props.secondButtonText ?\n \n : null\n }\n
\n )\n }\n\n private getTextElements(text: string): JSX.Element[] {\n if (!text.includes(\"\\n\")) return [<>{text}];\n\n const result: JSX.Element[] = [];\n\n for (const line of text.split(\"\\n\")) {\n result.push(\n
\n {line}\n
\n );\n }\n\n return result;\n }\n\n getButtons(buttons: ButtonListener[] | undefined, buttonsAtBottom: boolean): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n const style: React.CSSProperties = {};\n if (buttonsAtBottom) {\n style.float = \"right\";\n }\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return [];\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport Config from \"../config\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface CategoryPillProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n showTextByDefault: boolean;\n showTooltipOnClick: boolean;\n}\n\nexport interface CategoryPillState {\n segment?: SponsorTime;\n show: boolean;\n open?: boolean;\n}\n\nclass CategoryPillComponent extends React.Component {\n mainRef: React.MutableRefObject;\n tooltip?: Tooltip;\n\n constructor(props: CategoryPillProps) {\n super(props);\n\n this.mainRef = React.createRef();\n\n this.state = {\n segment: null,\n show: false,\n open: false\n };\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {\n backgroundColor: this.getColor(),\n display: this.state.show ? \"flex\" : \"none\",\n color: this.getTextColor(),\n }\n\n // To be able to remove the margin from the parent\n this.mainRef?.current?.parentElement?.classList?.toggle(\"cbPillOpen\", this.state.show);\n\n return (\n this.toggleOpen(e)}\n onMouseEnter={() => this.openTooltip()}\n onMouseLeave={() => this.closeTooltip()}\n ref={this.mainRef}>\n \n \n \n \n\n {\n (this.props.showTextByDefault || this.state.open) &&\n \n {chrome.i18n.getMessage(\"category_\" + this.state.segment?.category)}\n \n }\n \n\n {this.state.open && (\n <>\n {/* Upvote Button */}\n
this.vote(e, 1)}>\n \n
\n\n {/* Downvote Button */}\n
this.vote(event, 0)}>\n \n
\n \n )}\n\n {/* Close Button */}\n {\n this.setState({ show: false });\n this.closeTooltip();\n }}>\n \n
\n );\n }\n\n private toggleOpen(event: React.MouseEvent): void {\n event.stopPropagation();\n\n if (this.state.show) {\n if (this.props.showTooltipOnClick) {\n if (this.state.open) {\n this.closeTooltip();\n } else {\n this.openTooltip();\n }\n }\n\n this.setState({ open: !this.state.open });\n }\n }\n\n private async vote(event: React.MouseEvent, type: number): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response) {\n console.error(\"[SB] Caught error while attempting to vote on a FV label\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status === 429) {\n this.setState({\n open: false,\n show: type === 1\n });\n\n this.closeTooltip();\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on FV label\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n\n private getColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-preview-${category}, var(--sb-category-${category}))`;\n }\n\n private getTextColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`;\n }\n\n private openTooltip(): void {\n if (this.tooltip) {\n this.tooltip.close();\n }\n\n const tooltipMount = document.querySelector(\"#above-the-fold, ytm-slim-owner-renderer\") as HTMLElement;\n if (tooltipMount) {\n this.tooltip = new Tooltip({\n text: this.getTitleText(),\n referenceNode: tooltipMount,\n bottomOffset: \"0px\",\n opacity: 0.95,\n displayTriangle: false,\n showLogo: false,\n showGotIt: false,\n prependElement: tooltipMount.firstElementChild as HTMLElement\n });\n }\n }\n\n private closeTooltip(): void {\n this.tooltip?.close?.();\n this.tooltip = null;\n }\n\n getTitleText(): string {\n const shortDescription = chrome.i18n.getMessage(`category_${this.state.segment?.category}_pill`);\n return (shortDescription ? shortDescription + \". \": \"\") + chrome.i18n.getMessage(\"categoryPillTitleText\");\n }\n}\n\nexport default CategoryPillComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport { ActionType, Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface ChapterVoteProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n size?: string;\n}\n\nexport interface ChapterVoteState {\n segment?: SponsorTime;\n show: boolean;\n size?: string;\n}\n\nclass ChapterVoteComponent extends React.Component {\n tooltip?: Tooltip;\n\n constructor(props: ChapterVoteProps) {\n super(props);\n\n this.state = {\n segment: null,\n show: false,\n size: props.size ?? \"22px\"\n };\n }\n\n render(): React.ReactElement {\n if (this.tooltip && !this.state.show) {\n this.tooltip.close();\n this.tooltip = null;\n }\n\n return (\n <>\n {/* Upvote Button */}\n \n\n {/* Downvote Button */}\n \n \n );\n }\n\n private async vote(event: React.MouseEvent, type: number, element?: HTMLElement): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(element ?? event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response){\n console.error(\"[SB] Caught error while attempting to vote on a chapter\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status == 429) {\n this.setState({\n show: type === 1\n });\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on chapter\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n}\n\nexport default ChapterVoteComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport SbSvg from \"../svg-icons/sb_svg\";\n\nenum CountdownMode {\n Timer,\n Paused,\n Stopped\n}\n\nexport interface NoticeProps {\n noticeTitle: string;\n\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n amountOfPreviousNotices?: number;\n showInSecondSlot?: boolean;\n timed?: boolean;\n idSuffix?: string;\n\n fadeIn?: boolean;\n fadeOut?: boolean;\n startFaded?: boolean;\n firstColumn?: React.ReactElement[] | React.ReactElement;\n firstRow?: React.ReactElement;\n bottomRow?: React.ReactElement[];\n\n smaller?: boolean;\n limitWidth?: boolean;\n extraClass?: string;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n logoFill?: string;\n\n // Callback for when this is closed\n closeListener: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n zIndex?: number;\n style?: React.CSSProperties;\n biggerCloseButton?: boolean;\n children?: React.ReactNode;\n}\n\ninterface MouseDownInfo {\n x: number;\n y: number;\n right: number;\n bottom: number;\n}\n\nexport interface NoticeState {\n maxCountdownTime: () => number;\n\n countdownTime: number;\n countdownMode: CountdownMode;\n\n mouseHovering: boolean;\n\n startFaded: boolean;\n\n mouseDownInfo: MouseDownInfo | null;\n mouseMoved: boolean;\n right: number;\n bottom: number;\n}\n\n// Limits for dragging notice around\nconst bounds = [10, 100, 10, 10];\n\nclass NoticeComponent extends React.Component {\n countdownInterval: NodeJS.Timeout;\n\n idSuffix: string;\n\n amountOfPreviousNotices: number;\n\n parentRef: React.RefObject;\n\n handleMouseMoveBinded: (e: MouseEvent) => void = this.handleMouseMove.bind(this);\n\n constructor(props: NoticeProps) {\n super(props);\n\n this.parentRef = React.createRef();\n\n const maxCountdownTime = () => {\n if (this.props.maxCountdownTime) return this.props.maxCountdownTime();\n else return Config.config.skipNoticeDuration;\n };\n \n //the id for the setInterval running the countdown\n this.countdownInterval = null;\n\n this.amountOfPreviousNotices = props.amountOfPreviousNotices || 0;\n\n this.idSuffix = props.idSuffix || \"\";\n\n // Setup state\n this.state = {\n maxCountdownTime,\n\n //the countdown until this notice closes\n countdownTime: maxCountdownTime(),\n countdownMode: CountdownMode.Timer,\n mouseHovering: false,\n\n startFaded: this.props.startFaded ?? false,\n\n mouseDownInfo: null,\n mouseMoved: false,\n right: bounds[0],\n bottom: props.showInSecondSlot ? 290 : bounds[1]\n }\n }\n\n componentDidMount(): void {\n this.startCountdown();\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = {\n zIndex: this.props.zIndex || (1000 + this.amountOfPreviousNotices),\n right: this.state.right,\n bottom: this.state.bottom,\n userSelect: this.state.mouseDownInfo && this.state.mouseMoved ? \"none\" : \"auto\",\n ...(this.props.style ?? {})\n }\n\n return (\n
this.onMouseEnter(e) }\n onMouseLeave={() => {\n this.timerMouseLeave();\n }}\n onMouseDown={(e) => {\n document.addEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: {\n x: e.clientX,\n y: e.clientY,\n right: this.state.right,\n bottom: this.state.bottom\n },\n mouseMoved: false\n });\n }}\n onMouseUp={() => {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: null\n });\n }}\n ref={this.parentRef}\n style={noticeStyle} >\n
\n \n \n\n {/* First row */}\n \n {/* Left column */}\n \n\n {this.props.firstRow}\n\n {/* Right column */}\n {!this.props.hideRightInfo &&\n \n }\n \n\n {this.props.children}\n\n {!this.props.smaller && this.props.bottomRow ? \n this.props.bottomRow\n : null}\n\n \n
\n {/* Logo */}\n {!this.props.hideLogo &&\n (\n !Config.config.prideTheme ?\n \n :\n \n )\n }\n\n \n \n {this.props.noticeTitle}\n \n\n {this.props.firstColumn}\n \n \n {/* Time left */}\n {this.props.timed ? ( \n this.toggleManualPause()}\n className=\"sponsorSkipObject sponsorSkipNoticeTimeLeft\">\n\n {this.getCountdownElements()}\n\n \n ) : \"\"}\n \n\n {/* Close button */}\n this.close()}>\n \n
\n
\n\n {/* Add as a hidden table to keep the height constant */}\n {this.props.smaller && this.props.bottomRow ? \n \n \n {this.props.bottomRow}\n \n
\n : null}\n
\n );\n }\n\n getCountdownElements(): React.ReactElement[] {\n return [(\n \n {chrome.i18n.getMessage(\"NoticeTimeAfterSkip\").replace(\"{seconds}\", Math.ceil(this.state.countdownTime).toString())}\n \n ),(\n {chrome.i18n.getMessage(\"paused\")}\n ),(\n {chrome.i18n.getMessage(\"manualPaused\")}\n )];\n }\n\n onMouseEnter(event: React.MouseEvent): void {\n if (this.props.onMouseEnter) this.props.onMouseEnter(event);\n\n this.fadedMouseEnter();\n this.timerMouseEnter();\n }\n\n fadedMouseEnter(): void {\n if (this.state.startFaded) {\n this.setState({\n startFaded: false\n });\n }\n }\n\n timerMouseEnter(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.pauseCountdown();\n\n this.setState({\n mouseHovering: true\n });\n }\n\n timerMouseLeave(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.startCountdown();\n\n this.setState({\n mouseHovering: false\n });\n }\n\n toggleManualPause(): void {\n this.setState({\n countdownMode: this.state.countdownMode === CountdownMode.Stopped ? CountdownMode.Timer : CountdownMode.Stopped\n }, () => {\n if (this.state.countdownMode === CountdownMode.Stopped || this.state.mouseHovering) {\n this.pauseCountdown();\n } else {\n this.startCountdown();\n }\n });\n }\n\n //called every second to lower the countdown before hiding the notice\n countdown(): void {\n if (!this.props.timed) return;\n\n const countdownTime = Math.min(this.state.countdownTime - 1, this.state.maxCountdownTime());\n\n if (countdownTime <= 0) {\n //remove this from setInterval\n clearInterval(this.countdownInterval);\n\n //time to close this notice\n this.close();\n\n return;\n }\n\n if (countdownTime == 3 && this.props.fadeOut) {\n //start fade out animation\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice?.style.removeProperty(\"animation\");\n notice?.classList.add(\"sponsorSkipNoticeFadeOut\");\n }\n\n this.setState({\n countdownTime\n })\n }\n \n removeFadeAnimation(): void {\n //remove the fade out class if it exists\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice.classList.remove(\"sponsorSkipNoticeFadeOut\");\n notice.style.animation = \"none\";\n }\n\n pauseCountdown(): void {\n if (!this.props.timed || this.props.dontPauseCountdown) return;\n\n //remove setInterval\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n this.countdownInterval = null;\n\n //reset countdown and inform the user\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: this.state.countdownMode === CountdownMode.Timer ? CountdownMode.Paused : this.state.countdownMode\n });\n \n this.removeFadeAnimation();\n }\n\n startCountdown(): void {\n if (!this.props.timed) return;\n\n //if it has already started, don't start it again\n if (this.countdownInterval !== null) return;\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.setupInterval();\n }\n\n setupInterval(): void {\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n\n this.countdownInterval = setInterval(this.countdown.bind(this), 1000);\n }\n\n resetCountdown(): void {\n if (!this.props.timed) return;\n\n this.setupInterval();\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.removeFadeAnimation();\n }\n \n /**\n * @param silent If true, the close listener will not be called\n */\n close(silent?: boolean): void {\n //remove setInterval\n if (this.countdownInterval !== null) clearInterval(this.countdownInterval);\n\n if (!silent) this.props.closeListener();\n }\n\n addNoticeInfoMessage(message: string, message2 = \"\"): void {\n //TODO: Replace\n\n const previousInfoMessage = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix);\n if (previousInfoMessage != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage);\n }\n\n const previousInfoMessage2 = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix + \"2\");\n if (previousInfoMessage2 != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage2);\n }\n \n //add info\n const thanksForVotingText = document.createElement(\"p\");\n thanksForVotingText.id = \"sponsorTimesInfoMessage\" + this.idSuffix;\n thanksForVotingText.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText.innerText = message;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n \n if (message2 !== undefined) {\n const thanksForVotingText2 = document.createElement(\"p\");\n thanksForVotingText2.id = \"sponsorTimesInfoMessage\" + this.idSuffix + \"2\";\n thanksForVotingText2.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText2.innerText = message2;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText2, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n }\n }\n\n getElement(): React.RefObject {\n return this.parentRef;\n }\n\n componentWillUnmount(): void {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n\n // For dragging around notice\n handleMouseMove(e: MouseEvent): void {\n if (this.state.mouseDownInfo && e.buttons === 1) {\n const [mouseX, mouseY] = [e.clientX, e.clientY];\n\n const deltaX = mouseX - this.state.mouseDownInfo.x;\n const deltaY = mouseY - this.state.mouseDownInfo.y;\n\n if (deltaX > 0 || deltaY > 0) this.setState({ mouseMoved: true });\n\n const element = this.parentRef.current;\n const parent = element.parentElement.parentElement;\n this.setState({\n right: Math.min(parent.clientWidth - element.clientWidth - bounds[2], Math.max(bounds[0], this.state.mouseDownInfo.right - deltaX)),\n bottom: Math.min(parent.clientHeight - element.clientHeight - bounds[3], Math.max(bounds[1], this.state.mouseDownInfo.bottom - deltaY))\n });\n } else {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n }\n}\n\nexport default NoticeComponent;\n","import * as React from \"react\";\n\nexport interface NoticeTextSelectionProps {\n icon?: string;\n text: string;\n idSuffix: string;\n onClick?: (event: React.MouseEvent) => unknown;\n children?: React.ReactNode;\n}\n\nexport interface NoticeTextSelectionState {\n\n}\n\nclass NoticeTextSelectionComponent extends React.Component {\n\n constructor(props: NoticeTextSelectionProps) {\n super(props);\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {};\n if (this.props.onClick) {\n style.cursor = \"pointer\";\n style.textDecoration = \"underline\"\n }\n\n return (\n \n \n \n {this.props.icon ? \n \n : null}\n\n \n {this.getTextElements(this.props.text)}\n \n \n \n );\n }\n\n private getTextElements(text: string): Array {\n const elements: Array = [];\n const textParts = text.split(/(?=\\s+)/);\n for (const textPart of textParts) {\n if (textPart.match(/^\\s*http/)) {\n elements.push(\n \n {textPart}\n \n );\n } else {\n elements.push(textPart);\n }\n\n }\n\n return elements;\n }\n}\n\nexport default NoticeTextSelectionComponent;","import * as React from \"react\";\n\nexport interface SelectorOption {\n label: string;\n}\n\nexport interface SelectorProps { \n id: string;\n options: SelectorOption[];\n onChange: (value: string) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport interface SelectorState {\n\n}\n\nclass SelectorComponent extends React.Component {\n\n constructor(props: SelectorProps) {\n super(props);\n\n // Setup state\n this.state = {\n \n }\n }\n\n render(): React.ReactElement {\n return (\n
0 ? \"inherit\" : \"none\"}}\n className=\"sbSelector\">\n
\n {this.getOptions()}\n
\n
\n );\n }\n\n getOptions(): React.ReactElement[] {\n const result: React.ReactElement[] = [];\n for (const option of this.props.options) {\n result.push(\n
{\n e.stopPropagation();\n this.props.onChange(option.label);\n }}\n key={option.label}>\n {option.label}\n
\n );\n }\n\n return result;\n }\n}\n\nexport default SelectorComponent;","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\"\nimport { Category, ContentContainer, SponsorTime, NoticeVisibilityMode, ActionType, SponsorSourceType, SegmentUUID } from \"../types\";\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport Utils from \"../utils\";\nconst utils = new Utils();\nimport { getSkippingText, getUpcomingText, getVoteText } from \"../utils/categoryUtils\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport PencilSvg from \"../svg-icons/pencil_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { getFormattedTime } from \"../../maze-utils/src/formating\";\nimport { getCurrentTime, getVideo } from \"../../maze-utils/src/video\";\n\nenum SkipButtonState {\n Undo, // Unskip\n Redo, // Reskip\n Start // Skip\n}\n\nexport interface SkipNoticeProps {\n segments: SponsorTime[];\n\n autoSkip: boolean;\n startReskip?: boolean;\n upcomingNotice?: boolean;\n voteNotice?: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n closeListener: () => void;\n showKeybindHint?: boolean;\n smaller: boolean;\n fadeIn: boolean;\n maxCountdownTime?: number;\n\n componentDidMount?: () => void;\n\n unskipTime?: number;\n}\n\nexport interface SkipNoticeState {\n noticeTitle?: string;\n\n messages?: string[];\n messageOnClick?: (event: React.MouseEvent) => unknown;\n\n countdownTime?: number;\n maxCountdownTime?: () => number;\n countdownText?: string;\n\n skipButtonStates?: SkipButtonState[];\n skipButtonCallbacks?: Array<(buttonIndex: number, index: number, forceSeek: boolean) => void>;\n showSkipButton?: boolean[];\n\n editing?: boolean;\n choosingCategory?: boolean;\n thanksForVotingText?: string; //null until the voting buttons should be hidden\n\n actionState?: SkipNoticeAction;\n\n showKeybindHint?: boolean;\n\n smaller?: boolean;\n\n voted?: SkipNoticeAction[];\n copied?: SkipNoticeAction[];\n\n}\n\nclass SkipNoticeComponent extends React.Component {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n amountOfPreviousNotices: number;\n showInSecondSlot: boolean;\n\n idSuffix: string;\n\n noticeRef: React.MutableRefObject;\n categoryOptionRef: React.RefObject;\n\n selectedColor: string;\n unselectedColor: string;\n lockedColor: string;\n\n // Used to update on config change\n configListener: () => void;\n\n constructor(props: SkipNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n this.categoryOptionRef = React.createRef();\n\n this.segments = props.segments;\n this.autoSkip = props.autoSkip;\n this.contentContainer = props.contentContainer;\n\n const noticeTitle = this.props.voteNotice ? getVoteText(this.segments) : !this.props.upcomingNotice ? getSkippingText(this.segments, this.props.autoSkip) : getUpcomingText(this.segments);\n\n const previousSkipNotices = document.querySelectorAll(\".sponsorSkipNoticeParent:not(.sponsorSkipUpcomingNotice)\");\n this.amountOfPreviousNotices = previousSkipNotices.length;\n // If there is at least one already in the first slot\n this.showInSecondSlot = previousSkipNotices.length > 0 && [...previousSkipNotices].some(notice => !notice.classList.contains(\"secondSkipNotice\"));\n\n // Sort segments\n if (this.segments.length > 1) {\n this.segments.sort((a, b) => a.segment[0] - b.segment[0]);\n }\n\n // This is the suffix added at the end of every id\n for (const segment of this.segments) {\n this.idSuffix += segment.UUID;\n }\n this.idSuffix += this.amountOfPreviousNotices;\n\n this.selectedColor = Config.config.colorPalette.red;\n this.unselectedColor = Config.config.colorPalette.white;\n this.lockedColor = Config.config.colorPalette.locked;\n\n const isMuteSegment = this.segments[0].actionType === ActionType.Mute;\n const maxCountdownTime = props.maxCountdownTime ? () => props.maxCountdownTime : (isMuteSegment ? this.getFullDurationCountdown(0) : () => Config.config.skipNoticeDuration);\n\n const defaultSkipButtonState = this.props.startReskip ? SkipButtonState.Redo : SkipButtonState.Undo;\n const skipButtonStates = [defaultSkipButtonState, isMuteSegment ? SkipButtonState.Start : defaultSkipButtonState];\n\n const defaultSkipButtonCallback = this.props.startReskip ? this.reskip.bind(this) : this.unskip.bind(this);\n const skipButtonCallbacks = [defaultSkipButtonCallback, isMuteSegment ? this.reskip.bind(this) : defaultSkipButtonCallback];\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n messageOnClick: null,\n\n //the countdown until this notice closes\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n countdownText: null,\n\n skipButtonStates,\n skipButtonCallbacks,\n showSkipButton: [true, true],\n\n editing: false,\n choosingCategory: false,\n thanksForVotingText: null,\n\n actionState: SkipNoticeAction.None,\n\n showKeybindHint: this.props.showKeybindHint ?? true,\n\n smaller: this.props.smaller ?? false,\n\n // Keep track of what segment the user interacted with.\n voted: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n copied: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n }\n\n if (!this.autoSkip) {\n // Assume manual skip is only skipping 1 submission\n Object.assign(this.state, this.getUnskippedModeInfo(null, 0, SkipButtonState.Start));\n }\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = { }\n if (this.contentContainer().onMobileYouTube) {\n noticeStyle.bottom = \"4em\";\n noticeStyle.transform = \"scale(0.8) translate(10%, 10%)\";\n }\n\n const firstColumn = this.getSkipButton(0);\n\n return (\n = NoticeVisibilityMode.FadedForAll\n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.FadedForAutoSkip && this.autoSkip)}\n timed={true}\n maxCountdownTime={this.state.maxCountdownTime}\n style={noticeStyle}\n biggerCloseButton={this.contentContainer().onMobileYouTube}\n ref={this.noticeRef}\n closeListener={() => this.closeListener()}\n smaller={this.state.smaller}\n logoFill={Config.config.barTypes[this.segments[0].category].color}\n limitWidth={true}\n firstColumn={firstColumn}\n dontPauseCountdown={!!this.props.upcomingNotice}\n bottomRow={[...this.getMessageBoxes(), ...this.getBottomRow() ]}\n extraClass={this.props.upcomingNotice ? \"sponsorSkipUpcomingNotice\" : \"\"}\n onMouseEnter={() => this.onMouseEnter() } >\n \n );\n }\n\n componentDidMount(): void {\n if (this.props.componentDidMount) {\n this.props.componentDidMount();\n }\n }\n\n getBottomRow(): JSX.Element[] {\n return [\n /* Bottom Row */\n (\n\n {/* Vote Button Container */}\n {!this.state.thanksForVotingText ?\n \n\n {/* Upvote Button */}\n
this.prepAction(SkipNoticeAction.Upvote)}>\n \n
\n\n {/* Report Button */}\n
this.prepAction(SkipNoticeAction.Downvote)}>\n \n
\n\n {/* Copy and Downvote Button */}\n {\n !this.props.voteNotice &&\n
this.openEditingOptions()}>\n \n
\n }\n \n\n :\n\n \n\n {/* Submitted string */}\n \n {this.state.thanksForVotingText}\n \n\n {/* Continue Voting Button */}\n \n \n }\n\n {/* Unskip/Skip Button */}\n {!this.props.voteNotice && (!this.props.smaller || this.segments[0].actionType === ActionType.Mute)\n ? this.getSkipButton(1) : null}\n\n {/* Never show button */}\n {!this.autoSkip || this.props.startReskip || this.props.voteNotice ? \"\" :\n \n \n \n }\n ),\n\n /* Edit Segments Row */\n (this.state.editing && !this.state.thanksForVotingText && !(this.state.choosingCategory || this.state.actionState === SkipNoticeAction.CopyDownvote) &&\n \n \n\n {/* Copy Segment */}\n \n\n {/* Category vote */}\n \n \n \n ),\n\n /* Category Chooser Row */\n (this.state.choosingCategory && !this.state.thanksForVotingText &&\n \n \n {/* Category Selector */}\n \n\n {/* Submit Button */}\n {this.segments.length === 1 &&\n \n }\n \n \n ),\n\n /* Segment Chooser Row */\n (this.state.actionState !== SkipNoticeAction.None && this.segments.length > 1 && !this.state.thanksForVotingText &&\n \n \n {this.getSubmissionChooser()}\n \n \n )\n ];\n }\n\n getSkipButton(buttonIndex: number): JSX.Element {\n if (this.state.showSkipButton[buttonIndex] && (this.segments.length > 1\n || this.segments[0].actionType !== ActionType.Poi\n || this.props.unskipTime)) {\n\n const forceSeek = buttonIndex === 1 && this.segments[0].actionType === ActionType.Mute;\n\n const style: React.CSSProperties = {\n marginLeft: \"4px\",\n color: ([SkipNoticeAction.Unskip0, SkipNoticeAction.Unskip1].includes(this.state.actionState))\n ? this.selectedColor : this.unselectedColor\n };\n if (this.contentContainer().onMobileYouTube) {\n style.padding = \"20px\";\n style.minWidth = \"100px\";\n }\n\n const showSkipButton = (buttonIndex !== 0 || this.props.smaller || !this.props.voteNotice || this.segments[0].actionType === ActionType.Mute) && !this.props.upcomingNotice;\n\n return (\n \n \n \n );\n }\n return null;\n }\n\n getSubmissionChooser(): JSX.Element[] {\n const elements: JSX.Element[] = [];\n for (let i = 0; i < this.segments.length; i++) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getSubmissionChooserOpacity(index: number): number {\n const isUpvote = this.state.actionState === SkipNoticeAction.Upvote;\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldBeGray: boolean = (isUpvote && this.state.voted[index] == SkipNoticeAction.Upvote) ||\n (isDownvote && this.state.voted[index] == SkipNoticeAction.Downvote) ||\n (isCopyDownvote && this.state.copied[index] == SkipNoticeAction.CopyDownvote);\n\n return shouldBeGray ? 0.35 : 1;\n }\n\n getSubmissionChooserColor(index: number): string {\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldWarnUser = Config.config.isVip && (isDownvote || isCopyDownvote)\n && this.segments[index].locked === 1;\n\n return shouldWarnUser ? this.lockedColor : this.unselectedColor;\n }\n\n onMouseEnter(): void {\n if (this.state.smaller && !this.props.upcomingNotice) {\n this.setState({\n smaller: false\n });\n }\n }\n\n getMessageBoxes(): JSX.Element[] {\n if (this.state.messages.length === 0) {\n // Add a spacer if there is no text\n return [\n \n \n ];\n }\n\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n \n \n \n \n )\n }\n\n return elements;\n }\n\n prepAction(action: SkipNoticeAction): void {\n if (this.segments.length === 1) {\n this.performAction(0, action);\n } else {\n if (this.state.smaller) {\n this.setState({\n smaller: false\n });\n\n this.noticeRef.current.fadedMouseEnter();\n this.noticeRef.current.resetCountdown();\n }\n\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.resetStateToStart();\n break;\n case SkipNoticeAction.Upvote:\n this.resetStateToStart(SkipNoticeAction.Upvote);\n break;\n case SkipNoticeAction.Downvote:\n this.resetStateToStart(SkipNoticeAction.Downvote);\n break;\n case SkipNoticeAction.CategoryVote:\n this.resetStateToStart(SkipNoticeAction.CategoryVote, true, true);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.resetStateToStart(SkipNoticeAction.CopyDownvote, true);\n break;\n case SkipNoticeAction.Unskip0:\n this.resetStateToStart(SkipNoticeAction.Unskip0);\n break;\n case SkipNoticeAction.Unskip1:\n this.resetStateToStart(SkipNoticeAction.Unskip1);\n break;\n }\n }\n }\n\n /**\n * Performs the action from the current state\n *\n * @param index\n */\n performAction(index: number, action?: SkipNoticeAction): void {\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.noAction(index);\n break;\n case SkipNoticeAction.Upvote:\n this.upvote(index);\n break;\n case SkipNoticeAction.Downvote:\n this.downvote(index);\n break;\n case SkipNoticeAction.CategoryVote:\n this.categoryVote(index);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.copyDownvote(index);\n break;\n case SkipNoticeAction.Unskip0:\n this.unskipAction(0, index, false);\n break;\n case SkipNoticeAction.Unskip1:\n this.unskipAction(1, index, true);\n break;\n default:\n this.resetStateToStart();\n break;\n }\n }\n\n noAction(index: number): void {\n const voted = this.state.voted;\n voted[index] = SkipNoticeAction.None;\n\n this.setState({\n voted\n });\n }\n\n upvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n this.contentContainer().vote(1, this.segments[index].UUID, undefined, this);\n }\n\n downvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n }\n\n categoryVote(index: number): void {\n this.contentContainer().vote(undefined, this.segments[index].UUID, this.categoryOptionRef.current.value as Category, this)\n }\n\n copyDownvote(index: number): void {\n const sponsorVideoID = this.props.contentContainer().sponsorVideoID;\n const sponsorTimesSubmitting : SponsorTime = {\n segment: this.segments[index].segment,\n UUID: generateUserID() as SegmentUUID,\n category: this.segments[index].category,\n actionType: this.segments[index].actionType,\n source: SponsorSourceType.Local\n };\n\n const segmentTimes = Config.local.unsubmittedSegments[sponsorVideoID] || [];\n segmentTimes.push(sponsorTimesSubmitting);\n Config.local.unsubmittedSegments[sponsorVideoID] = segmentTimes;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().sponsorTimesSubmitting.push(sponsorTimesSubmitting);\n this.props.contentContainer().updatePreviewBar();\n this.props.contentContainer().resetSponsorSubmissionNotice();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n\n const copied = this.state.copied;\n copied[index] = SkipNoticeAction.CopyDownvote;\n\n this.setState({\n copied\n });\n }\n\n unskipAction(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.state.skipButtonCallbacks[buttonIndex](buttonIndex, index, forceSeek);\n }\n\n openEditingOptions(): void {\n this.resetStateToStart(undefined, true);\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [];\n\n const categories = (CompileConfig.categoryList.filter((cat => CompileConfig.categorySupport[cat].includes(ActionType.Skip)))) as Category[];\n for (const category of categories) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getCategoryNameClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\"\n }\n\n unskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().unskipSponsorTime(this.segments[index], this.props.unskipTime, forceSeek, this.props.voteNotice);\n\n this.unskippedMode(buttonIndex, index, this.segments[0].actionType === ActionType.Poi ? SkipButtonState.Undo : SkipButtonState.Redo);\n }\n\n reskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().reskipSponsorTime(this.segments[index], forceSeek);\n this.reskippedMode(buttonIndex);\n }\n\n reskippedMode(buttonIndex: number): void {\n const skipButtonStates = this.state.skipButtonStates;\n skipButtonStates[buttonIndex] = SkipButtonState.Undo;\n\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n skipButtonCallbacks[buttonIndex] = this.unskip.bind(this);\n\n const newState: SkipNoticeState = {\n skipButtonStates,\n skipButtonCallbacks,\n\n maxCountdownTime: () => Config.config.skipNoticeDuration,\n countdownTime: Config.config.skipNoticeDuration\n };\n\n //reset countdown\n this.setState(newState, () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n /** Sets up notice to be not skipped yet */\n unskippedMode(buttonIndex: number, index: number, skipButtonState: SkipButtonState): void {\n //setup new callback and reset countdown\n this.setState(this.getUnskippedModeInfo(buttonIndex, index, skipButtonState), () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n getUnskippedModeInfo(buttonIndex: number, index: number, skipButtonState: SkipButtonState): SkipNoticeState {\n const changeCountdown = !this.props.voteNotice && this.segments[index].actionType !== ActionType.Poi;\n\n const maxCountdownTime = changeCountdown ?\n this.getFullDurationCountdown(index) : this.state.maxCountdownTime;\n\n const skipButtonStates = this.state.skipButtonStates;\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n if (buttonIndex === null) {\n for (let i = 0; i < skipButtonStates.length; i++) {\n skipButtonStates[i] = skipButtonState;\n skipButtonCallbacks[i] = this.reskip.bind(this);\n }\n } else {\n skipButtonStates[buttonIndex] = skipButtonState;\n skipButtonCallbacks[buttonIndex] = this.reskip.bind(this);\n\n if (buttonIndex === 1) {\n // Trigger both to move at once\n skipButtonStates[0] = SkipButtonState.Redo;\n skipButtonCallbacks[0] = this.reskip.bind(this);\n }\n }\n\n return {\n skipButtonStates,\n skipButtonCallbacks,\n // change max duration to however much of the sponsor is left\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n showSkipButton: buttonIndex === 1 ? [true, true] : this.state.showSkipButton\n } as SkipNoticeState;\n }\n\n getFullDurationCountdown(index: number): () => number {\n return () => {\n const sponsorTime = this.segments[index];\n const duration = Math.round((sponsorTime.segment[1] - (getCurrentTime() ?? 0)) * (1 / (getVideo()?.playbackRate ?? 1)));\n\n return Math.max(duration, Config.config.skipNoticeDuration);\n };\n }\n\n afterVote(segment: SponsorTime, type: number, category: Category): void {\n const index = utils.getSponsorIndexFromUUID(this.segments, segment.UUID);\n const wikiLinkText = CompileConfig.wikiLinks[segment.category];\n\n const voted = this.state.voted;\n switch (type) {\n case 0:\n this.clearConfigListener();\n this.setNoticeInfoMessageWithOnClick(() => window.open(wikiLinkText), chrome.i18n.getMessage(\"OpenCategoryWikiPage\"));\n\n voted[index] = SkipNoticeAction.Downvote;\n break;\n case 1:\n voted[index] = SkipNoticeAction.Upvote;\n break;\n case 20:\n voted[index] = SkipNoticeAction.None;\n break;\n }\n\n this.setState({\n voted\n });\n\n this.addVoteButtonInfo(chrome.i18n.getMessage(\"voted\"));\n\n if (segment && category) {\n // This is the segment inside the skip notice\n this.segments[index].category = category;\n }\n }\n\n setNoticeInfoMessageWithOnClick(onClick: (event: React.MouseEvent) => unknown, ...messages: string[]): void {\n this.setState({\n messages,\n messageOnClick: (event) => onClick(event)\n });\n }\n\n setNoticeInfoMessage(...messages: string[]): void {\n this.setState({\n messages\n });\n }\n\n addVoteButtonInfo(message: string): void {\n this.setState({\n thanksForVotingText: message\n });\n }\n\n resetVoteButtonInfo(): void {\n this.setState({\n thanksForVotingText: null\n });\n }\n\n closeListener(): void {\n this.clearConfigListener();\n\n this.props.closeListener();\n }\n\n clearConfigListener(): void {\n if (this.configListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configListener), 1);\n this.configListener = null;\n }\n }\n\n unmutedListener(time: number): void {\n if (this.props.segments.length === 1\n && this.props.segments[0].actionType === ActionType.Mute\n && time >= this.props.segments[0].segment[1]) {\n this.setState({\n showSkipButton: [false, true]\n });\n }\n }\n\n resetStateToStart(actionState: SkipNoticeAction = SkipNoticeAction.None, editing = false, choosingCategory = false): void {\n this.setState({\n actionState: actionState,\n editing: editing,\n choosingCategory: choosingCategory,\n thanksForVotingText: null,\n messages: []\n });\n }\n\n private getSkipButtonText(buttonIndex: number, forceType?: ActionType): string {\n switch (this.state.skipButtonStates[buttonIndex]) {\n case SkipButtonState.Undo:\n return this.getUndoText(forceType);\n case SkipButtonState.Redo:\n return this.getRedoText(forceType);\n case SkipButtonState.Start:\n return this.getStartText(forceType);\n }\n }\n\n private getUndoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"unmute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"unskip\");\n }\n }\n }\n\n private getRedoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"reskip\");\n }\n }\n }\n\n private getStartText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"skip\");\n }\n }\n }\n}\n\nexport default SkipNoticeComponent;\n","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\";\nimport { ActionType, Category, ChannelIDStatus, ContentContainer, SponsorHideType, SponsorTime } from \"../types\";\nimport SubmissionNoticeComponent from \"./SubmissionNoticeComponent\";\nimport { RectangleTooltip } from \"../render/RectangleTooltip\";\nimport SelectorComponent, { SelectorOption } from \"./SelectorComponent\";\nimport { DEFAULT_CATEGORY } from \"../utils/categoryUtils\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport { defaultPreviewTime } from \"../utils/constants\";\nimport { getVideo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface SponsorTimeEditProps {\n index: number;\n\n idSuffix: string;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n submissionNotice: SubmissionNoticeComponent;\n categoryList?: Category[];\n categoryChangeListener?: (index: number, category: Category) => void;\n children?: React.ReactNode;\n}\n\nexport interface SponsorTimeEditState {\n editing: boolean;\n sponsorTimeEdits: [string, string];\n selectedCategory: Category;\n selectedActionType: ActionType;\n description: string;\n suggestedNames: SelectorOption[];\n chapterNameSelectorOpen: boolean;\n chapterNameSelectorHovering: boolean;\n}\n\nconst categoryNamesGrams: string[] = [].concat(...CompileConfig.categoryList.filter((name) => ![\"chapter\", \"intro\"].includes(name))\n .map((name) => chrome.i18n.getMessage(\"category_\" + name).split(/\\/|\\s|-/)));\n\nclass SponsorTimeEditComponent extends React.Component {\n\n idSuffix: string;\n\n categoryOptionRef: React.RefObject;\n actionTypeOptionRef: React.RefObject;\n descriptionOptionRef: React.RefObject;\n\n configUpdateListener: () => void;\n\n previousSkipType: ActionType;\n // Used when selecting POI or Full\n timesBeforeChanging: number[] = [];\n fullVideoWarningShown = false;\n categoryNameWarningShown = false;\n\n // For description auto-complete\n fetchingSuggestions: boolean;\n\n constructor(props: SponsorTimeEditProps) {\n super(props);\n\n this.categoryOptionRef = React.createRef();\n this.actionTypeOptionRef = React.createRef();\n this.descriptionOptionRef = React.createRef();\n\n this.idSuffix = this.props.idSuffix;\n this.previousSkipType = ActionType.Skip;\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.state = {\n editing: false,\n sponsorTimeEdits: [null, null],\n selectedCategory: sponsorTime.category ?? DEFAULT_CATEGORY as Category,\n selectedActionType: sponsorTime.actionType,\n description: sponsorTime.description || \"\",\n suggestedNames: [],\n chapterNameSelectorOpen: false,\n chapterNameSelectorHovering: false\n };\n }\n\n componentDidMount(): void {\n // Prevent inputs from triggering key events\n document.getElementById(\"sponsorTimeEditContainer\" + this.idSuffix).addEventListener('keydown', (e) => {\n e.stopPropagation();\n });\n\n // Prevent scrolling while changing times\n document.getElementById(\"sponsorTimesContainer\" + this.idSuffix).addEventListener('wheel', (e) => {\n if (this.state.editing) {\n e.preventDefault();\n }\n }, {passive: false});\n\n // Add as a config listener\n if (!this.configUpdateListener) {\n this.configUpdateListener = () => this.configUpdate();\n Config.configSyncListeners.push(this.configUpdate.bind(this));\n }\n\n this.checkToShowFullVideoWarning();\n }\n\n componentWillUnmount(): void {\n if (this.configUpdateListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configUpdate.bind(this)), 1);\n }\n }\n\n render(): React.ReactElement {\n this.checkToShowFullVideoWarning();\n this.checkToShowChapterWarning();\n\n const style: React.CSSProperties = {\n textAlign: \"center\"\n };\n\n if (this.props.index != 0) {\n style.marginTop = \"15px\";\n }\n\n const borderColor = this.state.selectedCategory ? Config.config.barTypes[this.state.selectedCategory]?.color : null;\n\n // Create time display\n let timeDisplay: JSX.Element;\n const timeDisplayStyle: React.CSSProperties = {};\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segment = sponsorTime.segment;\n if (this.state.selectedActionType === ActionType.Full) timeDisplayStyle.display = \"none\";\n if (this.state.editing) {\n timeDisplay = (\n
\n\n {this.state.selectedActionType !== ActionType.Poi ? (\n this.setTimeTo(0, 0)}>\n {chrome.i18n.getMessage(\"bracketStart\")}\n \n ): \"\"}\n\n this.setTimeToNow(0)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(0, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(0, e, sponsorTime)}>\n \n\n {this.state.selectedActionType !== ActionType.Poi ? (\n \n \n {\" \" + chrome.i18n.getMessage(\"to\") + \" \"}\n \n\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(1, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(1, e, sponsorTime)}>\n \n\n this.setTimeToNow(1)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n\n this.setTimeToEnd()}>\n {chrome.i18n.getMessage(\"bracketEnd\")}\n \n \n ): \"\"}\n
\n );\n } else {\n timeDisplay = (\n \n
\n {getFormattedTime(segment[0], true) +\n ((!isNaN(segment[1]) && this.state.selectedActionType !== ActionType.Poi)\n ? \" \" + chrome.i18n.getMessage(\"to\") + \" \" + getFormattedTime(segment[1], true) : \"\")}\n
\n );\n }\n\n return (\n
\n \n {timeDisplay}\n\n {/* Category */}\n
\n \n\n {/* open in new tab */}\n \n \n \n
\n\n {/* Action Type */}\n {CompileConfig.categorySupport[sponsorTime.category] && \n (CompileConfig.categorySupport[sponsorTime.category]?.length > 1 \n || CompileConfig.categorySupport[sponsorTime.category]?.[0] === ActionType.Full) ? (\n
\n \n {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.4);\n stopAnimation();\n \n if (sponsorTime.hidden === SponsorHideType.Hidden) {\n sponsorTime.hidden = SponsorHideType.Visible;\n } else {\n sponsorTime.hidden = SponsorHideType.Hidden;\n }\n\n this.saveEditTimes();\n }}/>\n
\n ): \"\"}\n\n {/* Chapter Name */}\n {this.state.selectedActionType=== ActionType.Chapter ? (\n
this.setState({chapterNameSelectorOpen: false})}>\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onContextMenu={(e) => e.stopPropagation()}\n onChange={(e) => this.descriptionUpdate(e.target.value)}\n onFocus={() => this.setState({chapterNameSelectorOpen: true})}>\n \n {this.state.description \n && (this.state.chapterNameSelectorOpen || this.state.chapterNameSelectorHovering) &&\n this.setState({chapterNameSelectorHovering: true})}\n onMouseLeave={() => this.setState({chapterNameSelectorHovering: false})}\n onChange={(v) => this.descriptionUpdate(v)}\n />\n }\n
\n ): \"\"}\n\n {/* Editing Tools */}\n\n
\n \n {chrome.i18n.getMessage(\"delete\")}\n \n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) \n && this.state.selectedActionType !== ActionType.Chapter ? (\n this.previewTime(e.ctrlKey, e.shiftKey)}>\n {chrome.i18n.getMessage(\"preview\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {chrome.i18n.getMessage(\"inspect\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) ? (\n this.previewTime(e.ctrlKey, e.shiftKey, true)}>\n {chrome.i18n.getMessage(\"End\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {this.state.editing ? chrome.i18n.getMessage(\"save\") : chrome.i18n.getMessage(\"edit\")}\n \n ): \"\"}\n
\n\n
\n );\n }\n\n handleOnChange(index: number, e: React.ChangeEvent, sponsorTime: SponsorTime, targetValue: string): void {\n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n \n // check if change is small engough to show tooltip\n const before = getFormattedTimeToSeconds(sponsorTimeEdits[index]);\n const after = getFormattedTimeToSeconds(targetValue);\n const difference = Math.abs(before - after);\n if (0 < difference && difference < 0.5) this.showScrollToEditToolTip();\n\n sponsorTimeEdits[index] = targetValue;\n if (index === 0 && sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = targetValue;\n\n this.setState({sponsorTimeEdits}, () => this.saveEditTimes());\n }\n\n changeTimesWhenScrolling(index: number, e: React.WheelEvent, sponsorTime: SponsorTime): void {\n if (!Config.config.allowScrollingToEdit) return;\n let step = 0;\n // shift + ctrl = 1\n // ctrl = 0.1\n // default = 0.01\n // shift = 0.001\n if (e.shiftKey) {\n step = (e.ctrlKey) ? 1 : 0.001;\n } else {\n step = (e.ctrlKey) ? 0.1 : 0.01;\n }\n \n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n let timeAsNumber = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[index]);\n if (timeAsNumber !== null && e.deltaY != 0) {\n if (e.deltaY < 0) {\n timeAsNumber += step;\n } else if (timeAsNumber >= step) {\n timeAsNumber -= step;\n } else {\n timeAsNumber = 0;\n }\n \n sponsorTimeEdits[index] = getFormattedTime(timeAsNumber, true);\n if (sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = sponsorTimeEdits[0];\n\n this.setState({sponsorTimeEdits});\n this.saveEditTimes();\n }\n }\n\n showScrollToEditToolTip(): void {\n if (!Config.config.scrollToEditTimeUpdate && document.getElementById(\"sponsorRectangleTooltip\" + \"sponsorTimesContainer\" + this.idSuffix) === null) {\n this.showToolTip(chrome.i18n.getMessage(\"SponsorTimeEditScrollNewFeature\"), \"scrollToEdit\", () => { Config.config.scrollToEditTimeUpdate = true });\n }\n }\n\n showToolTip(text: string, id: string, buttonFunction?: () => void): boolean {\n const element = document.getElementById(\"sponsorTimesContainer\" + this.idSuffix);\n if (element) {\n const htmlId = `sponsorRectangleTooltip${id + this.idSuffix}`;\n if (!document.getElementById(htmlId)) {\n new RectangleTooltip({\n text,\n referenceNode: element.parentElement,\n prependElement: element,\n timeout: 15,\n bottomOffset: 0 + \"px\",\n leftOffset: -318 + \"px\",\n backgroundColor: \"rgba(28, 28, 28, 1.0)\",\n htmlId,\n buttonFunction,\n fontSize: \"14px\",\n maxHeight: \"200px\"\n });\n }\n\n return true;\n } else {\n return false;\n }\n }\n\n checkToShowFullVideoWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segmentDuration = sponsorTime.segment[1] - sponsorTime.segment[0];\n const videoPercentage = segmentDuration / getVideoDuration();\n\n if (videoPercentage > 0.6 && !this.fullVideoWarningShown \n && (sponsorTime.category === \"sponsor\" || sponsorTime.category === \"selfpromo\" || sponsorTime.category === \"chooseACategory\")) {\n if (this.showToolTip(chrome.i18n.getMessage(\"fullVideoTooltipWarning\"), \"fullVideoWarning\")) {\n this.fullVideoWarningShown = true;\n }\n }\n }\n\n checkToShowChapterWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n if (sponsorTime.actionType === ActionType.Chapter && sponsorTime.description\n && !this.categoryNameWarningShown\n && categoryNamesGrams.some(\n (category) => sponsorTime.description.toLowerCase().includes(category.toLowerCase()))) {\n if (this.showToolTip(chrome.i18n.getMessage(\"chapterNameTooltipWarning\"), \"chapterWarning\")) {\n this.categoryNameWarningShown = true;\n }\n }\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [(\n \n )];\n\n for (const category of (this.props.categoryList ?? CompileConfig.categoryList)) {\n // If permission not loaded, treat it like we have permission except chapter\n const defaultBlockCategories = [\"chapter\"];\n const permission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[category as Category]);\n if ((defaultBlockCategories.includes(category) \n || (permission !== undefined && !Config.config.showCategoryWithoutPermission)) && !permission) continue;\n\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n getCategoryLockedClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\";\n }\n\n categorySelectionChange(event: React.ChangeEvent): void {\n const chosenCategory = event.target.value as Category;\n this.setState({\n selectedCategory: chosenCategory\n });\n\n // See if show more categories was pressed\n if (chosenCategory !== DEFAULT_CATEGORY && !Config.config.categorySelections.some((category) => category.name === chosenCategory)) {\n event.target.value = DEFAULT_CATEGORY;\n \n // Alert that they have to enable this category first\n if (confirm(chrome.i18n.getMessage(\"enableThisCategoryFirst\")\n .replace(\"{0}\", chrome.i18n.getMessage(\"category_\" + chosenCategory)))) {\n // Open options page\n chrome.runtime.sendMessage({message: \"openConfig\", hash: \"behavior\"});\n }\n \n return;\n }\n\n // Hook update\n if (!Config.config.hookUpdate && chosenCategory === \"preview\") {\n Config.config.hookUpdate = true;\n\n const target = event.target.closest(\".sponsorSkipNotice tbody\");\n if (target) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"hookNewFeature\"),\n referenceNode: target.parentElement,\n prependElement: target as HTMLElement,\n bottomOffset: \"30px\",\n opacity: 0.9,\n timeout: 100\n });\n }\n }\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.handleReplacingLostTimes(chosenCategory, sponsorTime.actionType, sponsorTime);\n this.saveEditTimes();\n\n if (this.props.categoryChangeListener) {\n this.props.categoryChangeListener(this.props.index, chosenCategory);\n }\n }\n\n actionTypeSelectionChange(event: React.ChangeEvent): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n selectedActionType: event.target.value as ActionType\n });\n\n this.handleReplacingLostTimes(sponsorTime.category, event.target.value as ActionType, sponsorTime);\n this.saveEditTimes();\n }\n\n private handleReplacingLostTimes(category: Category, actionType: ActionType, segment: SponsorTime): void {\n if (CompileConfig.categorySupport[category]?.includes(ActionType.Poi)) {\n if (this.previousSkipType !== ActionType.Poi) {\n this.timesBeforeChanging = [null, segment.segment[1]];\n }\n\n this.setTimeTo(1, null);\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n if (this.props.contentContainer().sponsorTimesSubmitting\n .some((segment, i) => segment.category === category && i !== this.props.index)) {\n alert(chrome.i18n.getMessage(\"poiOnlyOneSegment\"));\n }\n\n this.previousSkipType = ActionType.Poi;\n } else if (CompileConfig.categorySupport[category]?.length === 1 \n && CompileConfig.categorySupport[category]?.[0] === ActionType.Full) {\n if (this.previousSkipType !== ActionType.Full) {\n this.timesBeforeChanging = [...segment.segment];\n }\n\n this.previousSkipType = ActionType.Full;\n } else if ((category === \"chooseACategory\" || ((CompileConfig.categorySupport[category]?.includes(ActionType.Skip)\n || CompileConfig.categorySupport[category]?.includes(ActionType.Chapter))\n && ![ActionType.Poi, ActionType.Full].includes(this.getNextActionType(category, actionType))))\n && this.previousSkipType !== ActionType.Skip) {\n if (this.timesBeforeChanging[0]) {\n this.setTimeTo(0, this.timesBeforeChanging[0]);\n }\n if (this.timesBeforeChanging[1]) {\n this.setTimeTo(1, this.timesBeforeChanging[1]);\n }\n\n this.previousSkipType = ActionType.Skip;\n }\n }\n\n getActionTypeOptions(sponsorTime: SponsorTime): React.ReactElement[] {\n const elements = [];\n\n for (const actionType of CompileConfig.categorySupport[sponsorTime.category]) {\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n setTimeToNow(index: number): void {\n this.setTimeTo(index, this.props.contentContainer().getRealCurrentTime());\n }\n\n setTimeToEnd(): void {\n this.setTimeTo(1, getVideoDuration());\n }\n\n /**\n * @param index \n * @param time If null, will set time to the first index's time\n */\n setTimeTo(index: number, time: number): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n if (time === null) time = sponsorTime.segment[0];\n\n const addedTime = sponsorTime.segment.length === 1;\n sponsorTime.segment[index] = time;\n if (sponsorTime.actionType === ActionType.Poi) sponsorTime.segment[1] = time;\n\n if (addedTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n this.setState({\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n }, () => this.saveEditTimes());\n }\n\n toggleEditTime(): void {\n if (this.state.editing) {\n \n this.setState({\n editing: false\n });\n\n this.saveEditTimes(); \n } else {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n editing: true,\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n });\n }\n }\n\n /** Returns an array in the sponsorTimeEdits form (formatted time string) from a normal seconds sponsor time */\n getFormattedSponsorTimesEdits(sponsorTime: SponsorTime): [string, string] {\n return [getFormattedTime(sponsorTime.segment[0], true),\n getFormattedTime(sponsorTime.segment[1], true)];\n }\n\n lastEditTime = 0;\n editTimeTimeout: NodeJS.Timeout | null = null;\n saveEditTimes(): void {\n // Rate limit edits\n const timeSinceLastEdit = Date.now() - this.lastEditTime;\n const rateLimitTime = 200;\n if (timeSinceLastEdit < rateLimitTime) {\n if (!this.editTimeTimeout) {\n this.editTimeTimeout = setTimeout(() => {\n this.saveEditTimes();\n }, rateLimitTime - timeSinceLastEdit)\n }\n\n return;\n }\n\n this.lastEditTime = Date.now();\n this.editTimeTimeout = null;\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n const category = this.categoryOptionRef.current.value as Category\n\n if (this.state.editing) {\n const startTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[0]);\n const endTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[1]);\n\n // Change segment time only if the format was correct\n if (startTime !== null && endTime !== null) {\n const addingTime = sponsorTimesSubmitting[this.props.index].segment.length === 1;\n sponsorTimesSubmitting[this.props.index].segment = [startTime, endTime];\n\n if (addingTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n } else if (startTime !== null) {\n // Only start time is valid, still an incomplete segment\n sponsorTimesSubmitting[this.props.index].segment[0] = startTime;\n }\n } else if (this.state.sponsorTimeEdits[1] === null && category === \"outro\" && !sponsorTimesSubmitting[this.props.index].segment[1]) {\n sponsorTimesSubmitting[this.props.index].segment[1] = getVideoDuration();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n sponsorTimesSubmitting[this.props.index].category = category;\n\n const actionType = this.getNextActionType(category, this.actionTypeOptionRef?.current?.value as ActionType);\n sponsorTimesSubmitting[this.props.index].actionType = actionType;\n this.setState({\n selectedActionType: actionType\n });\n\n const description = actionType === ActionType.Chapter ? this.descriptionOptionRef?.current?.value : \"\";\n sponsorTimesSubmitting[this.props.index].description = description;\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n\n if (sponsorTimesSubmitting[this.props.index].actionType === ActionType.Full \n && (sponsorTimesSubmitting[this.props.index].segment[0] !== 0 || sponsorTimesSubmitting[this.props.index].segment[1] !== 0)) {\n this.setTimeTo(0, 0);\n this.setTimeTo(1, 0);\n }\n }\n\n private getNextActionType(category: Category, actionType: ActionType): ActionType {\n return actionType && CompileConfig.categorySupport[category]?.includes(actionType) ? actionType\n : CompileConfig.categorySupport[category]?.[0] ?? ActionType.Skip\n }\n\n previewTime(ctrlPressed = false, shiftPressed = false, skipToEndTime = false): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n let seekTime = defaultPreviewTime;\n if (ctrlPressed) seekTime = 0.5;\n if (shiftPressed) seekTime = 0.25;\n\n const startTime = sponsorTimes[index].segment[0];\n const endTime = sponsorTimes[index].segment[1];\n\n // If segment starts at 0:00, start playback at the end of the segment\n const skipTime = (startTime === 0 || skipToEndTime) ? endTime : (startTime - (seekTime * getVideo().playbackRate));\n\n this.props.contentContainer().previewTime(skipTime, !skipToEndTime);\n }\n\n inspectTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n\n const skipTime = sponsorTimes[index].segment[0];\n\n this.props.contentContainer().previewTime(skipTime + 0.0001, false);\n }\n\n deleteTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n const removingIncomplete = sponsorTimes[index].segment.length < 2;\n\n sponsorTimes.splice(index, 1);\n \n //save this\n if (sponsorTimes.length > 0) {\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimes;\n } else {\n delete Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n \n //if they are all removed\n if (sponsorTimes.length == 0) {\n this.props.submissionNotice.cancel();\n } else {\n //update display\n this.props.submissionNotice.forceUpdate();\n }\n\n //if it is not a complete segment, or all are removed\n if (sponsorTimes.length === 0 || removingIncomplete) {\n //update video player\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n }\n\n descriptionUpdate(description: string): void {\n this.setState({\n description\n }, () => {\n this.saveEditTimes();\n });\n\n if (!this.fetchingSuggestions) {\n this.fetchSuggestions(description);\n }\n }\n\n async fetchSuggestions(description: string): Promise {\n if (this.props.contentContainer().channelIDInfo.status !== ChannelIDStatus.Found) return;\n\n this.fetchingSuggestions = true;\n try {\n const result = await asyncRequestToServer(\"GET\", \"/api/chapterNames\", {\n description,\n channelID: this.props.contentContainer().channelIDInfo.id\n });\n if (result.ok) {\n const names = JSON.parse(result.responseText) as {description: string}[];\n this.setState({\n suggestedNames: names.map(n => ({\n label: n.description\n }))\n });\n } else if (result.status !== 404) {\n logRequest(result, \"SB\", \"chapter suggestion\")\n }\n } catch (e) {\n console.warn(\"[SB] Caught error while fetching chapter suggestions\", e);\n } finally {\n this.fetchingSuggestions = false;\n }\n }\n\n configUpdate(): void {\n this.forceUpdate();\n }\n}\n\nexport default SponsorTimeEditComponent;\n","import * as React from \"react\";\nimport Config from \"../config\"\nimport GenericNotice from \"../render/GenericNotice\";\nimport { Category, ContentContainer } from \"../types\";\nimport * as CompileConfig from \"../../config.json\";\n\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport SponsorTimeEditComponent from \"./SponsorTimeEditComponent\";\nimport { getGuidelineInfo } from \"../utils/constants\";\nimport { exportTimes } from \"../utils/exporter\";\nimport { getVideo, isCurrentTimeWrong } from \"../../maze-utils/src/video\";\n\nexport interface SubmissionNoticeProps { \n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => Promise;\n\n closeListener: () => void;\n}\n\nexport interface SubmissionNoticeState {\n noticeTitle: string;\n messages: string[];\n idSuffix: string;\n}\n\nclass SubmissionNoticeComponent extends React.Component {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => unknown;\n\n noticeRef: React.MutableRefObject;\n timeEditRefs: React.RefObject[];\n\n videoObserver: MutationObserver;\n\n guidelinesReminder: GenericNotice;\n\n lastSegmentCount: number;\n\n constructor(props: SubmissionNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n\n this.contentContainer = props.contentContainer;\n this.callback = props.callback;\n \n const noticeTitle = chrome.i18n.getMessage(\"confirmNoticeTitle\");\n\n this.lastSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n idSuffix: \"SubmissionNotice\"\n };\n }\n\n componentDidMount(): void {\n // Catch and rerender when the video size changes\n //TODO: Use ResizeObserver when it is supported in TypeScript\n this.videoObserver = new MutationObserver(() => {\n this.forceUpdate();\n });\n\n this.videoObserver.observe(getVideo(), {\n attributes: true\n });\n\n // Prevent zooming while changing times\n document.getElementById(\"sponsorSkipNoticeMiddleRow\" + this.state.idSuffix).addEventListener('wheel', function (event) {\n if (event.ctrlKey) {\n event.preventDefault();\n }\n }, {passive: false});\n }\n\n componentWillUnmount(): void {\n if (this.videoObserver) {\n this.videoObserver.disconnect();\n }\n }\n\n componentDidUpdate() {\n const currentSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n if (currentSegmentCount > this.lastSegmentCount) {\n this.lastSegmentCount = currentSegmentCount;\n\n this.scrollToBottom();\n }\n }\n\n scrollToBottom() {\n const scrollElement = this.noticeRef.current.getElement().current.querySelector(\"#sponsorSkipNoticeMiddleRowSubmissionNotice\");\n scrollElement.scrollTo({\n top: scrollElement.scrollHeight + 1000\n });\n }\n\n render(): React.ReactElement {\n const sortButton = \n this.sortSegments()}\n title={chrome.i18n.getMessage(\"sortSegments\")}\n key=\"sortButton\"\n src={chrome.runtime.getURL(\"icons/sort.svg\")}>\n ;\n const exportButton = \n this.exportSegments()}\n title={chrome.i18n.getMessage(\"exportSegments\")}\n key=\"exportButton\"\n src={chrome.runtime.getURL(\"icons/export.svg\")}>\n ;\n return (\n \n\n {/* Text Boxes */}\n {this.getMessageBoxes()}\n\n {/* Sponsor Time List */}\n e.stopPropagation()}>\n \n {this.getSponsorTimeMessages()}\n \n \n\n {/* Last Row */}\n \n\n \n\n {/* Guidelines button */}\n \n\n {/* Submit Button */}\n \n \n \n\n \n );\n }\n\n getSponsorTimeMessages(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n this.timeEditRefs = [];\n\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n const timeRef = React.createRef();\n\n elements.push(\n \n \n );\n\n this.timeEditRefs.push(timeRef);\n }\n\n return elements;\n }\n\n getMessageBoxes(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n );\n }\n\n return elements;\n }\n\n cancel(): void {\n this.guidelinesReminder?.close();\n this.noticeRef.current.close(true);\n\n this.contentContainer().resetSponsorSubmissionNotice(false);\n\n this.props.closeListener();\n }\n\n submit(): void {\n if (isCurrentTimeWrong()) {\n alert(chrome.i18n.getMessage(\"submissionFailedServerSideAds\"));\n return;\n }\n\n // save all items\n for (const ref of this.timeEditRefs) {\n ref.current.saveEditTimes();\n }\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"chooseACategory\") {\n alert(chrome.i18n.getMessage(\"youMustSelectACategory\"));\n return;\n }\n }\n\n // Check if any non music categories are being used on a music video\n if (this.contentContainer().videoInfo?.microformat?.playerMicroformatRenderer?.category === \"Music\") {\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"sponsor\") {\n if (!confirm(chrome.i18n.getMessage(\"nonMusicCategoryOnMusic\"))) return;\n\n break;\n }\n }\n }\n\n this.props.callback().then((success) => {\n if (success) {\n this.cancel();\n }\n });\n }\n\n sortSegments(): void {\n let sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n sponsorTimesSubmitting = sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.forceUpdate();\n }\n\n exportSegments() {\n const sponsorTimesSubmitting = this.props.contentContainer()\n .sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n window.navigator.clipboard.writeText(exportTimes(sponsorTimesSubmitting));\n\n new GenericNotice(null, \"exportCopied\", {\n title: chrome.i18n.getMessage(`CopiedExclamation`),\n timed: true,\n maxCountdownTime: () => 0.6,\n referenceNode: document.querySelector(\".noticeLeftIcon\"),\n dontPauseCountdown: true,\n style: {\n top: 0,\n bottom: 0,\n minWidth: 0,\n right: \"30px\",\n margin: \"auto\"\n },\n hideLogo: true,\n hideRightInfo: true,\n extraClass: \"exportCopiedNotice\"\n });\n }\n\n categoryChangeListener(index: number, category: Category): void {\n const dialogWidth = this.noticeRef?.current?.getElement()?.current?.offsetWidth;\n if (category !== \"chooseACategory\" && Config.config.showCategoryGuidelines\n && getVideo().offsetWidth > dialogWidth * 2) {\n const options = {\n title: chrome.i18n.getMessage(`category_${category}`),\n textBoxes: getGuidelineInfo(category),\n buttons: [{\n name: chrome.i18n.getMessage(\"FullDetails\"),\n listener: () => window.open(CompileConfig.wikiLinks[category])\n },\n {\n name: chrome.i18n.getMessage(\"Hide\"),\n listener: () => {\n Config.config.showCategoryGuidelines = false;\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }],\n timed: false,\n style: {\n right: `${dialogWidth + 10}px`,\n },\n extraClass: \"sb-guidelines-notice\"\n };\n\n if (options.textBoxes) {\n if (this.guidelinesReminder) {\n this.guidelinesReminder.update(options);\n } else {\n this.guidelinesReminder = new GenericNotice(null, \"GuidelinesReminder\", options);\n }\n } else {\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }\n }\n}\n\nexport default SubmissionNoticeComponent;\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import Config from \"./config\";\nimport {\n ActionType,\n Category,\n CategorySkipOption,\n ChannelIDStatus,\n ContentContainer,\n ScheduledTime,\n SegmentUUID,\n SkipToTimeParams,\n SponsorHideType,\n SponsorSourceType,\n SponsorTime,\n ToggleSkippable,\n VideoID,\n VideoInfo,\n} from \"./types\";\nimport Utils from \"./utils\";\nimport PreviewBar, { PreviewBarSegment } from \"./js-components/previewBar\";\nimport SkipNotice from \"./render/SkipNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport UpcomingNotice from \"./render/UpcomingNotice\";\nimport SubmissionNotice from \"./render/SubmissionNotice\";\nimport { Message, MessageResponse, VoteResponse } from \"./messageTypes\";\nimport { SkipButtonControlBar } from \"./js-components/skipButtonControlBar\";\nimport { getStartTimeFromUrl } from \"./utils/urlParser\";\nimport { getControls, getExistingChapters, getHashParams, hasAutogeneratedChapters, isPlayingPlaylist, isVisible } from \"./utils/pageUtils\";\nimport { CategoryPill } from \"./render/CategoryPill\";\nimport { AnimationUtils } from \"../maze-utils/src/animationUtils\";\nimport { GenericUtils } from \"./utils/genericUtils\";\nimport { logDebug, logWarn } from \"./utils/logger\";\nimport { importTimes } from \"./utils/exporter\";\nimport { ChapterVote } from \"./render/ChapterVote\";\nimport { openWarningDialog } from \"./utils/warnings\";\nimport { extensionUserAgent, isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { formatJSErrorMessage, getFormattedTime, getLongErrorMessage } from \"../maze-utils/src/formating\";\nimport { getChannelIDInfo, getVideo, getIsAdPlaying, getIsLivePremiere, setIsAdPlaying, checkVideoIDChange, getVideoID, getYouTubeVideoID, setupVideoModule, checkIfNewVideoID, isOnInvidious, isOnMobileYouTube, isOnYouTubeMusic, isOnYTTV, getLastNonInlineVideoID, triggerVideoIDChange, triggerVideoElementChange, getIsInline, getCurrentTime, setCurrentTime, getVideoDuration, verifyCurrentTime, waitForVideo } from \"../maze-utils/src/video\";\nimport { Keybind, StorageChangesObject, isSafari, keybindEquals, keybindToString } from \"../maze-utils/src/config\";\nimport { findValidElement } from \"../maze-utils/src/dom\"\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\nimport { updateAll } from \"../maze-utils/src/thumbnailManagement\";\nimport { setupThumbnailListener } from \"./utils/thumbnails\";\nimport * as documentScript from \"../dist/js/document.js\";\nimport { isVorapisInstalled, runCompatibilityChecks } from \"./utils/compatibility\";\nimport { cleanPage } from \"./utils/pageCleaner\";\nimport { addCleanupListener } from \"../maze-utils/src/cleanup\";\nimport { hideDeArrowPromotion, tryShowingDeArrowPromotion } from \"./dearrowPromotion\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { isMobileControlsOpen } from \"./utils/mobileUtils\";\nimport { defaultPreviewTime } from \"./utils/constants\";\nimport { onVideoPage } from \"../maze-utils/src/pageInfo\";\nimport { getSegmentsForVideo } from \"./utils/segmentData\";\nimport { getCategoryDefaultSelection, getCategorySelection } from \"./utils/skipRule\";\nimport { getSkipProfileBool, getSkipProfileIDForTab, hideTooShortSegments, setCurrentTabSkipProfile } from \"./utils/skipProfiles\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\n\ncleanPage();\n\nconst utils = new Utils();\n\nutils.wait(() => Config.isReady(), 5000, 10).then(() => {\n // Hack to get the CSS loaded on permission-based sites (Invidious)\n addCSS();\n setCategoryColorCSSVariables();\n\n runCompatibilityChecks();\n});\n\nconst skipBuffer = 0.003;\n// If this close to the end, skip to the end\nconst endTimeSkipBuffer = 0.5;\n\n//was sponsor data found when doing SponsorsLookup\nlet sponsorDataFound = false;\n//the actual sponsorTimes if loaded and UUIDs associated with them\nlet sponsorTimes: SponsorTime[] = [];\nlet existingChaptersImported = false;\nlet importingChaptersWaitingForFocus = false;\nlet importingChaptersWaiting = false;\nlet loopedChapter :SponsorTime = null;\n// List of open skip notices\nconst skipNotices: SkipNotice[] = [];\nlet upcomingNotice: UpcomingNotice | null = null;\nlet activeSkipKeybindElement: ToggleSkippable = null;\nlet shownSegmentFailedToFetchWarning = false;\nlet selectedSegment: SegmentUUID | null = null;\nlet previewedSegment = false;\n\n// JSON video info\nlet videoInfo: VideoInfo = null;\n// Locked Categories in this tab, like: [\"sponsor\",\"intro\",\"outro\"]\nlet lockedCategories: Category[] = [];\n// Used to calculate a more precise \"virtual\" video time\nconst lastKnownVideoTime: { videoTime: number; preciseTime: number; fromPause: boolean; approximateDelay: number } = {\n videoTime: null,\n preciseTime: null,\n fromPause: false,\n approximateDelay: null,\n};\n// It resumes with a slightly later time on chromium\nlet lastTimeFromWaitingEvent: number = null;\nconst lastNextChapterKeybind = {\n time: 0,\n date: 0\n};\n\n// Skips are scheduled to ensure precision.\n// Skips are rescheduled every seeking event.\n// Skips are canceled every seeking event\nlet currentSkipSchedule: NodeJS.Timeout = null;\nlet currentSkipInterval: NodeJS.Timeout = null;\nlet currentVirtualTimeInterval: NodeJS.Timeout = null;\nlet currentUpcomingSchedule: NodeJS.Timeout = null;\n\n/** Has the sponsor been skipped */\nlet sponsorSkipped: boolean[] = [];\n\nlet videoMuted = false; // Has it been attempted to be muted\nconst controlsWithEventListeners: HTMLElement[] = [];\n\nsetupVideoModule({\n videoIDChange,\n channelIDChange,\n videoElementChange,\n playerInit: () => {\n previewBar = null; // remove old previewbar\n createPreviewBar();\n },\n updatePlayerBar: () => {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n },\n resetValues,\n documentScript: chrome.runtime.getManifest().manifest_version === 2 ? documentScript : undefined\n}, () => Config);\nsetupThumbnailListener();\n\n// Is the video currently being switched\nlet switchingVideos = null;\n\n// Used by the play and playing listeners to make sure two aren't\n// called at the same time\nlet lastCheckTime = 0;\nlet lastCheckVideoTime = -1;\n\n// To determine if a video resolution change is happening\nlet firstPlay = true;\n\nlet previewBar: PreviewBar = null;\n// Skip to highlight button\nlet skipButtonControlBar: SkipButtonControlBar = null;\n// For full video sponsors/selfpromo\nlet categoryPill: CategoryPill = null;\n\n/** Element containing the player controls on the YouTube player. */\nlet controls: HTMLElement | null = null;\n\n/** Contains buttons created by `createButton()`. */\nconst playerButtons: Record = {};\n\naddHotkeyListener();\n\n/** Segments created by the user which have not yet been submitted. */\nlet sponsorTimesSubmitting: SponsorTime[] = [];\nlet loadedPreloadedSegment = false;\n\n//becomes true when isInfoFound is called\n//this is used to close the popup on YouTube when the other popup opens\nlet popupInitialised = false;\n\nlet submissionNotice: SubmissionNotice = null;\n\nlet lastResponseStatus: number | Error | string;\n\n// Contains all of the functions and variables needed by the skip notice\nconst skipNoticeContentContainer: ContentContainer = () => ({\n vote,\n dontShowNoticeAgain,\n unskipSponsorTime,\n sponsorTimes,\n sponsorTimesSubmitting,\n skipNotices,\n sponsorVideoID: getVideoID(),\n reskipSponsorTime,\n updatePreviewBar,\n onMobileYouTube: isOnMobileYouTube(),\n sponsorSubmissionNotice: submissionNotice,\n resetSponsorSubmissionNotice,\n updateEditButtonsOnPlayer,\n previewTime,\n videoInfo,\n getRealCurrentTime: getRealCurrentTime,\n lockedCategories,\n channelIDInfo: getChannelIDInfo()\n});\n\n// value determining when to count segment as skipped and send telemetry to server (percent based)\nconst manualSkipPercentCount = 0.5;\n\n//get messages from the background script and the popup\nchrome.runtime.onMessage.addListener(messageListener);\n\nfunction messageListener(request: Message, sender: unknown, sendResponse: (response: MessageResponse) => void): void | boolean {\n //messages from popup script\n switch(request.message){\n case \"update\":\n checkVideoIDChange();\n break;\n case \"sponsorStart\":\n startOrEndTimingNewSegment()\n\n sendResponse({\n creatingSegment: isSegmentCreationInProgress(),\n });\n\n break;\n case \"isInfoFound\":\n //send the sponsor times along with if it's found\n sendResponse({\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n\n if (!request.updating && popupInitialised && document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //the popup should be closed now that another is opening\n closeInfoMenu();\n }\n\n popupInitialised = true;\n break;\n case \"getChannelID\":\n sendResponse({\n channelID: getChannelIDInfo().id,\n isYTTV: (document.location.host === \"tv.youtube.com\")\n });\n\n break;\n case \"submitTimes\":\n openSubmissionMenu();\n break;\n case \"refreshSegments\":\n // update video on refresh if videoID invalid\n if (!getVideoID()) {\n checkVideoIDChange();\n }\n // if popup rescieves no response, or the videoID is invalid,\n // it will assume the page is not a video page and stop the refresh animation\n sendResponse({ hasVideo: getVideoID() != null });\n // fetch segments\n if (getVideoID()) {\n sponsorsLookup(false, true);\n }\n\n break;\n case \"unskip\":\n unskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), null, true);\n break;\n case \"reskip\":\n reskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), true);\n break;\n case \"selectSegment\":\n selectSegment(request.UUID);\n break;\n case \"submitVote\":\n vote(request.type, request.UUID).then((response) => sendResponse(response));\n return true;\n case \"hideSegment\":\n utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID).hidden = request.type;\n utils.addHiddenSegment(getVideoID(), request.UUID, request.type);\n updatePreviewBar();\n\n if (skipButtonControlBar?.isEnabled()\n && sponsorTimesSubmitting.every((s) => s.hidden !== SponsorHideType.Visible || s.actionType !== ActionType.Poi)) {\n skipButtonControlBar.disable();\n }\n break;\n case \"closePopup\":\n closeInfoMenu();\n break;\n case \"copyToClipboard\":\n navigator.clipboard.writeText(request.text);\n break;\n case \"loopChapter\":\n if (!request.UUID){\n loopedChapter = null;\n break;\n }\n loopedChapter = {...utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID)};\n loopedChapter.segment = [loopedChapter.segment[1], loopedChapter.segment[0]];\n break;\n case \"importSegments\": {\n const importedSegments = importTimes(request.data, getVideoDuration());\n let addedSegments = false;\n for (const segment of importedSegments) {\n if (!sponsorTimesSubmitting.some(\n (s) => Math.abs(s.segment[0] - segment.segment[0]) < 1\n && Math.abs(s.segment[1] - segment.segment[1]) < 1\n && s.description === segment.description)) {\n const hasChaptersPermission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[\"chapter\"]);\n if (segment.category === \"chapter\" && (!getCategoryDefaultSelection(\"chapter\") || !hasChaptersPermission)) {\n segment.category = \"chooseACategory\" as Category;\n segment.actionType = ActionType.Skip;\n segment.description = \"\";\n }\n\n sponsorTimesSubmitting.push(segment);\n addedSegments = true;\n }\n }\n\n if (addedSegments) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n openSubmissionMenu();\n }\n\n sendResponse({\n importedSegments\n });\n break;\n }\n case \"keydown\":\n (document.body || document).dispatchEvent(new KeyboardEvent('keydown', {\n key: request.key,\n keyCode: request.keyCode,\n code: request.code,\n which: request.which,\n shiftKey: request.shiftKey,\n ctrlKey: request.ctrlKey,\n altKey: request.altKey,\n metaKey: request.metaKey\n }));\n break;\n case \"getLogs\":\n sendResponse({\n debug: window[\"SBLogs\"].debug,\n warn: window[\"SBLogs\"].warn\n });\n break;\n case \"setCurrentTabSkipProfile\":\n setCurrentTabSkipProfile(request.configID);\n channelIDChange();\n break;\n }\n\n sendResponse({});\n}\n\n/**\n * Called when the config is updated\n */\nfunction contentConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"hideVideoPlayerControls\":\n case \"hideInfoButtonPlayerControls\":\n case \"hideDeleteButtonPlayerControls\":\n updateVisibilityOfPlayerControlsButton()\n break;\n case \"categorySelections\":\n channelIDChange();\n break;\n case \"barTypes\":\n setCategoryColorCSSVariables();\n break;\n case \"fullVideoSegments\":\n case \"fullVideoLabelsOnThumbnails\":\n updateAll();\n break;\n }\n }\n}\nfunction contentLocalConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"channelSkipProfileIDs\":\n case \"skipProfiles\":\n case \"skipProfileTemp\":\n channelIDChange();\n break;\n }\n }\n}\n\nif (!window.location.href.includes(\"youtube.com/live_chat\")) {\n if (!Config.configSyncListeners.includes(contentConfigUpdateListener)) {\n Config.configSyncListeners.push(contentConfigUpdateListener);\n }\n\n if (!Config.configLocalListeners.includes(contentLocalConfigUpdateListener)) {\n Config.configLocalListeners.push(contentLocalConfigUpdateListener);\n }\n}\n\nfunction resetValues() {\n lastCheckTime = 0;\n lastCheckVideoTime = -1;\n previewedSegment = false;\n firstPlay = true;\n\n sponsorTimes = [];\n existingChaptersImported = false;\n sponsorSkipped = [];\n loopedChapter = null;\n lastResponseStatus = 0;\n shownSegmentFailedToFetchWarning = false;\n\n videoInfo = null;\n lockedCategories = [];\n\n //empty the preview bar\n if (previewBar !== null) {\n previewBar.clear();\n }\n\n //reset sponsor data found check\n sponsorDataFound = false;\n\n // When first loading a video, it is not switching videos\n // Hover play also doesn't need this check\n if (switchingVideos === null || !onVideoPage()) {\n switchingVideos = false;\n } else {\n switchingVideos = true;\n logDebug(\"Setting switching videos to true (reset data)\");\n }\n\n skipButtonControlBar?.disable();\n categoryPill?.setVisibility(false);\n\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop()?.close();\n }\n\n if (upcomingNotice) {\n upcomingNotice.close();\n upcomingNotice = null;\n }\n\n hideDeArrowPromotion();\n}\n\nfunction videoIDChange(): void {\n //setup the preview bar\n if (previewBar === null) {\n if (isOnMobileYouTube()) {\n // Mobile YouTube workaround\n const observer = new MutationObserver(handleMobileControlsMutations);\n let controlsContainer = null;\n\n utils.wait(() => {\n controlsContainer = document.getElementById(\"player-control-container\")\n return controlsContainer !== null\n }).then(() => {\n observer.observe(document.getElementById(\"player-control-container\"), {\n attributes: true,\n childList: true,\n subtree: true\n });\n }).catch();\n } else {\n utils.wait(getControls).then(createPreviewBar);\n }\n }\n\n // Notify the popup about the video change\n chrome.runtime.sendMessage({\n message: \"videoChanged\",\n videoID: getVideoID(),\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author\n });\n\n sponsorsLookup();\n\n // Make sure all player buttons are properly added\n updateVisibilityOfPlayerControlsButton();\n\n // Clear unsubmitted segments from the previous video\n sponsorTimesSubmitting = [];\n updateSponsorTimesSubmitting();\n\n tryShowingDeArrowPromotion().catch(logWarn);\n\n checkPreviewbarState();\n\n if (getIsInline()) {\n // Hover preview progress bar can take some time to appear\n // and if the miniplayer is also active then it would \n // attach to the wrong one\n setTimeout(checkPreviewbarState, 500);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 3000);\n }\n}\n\nfunction handleMobileControlsMutations(): void {\n // Don't update while scrubbing\n if (!chrome.runtime?.id \n || document.querySelector(\".YtProgressBarProgressBarPlayheadDotInDragging\")) return;\n\n updateVisibilityOfPlayerControlsButton();\n\n skipButtonControlBar?.updateMobileControls();\n\n if (previewBar !== null) {\n if (!previewBar.parent.contains(previewBar.container) && isMobileControlsOpen()) {\n previewBar.createElement();\n updatePreviewBar();\n\n return;\n } else if (!previewBar.parent.isConnected) {\n // The parent does not exist anymore, remove that old preview bar\n previewBar.remove();\n previewBar = null;\n }\n }\n\n // Create the preview bar if needed (the function hasn't returned yet)\n createPreviewBar();\n}\n\nfunction getPreviewBarAttachElement(): HTMLElement | null {\n const progressElementOptions = [{\n // For newer mobile YouTube (Sept 2024)\n selector: \".ytChapteredProgressBarHost, .ytProgressBarLineHost, .YtProgressBarLineHost, .YtChapteredProgressBarHost\",\n isVisibleCheck: true\n }, {\n // For newer mobile YouTube (May 2024)\n selector: \".YtmProgressBarProgressBarLine\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube hover play\n // Priority is given to the hover play progress bar over the main progress bar\n // for miniplayer + hover preview case\n // Second is new hover play selector\n selector: \"#video-preview .ytp-progress-bar, #video-preview .YtProgressBarLineHost\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".ytp-progress-bar\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".no-model.cue-range-marker\",\n isVisibleCheck: true\n }, {\n // For Invidious/VideoJS\n selector: \".vjs-progress-holder\",\n isVisibleCheck: false\n }, {\n // For Youtube Music and YTKids\n // there are two sliders, one for volume and one for progress - both called #progressContainer\n selector: \"#progress-bar>#sliderContainer>div>#sliderBar>#progressContainer\",\n }, {\n // For piped\n selector: \".shaka-ad-markers\",\n isVisibleCheck: false\n }, {\n // For Vorapis v3\n selector: \".ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\"\n }, {\n // For YTTV\n selector: \".yssi-slider > div.ytu-ss-timeline-container\",\n isVisibleCheck: false\n }\n ];\n\n for (const option of progressElementOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.isVisibleCheck ? findValidElement(allElements) : allElements[0];\n\n if (el) {\n return el;\n }\n }\n\n return null;\n}\n\n/**\n * Creates a preview bar on the video\n */\nfunction createPreviewBar(): void {\n if (previewBar !== null) return;\n\n const el = getPreviewBarAttachElement();\n\n if (el) {\n const chapterVote = new ChapterVote(voteAsync);\n previewBar = new PreviewBar(el, isOnMobileYouTube(), isOnInvidious(), isOnYTTV(), chapterVote, () => importExistingChapters(true));\n\n updatePreviewBar();\n }\n}\n\n/**\n * Triggered every time the video duration changes.\n * This happens when the resolution changes or at random time to clear memory.\n */\nfunction durationChangeListener(): void {\n updateAdFlag();\n updatePreviewBar();\n}\n\n/**\n * Triggered once the video is ready.\n * This is mainly to attach to embedded players who don't have a video element visible.\n */\nfunction videoOnReadyListener(): void {\n createPreviewBar();\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton()\n}\n\nfunction cancelSponsorSchedule(): void {\n logDebug(\"Pausing skipping\");\n\n if (currentSkipSchedule !== null) {\n clearTimeout(currentSkipSchedule);\n currentSkipSchedule = null;\n }\n\n if (currentSkipInterval !== null) {\n clearInterval(currentSkipInterval);\n currentSkipInterval = null;\n }\n\n if (currentUpcomingSchedule !== null) {\n clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = null;\n }\n}\n\n/**\n * @param currentTime Optional if you don't want to use the actual current time\n */\nasync function startSponsorSchedule(includeIntersectingSegments = false, currentTime?: number, includeNonIntersectingSegments = true): Promise {\n cancelSponsorSchedule();\n\n // Don't skip if advert playing and reset last checked time\n if (getIsAdPlaying()) {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n logDebug(\"[SB] Ad playing, pausing skipping\");\n\n return;\n }\n\n // Give up if video changed, and trigger a videoID change if so\n if (await checkIfNewVideoID()) {\n return;\n }\n\n logDebug(`Considering to start skipping: ${!getVideo()}, ${getVideo()?.paused}`);\n if (!getVideo()) return;\n if (currentTime === undefined || currentTime === null) {\n currentTime = getVirtualTime();\n }\n clearWaitingTime();\n\n updateActiveSegment(currentTime);\n\n if ((getVideo().paused && getCurrentTime() !== 0) // Allow autoplay disabled videos to skip before playing\n || (getCurrentTime() >= getVideoDuration() - 0.01 && getVideoDuration() > 1)) return;\n const skipInfo = getNextSkipIndex(currentTime, includeIntersectingSegments, includeNonIntersectingSegments);\n\n const currentSkip = skipInfo.array[skipInfo.index];\n const skipTime: number[] = [currentSkip?.scheduledTime, skipInfo.array[skipInfo.endIndex]?.segment[1]];\n const timeUntilSponsor = skipTime?.[0] - currentTime;\n const videoID = getVideoID();\n\n if (videoMuted && !inMuteSegment(currentTime, skipInfo.index !== -1\n && timeUntilSponsor < skipBuffer && shouldAutoSkip(currentSkip))) {\n getVideo().muted = false;\n videoMuted = false;\n\n for (const notice of skipNotices) {\n // So that the notice can hide buttons\n notice.unmutedListener(currentTime);\n }\n }\n\n logDebug(`Ready to start skipping: ${skipInfo.index} at ${currentTime}`);\n if (skipInfo.index === -1) return;\n\n if (Config.config.disableSkipping || (getChannelIDInfo().status === ChannelIDStatus.Fetching && Config.config.forceChannelCheck)){\n return;\n }\n\n if (incorrectVideoCheck()) return;\n\n // Find all indexes in between the start and end\n let skippingSegments = [skipInfo.array[skipInfo.index]];\n if (skipInfo.index !== skipInfo.endIndex) {\n skippingSegments = [];\n\n for (const segment of skipInfo.array) {\n if (shouldAutoSkip(segment) &&\n segment.segment[0] >= skipTime[0] && segment.segment[1] <= skipTime[1]\n && segment.segment[0] === segment.scheduledTime) { // Don't include artificial scheduled segments (end times for mutes)\n skippingSegments.push(segment);\n }\n }\n }\n\n logDebug(`Next step in starting skipping: ${!shouldSkip(currentSkip)}, ${!sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)}`);\n\n const skippingFunction = (forceVideoTime?: number) => {\n let forcedSkipTime: number = null;\n let forcedIncludeIntersectingSegments = false;\n let forcedIncludeNonIntersectingSegments = true;\n\n if (incorrectVideoCheck(videoID, currentSkip)) return;\n forceVideoTime ||= Math.max(getCurrentTime(), getVirtualTime());\n\n if ((shouldSkip(currentSkip)\n || sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment\n && segment.actionType !== ActionType.Chapter\n && segment.hidden === SponsorHideType.Visible))) {\n if (forceVideoTime >= skipTime[0] - skipBuffer && (forceVideoTime < skipTime[1] || skipTime[1] < skipTime[0])) {\n skipToTime({\n v: getVideo(),\n skipTime,\n skippingSegments,\n openNotice: skipInfo.openNotice\n });\n\n // These are segments that start at the exact same time but need separate notices\n for (const extra of skipInfo.extraIndexes) {\n const extraSkip = skipInfo.array[extra];\n if (shouldSkip(extraSkip)) {\n skipToTime({\n v: getVideo(),\n skipTime: [extraSkip.scheduledTime, extraSkip.segment[1]],\n skippingSegments: [extraSkip],\n openNotice: skipInfo.openNotice\n });\n }\n }\n\n if (getCategorySelection(currentSkip)?.option === CategorySkipOption.ManualSkip\n || currentSkip.actionType === ActionType.Mute) {\n forcedSkipTime = skipTime[0] + 0.001;\n } else {\n forcedSkipTime = skipTime[1];\n forcedIncludeNonIntersectingSegments = false;\n\n // Only if not at the end of the video\n if (Math.abs(skipTime[1] - getVideoDuration()) > endTimeSkipBuffer) {\n forcedIncludeIntersectingSegments = true;\n }\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n\n // Don't pretend to be earlier than we are, could result in loops\n if (forcedSkipTime !== null && forceVideoTime > forcedSkipTime && skipTime[1] > skipTime[0]) {\n forcedSkipTime = forceVideoTime;\n }\n\n startSponsorSchedule(forcedIncludeIntersectingSegments, forcedSkipTime, forcedIncludeNonIntersectingSegments);\n };\n\n if (timeUntilSponsor < skipBuffer) {\n skippingFunction(currentTime);\n } else {\n let delayTime = timeUntilSponsor * 1000 * (1 / getVideo().playbackRate);\n if (delayTime < (isFirefoxOrSafari() && !isSafari() ? 750 : 300)\n && shouldAutoSkip(skippingSegments[0])) {\n let forceStartIntervalTime: number | null = null;\n if (isFirefoxOrSafari() && !isSafari() && delayTime > 300) {\n forceStartIntervalTime = await waitForNextTimeChange();\n }\n\n // Use interval instead of timeout near the end to combat imprecise video time\n const startIntervalTime = forceStartIntervalTime || performance.now();\n const startVideoTime = Math.max(currentTime, getVirtualTime());\n delayTime = (skipTime?.[0] - startVideoTime) * 1000 * (1 / getVideo().playbackRate);\n\n let startWaitingForReportedTimeToChange = true;\n const reportedVideoTimeAtStart = getCurrentTime();\n logDebug(`Starting setInterval skipping ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n if (currentSkipInterval !== null) clearInterval(currentSkipInterval);\n currentSkipInterval = setInterval(() => {\n // Estimate delay, but only take the current time right after a change\n // Current time remains the same for many \"frames\" on Firefox\n if (isFirefoxOrSafari() && !lastKnownVideoTime.fromPause && startWaitingForReportedTimeToChange\n && reportedVideoTimeAtStart !== getCurrentTime()) {\n startWaitingForReportedTimeToChange = false;\n const delay = getVirtualTime() - getCurrentTime();\n if (delay > 0) lastKnownVideoTime.approximateDelay = delay;\n }\n\n const intervalDuration = performance.now() - startIntervalTime;\n if (intervalDuration + skipBuffer * 1000 >= delayTime || getVirtualTime() + skipBuffer >= skipTime[0]) {\n clearInterval(currentSkipInterval);\n if (!isFirefoxOrSafari() && !getVideo().muted && !inMuteSegment(getCurrentTime(), true)) {\n // Workaround for more accurate skipping on Chromium\n getVideo().muted = true;\n getVideo().muted = false;\n }\n\n skippingFunction(Math.max(getVirtualTime(), startVideoTime + getVideo().playbackRate * Math.max(delayTime, intervalDuration) / 1000));\n }\n }, 0);\n } else {\n logDebug(`Starting timeout to skip ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n const offset = (isFirefoxOrSafari() && !isSafari() ? 600 : 150);\n // Schedule for right before to be more precise than normal timeout\n const offsetDelayTime = Math.max(0, delayTime - offset);\n currentSkipSchedule = setTimeout(skippingFunction, offsetDelayTime);\n\n // Show the notice only if the segment hasn't already started\n if (Config.config.showUpcomingNotice && getCurrentTime() < skippingSegments[0].segment[0] \n && !sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)\n && [ActionType.Skip, ActionType.Mute].includes(skippingSegments[0].actionType)\n && getCategorySelection(skippingSegments[0])?.option > CategorySkipOption.ShowOverlay\n && !getVideo()?.paused) {\n const maxPopupTime = 3000;\n const timeUntilPopup = Math.max(0, offsetDelayTime - maxPopupTime);\n const popupTime = offsetDelayTime - timeUntilPopup;\n const autoSkip = shouldAutoSkip(skippingSegments[0]);\n\n if (currentUpcomingSchedule) clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = setTimeout(createUpcomingNotice, timeUntilPopup, [skippingSegments[0]], popupTime, autoSkip);\n }\n }\n }\n}\n\n/**\n * Used on Firefox only, waits for the next animation frame until\n * the video time has changed\n */\nfunction waitForNextTimeChange(): Promise {\n return new Promise((resolve) => {\n getVideo().addEventListener(\"timeupdate\", () => resolve(performance.now()), { once: true });\n });\n}\n\nfunction getVirtualTime(): number {\n const virtualTime = lastTimeFromWaitingEvent ?? (lastKnownVideoTime.videoTime !== null ?\n (performance.now() - lastKnownVideoTime.preciseTime) * (getVideo()?.playbackRate || 1) / 1000 + lastKnownVideoTime.videoTime : null);\n\n if (Config.config.useVirtualTime && !isSafari() && virtualTime\n && virtualTime > getCurrentTime() && virtualTime - getCurrentTime() < 0.8 && getCurrentTime() !== 0) {\n return Math.max(virtualTime, getCurrentTime());\n } else {\n return getCurrentTime();\n }\n}\n\nfunction inMuteSegment(currentTime: number, includeOverlap: boolean): boolean {\n const checkFunction = (segment) => segment.actionType === ActionType.Mute\n && segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime\n && (segment.segment[1] > currentTime || (includeOverlap && segment.segment[1] + 0.02 > currentTime));\n return sponsorTimes?.some(checkFunction) || sponsorTimesSubmitting.some(checkFunction);\n}\n\n/**\n * This makes sure the videoID is still correct and if the sponsorTime is included\n */\nfunction incorrectVideoCheck(videoID?: string, sponsorTime?: SponsorTime): boolean {\n if (!onVideoPage()) return false;\n\n const currentVideoID = getYouTubeVideoID();\n const recordedVideoID = videoID || getVideoID();\n if (currentVideoID !== recordedVideoID || (sponsorTime\n && (!sponsorTimes || !sponsorTimes?.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1]))\n && !sponsorTimesSubmitting.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1])\n && (!isLoopedChapter(sponsorTime)))) {\n // Something has really gone wrong\n console.error(\"[SponsorBlock] The videoID recorded when trying to skip is different than what it should be.\");\n console.error(\"[SponsorBlock] VideoID recorded: \" + recordedVideoID + \". Actual VideoID: \" + currentVideoID);\n console.error(\"[SponsorBlock] SponsorTime\", sponsorTime, \"sponsorTimes\", sponsorTimes, \"sponsorTimesSubmitting\", sponsorTimesSubmitting);\n\n // Video ID change occured\n checkVideoIDChange();\n\n return true;\n } else {\n return false;\n }\n}\n\nlet playbackRateCheckInterval: NodeJS.Timeout | null = null;\nlet lastPlaybackSpeed = 1;\nlet setupVideoListenersFirstTime = true;\nfunction setupVideoListeners(video: HTMLVideoElement) {\n if (!video) return; // Maybe video became invisible\n\n //wait until it is loaded\n video.addEventListener('loadstart', videoOnReadyListener)\n video.addEventListener('durationchange', durationChangeListener);\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('loadstart', videoOnReadyListener);\n video.removeEventListener('durationchange', durationChangeListener);\n });\n }\n\n if (!Config.config.disableSkipping) {\n switchingVideos = false;\n\n let startedWaiting = false;\n let lastPausedAtZero = true;\n let lastVideoDataChange = 0;\n\n const rateChangeListener = () => {\n updateVirtualTime();\n clearWaitingTime();\n\n startSponsorSchedule();\n };\n video.addEventListener('ratechange', rateChangeListener);\n // Used by videospeed extension (https://github.com/igrigorik/videospeed/pull/740)\n video.addEventListener('videoSpeed_ratechange', rateChangeListener);\n\n const playListener = () => {\n // Prevent video resolution changes from causing skips\n if (!firstPlay && Date.now() - lastVideoDataChange < 200 && video.currentTime === 0) return;\n\n firstPlay = false;\n updateVirtualTime();\n checkForMiniplayerPlaying();\n\n if (switchingVideos || lastPausedAtZero) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n lastPausedAtZero = false;\n\n // Check if an ad is playing\n updateAdFlag();\n\n // Make sure it doesn't get double called with the playing event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n };\n video.addEventListener('play', playListener);\n\n const playingListener = () => {\n updateVirtualTime();\n lastPausedAtZero = false;\n\n if (startedWaiting) {\n startedWaiting = false;\n logDebug(`[SB] Playing event after buffering: ${Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)}`);\n }\n\n if (switchingVideos) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n // Make sure it doesn't get double called with the play event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n lastPlaybackSpeed = video.playbackRate;\n\n // Video speed controller compatibility\n // That extension makes rate change events not propagate\n if (document.body.classList.contains(\"vsc-initialized\")) {\n playbackRateCheckInterval = setInterval(() => {\n if ((!getVideoID() || video.paused) && playbackRateCheckInterval) {\n // Video is gone, stop checking\n clearInterval(playbackRateCheckInterval);\n return;\n }\n \n if (video.playbackRate !== lastPlaybackSpeed) {\n lastPlaybackSpeed = video.playbackRate;\n \n rateChangeListener();\n }\n }, 2000);\n }\n };\n video.addEventListener('playing', playingListener);\n \n const seekingListener = () => {\n lastKnownVideoTime.fromPause = false;\n\n if (!video.paused){\n // Reset lastCheckVideoTime\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n updateVirtualTime();\n clearWaitingTime();\n\n // Sometimes looped videos loop back to almost zero, but not quite\n if (video.loop && video.currentTime < 0.2 && getCurrentTime() < 0.2) {\n startSponsorSchedule(false, 0);\n } else {\n startSponsorSchedule();\n }\n } else {\n updateActiveSegment(getCurrentTime());\n\n if (getCurrentTime() === 0) {\n lastPausedAtZero = true;\n }\n }\n };\n video.addEventListener('seeking', seekingListener);\n \n const stoppedPlayback = () => {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n\n lastKnownVideoTime.videoTime = null;\n lastKnownVideoTime.preciseTime = null;\n updateWaitingTime(video);\n\n cancelSponsorSchedule();\n };\n const pauseListener = () => {\n lastKnownVideoTime.fromPause = true;\n\n stoppedPlayback();\n };\n video.addEventListener('pause', pauseListener);\n const waitingListener = () => {\n logDebug(\"[SB] Not skipping due to buffering\");\n startedWaiting = true;\n\n stoppedPlayback();\n };\n video.addEventListener('waiting', waitingListener);\n\n // When video data is changed\n const emptyListener = () => {\n lastVideoDataChange = Date.now();\n\n if (firstPlay && video.currentTime === 0) {\n playListener();\n }\n }\n video.addEventListener('emptied', emptyListener);\n\n // For when autoplay is off to skip before starting playback\n const metadataLoadedListener = () => {\n if (firstPlay && getCurrentTime() === 0) {\n playListener();\n }\n }\n video.addEventListener('loadedmetadata', metadataLoadedListener)\n\n startSponsorSchedule();\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('play', playListener);\n video.removeEventListener('playing', playingListener);\n video.removeEventListener('seeking', seekingListener);\n video.removeEventListener('ratechange', rateChangeListener);\n video.removeEventListener('videoSpeed_ratechange', rateChangeListener);\n video.removeEventListener('pause', pauseListener);\n video.removeEventListener('waiting', waitingListener);\n video.removeEventListener('empty', emptyListener);\n video.removeEventListener('loadedmetadata', metadataLoadedListener);\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n });\n }\n }\n\n setupVideoListenersFirstTime = false;\n}\n\nfunction updateVirtualTime() {\n if (currentVirtualTimeInterval) clearInterval(currentVirtualTimeInterval);\n\n lastKnownVideoTime.videoTime = getCurrentTime();\n lastKnownVideoTime.preciseTime = performance.now();\n\n // If on Firefox, wait for the second time change (time remains fixed for many \"frames\" for privacy reasons)\n if (isFirefoxOrSafari()) {\n let count = 0;\n let rawCount = 0;\n let lastTime = lastKnownVideoTime.videoTime;\n let lastPerformanceTime = performance.now();\n\n currentVirtualTimeInterval = setInterval(() => {\n const frameTime = performance.now() - lastPerformanceTime;\n if (lastTime !== getCurrentTime()) {\n rawCount++;\n\n // If there is lag, give it another shot at finding a good change time\n if (frameTime < 20 || rawCount > 30) {\n count++;\n }\n lastTime = getCurrentTime();\n }\n\n if (count > 1) {\n const delay = lastKnownVideoTime.fromPause && lastKnownVideoTime.approximateDelay ?\n lastKnownVideoTime.approximateDelay : 0;\n\n lastKnownVideoTime.videoTime = getCurrentTime() + delay;\n lastKnownVideoTime.preciseTime = performance.now();\n\n clearInterval(currentVirtualTimeInterval);\n currentVirtualTimeInterval = null;\n }\n\n lastPerformanceTime = performance.now();\n }, 1);\n }\n}\n\nfunction updateWaitingTime(video: HTMLVideoElement): void {\n lastTimeFromWaitingEvent = video.currentTime;\n}\n\nfunction clearWaitingTime(): void {\n lastTimeFromWaitingEvent = null;\n}\n\nfunction setupSkipButtonControlBar() {\n if (!skipButtonControlBar) {\n skipButtonControlBar = new SkipButtonControlBar({\n skip: (segment) => skipToTime({\n v: getVideo(),\n skipTime: segment.segment,\n skippingSegments: [segment],\n openNotice: true,\n forceAutoSkip: true\n }),\n selectSegment,\n onMobileYouTube: isOnMobileYouTube(),\n onYTTV: isOnYTTV(),\n });\n }\n\n skipButtonControlBar.attachToPage();\n}\n\nfunction setupCategoryPill() {\n if (!categoryPill) {\n categoryPill = new CategoryPill();\n }\n\n categoryPill.attachToPage(isOnMobileYouTube(), isOnInvidious(), voteAsync);\n}\n\nasync function sponsorsLookup(keepOldSubmissions = true, ignoreCache = false) {\n const videoID = getVideoID();\n if (!videoID) {\n console.error(\"[SponsorBlock] Attempted to fetch segments with a null/undefined videoID.\");\n return;\n }\n\n const segmentData = await getSegmentsForVideo(videoID, ignoreCache);\n\n // Make sure an old pending request doesn't get used.\n if (videoID !== getVideoID()) return;\n\n // store last response status\n lastResponseStatus = segmentData.status;\n if (segmentData.status === 200) {\n const receivedSegments = segmentData.segments;\n\n if (receivedSegments && receivedSegments.length) {\n sponsorDataFound = receivedSegments.findIndex((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled) !== -1;\n\n // Check if any old submissions should be kept\n if (sponsorTimes !== null && keepOldSubmissions) {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].source === SponsorSourceType.Local) {\n // This is a user submission, keep it\n receivedSegments.push(sponsorTimes[i]);\n }\n }\n }\n\n const oldSegments = sponsorTimes || [];\n sponsorTimes = receivedSegments;\n existingChaptersImported = false;\n\n if (keepOldSubmissions) {\n for (const segment of oldSegments) {\n const otherSegment = sponsorTimes.find((other) => segment.UUID === other.UUID);\n if (otherSegment) {\n // If they downvoted it, or changed the category, keep it\n otherSegment.hidden = segment.hidden;\n otherSegment.category = segment.category;\n }\n }\n }\n\n // See if some segments should be hidden\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const downvotedData = Config.local.downvotedSegments[hashPrefix];\n if (downvotedData) {\n for (const segment of sponsorTimes) {\n const hashedUUID = await getHash(segment.UUID, 1);\n const segmentDownvoteData = downvotedData.segments.find((downvote) => downvote.uuid === hashedUUID);\n if (segmentDownvoteData) {\n segment.hidden = segmentDownvoteData.hidden;\n }\n }\n }\n\n hideTooShortSegments(sponsorTimes);\n\n if (!getVideo()) {\n //there is still no video here\n await waitForVideo();\n }\n\n startSkipScheduleCheckingForStartSponsors();\n\n if (!isNaN(getVideoDuration())) {\n updatePreviewBar();\n }\n }\n }\n\n notifyPopupOfSegments();\n importExistingChapters(true);\n\n if (Config.config.isVip) {\n lockedCategoriesLookup();\n }\n}\n\nfunction notifyPopupOfSegments(): void {\n // notify popup of segment changes\n chrome.runtime.sendMessage({\n message: \"infoUpdated\",\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n}\n\nfunction importExistingChapters(wait: boolean) {\n if (!existingChaptersImported && !importingChaptersWaiting && onVideoPage() && !isOnMobileYouTube()) {\n const waitCondition = () => getVideoDuration() && getExistingChapters(getVideoID(), getVideoDuration());\n\n if (wait && !document.hasFocus() && !importingChaptersWaitingForFocus && !waitCondition()) {\n importingChaptersWaitingForFocus = true;\n const listener = () => {\n importExistingChapters(wait);\n window.removeEventListener(\"focus\", listener);\n };\n window.addEventListener(\"focus\", listener);\n } else {\n importingChaptersWaiting = true;\n waitFor(waitCondition,\n wait ? 15000 : 0, 400, (c) => c?.length > 0).then((chapters) => {\n importingChaptersWaiting = false;\n\n if (!existingChaptersImported && chapters?.length > 0) {\n sponsorTimes = (sponsorTimes ?? []).concat(...chapters).sort((a, b) => a.segment[0] - b.segment[0]);\n existingChaptersImported = true;\n updatePreviewBar();\n }\n }).catch(() => { importingChaptersWaiting = false; });\n\n if (!getSkipProfileBool(\"showAutogeneratedChapters\")) {\n waitFor(() => hasAutogeneratedChapters(), wait ? 15000 : 0, 400).then(() => {\n updateActiveSegment(getCurrentTime());\n }).catch(() => { }); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n }\n }\n}\n\nfunction handleExistingChaptersChannelChange() {\n if (existingChaptersImported && hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\")) {\n sponsorTimes = sponsorTimes.filter((segment) => segment.source !== SponsorSourceType.Autogenerated);\n }\n}\n\nasync function lockedCategoriesLookup(): Promise {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n try {\n const response = await asyncRequestToServer(\"GET\", \"/api/lockCategories/\" + hashPrefix);\n\n if (response.ok) {\n const categoriesResponse = JSON.parse(response.responseText).filter((lockInfo) => lockInfo.videoID === getVideoID())[0]?.categories;\n if (Array.isArray(categoriesResponse)) {\n lockedCategories = categoriesResponse;\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"locked categories\")\n }\n } catch (e) {\n console.warn(`[SB] Caught error while looking up category locks for hashprefix ${hashPrefix}`, e)\n }\n}\n\n/**\n * Only should be used when it is okay to skip a sponsor when in the middle of it\n *\n * Ex. When segments are first loaded\n */\nfunction startSkipScheduleCheckingForStartSponsors() {\n\t// switchingVideos is ignored in Safari due to event fire order. See #1142\n if ((!switchingVideos || isSafari()) && sponsorTimes) {\n // See if there are any starting sponsors\n let startingSegmentTime = getStartTimeFromUrl(document.URL) || -1;\n let found = false;\n for (const time of sponsorTimes) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n if (!found) {\n for (const time of sponsorTimesSubmitting) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n }\n\n // For highlight category\n const poiSegments = sponsorTimes\n .filter((time) => time.segment[1] > getCurrentTime()\n && time.actionType === ActionType.Poi\n && time.hidden === SponsorHideType.Visible\n && getCategorySelection(time).option !== CategorySkipOption.Disabled)\n .sort((a, b) => b.segment[0] - a.segment[0]);\n for (const time of poiSegments) {\n const skipOption = getCategorySelection(time)?.option;\n if (skipOption !== CategorySkipOption.ShowOverlay) {\n skipToTime({\n v: getVideo(),\n skipTime: time.segment,\n skippingSegments: [time],\n openNotice: true,\n unskipTime: getCurrentTime()\n });\n if (skipOption === CategorySkipOption.AutoSkip) break;\n }\n }\n\n if (startingSegmentTime !== -1) {\n startSponsorSchedule(undefined, startingSegmentTime);\n } else {\n startSponsorSchedule();\n }\n }\n}\n\nfunction selectSegment(UUID: SegmentUUID): void {\n selectedSegment = UUID;\n updatePreviewBar();\n}\n\nfunction updatePreviewBar(): void {\n if (previewBar === null) return;\n\n if (getIsAdPlaying()) {\n previewBar.clear();\n return;\n }\n\n if (getVideo() === null) return;\n\n const hashParams = getHashParams();\n const requiredSegment = hashParams?.requiredSegment as SegmentUUID || undefined;\n const previewBarSegments: PreviewBarSegment[] = [];\n if (sponsorTimes) {\n sponsorTimes.forEach((segment) => {\n if (segment.hidden !== SponsorHideType.Visible || getCategorySelection(segment).option === CategorySkipOption.Disabled) return;\n\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: false,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source,\n requiredSegment: requiredSegment && (segment.UUID === requiredSegment || segment.UUID?.startsWith(requiredSegment) || requiredSegment.startsWith(segment.UUID)),\n selectedSegment: selectedSegment && segment.UUID === selectedSegment\n });\n });\n }\n\n sponsorTimesSubmitting.forEach((segment) => {\n if (segment.hidden === SponsorHideType.Visible\n && (segment.actionType !== ActionType.Chapter || segment.segment.length > 1)) {\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: true,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source\n });\n }\n });\n\n previewBar.set(previewBarSegments.filter((segment) => segment.actionType !== ActionType.Full), getVideoDuration())\n if (getVideo()) updateActiveSegment(getCurrentTime());\n\n if (Config.config.showTimeWithSkips) {\n const skippedDuration = utils.getTimestampsDuration(previewBarSegments\n .filter(({actionType}) => ![ActionType.Mute, ActionType.Chapter].includes(actionType))\n .map(({segment}) => segment));\n\n showTimeWithoutSkips(skippedDuration);\n }\n}\n\nfunction updateCategoryPill() {\n const fullVideoSegment = sponsorTimes.filter((time) => time.actionType === ActionType.Full)[0];\n if (fullVideoSegment && getSkipProfileBool(\"fullVideoSegments\")) {\n categoryPill?.setSegment(fullVideoSegment);\n } else {\n categoryPill?.setVisibility(false);\n }\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nasync function channelIDChange() {\n // check if the start of segments were missed\n if (Config.config.forceChannelCheck && sponsorTimes?.length > 0) startSkipScheduleCheckingForStartSponsors();\n\n hideTooShortSegments(sponsorTimes);\n handleExistingChaptersChannelChange();\n updatePreviewBar();\n updateCategoryPill();\n notifyPopupOfSegments();\n}\n\nfunction videoElementChange(newVideo: boolean, video: HTMLVideoElement): void {\n waitFor(() => Config.isReady()).then(() => {\n if (newVideo) {\n setupVideoListeners(video);\n setupSkipButtonControlBar();\n setupCategoryPill();\n }\n \n updatePreviewBar();\n checkPreviewbarState();\n \n // Incase the page is still transitioning, check again in a few seconds\n setTimeout(checkPreviewbarState, 100);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 5000);\n })\n}\n\nlet checkingPreviewbarAgain = false;\nfunction checkPreviewbarState(): void {\n if (!getPreviewBarAttachElement() && !checkingPreviewbarAgain && getVideo() && getVideoID()) {\n checkingPreviewbarAgain = true;\n setTimeout(() => {\n checkingPreviewbarAgain = false;\n checkPreviewbarState();\n }, 500);\n\n return;\n }\n\n if (previewBar && !getPreviewBarAttachElement()?.contains(previewBar.container)) {\n previewBar.remove();\n previewBar = null;\n }\n\n createPreviewBar();\n}\n\n/**\n * Returns info about the next upcoming sponsor skip\n */\nfunction getNextSkipIndex(currentTime: number, includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean):\n {array: ScheduledTime[]; index: number; endIndex: number; extraIndexes: number[]; openNotice: boolean} {\n\n const autoSkipSorter = (segment: ScheduledTime) => {\n const skipOption = getCategorySelection(segment)?.option;\n if (segment.hidden !== SponsorHideType.Visible) {\n // Hidden segments sometimes end up here if another segment is at the same time, use them last\n return 3;\n } else if ((skipOption === CategorySkipOption.AutoSkip || shouldAutoSkip(segment))\n && (segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter)) {\n return 0;\n } else if (skipOption !== CategorySkipOption.ShowOverlay) {\n return 1;\n } else {\n return 2;\n }\n }\n\n const { includedTimes: submittedArray, scheduledTimes: sponsorStartTimes } =\n getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: sponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, true);\n\n // This is an array in-case multiple segments have the exact same start time\n const minSponsorTimeIndexes = GenericUtils.indexesOf(sponsorStartTimes, Math.min(...sponsorStartTimesAfterCurrentTime));\n // Find auto skipping segments if possible, sort by duration otherwise\n const minSponsorTimeIndex = minSponsorTimeIndexes.sort(\n (a, b) => ((autoSkipSorter(submittedArray[a]) - autoSkipSorter(submittedArray[b]))\n || (submittedArray[a].segment[1] - submittedArray[a].segment[0]) - (submittedArray[b].segment[1] - submittedArray[b].segment[0])))[0] ?? -1;\n // Store extra indexes for the non-auto skipping segments if others occur at the exact same start time\n const extraIndexes = minSponsorTimeIndexes.filter((i) => i !== minSponsorTimeIndex && autoSkipSorter(submittedArray[i]) !== 0);\n\n const endTimeIndex = getLatestEndTimeIndex(submittedArray, minSponsorTimeIndex);\n\n const { includedTimes: unsubmittedArray, scheduledTimes: unsubmittedSponsorStartTimes } =\n getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: unsubmittedSponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, false);\n\n const minUnsubmittedSponsorTimeIndex = unsubmittedSponsorStartTimes.indexOf(Math.min(...unsubmittedSponsorStartTimesAfterCurrentTime));\n const previewEndTimeIndex = getLatestEndTimeIndex(unsubmittedArray, minUnsubmittedSponsorTimeIndex);\n\n if ((minUnsubmittedSponsorTimeIndex === -1 && minSponsorTimeIndex !== -1) ||\n sponsorStartTimes[minSponsorTimeIndex] < unsubmittedSponsorStartTimes[minUnsubmittedSponsorTimeIndex]) {\n return {\n array: submittedArray,\n index: minSponsorTimeIndex,\n endIndex: endTimeIndex,\n extraIndexes, // Segments at same time that need separate notices\n openNotice: true\n };\n } else {\n return {\n array: unsubmittedArray,\n index: minUnsubmittedSponsorTimeIndex,\n endIndex: previewEndTimeIndex,\n extraIndexes: [], // No manual things for unsubmitted\n openNotice: false\n };\n }\n}\n\n/**\n * This returns index if the skip option is not AutoSkip\n *\n * Finds the last endTime that occurs in a segment that the given\n * segment skips into that is part of an AutoSkip category.\n *\n * Used to find where a segment should truely skip to if there are intersecting submissions due to\n * them having different categories.\n *\n * @param sponsorTimes\n * @param index Index of the given sponsor\n * @param hideHiddenSponsors\n */\nfunction getLatestEndTimeIndex(sponsorTimes: SponsorTime[], index: number, hideHiddenSponsors = true): number {\n // Only combine segments for AutoSkip\n if (index == -1 ||\n !shouldAutoSkip(sponsorTimes[index])\n || sponsorTimes[index].actionType !== ActionType.Skip) {\n return index;\n }\n\n let latestEndTimeIndex = -1;\n // Default to looped chapter if its end would have been skipped\n if (loopedChapter\n && (loopedChapter.segment[0] > sponsorTimes[index].segment[0]\n && loopedChapter.segment[0] <= sponsorTimes[index]?.segment[1])){\n latestEndTimeIndex = sponsorTimes.length - 1;\n } else {\n // or the normal end time otherwise \n latestEndTimeIndex = index;\n }\n\n for (let i = 0; i < sponsorTimes?.length; i++) {\n const currentSegment = sponsorTimes[i].segment;\n const latestEndTime = sponsorTimes[latestEndTimeIndex].segment[1];\n\n if (currentSegment[0] - skipBuffer <= latestEndTime && currentSegment[1] > latestEndTime\n && (!hideHiddenSponsors || sponsorTimes[i].hidden === SponsorHideType.Visible)\n && shouldAutoSkip(sponsorTimes[i])\n && sponsorTimes[i].actionType === ActionType.Skip) {\n // Overlapping segment\n latestEndTimeIndex = i;\n }\n }\n\n // Keep going if required\n if (latestEndTimeIndex !== index) {\n latestEndTimeIndex = getLatestEndTimeIndex(sponsorTimes, latestEndTimeIndex, hideHiddenSponsors);\n }\n\n return latestEndTimeIndex;\n}\n\n/**\n * Gets just the start times from a sponsor times array.\n * Optionally specify a minimum\n *\n * @param sponsorTimes\n * @param minimum\n * @param hideHiddenSponsors\n * @param includeIntersectingSegments If true, it will include segments that start before\n * the current time, but end after\n */\nfunction getStartTimes(sponsorTimes: SponsorTime[], includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean,\n minimum?: number, hideHiddenSponsors = false): {includedTimes: ScheduledTime[]; scheduledTimes: number[]} {\n if (!sponsorTimes) return {includedTimes: [], scheduledTimes: []};\n\n const includedTimes: ScheduledTime[] = [];\n const scheduledTimes: number[] = [];\n\n const shouldIncludeTime = (segment: ScheduledTime ) => (minimum === undefined\n || ((includeNonIntersectingSegments && segment.scheduledTime >= minimum)\n || (includeIntersectingSegments && segment.scheduledTime < minimum\n && ((segment.segment[1] > minimum && shouldSkip(segment)) // Only include intersecting skippable segments\n || isLoopedChapter(segment)))))\n && (!hideHiddenSponsors || segment.hidden === SponsorHideType.Visible)\n && segment.segment.length === 2\n && segment.actionType !== ActionType.Poi\n && segment.actionType !== ActionType.Full;\n\n const possibleTimes = sponsorTimes.map((sponsorTime) => ({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[0]\n }));\n\n // Schedule at the end time to know when to unmute and remove title from seek bar\n sponsorTimes.forEach(sponsorTime => {\n if (!possibleTimes.some((time) => sponsorTime.segment[1] === time.scheduledTime && shouldIncludeTime(time))\n && (minimum === undefined || sponsorTime.segment[1] > minimum)) {\n possibleTimes.push({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[1]\n });\n }\n });\n\n if (loopedChapter){\n possibleTimes.push({\n ...loopedChapter,\n scheduledTime: loopedChapter.segment[0]})\n }\n\n for (let i = 0; i < possibleTimes.length; i++) {\n if (shouldIncludeTime(possibleTimes[i])) {\n scheduledTimes.push(possibleTimes[i].scheduledTime);\n includedTimes.push(possibleTimes[i]);\n }\n }\n\n return { includedTimes, scheduledTimes };\n}\n\n/**\n * Skip to exact time in a video and autoskips\n *\n * @param time\n */\nfunction previewTime(time: number, unpause = true) {\n previewedSegment = true;\n setCurrentTime(time);\n\n // Unpause the video if needed\n if (unpause && getVideo().paused){\n getVideo().play();\n }\n}\n\n//send telemetry and count skip\nfunction sendTelemetryAndCount(skippingSegments: SponsorTime[], secondsSkipped: number, fullSkip: boolean) {\n for (const segment of skippingSegments) {\n if (!previewedSegment && sponsorTimesSubmitting.some((s) => s.segment === segment.segment)) {\n // Count that as a previewed segment\n previewedSegment = true;\n }\n }\n\n if (!Config.config.trackViewCount || (!Config.config.trackViewCountInPrivate && chrome.extension.inIncognitoContext)) return;\n\n let counted = false;\n for (const segment of skippingSegments) {\n const index = sponsorTimes?.findIndex((s) => s.segment === segment.segment);\n if (index !== -1 && !sponsorSkipped[index]) {\n sponsorSkipped[index] = true;\n if (!counted) {\n Config.config.minutesSaved = Config.config.minutesSaved + secondsSkipped / 60;\n if (segment.actionType !== ActionType.Chapter) {\n Config.config.skipCount = Config.config.skipCount + 1;\n }\n counted = true;\n }\n\n if (fullSkip) asyncRequestToServer(\"POST\", \"/api/viewedVideoSponsorTime?UUID=\" + segment.UUID + \"&videoID=\" + getVideoID())\n .then(r => {\n if (!r.ok) logRequest(r, \"SB\", \"segment skip log\");\n })\n .catch(e => console.warn(\"[SB] Caught error while attempting to log segment skip\", e));\n }\n }\n}\n\n//skip from the start time to the end time for a certain index sponsor time\nfunction skipToTime({v, skipTime, skippingSegments, openNotice, forceAutoSkip, unskipTime}: SkipToTimeParams): void {\n if (Config.config.disableSkipping) return;\n\n // There will only be one submission if it is manual skip\n const autoSkip: boolean = forceAutoSkip || shouldAutoSkip(skippingSegments[0]);\n const isSubmittingSegment = sponsorTimesSubmitting.some((time) => time.segment === skippingSegments[0].segment);\n\n if ((autoSkip || isSubmittingSegment)\n && getCurrentTime() !== skipTime[1]) {\n switch(skippingSegments[0].actionType) {\n case ActionType.Poi:\n case ActionType.Chapter:\n case ActionType.Skip: {\n // Fix for looped videos not working when skipping to the end #426\n // for some reason you also can't skip to 1 second before the end\n if (v.loop && getVideoDuration() > 1 && skipTime[1] >= getVideoDuration() - 1) {\n setCurrentTime(0);\n } else if (getVideoDuration() > 1 && skipTime[1] >= getVideoDuration()\n && (navigator.vendor === \"Apple Computer, Inc.\" || isPlayingPlaylist())) {\n // MacOS will loop otherwise #1027\n // Sometimes playlists loop too #1804\n setCurrentTime(getVideoDuration() - 0.001);\n } else if (getVideoDuration() > 1 && Math.abs(skipTime[1] - getVideoDuration()) < endTimeSkipBuffer\n && isFirefoxOrSafari() && !isSafari()) {\n setCurrentTime(getVideoDuration());\n } else {\n if (inMuteSegment(skipTime[1], true)) {\n // Make sure not to mute if skipping into a mute segment\n v.muted = true;\n videoMuted = true;\n }\n\n setCurrentTime(skipTime[1]);\n }\n\n break;\n }\n case ActionType.Mute: {\n if (!v.muted) {\n v.muted = true;\n videoMuted = true;\n }\n break;\n }\n }\n }\n\n if (autoSkip && Config.config.audioNotificationOnSkip\n && !isSubmittingSegment && !getVideo()?.muted) {\n const beep = new Audio(chrome.runtime.getURL(\"icons/beep.oga\"));\n beep.volume = getVideo().volume * 0.1;\n const oldMetadata = navigator.mediaSession.metadata\n beep.play();\n beep.addEventListener(\"ended\", () => {\n navigator.mediaSession.metadata = null;\n setTimeout(() => {\n navigator.mediaSession.metadata = oldMetadata;\n beep.remove();\n });\n })\n }\n\n if (!autoSkip\n && skippingSegments.length === 1\n && skippingSegments[0].actionType === ActionType.Poi) {\n waitFor(() => skipButtonControlBar).then(() => {\n skipButtonControlBar.enable(skippingSegments[0]);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) skipButtonControlBar.setShowKeybindHint(false);\n \n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = skipButtonControlBar;\n })\n } else {\n if (openNotice) {\n //send out the message saying that a sponsor message was skipped\n if (!Config.config.dontShowNotice || !autoSkip) {\n createSkipNotice(skippingSegments, autoSkip, unskipTime, false);\n } else if (autoSkip) {\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = {\n setShowKeybindHint: () => {}, //eslint-disable-line @typescript-eslint/no-empty-function\n toggleSkip: () => {\n unskipSponsorTime(skippingSegments[0], unskipTime);\n\n createSkipNotice(skippingSegments, autoSkip, unskipTime, true);\n }\n };\n }\n }\n }\n\n //send telemetry that a this sponsor was skipped\n if (autoSkip || isSubmittingSegment) sendTelemetryAndCount(skippingSegments, skipTime[1] - skipTime[0], true);\n}\n\nfunction createSkipNotice(skippingSegments: SponsorTime[], autoSkip: boolean, unskipTime: number, startReskip: boolean, voteNotice = false) {\n for (const skipNotice of skipNotices) {\n if (skippingSegments.length === skipNotice.segments.length\n && skippingSegments.every((segment) => skipNotice.segments.some((s) => s.UUID === segment.UUID))) {\n // Skip notice already exists\n return;\n }\n }\n\n const upcomingNoticeShown = !!upcomingNotice && !upcomingNotice.closed;\n\n const newSkipNotice = new SkipNotice(skippingSegments, autoSkip, skipNoticeContentContainer, () => {\n upcomingNotice?.close();\n upcomingNotice = null;\n }, unskipTime, startReskip, upcomingNoticeShown, voteNotice);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) newSkipNotice.setShowKeybindHint(false);\n skipNotices.push(newSkipNotice);\n\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = newSkipNotice;\n}\n\nfunction createUpcomingNotice(skippingSegments: SponsorTime[], timeLeft: number, autoSkip: boolean): void {\n if (upcomingNotice \n && !upcomingNotice.closed\n && upcomingNotice.sameNotice(skippingSegments)) {\n return;\n }\n\n upcomingNotice?.close();\n upcomingNotice = new UpcomingNotice(skippingSegments, skipNoticeContentContainer, timeLeft / 1000, autoSkip);\n}\n\nfunction unskipSponsorTime(segment: SponsorTime, unskipTime: number = null, forceSeek = false, voteNotice = false) {\n if (segment.actionType === ActionType.Mute) {\n getVideo().muted = false;\n videoMuted = false;\n }\n\n if (forceSeek || segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter || voteNotice) {\n //add a tiny bit of time to make sure it is not skipped again\n setCurrentTime(unskipTime ?? segment.segment[0] + 0.001);\n }\n\n}\n\nfunction reskipSponsorTime(segment: SponsorTime, forceSeek = false) {\n if (segment.actionType === ActionType.Mute && !forceSeek) {\n getVideo().muted = true;\n videoMuted = true;\n } else {\n const skippedTime = Math.max(segment.segment[1] - getCurrentTime(), 0);\n const segmentDuration = segment.segment[1] - segment.segment[0];\n const fullSkip = skippedTime / segmentDuration > manualSkipPercentCount;\n\n setCurrentTime(segment.segment[1]);\n sendTelemetryAndCount([segment], segment.actionType !== ActionType.Chapter ? skippedTime : 0, fullSkip);\n startSponsorSchedule(true, segment.segment[1], false);\n }\n}\n\nfunction createButton(baseID: string, title: string, callback: () => void, imageName: string, isDraggable = false): HTMLElement {\n const existingElement = document.getElementById(baseID + \"Button\");\n if (existingElement !== null) return existingElement;\n\n // Button HTML\n const newButton = document.createElement(\"button\");\n newButton.draggable = isDraggable;\n newButton.id = baseID + \"Button\";\n newButton.classList.add(\"playerButton\");\n newButton.classList.add(\"ytp-button\");\n if (Config.config.prideTheme) newButton.classList.add(\"prideTheme\");\n if (isOnYTTV()) {\n // Some style needs to be set here, but the numbers don't matter \n newButton.setAttribute(\"style\", \"width: 40px; height: 40px\");\n }\n newButton.setAttribute(\"title\", chrome.i18n.getMessage(title));\n newButton.addEventListener(\"click\", () => {\n callback();\n });\n\n // Image HTML\n const newButtonImage = document.createElement(\"img\");\n newButton.draggable = isDraggable;\n newButtonImage.id = baseID + \"Image\";\n newButtonImage.className = \"playerButtonImage\";\n newButtonImage.src = chrome.runtime.getURL(\"icons/\" + imageName);\n\n // Append image to button\n newButton.appendChild(newButtonImage);\n\n // Add the button to player\n if (controls) controls.prepend(newButton);\n\n // Store the elements to prevent unnecessary querying\n playerButtons[baseID] = {\n button: newButton,\n image: newButtonImage,\n setupListener: false\n };\n\n return newButton;\n}\n\nfunction shouldAutoSkip(segment: SponsorTime): boolean {\n const canSkipNonMusic = !Config.config.skipNonMusicOnlyOnYoutubeMusic || isOnYouTubeMusic();\n if (segment.category === \"music_offtopic\" && !canSkipNonMusic) {\n return false;\n }\n\n return (!getSkipProfileBool(\"manualSkipOnFullVideo\") || !sponsorTimes?.some((s) => s.category === segment.category && s.actionType === ActionType.Full))\n && (getCategorySelection(segment)?.option === CategorySkipOption.AutoSkip ||\n (getSkipProfileBool(\"autoSkipOnMusicVideos\") && canSkipNonMusic && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || sponsorTimesSubmitting.some((s) => s.segment === segment.segment))\n || isLoopedChapter(segment);\n}\n\nfunction shouldSkip(segment: SponsorTime): boolean {\n return segment.hidden === SponsorHideType.Visible && (segment.actionType !== ActionType.Full\n && getCategorySelection(segment)?.option > CategorySkipOption.ShowOverlay)\n || (getSkipProfileBool(\"autoSkipOnMusicVideos\") && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || isLoopedChapter(segment);\n}\n\nfunction isLoopedChapter(segment: SponsorTime): boolean{\n return !!segment && !!loopedChapter && segment.segment[1] != undefined\n && segment.segment[0] === loopedChapter.segment[0] && segment.segment[1] === loopedChapter.segment[1];\n}\n\n/** Creates any missing buttons on the YouTube player if possible. */\nasync function createButtons(): Promise {\n controls = await utils.wait(getControls).catch();\n\n // Add button if does not already exist in html\n createButton(\"startSegment\", \"sponsorStart\", () => startOrEndTimingNewSegment(), \"PlayerStartIconSponsorBlocker.svg\");\n createButton(\"cancelSegment\", \"sponsorCancel\", () => cancelCreatingSegment(), \"PlayerCancelSegmentIconSponsorBlocker.svg\");\n createButton(\"delete\", \"clearTimes\", () => clearSponsorTimes(), \"PlayerDeleteIconSponsorBlocker.svg\");\n createButton(\"submit\", \"OpenSubmissionMenu\", () => openSubmissionMenu(), \"PlayerUploadIconSponsorBlocker.svg\");\n createButton(\"info\", \"openPopup\", () => openInfoMenu(), \"PlayerInfoIconSponsorBlocker.svg\");\n\n const controlsContainer = getControls();\n if (Config.config.autoHideInfoButton && !isOnInvidious() && controlsContainer\n && playerButtons[\"info\"]?.button && !controlsWithEventListeners.includes(controlsContainer)) {\n controlsWithEventListeners.push(controlsContainer);\n\n AnimationUtils.setupAutoHideAnimation(playerButtons[\"info\"].button, controlsContainer);\n }\n}\n\n/** Creates any missing buttons on the player and updates their visiblity. */\nasync function updateVisibilityOfPlayerControlsButton(): Promise {\n // Not on a proper video yet\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n await createButtons();\n\n updateEditButtonsOnPlayer();\n\n // Don't show the info button on embeds\n if (Config.config.hideInfoButtonPlayerControls || document.URL.includes(\"/embed/\") || isOnInvidious() || isOnYTTV()\n || document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n playerButtons.info.button.style.display = \"none\";\n } else {\n playerButtons.info.button.style.removeProperty(\"display\");\n }\n}\n\n/** Updates the visibility of buttons on the player related to creating segments. */\nfunction updateEditButtonsOnPlayer(): void {\n // Don't try to update the buttons if we aren't on a YouTube video page\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n const buttonsEnabled = !(Config.config.hideVideoPlayerControls || isOnInvidious());\n\n let creatingSegment = false;\n let submitButtonVisible = false;\n let deleteButtonVisible = false;\n\n // Only check if buttons should be visible if they're enabled\n if (buttonsEnabled) {\n creatingSegment = isSegmentCreationInProgress();\n\n // Show only if there are any segments to submit\n submitButtonVisible = sponsorTimesSubmitting.length > 0;\n\n // Show only if there are any segments to delete\n deleteButtonVisible = sponsorTimesSubmitting.length > 1 || (sponsorTimesSubmitting.length > 0 && !creatingSegment);\n }\n\n // Update the elements\n playerButtons.startSegment.button.style.display = buttonsEnabled ? \"unset\" : \"none\";\n playerButtons.cancelSegment.button.style.display = buttonsEnabled && creatingSegment ? \"unset\" : \"none\";\n\n if (buttonsEnabled) {\n if (creatingSegment) {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStopIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorEnd\"));\n } else {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStartIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorStart\"));\n }\n }\n\n playerButtons.submit.button.style.display = submitButtonVisible && !Config.config.hideUploadButtonPlayerControls ? \"unset\" : \"none\";\n playerButtons.delete.button.style.display = deleteButtonVisible && !Config.config.hideDeleteButtonPlayerControls ? \"unset\" : \"none\";\n}\n\n/**\n * Used for submitting. This will use the HTML displayed number when required as the video's\n * current time is out of date while scrubbing or at the end of the getVideo(). This is not needed\n * for sponsor skipping as the video is not playing during these times.\n */\nfunction getRealCurrentTime(): number {\n // Used to check if replay button\n const playButtonSVGData = document.querySelector(\".ytp-play-button\")?.querySelector(\".ytp-svg-fill\")?.getAttribute(\"d\");\n const replaceSVGData = \"M 18,11 V 7 l -5,5 5,5 v -4 c 3.3,0 6,2.7 6,6 0,3.3 -2.7,6 -6,6 -3.3,0 -6,-2.7 -6,-6 h -2 c 0,4.4 3.6,8 8,8 4.4,0 8,-3.6 8,-8 0,-4.4 -3.6,-8 -8,-8 z\";\n\n if (playButtonSVGData === replaceSVGData) {\n // At the end of the video\n return getVideoDuration();\n } else {\n return getCurrentTime();\n }\n}\n\nfunction startOrEndTimingNewSegment() {\n if (isOnYTTV() && getIsLivePremiere()) {\n alert(chrome.i18n.getMessage(\"yttvLiveContentWarning\"));\n return;\n }\n\n verifyCurrentTime(getRealCurrentTime());\n const roundedTime = Math.round((getRealCurrentTime() + Number.EPSILON) * 1000) / 1000;\n if (!isSegmentCreationInProgress()) {\n sponsorTimesSubmitting.push({\n segment: [roundedTime],\n UUID: generateUserID() as SegmentUUID,\n category: Config.config.defaultCategory,\n actionType: ActionType.Skip,\n source: SponsorSourceType.Local\n });\n } else {\n // Finish creating the new segment\n const existingSegment = getIncompleteSegment();\n const existingTime = existingSegment.segment[0];\n const currentTime = roundedTime;\n\n // Swap timestamps if the user put the segment end before the start\n existingSegment.segment = [Math.min(existingTime, currentTime), Math.max(existingTime, currentTime)];\n }\n\n // Save the newly created segment\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Make sure they know if someone has already submitted something it while they were watching\n sponsorsLookup(true, true);\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n\n importExistingChapters(false);\n\n if (lastResponseStatus !== 200 && lastResponseStatus !== 404\n && !shownSegmentFailedToFetchWarning && Config.config.showSegmentFailedToFetchWarning) {\n alert(chrome.i18n.getMessage(\"segmentFetchFailureWarning\"));\n\n shownSegmentFailedToFetchWarning = true;\n }\n}\n\nfunction getIncompleteSegment(): SponsorTime {\n return sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1];\n}\n\n/** Is the latest submitting segment incomplete */\nfunction isSegmentCreationInProgress(): boolean {\n const segment = getIncompleteSegment();\n return segment && segment?.segment?.length !== 2;\n}\n\nfunction cancelCreatingSegment() {\n if (isSegmentCreationInProgress()) {\n if (sponsorTimesSubmitting.length > 1) { // If there's more than one segment: remove last\n sponsorTimesSubmitting.pop();\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n } else { // Otherwise delete the video entry & close submission menu\n resetSponsorSubmissionNotice();\n sponsorTimesSubmitting = [];\n delete Config.local.unsubmittedSegments[getVideoID()];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n}\n\nfunction updateSponsorTimesSubmitting(getFromConfig = true) {\n const segmentTimes = Config.local.unsubmittedSegments[getVideoID()];\n\n //see if this data should be saved in the sponsorTimesSubmitting variable\n if (getFromConfig && segmentTimes != undefined) {\n sponsorTimesSubmitting = [];\n\n for (const segmentTime of segmentTimes) {\n sponsorTimesSubmitting.push({\n segment: segmentTime.segment,\n UUID: segmentTime.UUID,\n category: segmentTime.category,\n actionType: segmentTime.actionType,\n description: segmentTime.description,\n hidden: segmentTime.hidden,\n source: segmentTime.source\n });\n }\n\n if (sponsorTimesSubmitting.length > 0) {\n // Assume they already previewed a segment\n previewedSegment = true;\n\n importExistingChapters(true);\n }\n }\n\n updatePreviewBar();\n\n // Restart skipping schedule\n if (getVideo() !== null) startSponsorSchedule();\n\n if (submissionNotice !== null) {\n submissionNotice.update();\n }\n\n checkForPreloadedSegment();\n}\n\nfunction openInfoMenu() {\n if (document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //it's already added\n return;\n }\n\n popupInitialised = false;\n\n //hide info button\n if (playerButtons.info) playerButtons.info.button.style.display = \"none\";\n\n const popup = document.createElement(\"div\");\n popup.id = \"sponsorBlockPopupContainer\";\n\n const frame = document.createElement(\"iframe\");\n frame.width = \"374\";\n frame.height = \"500\";\n frame.style.borderRadius = \"12px\";\n frame.addEventListener(\"load\", async () => {\n frame.contentWindow.postMessage(\"\", \"*\");\n\n // To support userstyles applying to the popup\n const stylusStyle = document.querySelector(\".stylus\");\n if (stylusStyle) {\n frame.contentWindow.postMessage({\n type: \"style\",\n css: stylusStyle.textContent\n }, \"*\");\n }\n\n const enhancerStyle = document.getElementById(\"efyt-theme\");\n if (enhancerStyle) {\n const enhancerStyleVariables = document.getElementById(\"efyt-theme-variables\");\n if (enhancerStyleVariables) {\n const enhancerCss = await fetch(enhancerStyle.getAttribute(\"href\")).then((response) => response.text());\n const enhancerVariablesCss = await fetch(enhancerStyleVariables.getAttribute(\"href\")).then((response) => response.text());\n\n if (enhancerCss && enhancerVariablesCss) {\n frame.contentWindow.postMessage({\n type: \"style\",\n // Image needs needs to reference the full url now\n css: enhancerCss.replace(\"./images/youtube-deep-dark/IconSponsorBlocker256px.png\",\n \"https://raw.githubusercontent.com/RaitaroH/YouTube-DeepDark/master/YT_Images/IconSponsorBlocker256px.png\")\n + enhancerVariablesCss\n }, \"*\");\n }\n }\n }\n });\n frame.src = chrome.runtime.getURL(\"popup.html\");\n popup.appendChild(frame);\n\n const elemHasChild = (elements: NodeListOf): Element => {\n let parentNode: Element;\n for (const node of elements) {\n if (node.firstElementChild !== null) {\n parentNode = node;\n }\n }\n return parentNode\n }\n\n const parentNodeOptions = [{\n // YouTube\n selector: \"#secondary-inner\",\n hasChildCheck: true\n }, {\n // old youtube theme\n selector: \"#watch7-sidebar-contents\",\n }];\n for (const option of parentNodeOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.hasChildCheck ? elemHasChild(allElements) : allElements[0];\n\n if (el) {\n if (option.hasChildCheck) el.insertBefore(popup, el.firstChild);\n break;\n }\n }\n}\n\nfunction closeInfoMenu() {\n const popup = document.getElementById(\"sponsorBlockPopupContainer\");\n if (popup === null) return;\n\n popup.remove();\n\n // Show info button if it's not an embed\n if (!document.URL.includes(\"/embed/\") && playerButtons.info) {\n playerButtons.info.button.style.display = \"unset\";\n }\n}\n\nfunction clearSponsorTimes() {\n const currentVideoID = getVideoID();\n\n const sponsorTimes = Config.local.unsubmittedSegments[currentVideoID];\n\n if (sponsorTimes != undefined && sponsorTimes.length > 0) {\n const confirmMessage = chrome.i18n.getMessage(\"clearThis\") + getSegmentsMessage(sponsorTimes)\n + \"\\n\" + chrome.i18n.getMessage(\"confirmMSG\")\n if(!confirm(confirmMessage)) return;\n\n resetSponsorSubmissionNotice();\n\n //clear the sponsor times\n delete Config.local.unsubmittedSegments[currentVideoID];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n //clear sponsor times submitting\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateEditButtonsOnPlayer();\n }\n}\n\n//if skipNotice is null, it will not affect the UI\nasync function vote(type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent): Promise {\n if (skipNotice !== null && skipNotice !== undefined) {\n //add loading info\n skipNotice.addVoteButtonInfo(chrome.i18n.getMessage(\"Loading\"))\n skipNotice.setNoticeInfoMessage();\n }\n\n const response = await voteAsync(type, UUID, category);\n if (response != undefined) {\n //see if it was a success or failure\n if (skipNotice != null) {\n if (\"error\" in response) {\n skipNotice.setNoticeInfoMessage(formatJSErrorMessage(response.error))\n skipNotice.resetVoteButtonInfo();\n } else if (response.ok || response.status === 429) {\n //success (treat rate limits as a success)\n skipNotice.afterVote(utils.getSponsorTimeFromUUID(sponsorTimes, UUID), type, category);\n } else {\n logRequest({headers: null, ...response}, \"SB\", \"vote on segment\");\n if (response.status === 403 && response.responseText.startsWith(\"Vote rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n skipNotice.setNoticeInfoMessage(getLongErrorMessage(response.status, response.responseText))\n }\n\n skipNotice.resetVoteButtonInfo();\n }\n }\n }\n\n return response;\n}\n\nasync function voteAsync(type: number, UUID: SegmentUUID, category?: Category): Promise {\n const sponsorIndex = utils.getSponsorIndexFromUUID(sponsorTimes, UUID);\n\n // Don't vote for preview sponsors\n if (sponsorIndex == -1 || sponsorTimes[sponsorIndex].source !== SponsorSourceType.Server) return Promise.resolve(undefined);\n\n // See if the local time saved count and skip count should be saved\n if (type === 0 && sponsorSkipped[sponsorIndex] || type === 1 && !sponsorSkipped[sponsorIndex]) {\n let factor = 1;\n if (type == 0) {\n factor = -1;\n\n sponsorSkipped[sponsorIndex] = false;\n }\n\n // Count this as a skip\n Config.config.minutesSaved = Config.config.minutesSaved + factor * (sponsorTimes[sponsorIndex].segment[1] - sponsorTimes[sponsorIndex].segment[0]) / 60;\n\n Config.config.skipCount = Config.config.skipCount + factor;\n }\n\n return new Promise((resolve) => {\n chrome.runtime.sendMessage({\n message: \"submitVote\",\n type: type,\n UUID: UUID,\n category: category,\n videoID: getVideoID()\n }, (response) => {\n if (response.ok === true) {\n // Change the sponsor locally\n const segment = utils.getSponsorTimeFromUUID(sponsorTimes, UUID);\n if (segment) {\n if (type === 0) {\n segment.hidden = SponsorHideType.Downvoted;\n } else if (category) {\n segment.category = category;\n } else if (type === 1) {\n segment.hidden = SponsorHideType.Visible;\n }\n\n if (!category && !Config.config.isVip) {\n utils.addHiddenSegment(getVideoID(), segment.UUID, segment.hidden);\n }\n\n updatePreviewBar();\n }\n }\n\n resolve(response);\n });\n });\n}\n\n//Closes all notices that tell the user that a sponsor was just skipped\nfunction closeAllSkipNotices(){\n const notices = document.getElementsByClassName(\"sponsorSkipNotice\");\n for (let i = 0; i < notices.length; i++) {\n notices[i].remove();\n }\n}\n\nfunction dontShowNoticeAgain() {\n Config.config.dontShowNotice = true;\n closeAllSkipNotices();\n}\n\n/**\n * Helper method for the submission notice to clear itself when it closes\n */\nfunction resetSponsorSubmissionNotice(callRef = true) {\n submissionNotice?.close(callRef);\n submissionNotice = null;\n}\n\nfunction closeSubmissionMenu() {\n submissionNotice?.close();\n submissionNotice = null;\n}\n\nfunction openSubmissionMenu() {\n if (submissionNotice !== null){\n closeSubmissionMenu();\n return;\n }\n\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n submissionNotice = new SubmissionNotice(skipNoticeContentContainer, sendSubmitMessage);\n }\n}\n\nfunction previewRecentSegment() {\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n previewTime(sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment[0] - defaultPreviewTime);\n \n if (submissionNotice) {\n submissionNotice.scrollToBottom();\n }\n }\n}\n\nfunction submitSegments() {\n if (sponsorTimesSubmitting !== undefined\n && sponsorTimesSubmitting.length > 0\n && submissionNotice !== null) {\n submissionNotice.submit();\n }\n\n}\n\n//send the message to the background js\n//called after all the checks have been made that it's okay to do so\nasync function sendSubmitMessage(): Promise {\n // check if all segments are full video\n const onlyFullVideo = sponsorTimesSubmitting.every((segment) => segment.actionType === ActionType.Full);\n // Block if submitting on a running livestream or premiere\n if (!onlyFullVideo && (getIsLivePremiere() || isVisible(document.querySelector(\".ytp-live-badge\")))) {\n alert(chrome.i18n.getMessage(\"liveOrPremiere\"));\n return false;\n }\n\n if (!previewedSegment \n && !sponsorTimesSubmitting.every((segment) => \n [ActionType.Full, ActionType.Chapter, ActionType.Poi].includes(segment.actionType) \n || segment.segment[1] >= getVideoDuration()\n || segment.segment[0] === 0)) {\n alert(`${chrome.i18n.getMessage(\"previewSegmentRequired\")} ${keybindToString(Config.config.previewKeybind)}`);\n return false;\n }\n\n // Add loading animation\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadIconSponsorBlocker.svg\");\n const stopAnimation = AnimationUtils.applyLoadingAnimation(playerButtons.submit.button, 1, () => updateEditButtonsOnPlayer());\n\n //check if a sponsor exceeds the duration of the video\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n if (sponsorTimesSubmitting[i].segment[1] > getVideoDuration()) {\n sponsorTimesSubmitting[i].segment[1] = getVideoDuration();\n }\n }\n\n //update sponsorTimes\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Check to see if any of the submissions are below the minimum duration set\n if (Config.config.minDuration > 0) {\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n const duration = sponsorTimesSubmitting[i].segment[1] - sponsorTimesSubmitting[i].segment[0];\n if (duration > 0 && duration < Config.config.minDuration) {\n const confirmShort = chrome.i18n.getMessage(\"shortCheck\") + \"\\n\\n\" +\n getSegmentsMessage(sponsorTimesSubmitting);\n\n if(!confirm(confirmShort)) return false;\n }\n }\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"POST\", \"/api/skipSegments\", {\n videoID: getVideoID(),\n userID: Config.config.userID,\n segments: sponsorTimesSubmitting,\n videoDuration: getVideoDuration(),\n userAgent: extensionUserAgent(),\n });\n } catch (e) {\n console.error(\"[SB] Caught error while attempting to submit segments\", e);\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n alert(formatJSErrorMessage(e));\n return false;\n }\n\n if (response.status === 200) {\n stopAnimation();\n\n // Remove segments from storage since they've already been submitted\n delete Config.local.unsubmittedSegments[getVideoID()];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n const newSegments = sponsorTimesSubmitting;\n try {\n const receivedNewSegments = JSON.parse(response.responseText);\n if (receivedNewSegments?.length === newSegments.length) {\n for (let i = 0; i < receivedNewSegments.length; i++) {\n newSegments[i].UUID = receivedNewSegments[i].UUID;\n newSegments[i].source = SponsorSourceType.Server;\n }\n }\n } catch(e) {} // eslint-disable-line no-empty\n\n // Add submissions to current sponsors list\n sponsorTimes = (sponsorTimes || []).concat(newSegments).sort((a, b) => a.segment[0] - b.segment[0]);\n\n // Increase contribution count\n Config.config.sponsorTimesContributed = Config.config.sponsorTimesContributed + sponsorTimesSubmitting.length;\n\n // New count just used to see if a warning \"Read The Guidelines!!\" message needs to be shown\n // One per time submitting\n Config.config.submissionCountSinceCategories = Config.config.submissionCountSinceCategories + 1;\n\n // Empty the submitting times\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateCategoryPill();\n\n return true;\n } else {\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n\n if (response.status === 403 && response.responseText.startsWith(\"Submission rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n logRequest(response, \"SB\", \"segment submission\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n\n return false;\n}\n\n//get the message that visually displays the video times\nfunction getSegmentsMessage(sponsorTimes: SponsorTime[]): string {\n let sponsorTimesMessage = \"\";\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n for (let s = 0; s < sponsorTimes[i].segment.length; s++) {\n let timeMessage = getFormattedTime(sponsorTimes[i].segment[s]);\n //if this is an end time\n if (s == 1) {\n timeMessage = \" \" + chrome.i18n.getMessage(\"to\") + \" \" + timeMessage;\n } else if (i > 0) {\n //add commas if necessary\n timeMessage = \", \" + timeMessage;\n }\n\n sponsorTimesMessage += timeMessage;\n }\n }\n\n return sponsorTimesMessage;\n}\n\nfunction updateActiveSegment(currentTime: number): void {\n if (!chrome.runtime?.id) return;\n\n previewBar?.updateChapterText(sponsorTimes, sponsorTimesSubmitting, currentTime);\n\n chrome.runtime.sendMessage({\n message: \"time\",\n time: currentTime\n });\n}\n\nfunction nextChapter(): void {\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) return;\n\n lastNextChapterKeybind.time = getCurrentTime();\n lastNextChapterKeybind.date = Date.now();\n\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime());\n if (nextChapter !== -1) {\n setCurrentTime(chapters[nextChapter].segment[0]);\n } else {\n setCurrentTime(getVideoDuration());\n }\n}\n\nfunction previousChapter(): void {\n if (Date.now() - lastNextChapterKeybind.date < 3000) {\n setCurrentTime(lastNextChapterKeybind.time);\n lastNextChapterKeybind.date = 0;\n return;\n }\n\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) {\n setCurrentTime(0);\n return;\n }\n\n // subtract 5 seconds to allow skipping back to the previous chapter if close to start of\n // the current one\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime() - Math.min(5, time.segment[1] - time.segment[0]));\n const previousChapter = nextChapter !== -1 ? (nextChapter - 1) : (chapters.length - 1);\n if (previousChapter !== -1) {\n setCurrentTime(chapters[previousChapter].segment[0]);\n } else {\n setCurrentTime(0);\n }\n}\n\nasync function handleKeybindVote(type: number): Promise{\n let lastSkipNotice = skipNotices[0]?.skipNoticeRef.current;\n lastSkipNotice?.onMouseEnter();\n\n if (!lastSkipNotice) {\n const lastSegment = [...sponsorTimes].reverse()?.find((s) => s.source == SponsorSourceType.Server && (s.segment[0] <= getCurrentTime() && getCurrentTime() - (s.segment[1] || s.segment[0]) <= Config.config.skipNoticeDuration));\n if (!lastSegment) return;\n\n createSkipNotice([lastSegment], shouldAutoSkip(lastSegment), lastSegment?.segment[0] + 0.001,false, true);\n lastSkipNotice = await skipNotices[0].waitForSkipNoticeRef();\n lastSkipNotice?.reskippedMode(0);\n }\n\n vote(type,lastSkipNotice?.segments[0]?.UUID, undefined, lastSkipNotice);\n return;\n}\n\nfunction addHotkeyListener(): void {\n document.addEventListener(\"keydown\", hotkeyListener, true);\n document.addEventListener(\"keyup\", hotkeyPropagationListener, true);\n\n addCleanupListener(() => {\n document.body.removeEventListener(\"keydown\", hotkeyListener, true);\n document.body.removeEventListener(\"keyup\", hotkeyPropagationListener, true);\n });\n}\n\nfunction hotkeyListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const skipKey = Config.config.skipKeybind;\n const skipToHighlightKey = Config.config.skipToHighlightKeybind;\n const closeSkipNoticeKey = Config.config.closeSkipNoticeKeybind;\n const startSponsorKey = Config.config.startSponsorKeybind;\n const submitKey = Config.config.actuallySubmitKeybind;\n const previewKey = Config.config.previewKeybind;\n const openSubmissionMenuKey = Config.config.submitKeybind;\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n const upvoteKey = Config.config.upvoteKeybind;\n const downvoteKey = Config.config.downvoteKeybind;\n\n if (keybindEquals(key, skipKey)) {\n if (activeSkipKeybindElement && !(activeSkipKeybindElement instanceof SkipButtonControlBar)) {\n activeSkipKeybindElement.toggleSkip.call(activeSkipKeybindElement);\n }\n\n return;\n } else if (keybindEquals(key, skipToHighlightKey)) {\n if (skipButtonControlBar) {\n skipButtonControlBar.toggleSkip.call(skipButtonControlBar);\n }\n\n return;\n } else if (keybindEquals(key, closeSkipNoticeKey)) {\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop().close();\n }\n \n upcomingNotice?.close();\n upcomingNotice = null;\n return;\n } else if (keybindEquals(key, startSponsorKey)) {\n startOrEndTimingNewSegment();\n return;\n } else if (keybindEquals(key, submitKey)) {\n submitSegments();\n return;\n } else if (keybindEquals(key, openSubmissionMenuKey)) {\n e.preventDefault();\n\n openSubmissionMenu();\n return;\n } else if (keybindEquals(key, previewKey)) {\n previewRecentSegment();\n return;\n } else if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n nextChapter();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n previousChapter();\n return;\n } else if (keybindEquals(key, upvoteKey)) {\n handleKeybindVote(1);\n return;\n } else if (keybindEquals(key, downvoteKey)) {\n handleKeybindVote(0);\n return;\n }\n}\n\nfunction hotkeyPropagationListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n\n if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n }\n}\n\n/**\n * Adds the CSS to the page if needed. Required on optional sites with Chrome.\n */\nfunction addCSS() {\n if (!isFirefoxOrSafari() && Config.config.invidiousInstances.includes(new URL(document.URL).hostname)) {\n const onLoad = () => {\n const head = document.getElementsByTagName(\"head\")[0];\n\n for (const file of utils.css) {\n const fileref = document.createElement(\"link\");\n\n fileref.rel = \"stylesheet\";\n fileref.type = \"text/css\";\n fileref.href = chrome.runtime.getURL(file);\n\n head.appendChild(fileref);\n }\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n document.addEventListener(\"DOMContentLoaded\", onLoad);\n }\n }\n}\n\n/**\n * Update the isAdPlaying flag and hide preview bar/controls if ad is playing\n */\nfunction updateAdFlag(): void {\n const wasAdPlaying = getIsAdPlaying();\n setIsAdPlaying(document.getElementsByClassName('ad-showing').length > 0);\n if(wasAdPlaying != getIsAdPlaying()) {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n }\n}\n\nfunction showTimeWithoutSkips(skippedDuration: number): void {\n if (isNaN(skippedDuration) || skippedDuration < 0) {\n skippedDuration = 0;\n }\n\n // YouTube player time display\n const selector =\n isOnInvidious() ? \".vjs-duration\" :\n isOnYTTV() ? \".ypl-full-controls .ypmcs-control .time-info-bar\" :\n isOnMobileYouTube() ? \".ytwPlayerTimeDisplayContent\" :\n \".ytp-time-display.notranslate .ytp-time-wrapper .ytp-time-contents\";\n const display = document.querySelector(selector);\n if (!display) return;\n\n const durationID = \"sponsorBlockDurationAfterSkips\";\n let duration = document.getElementById(durationID);\n\n // Create span if needed\n if (duration === null) {\n duration = document.createElement('span');\n duration.id = durationID;\n\n if (isOnMobileYouTube()) {\n duration.style.paddingLeft = \"4px\";\n display.insertBefore(duration, display.lastChild);\n } else {\n display.appendChild(duration);\n }\n }\n\n const durationAfterSkips = getFormattedTime(getVideoDuration() - skippedDuration);\n\n duration.innerText = (durationAfterSkips == null || skippedDuration <= 0) ? \"\" : \" (\" + durationAfterSkips + \")\";\n}\n\nfunction checkForPreloadedSegment() {\n if (loadedPreloadedSegment) return;\n\n loadedPreloadedSegment = true;\n const hashParams = getHashParams();\n\n let pushed = false;\n const segments = hashParams.segments;\n if (Array.isArray(segments)) {\n for (const segment of segments) {\n if (Array.isArray(segment.segment)) {\n if (!sponsorTimesSubmitting.some((s) => s.segment[0] === segment.segment[0] && s.segment[1] === s.segment[1])) {\n sponsorTimesSubmitting.push({\n segment: segment.segment,\n UUID: generateUserID() as SegmentUUID,\n category: segment.category ? segment.category : Config.config.defaultCategory,\n actionType: segment.actionType ? segment.actionType : ActionType.Skip,\n description: segment.description ?? \"\",\n source: SponsorSourceType.Local\n });\n\n pushed = true;\n }\n }\n }\n }\n\n if (pushed) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n}\n\n// Generate and inject a stylesheet that creates CSS variables with configured category colors\nfunction setCategoryColorCSSVariables() {\n let styleContainer = document.getElementById(\"sbCategoryColorStyle\");\n if (!styleContainer) {\n styleContainer = document.createElement(\"style\");\n styleContainer.id = \"sbCategoryColorStyle\";\n if (isVorapisInstalled()) {\n // Vorapi deletes styles\n styleContainer.className = 'stylus';\n }\n\n const head = (document.head || document.documentElement);\n head.appendChild(styleContainer)\n }\n\n let css = \":root {\"\n for (const [category, config] of Object.entries(Config.config.barTypes)) {\n css += `--sb-category-${category}: ${config.color};`;\n css += `--darkreader-bg--sb-category-${category}: ${config.color};`;\n\n const luminance = GenericUtils.getLuminance(config.color);\n css += `--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n css += `--darkreader-text--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n }\n css += \"}\";\n\n styleContainer.innerText = css;\n}\n\n/**\n * If mini player starts playing, then videoID change might have to be called\n */\nfunction checkForMiniplayerPlaying() {\n const miniPlayerUI = document.querySelector(\".miniplayer\") as HTMLElement;\n if (!onVideoPage() && isVisible(miniPlayerUI)) {\n const videoID = getLastNonInlineVideoID();\n if (videoID) {\n triggerVideoIDChange(videoID);\n\n // treat as if video element has changed\n const video = miniPlayerUI.querySelector(\"video\") as HTMLVideoElement;\n if (video && getVideo() !== video) {\n triggerVideoElementChange(video);\n }\n }\n }\n}\n","import { waitFor } from \"../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../maze-utils/src/elements\";\nimport { getHash } from \"../maze-utils/src/hash\";\nimport { getVideoID, isOnInvidious, isOnMobileYouTube } from \"../maze-utils/src/video\";\nimport Config from \"./config\";\nimport { Tooltip } from \"./render/Tooltip\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\nimport { isVisible } from \"./utils/pageUtils\";\nimport { asyncRequestToServer } from \"./utils/requests\";\n\nlet tooltip: Tooltip = null;\nconst showDeArrowPromotion = false;\nexport async function tryShowingDeArrowPromotion() {\n if (showDeArrowPromotion\n && Config.config.showDeArrowPromotion\n && !isOnMobileYouTube()\n && !isOnInvidious()\n && document.URL.includes(\"watch\")\n && Config.config.showUpsells \n && Config.config.showNewFeaturePopups\n && (Config.config.skipCount > 30 || !Config.config.trackViewCount)) {\n\n if (!await isDeArrowInstalled()) {\n try {\n const element = await waitFor(() => getYouTubeTitleNode(), 5000, 500, (e) => isVisible(e)) as HTMLElement;\n if (element && element.innerText && badTitle(element.innerText)) {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n const deArrowData = await asyncRequestToServer(\"GET\", \"/api/branding/\" + hashPrefix);\n if (!deArrowData.ok) return;\n\n const deArrowDataJson = JSON.parse(deArrowData.responseText);\n const title = deArrowDataJson?.[getVideoID()]?.titles?.[0];\n if (title && title.title && (title.locked || title.votes > 0)) {\n Config.config.showDeArrowPromotion = false;\n\n tooltip = new Tooltip({\n text: chrome.i18n.getMessage(\"DeArrowTitleReplacementSuggestion\") + \"\\n\\n\" + title.title,\n linkOnClick: () => {\n window.open(\"https://dearrow.ajay.app\");\n Config.config.shownDeArrowPromotion = true;\n },\n secondButtonText: chrome.i18n.getMessage(\"hideNewFeatureUpdates\"),\n referenceNode: element,\n prependElement: element.firstElementChild as HTMLElement,\n timeout: 15000,\n positionRealtive: false,\n containerAbsolute: true,\n bottomOffset: \"inherit\",\n topOffset: \"55px\",\n leftOffset: \"0\",\n rightOffset: \"0\",\n topTriangle: true,\n center: true,\n opacity: 1\n });\n }\n }\n } catch { } // eslint-disable-line no-empty\n } else {\n Config.config.showDeArrowPromotion = false;\n }\n }\n}\n\n/**\n * Two upper case words (at least 2 letters long)\n */\nfunction badTitle(title: string): boolean {\n return !!title.match(/\\p{Lu}{2,} \\p{Lu}{2,}[.!? ]/u);\n}\n\nexport function hideDeArrowPromotion(): void {\n if (tooltip) tooltip.close();\n}\n","/*\nBased on code from\nhttps://github.com/videosegments/videosegments/commits/f1e111bdfe231947800c6efdd51f62a4e7fef4d4/segmentsbar/segmentsbar.js\n*/\n\nimport Config from \"../config\";\nimport { ChapterVote } from \"../render/ChapterVote\";\nimport { ActionType, Category, CategorySkipOption, SegmentContainer, SponsorHideType, SponsorSourceType, SponsorTime } from \"../types\";\nimport { partition } from \"../utils/arrayUtils\";\nimport { DEFAULT_CATEGORY, shortCategoryName } from \"../utils/categoryUtils\";\nimport { normalizeChapterName } from \"../utils/exporter\";\nimport { findNonEmptyElement, findValidElement } from \"../../maze-utils/src/dom\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\nimport { hasAutogeneratedChapters, isVisible } from \"../utils/pageUtils\";\nimport { isVorapisInstalled } from \"../utils/compatibility\";\nimport { isOnYTTV } from \"../../maze-utils/src/video\";\nimport { getCategorySelection } from \"../utils/skipRule\";\nimport { getSkipProfileBool } from \"../utils/skipProfiles\";\n\nconst TOOLTIP_VISIBLE_CLASS = 'sponsorCategoryTooltipVisible';\nconst MIN_CHAPTER_SIZE = 0.003;\n\nexport interface PreviewBarSegment {\n segment: [number, number];\n category: Category;\n actionType: ActionType;\n unsubmitted: boolean;\n showLarger: boolean;\n description: string;\n source: SponsorSourceType;\n requiredSegment?: boolean;\n selectedSegment?: boolean;\n}\n\ninterface ChapterGroup extends SegmentContainer {\n originalDuration: number;\n actionType: ActionType;\n}\n\nclass PreviewBar {\n container: HTMLUListElement;\n categoryTooltip?: HTMLDivElement;\n categoryTooltipContainer?: HTMLElement;\n chapterTooltip?: HTMLDivElement;\n\n // ScrubTooltips for YTTV only\n categoryScrubTooltip?: HTMLDivElement;\n categoryScrubTooltipContainer?: HTMLElement;\n chapterScrubTooltip?: HTMLDivElement;\n\n lastSmallestSegment: Record = {};\n\n parent: HTMLElement;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n onYTTV: boolean;\n progressBar: HTMLElement;\n\n segments: PreviewBarSegment[] = [];\n hasYouTubeChapters = false;\n existingChapters: PreviewBarSegment[] = [];\n videoDuration = 0;\n updateExistingChapters: () => void;\n lastChapterUpdate = 0;\n\n // For chapter bar\n hoveredSection: HTMLElement;\n customChaptersBar: HTMLElement;\n chaptersBarSegments: PreviewBarSegment[];\n chapterVote: ChapterVote;\n originalChapterBar: HTMLElement;\n originalChapterBarBlocks: NodeListOf;\n chapterMargin: number;\n lastRenderedSegments: PreviewBarSegment[];\n unfilteredChapterGroups: ChapterGroup[];\n chapterGroups: ChapterGroup[];\n\n constructor(parent: HTMLElement, onMobileYouTube: boolean, onInvidious: boolean, onYTTV: boolean, chapterVote: ChapterVote, updateExistingChapters: () => void, test=false) {\n if (test) return;\n this.container = document.createElement('ul');\n this.container.id = 'previewbar';\n\n if (onYTTV) {\n this.container.classList.add(\"sponsorblock-yttv-container\");\n }\n\n this.parent = parent;\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.onYTTV = onYTTV;\n this.chapterVote = chapterVote;\n this.updateExistingChapters = updateExistingChapters;\n\n this.updatePageElements();\n this.createElement(parent);\n this.createChapterMutationObservers();\n\n this.setupHoverText();\n }\n\n setupHoverText(): void {\n if (this.onMobileYouTube || this.onInvidious) return;\n\n // delete old ones\n document.querySelectorAll(`.sponsorCategoryTooltip`)\n .forEach((e) => e.remove());\n\n // Create label placeholder\n this.categoryTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.categoryTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.categoryTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n this.chapterTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.chapterTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.chapterTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n\n if (isOnYTTV()) {\n this.categoryScrubTooltip = document.createElement(\"div\");\n this.categoryScrubTooltip.className = \"sponsorCategoryTooltip\";\n this.chapterScrubTooltip = document.createElement(\"div\");\n this.chapterScrubTooltip.className = \"sponsorCategoryTooltip\";\n }\n\n // global chapter tooltip or duration tooltip\n // YT, Vorapis, unknown, YTTV\n const tooltipTextWrapper = document.querySelector(\".ytp-tooltip-text-wrapper, .ytp-progress-tooltip-text-container, .yssi-slider .ys-seek-details .time-info-bar\") ?? document.querySelector(\"#progress-bar-container.ytk-player > #hover-time-info\");\n const defaultTooltipSelector = \".ytp-tooltip-title:not(.sponsorCategoryTooltip), .ytp-tooltip-title:not(.sponsorCategoryTooltip) span, .ytp-progress-tooltip-text:not(.sponsorCategoryTooltip), .current-time:not(.sponsorCategoryTooltip)\";\n const originalTooltip = findNonEmptyElement([\n defaultTooltipSelector,\n \".ytp-tooltip-progress-bar-pill-title\"\n ]) ?? document.querySelector(defaultTooltipSelector);\n if (!tooltipTextWrapper || !tooltipTextWrapper.parentElement) return;\n\n // Grab the tooltip from the text wrapper as the tooltip doesn't have its classes on init\n this.categoryTooltipContainer = tooltipTextWrapper.parentElement;\n // YT, Vorapis, YTTV\n const titleTooltip = tooltipTextWrapper.querySelector(\".ytp-tooltip-title, .ytp-progress-tooltip-text, .current-time\") as HTMLElement;\n if (!this.categoryTooltipContainer || !titleTooltip) return;\n\n tooltipTextWrapper.insertBefore(this.categoryTooltip, titleTooltip.nextSibling);\n tooltipTextWrapper.insertBefore(this.chapterTooltip, titleTooltip.nextSibling);\n\n if (isOnYTTV()) {\n const scrubTooltipTextWrapper = document.querySelector(\".yssi-slider .ysl-filmstrip-lens .time-info-bar\")\n if (!this.categoryTooltipContainer) return;\n \n scrubTooltipTextWrapper.appendChild(this.categoryScrubTooltip);\n scrubTooltipTextWrapper.appendChild(this.chapterScrubTooltip);\n }\n\n const seekBar = (document.querySelector(\".ytp-progress-bar-container, .ypcs-scrub-slider-slot.ytu-player-controls\"));\n if (!seekBar) return;\n\n let mouseOnSeekBar = false;\n\n seekBar.addEventListener(\"mouseenter\", () => {\n mouseOnSeekBar = true;\n });\n\n seekBar.addEventListener(\"mouseleave\", () => {\n mouseOnSeekBar = false;\n });\n\n seekBar.addEventListener(\"mousemove\", (e: MouseEvent) => {\n if (!mouseOnSeekBar || !this.categoryTooltip || !this.categoryTooltipContainer || !chrome.runtime?.id) return;\n\n let noYoutubeChapters = !!tooltipTextWrapper.querySelector(\".ytp-tooltip-text.ytp-tooltip-text-no-title, .ytp-progress-tooltip-timestamp\");\n const timeInSeconds = this.decimalToTime((e.clientX - seekBar.getBoundingClientRect().x) / seekBar.clientWidth);\n\n // Find the segment at that location, using the shortest if multiple found\n const [normalSegments, chapterSegments] =\n partition(this.segments,\n (segment) => segment.actionType !== ActionType.Chapter);\n let mainSegment = this.getSmallestSegment(timeInSeconds, normalSegments, \"normal\");\n let secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments, \"chapter\");\n if (mainSegment === null && secondarySegment !== null) {\n mainSegment = secondarySegment;\n secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments.filter((s) => s !== secondarySegment));\n }\n\n const hasAYouTubeChapterRemoved = this.hasYouTubeChapters\n || (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters());\n if (hasAYouTubeChapterRemoved) {\n // Hide original tooltip if some chapter has been filtered out\n originalTooltip.style.display = \"none\";\n noYoutubeChapters = true;\n }\n\n if (mainSegment === null && secondarySegment === null) {\n if (!hasAYouTubeChapterRemoved) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n originalTooltip.style.removeProperty(\"display\");\n }\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n } else {\n this.categoryTooltipContainer.classList.add(TOOLTIP_VISIBLE_CLASS);\n const hasTwoTooltips = mainSegment !== null && secondarySegment !== null;\n if (hasTwoTooltips) {\n this.categoryTooltipContainer.classList.add(\"sponsorTwoTooltips\");\n } else {\n this.categoryTooltipContainer.classList.remove(\"sponsorTwoTooltips\");\n }\n\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n if (isVorapisInstalled()) {\n const tooltipParent = tooltipTextWrapper.parentElement!;\n tooltipParent.classList.add(\"with-text\");\n }\n\n if (normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.categoryTooltip.textContent)\n || normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.chapterTooltip.textContent)\n || !originalTooltip.textContent) {\n if (originalTooltip.style.display !== \"none\") originalTooltip.style.display = \"none\";\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = true;\n } else if (originalTooltip.style.display === \"none\") {\n originalTooltip.style.removeProperty(\"display\");\n this.categoryTooltipContainer.classList.add(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = false;\n }\n\n // To prevent offset issue\n this.categoryTooltip.style.right = titleTooltip.style.right;\n this.chapterTooltip.style.right = titleTooltip.style.right;\n this.categoryTooltip.style.textAlign = titleTooltip.style.textAlign;\n this.chapterTooltip.style.textAlign = titleTooltip.style.textAlign;\n }\n\n // Used to prevent overlapping\n this.categoryTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n this.chapterTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n });\n }\n\n private setTooltipTitle(segment: PreviewBarSegment, tooltip: HTMLElement): void {\n if (segment) {\n const name = segment.description || shortCategoryName(segment.category);\n if (segment.unsubmitted) {\n tooltip.textContent = chrome.i18n.getMessage(\"unsubmitted\") + \" \" + name;\n } else {\n tooltip.textContent = name;\n }\n\n tooltip.style.removeProperty(\"display\");\n\n // For July 2025 test layout\n if (document.querySelector(\".ytp-delhi-modern\")) {\n tooltip.style.display = \"inline-block\";\n\n // Class gets added back, so grab the top value for when the class is removed\n tooltip.style.removeProperty(\"top\");\n tooltip.classList.remove(\"ytp-tooltip-text-no-title\");\n\n if (tooltip === this.chapterTooltip) {\n tooltip.style.top = `calc(${window.getComputedStyle(tooltip).getPropertyValue(\"top\")} + 5px)`;\n } else {\n tooltip.style.top = window.getComputedStyle(tooltip).getPropertyValue(\"top\");\n }\n }\n } else {\n tooltip.style.display = \"none\";\n }\n }\n\n createElement(parent?: HTMLElement): void {\n if (parent) this.parent = parent;\n\n if (this.onMobileYouTube) {\n this.container.style.transform = \"none\";\n } else if (!this.onInvidious) {\n this.container.classList.add(\"sbNotInvidious\");\n }\n\n // On the seek bar\n if (this.onYTTV) {\n // order of sibling elements matters on YTTV\n this.parent.insertBefore(this.container, this.parent.firstChild.nextSibling.nextSibling);\n } else {\n this.parent.prepend(this.container);\n }\n }\n\n clear(): void {\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild);\n }\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar?.style?.removeProperty(\"display\");\n this.chapterVote?.setVisibility(false);\n\n document.querySelectorAll(`.sponsorBlockChapterBar`).forEach((e) => {\n if (e !== this.customChaptersBar) {\n e.remove();\n }\n });\n }\n\n set(segments: PreviewBarSegment[], videoDuration: number): void {\n this.segments = segments ?? [];\n this.videoDuration = videoDuration ?? 0;\n this.hasYouTubeChapters = segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source));\n\n // Remove unnecessary original chapters if submitted replacements exist\n for (const chapter of this.segments.filter((s) => s.actionType === ActionType.Chapter && s.source === SponsorSourceType.Server)) {\n const segmentDuration = chapter.segment[1] - chapter.segment[0];\n \n const duplicate = this.segments.find((s) => s.actionType === ActionType.Chapter \n && [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source) \n && Math.abs(s.segment[0] - chapter.segment[0]) < Math.min(3, segmentDuration / 3)\n && Math.abs(s.segment[1] - chapter.segment[1]) < Math.min(3, segmentDuration / 3));\n \n if (duplicate) {\n const index = this.segments.indexOf(duplicate);\n this.segments.splice(index, 1);\n }\n }\n\n this.updatePageElements();\n // Sometimes video duration is inaccurate, pull from accessibility info\n const ariaDuration = parseInt(this.progressBar?.getAttribute('aria-valuemax')) ?? 0;\n const multipleActiveVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v)).length > 1;\n if (!multipleActiveVideos && ariaDuration && Math.abs(ariaDuration - this.videoDuration) > 3) {\n this.videoDuration = ariaDuration;\n }\n\n this.update();\n }\n\n private updatePageElements(): void {\n // YT, Vorapis v3\n const allProgressBars = document.querySelectorAll(\".ytp-progress-bar, .ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\") as NodeListOf;\n this.progressBar = findValidElement(allProgressBars) ?? allProgressBars?.[0];\n\n if (this.progressBar) {\n const newChapterBar = this.progressBar.querySelector(\".ytp-chapters-container:not(.sponsorBlockChapterBar)\") as HTMLElement;\n if (this.originalChapterBar !== newChapterBar) {\n // Make sure changes are undone on old bar\n this.originalChapterBar?.style?.removeProperty(\"display\");\n\n this.originalChapterBar = newChapterBar;\n }\n }\n }\n\n private update(): void {\n this.clear();\n const chapterChevron = this.getChapterChevron();\n\n if (!this.segments) {\n chapterChevron?.style?.removeProperty(\"display\");\n }\n\n this.chapterMargin = 2;\n if (this.originalChapterBar) {\n this.originalChapterBarBlocks = this.originalChapterBar.querySelectorAll(\":scope > div\") as NodeListOf\n this.existingChapters = this.segments.filter((s) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source)).sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (this.existingChapters?.length > 0) {\n const margin = parseFloat(this.originalChapterBarBlocks?.[0]?.style?.marginRight?.replace(\"px\", \"\"));\n if (margin) this.chapterMargin = margin;\n }\n }\n\n const sortedSegments = this.segments.sort(({ segment: a }, { segment: b }) => {\n // Sort longer segments before short segments to make shorter segments render later\n return (b[1] - b[0]) - (a[1] - a[0]);\n });\n for (const segment of sortedSegments) {\n if (segment.actionType === ActionType.Chapter) continue;\n const bar = this.createBar(segment);\n\n this.container.appendChild(bar);\n }\n\n this.createChaptersBar(this.segments.sort((a, b) => a.segment[0] - b.segment[0]));\n\n if (chapterChevron) {\n if (this.segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))) {\n chapterChevron.style.removeProperty(\"display\");\n } else if (this.segments) {\n chapterChevron.style.display = \"none\";\n }\n }\n }\n\n createBar(barSegment: PreviewBarSegment): HTMLLIElement {\n const { category, unsubmitted, segment, showLarger } = barSegment;\n\n const bar = document.createElement('li');\n bar.classList.add('previewbar');\n if (barSegment.requiredSegment) bar.classList.add(\"requiredSegment\");\n if (barSegment.selectedSegment) bar.classList.add(\"selectedSegment\");\n bar.innerHTML = showLarger ? '  ' : ' ';\n\n const fullCategoryName = (unsubmitted ? 'preview-' : '') + category;\n bar.setAttribute('sponsorblock-category', fullCategoryName);\n\n // Handled by setCategoryColorCSSVariables() of content.ts\n bar.style.backgroundColor = `var(--sb-category-${fullCategoryName})`;\n if (!this.onMobileYouTube) bar.style.opacity = Config.config.barTypes[fullCategoryName]?.opacity;\n\n bar.style.position = \"absolute\";\n const duration = Math.min(segment[1], this.videoDuration) - segment[0];\n const startTime = segment[1] ? Math.min(this.videoDuration, segment[0]) : segment[0];\n const endTime = Math.min(this.videoDuration, segment[1]);\n bar.style.left = this.timeToPercentage(startTime);\n\n if (duration > 0) {\n bar.style.right = this.timeToRightPercentage(endTime);\n }\n if (this.chapterFilter(barSegment) && segment[1] < this.videoDuration) {\n bar.style.marginRight = `${this.chapterMargin}px`;\n }\n\n if (this.onYTTV) {\n bar.classList.add(\"previewbar-yttv\");\n }\n\n return bar;\n }\n\n createChaptersBar(segments: PreviewBarSegment[]): void {\n if (!this.progressBar || !this.originalChapterBar || this.originalChapterBar.childElementCount <= 0) {\n if (this.originalChapterBar) this.originalChapterBar.style.removeProperty(\"display\");\n\n // Make sure other video types lose their chapter bar\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n this.customChaptersBar = null;\n return;\n }\n\n const remakingBar = segments !== this.lastRenderedSegments;\n if (remakingBar) {\n this.lastRenderedSegments = segments;\n\n // Merge overlapping chapters\n this.unfilteredChapterGroups = this.createChapterRenderGroups(segments);\n }\n \n if ((segments.every((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))\n || (!Config.config.renderSegmentsAsChapters\n && segments.every((segment) => segment.actionType !== ActionType.Chapter\n || [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))))\n && !(hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\"))) {\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n const filteredSegments = segments?.filter((segment) => this.chapterFilter(segment));\n if (filteredSegments) {\n let groups = this.unfilteredChapterGroups;\n if (filteredSegments.length !== segments.length) {\n groups = this.createChapterRenderGroups(filteredSegments);\n }\n this.chapterGroups = groups.filter((segment) => this.chapterGroupFilter(segment));\n\n if (groups.length !== this.chapterGroups.length) {\n // Fix missing sections due to filtered segments\n for (let i = 1; i < this.chapterGroups.length; i++) {\n if (this.chapterGroups[i].segment[0] !== this.chapterGroups[i - 1].segment[1]) {\n this.chapterGroups[i - 1].segment[1] = this.chapterGroups[i].segment[0]\n }\n }\n }\n } else {\n this.chapterGroups = this.unfilteredChapterGroups;\n }\n\n if (this.chapterGroups.length === 0 && !getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Add placeholder chapter group for whole video\n this.chapterGroups = [{\n segment: [0, this.videoDuration],\n originalDuration: 0,\n actionType: null\n }];\n }\n\n if (!this.chapterGroups || this.chapterGroups.length <= 0) {\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n // Create it from cloning\n let createFromScratch = false;\n if (!this.customChaptersBar || !this.progressBar.contains(this.customChaptersBar)) {\n // Clear anything remaining\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n\n createFromScratch = true;\n this.customChaptersBar = this.originalChapterBar.cloneNode(true) as HTMLElement;\n this.customChaptersBar.classList.add(\"sponsorBlockChapterBar\");\n }\n\n this.customChaptersBar.style.display = \"none\";\n const originalSections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\");\n const originalSection = originalSections[0];\n\n // For switching to a video with less chapters\n if (originalSections.length > this.chapterGroups.length) {\n for (let i = originalSections.length - 1; i >= this.chapterGroups.length; i--) {\n this.customChaptersBar.removeChild(originalSections[i]);\n }\n }\n\n // Modify it to have sections for each segment\n for (let i = 0; i < this.chapterGroups.length; i++) {\n const chapter = this.chapterGroups[i].segment;\n let newSection = originalSections[i] as HTMLElement;\n if (!newSection) {\n newSection = originalSection.cloneNode(true) as HTMLElement;\n\n this.firstTimeSetupChapterSection(newSection);\n this.customChaptersBar.appendChild(newSection);\n } else if (createFromScratch) {\n this.firstTimeSetupChapterSection(newSection);\n }\n\n this.setupChapterSection(newSection, chapter[0], chapter[1], i !== this.chapterGroups.length - 1);\n }\n\n // Hide old bar\n this.originalChapterBar.style.display = \"none\";\n this.customChaptersBar.style.removeProperty(\"display\");\n\n if (createFromScratch) {\n if (this.container?.parentElement === this.progressBar) {\n this.progressBar.insertBefore(this.customChaptersBar, this.container.nextSibling);\n } else {\n this.progressBar.prepend(this.customChaptersBar);\n }\n }\n\n if (remakingBar) {\n this.updateChapterAllMutation(this.originalChapterBar, this.progressBar, true);\n }\n }\n\n createChapterRenderGroups(segments: PreviewBarSegment[]): ChapterGroup[] {\n const result: ChapterGroup[] = [];\n\n segments?.forEach((segment, index) => {\n const latestChapter = result[result.length - 1];\n if (latestChapter && latestChapter.segment[1] > segment.segment[0]) {\n const segmentDuration = segment.segment[1] - segment.segment[0];\n if (segment.segment[0] < latestChapter.segment[0]\n || segmentDuration < latestChapter.originalDuration) {\n // Remove latest if it starts too late\n let latestValidChapter = latestChapter;\n const chaptersToAddBack: ChapterGroup[] = []\n while (latestValidChapter?.segment[0] >= segment.segment[0]) {\n const invalidChapter = result.pop();\n if (invalidChapter.segment[1] > segment.segment[1]) {\n if (invalidChapter.segment[0] === segment.segment[0]) {\n invalidChapter.segment[0] = segment.segment[1];\n }\n\n chaptersToAddBack.push(invalidChapter);\n }\n latestValidChapter = result[result.length - 1];\n }\n\n const priorityActionType = this.getActionTypePrioritized([segment.actionType, latestChapter?.actionType]);\n\n // Split the latest chapter if smaller\n result.push({\n segment: [segment.segment[0], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: priorityActionType\n });\n if (latestValidChapter?.segment[1] > segment.segment[1]) {\n result.push({\n segment: [segment.segment[1], latestValidChapter.segment[1]],\n originalDuration: latestValidChapter.originalDuration,\n actionType: latestValidChapter.actionType\n });\n }\n\n chaptersToAddBack.reverse();\n let lastChapterChecked: number[] = segment.segment;\n for (const chapter of chaptersToAddBack) {\n if (chapter.segment[0] < lastChapterChecked[1]) {\n chapter.segment[0] = lastChapterChecked[1];\n }\n\n lastChapterChecked = chapter.segment;\n }\n result.push(...chaptersToAddBack);\n if (latestValidChapter) latestValidChapter.segment[1] = segment.segment[0];\n } else {\n // Start at end of old one otherwise\n result.push({\n segment: [latestChapter.segment[1], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: segment.actionType\n });\n }\n } else {\n // Add empty buffer before segment if needed\n const lastTime = latestChapter?.segment[1] || 0;\n if (segment.segment[0] > lastTime) {\n result.push({\n segment: [lastTime, segment.segment[0]],\n originalDuration: 0,\n actionType: null\n });\n }\n\n // Normal case\n const endTime = Math.min(segment.segment[1], this.videoDuration);\n result.push({\n segment: [segment.segment[0], endTime],\n originalDuration: endTime - segment.segment[0],\n actionType: segment.actionType\n });\n }\n\n // Add empty buffer after segment if needed\n if (index === segments.length - 1) {\n const nextSegment = segments[index + 1];\n const nextTime = nextSegment ? nextSegment.segment[0] : this.videoDuration;\n const lastTime = result[result.length - 1]?.segment[1] || segment.segment[1];\n if (this.intervalToDecimal(lastTime, nextTime) > MIN_CHAPTER_SIZE) {\n result.push({\n segment: [lastTime, nextTime],\n originalDuration: 0,\n actionType: null\n });\n }\n }\n });\n\n return result;\n }\n\n private getActionTypePrioritized(actionTypes: ActionType[]): ActionType {\n if (actionTypes.includes(ActionType.Skip)) {\n return ActionType.Skip;\n } else if (actionTypes.includes(ActionType.Mute)) {\n return ActionType.Mute;\n } else {\n return actionTypes.find(a => a) ?? actionTypes[0];\n }\n }\n\n private setupChapterSection(section: HTMLElement, startTime: number, endTime: number, addMargin: boolean): void {\n const sizePercent = this.intervalToPercentage(startTime, endTime);\n if (addMargin) {\n section.style.marginRight = `${this.chapterMargin}px`;\n section.style.width = `calc(${sizePercent} - ${this.chapterMargin}px)`;\n } else {\n section.style.marginRight = \"0\";\n section.style.width = sizePercent;\n }\n\n section.setAttribute(\"decimal-width\", String(this.intervalToDecimal(startTime, endTime)));\n }\n\n private firstTimeSetupChapterSection(section: HTMLElement): void {\n section.addEventListener(\"mouseenter\", () => {\n this.hoveredSection?.classList.remove(\"ytp-exp-chapter-hover-effect\");\n section.classList.add(\"ytp-exp-chapter-hover-effect\");\n this.hoveredSection = section;\n });\n }\n\n private createChapterMutationObservers(): void {\n if (!this.progressBar || !this.originalChapterBar) return;\n\n const attributeObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n const currentElement = mutation.target as HTMLElement;\n if (mutation.type === \"attributes\"\n && currentElement.parentElement?.classList.contains(\"ytp-progress-list\")) {\n changes[currentElement.classList[0]] = mutation.target as HTMLElement;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n attributeObserver.observe(this.originalChapterBar, {\n subtree: true,\n attributes: true,\n attributeFilter: [\"style\", \"class\"]\n });\n\n const childListObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n if (mutation.type === \"childList\") {\n this.update();\n break;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n // Only direct children, no subtree\n childListObserver.observe(this.originalChapterBar, {\n childList: true\n });\n\n addCleanupListener(() => {\n attributeObserver.disconnect();\n childListObserver.disconnect();\n });\n }\n\n private updateChapterAllMutation(originalChapterBar: HTMLElement, progressBar: HTMLElement, firstUpdate = false): void {\n const elements = originalChapterBar.querySelectorAll(\".ytp-progress-list > *\");\n const changes: Record = {};\n for (const element of elements) {\n changes[element.classList[0]] = element as HTMLElement;\n }\n\n this.updateChapterMutation(changes, progressBar, firstUpdate);\n }\n\n private updateChapterMutation(changes: Record, progressBar: HTMLElement, firstUpdate = false): void {\n // Go through each newly generated chapter bar and update the width based on changes array\n if (this.customChaptersBar) {\n // Width reached so far in decimal percent\n let cursor = 0;\n\n const sections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\") as NodeListOf;\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i];\n\n const sectionWidthDecimal = parseFloat(section.getAttribute(\"decimal-width\"));\n const sectionWidthDecimalNoMargin = sectionWidthDecimal - this.chapterMargin / progressBar.clientWidth;\n\n for (const className in changes) {\n const selector = `.${className}`\n const customChangedElement = section.querySelector(selector) as HTMLElement;\n if (customChangedElement) {\n const fullSectionWidth = i === sections.length - 1 ? sectionWidthDecimal : sectionWidthDecimalNoMargin;\n const changedElement = changes[className];\n const changedData = this.findLeftAndScale(selector, changedElement, progressBar);\n\n const left = (changedData.left) / progressBar.clientWidth;\n const calculatedLeft = Math.max(0, Math.min(1, (left - cursor) / fullSectionWidth));\n if (!isNaN(left) && !isNaN(calculatedLeft)) {\n customChangedElement.style.left = `${calculatedLeft * 100}%`;\n customChangedElement.style.removeProperty(\"display\");\n }\n\n if (changedData.scale !== null) {\n const transformScale = (changedData.scale) / progressBar.clientWidth;\n\n const scale = Math.max(0, Math.min(1 - calculatedLeft, (transformScale - cursor) / fullSectionWidth - calculatedLeft));\n customChangedElement.style.transform =\n `scaleX(${scale})`;\n if (customChangedElement.style.backgroundSize) {\n const backgroundSize = Math.max(changedData.scale / scale, fullSectionWidth * progressBar.clientWidth);\n customChangedElement.style.backgroundSize = `${backgroundSize}px`;\n\n if (changedData.scale < (cursor + fullSectionWidth) * progressBar.clientWidth) {\n customChangedElement.style.backgroundPosition = `-${backgroundSize - fullSectionWidth * progressBar.clientWidth}px`;\n } else {\n // Passed this section\n customChangedElement.style.backgroundPosition = `-${cursor * progressBar.clientWidth}px`;\n }\n }\n\n if (firstUpdate) {\n customChangedElement.style.transition = \"none\";\n setTimeout(() => customChangedElement.style.removeProperty(\"transition\"), 50);\n }\n }\n\n if (customChangedElement.className !== changedElement.className) {\n customChangedElement.className = changedElement.className;\n }\n }\n }\n\n cursor += sectionWidthDecimal;\n }\n\n if (sections.length !== 0 && sections.length !== this.existingChapters?.length\n && Date.now() - this.lastChapterUpdate > 3000) {\n this.lastChapterUpdate = Date.now();\n this.updateExistingChapters();\n }\n }\n }\n\n private findLeftAndScale(selector: string, currentElement: HTMLElement, progressBar: HTMLElement):\n { left: number; scale: number } {\n const sections = currentElement.parentElement.parentElement.parentElement.children;\n let currentWidth = 0;\n let lastWidth = 0;\n\n let left = 0;\n let leftPosition = 0;\n\n let scale = null;\n let scalePosition = 0;\n let scaleWidth = 0;\n let lastScalePosition = 0;\n\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i] as HTMLElement;\n const checkElement = section.querySelector(selector) as HTMLElement;\n const currentSectionWidthNoMargin = this.getPartialChapterSectionStyle(section, \"width\") ?? progressBar.clientWidth;\n const currentSectionWidth = currentSectionWidthNoMargin\n + this.getPartialChapterSectionStyle(section, \"marginRight\");\n\n // First check for left\n const checkLeft = parseFloat(checkElement.style.left.replace(\"px\", \"\"));\n if (checkLeft !== 0) {\n left = checkLeft;\n leftPosition = currentWidth;\n }\n\n // Then check for scale\n const transformMatch = checkElement.style.transform.match(/scaleX\\(([0-9.]+?)\\)/);\n if (transformMatch) {\n const transformScale = parseFloat(transformMatch[1]);\n const endPosition = transformScale + checkLeft / currentSectionWidthNoMargin;\n\n if (lastScalePosition > 0.99999 && endPosition === 0) {\n // Last one was an end section that was fully filled\n scalePosition = currentWidth - lastWidth;\n break;\n }\n\n lastScalePosition = endPosition;\n\n scale = transformScale;\n scaleWidth = currentSectionWidthNoMargin;\n\n if ((i === sections.length - 1 || endPosition < 0.99999) && endPosition > 0) {\n // reached the end of this section for sure\n // if the scale is always zero, then it will go through all sections but still return 0\n\n scalePosition = currentWidth;\n if (checkLeft !== 0) {\n scalePosition += left;\n }\n break;\n }\n }\n\n lastWidth = currentSectionWidth;\n currentWidth += lastWidth;\n }\n\n return {\n left: left + leftPosition,\n scale: scale !== null ? scale * scaleWidth + scalePosition : null\n };\n }\n\n private getPartialChapterSectionStyle(element: HTMLElement, param: string): number {\n const data = element.style[param];\n if (data?.includes(\"%\")) {\n return this.customChaptersBar.clientWidth * (parseFloat(data.replace(\"%\", \"\")) / 100);\n } else {\n return parseInt(element.style[param].match(/\\d+/g)?.[0]) || 0;\n }\n }\n\n updateChapterText(segments: SponsorTime[], submittingSegments: SponsorTime[], currentTime: number): SponsorTime[] {\n if (!Config.config.showSegmentNameInChapterBar\n || Config.config.disableSkipping\n || ((!segments || segments.length <= 0) && submittingSegments?.length <= 0 \n && (getSkipProfileBool(\"showAutogeneratedChapters\") || !hasAutogeneratedChapters()))) {\n const chaptersContainer = this.getChaptersContainer();\n if (chaptersContainer) {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n \n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n }\n\n return [];\n }\n\n segments ??= [];\n if (submittingSegments?.length > 0) segments = segments.concat(submittingSegments);\n const activeSegments = segments.filter((segment) => {\n return segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime && segment.segment[1] > currentTime\n && segment.category !== DEFAULT_CATEGORY\n && getCategorySelection(segment).option !== CategorySkipOption.Disabled\n });\n\n this.setActiveSegments(activeSegments);\n return activeSegments;\n }\n\n /**\n * Adds the text to the chapters slot if not filled by default\n */\n private setActiveSegments(segments: SponsorTime[]): void {\n const chaptersContainer = this.getChaptersContainer();\n\n if (chaptersContainer) {\n if (segments.length > 0) {\n chaptersContainer.classList.add(\"sponsorblock-chapter-visible\");\n\n const chosenSegment = segments.sort((a, b) => {\n if (a.actionType === ActionType.Chapter && b.actionType !== ActionType.Chapter) {\n return -1;\n } else if (a.actionType !== ActionType.Chapter && b.actionType === ActionType.Chapter) {\n return 1;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source === SponsorSourceType.Server && b.source !== SponsorSourceType.Server) {\n return -0.5;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source !== SponsorSourceType.Server && b.source === SponsorSourceType.Server) {\n return 0.5;\n } else {\n return (b.segment[0] - a.segment[0]) * 4;\n }\n })[0];\n\n const chapterButton = this.getChapterButton(chaptersContainer);\n if (chapterButton) {\n chapterButton.classList.remove(\"ytp-chapter-container-disabled\");\n chapterButton.disabled = false;\n }\n\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n chapterTitle.style.display = \"none\";\n\n const chapterCustomText = (chapterTitle.parentElement.querySelector(\".sponsorChapterText\") || (() => {\n const elem = document.createElement(\"div\");\n chapterTitle.parentElement.insertBefore(elem, chapterTitle);\n elem.classList.add(\"sponsorChapterText\");\n if (document.location.host === \"tv.youtube.com\") {\n elem.style.lineHeight = \"initial\";\n }\n return elem;\n })()) as HTMLDivElement;\n chapterCustomText.innerText = chosenSegment.description || shortCategoryName(chosenSegment.category);\n\n if (chosenSegment.actionType !== ActionType.Chapter) {\n chapterTitle.classList.add(\"sponsorBlock-segment-title\");\n } else {\n chapterTitle.classList.remove(\"sponsorBlock-segment-title\");\n }\n\n if (chosenSegment.source === SponsorSourceType.Server) {\n const chapterVoteContainer = this.chapterVote.getContainer();\n if (document.location.host === \"tv.youtube.com\") {\n if (!chaptersContainer.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n chaptersContainer.appendChild(chapterVoteContainer);\n }\n } else if (!chapterButton.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n\n chapterButton.insertBefore(chapterVoteContainer, this.getChapterChevron());\n }\n\n this.chapterVote.setVisibility(true);\n this.chapterVote.setSegment(chosenSegment);\n } else {\n this.chapterVote.setVisibility(false);\n }\n } else if (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Keep original hidden\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.display = \"none\";\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n\n const titlePrefixDot = chaptersContainer.querySelector(\".ytp-chapter-title-prefix\") as HTMLElement;\n if (titlePrefixDot) titlePrefixDot.style.display = \"none\";\n \n this.chapterVote.setVisibility(false);\n } else {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n \n this.chapterVote.setVisibility(false);\n }\n }\n }\n\n private getChaptersContainer(): HTMLElement {\n if (document.location.host === \"tv.youtube.com\") {\n if (!document.querySelector(\".ytp-chapter-container\")) {\n const dest = document.querySelector(\".ypcs-control-buttons-left\");\n if (!dest) return null;\n const sbChapterContainer = document.createElement(\"div\");\n sbChapterContainer.className = \"ytp-chapter-container\";\n const sbChapterTitleContent = document.createElement(\"div\");\n sbChapterTitleContent.className = \"ytp-chapter-title-content\";\n sbChapterContainer.appendChild(sbChapterTitleContent);\n dest.appendChild(sbChapterContainer);\n }\n }\n return document.querySelector(\".ytp-chapter-container\") as HTMLElement;\n }\n\n private getChapterButton(chaptersContainer: HTMLElement): HTMLButtonElement {\n return (chaptersContainer ?? this.getChaptersContainer())\n ?.querySelector(\"button.ytp-chapter-title\") as HTMLButtonElement;\n }\n\n remove(): void {\n this.container.remove();\n\n if (this.categoryTooltip) {\n this.categoryTooltip.remove();\n this.categoryTooltip = undefined;\n }\n\n if (this.categoryTooltipContainer) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n this.categoryTooltipContainer = undefined;\n }\n }\n\n private chapterFilter(segment: PreviewBarSegment): boolean {\n return (Config.config.renderSegmentsAsChapters || segment.actionType === ActionType.Chapter)\n && segment.actionType !== ActionType.Poi\n && this.chapterGroupFilter(segment);\n }\n\n private chapterGroupFilter(segment: SegmentContainer): boolean {\n return segment.segment.length === 2 && this.intervalToDecimal(segment.segment[0], segment.segment[1]) > MIN_CHAPTER_SIZE;\n }\n\n intervalToPercentage(startTime: number, endTime: number) {\n return `${this.intervalToDecimal(startTime, endTime) * 100}%`;\n }\n\n intervalToDecimal(startTime: number, endTime: number) {\n return (this.timeToDecimal(endTime) - this.timeToDecimal(startTime));\n }\n\n timeToPercentage(time: number): string {\n return `${this.timeToDecimal(time) * 100}%`\n }\n\n timeToRightPercentage(time: number): string {\n return `${(1 - this.timeToDecimal(time)) * 100}%`\n }\n\n timeToDecimal(time: number): number {\n return this.decimalTimeConverter(time, true);\n }\n\n decimalToTime(decimal: number): number {\n return this.decimalTimeConverter(decimal, false);\n }\n\n /**\n * Decimal to time or time to decimal\n */\n decimalTimeConverter(value: number, isTime: boolean): number {\n if (this.originalChapterBarBlocks?.length > 1 && this.existingChapters.length === this.originalChapterBarBlocks?.length) {\n // Parent element to still work when display: none\n const totalPixels = this.originalChapterBar.parentElement.clientWidth;\n let pixelOffset = 0;\n let lastCheckedChapter = -1;\n for (let i = 0; i < this.originalChapterBarBlocks.length; i++) {\n const chapterElement = this.originalChapterBarBlocks[i];\n const widthPixels = parseFloat(chapterElement.style.width.replace(\"px\", \"\"));\n\n const marginPixels = chapterElement.style.marginRight ? parseFloat(chapterElement.style.marginRight.replace(\"px\", \"\")) : 0;\n if ((isTime && value >= this.existingChapters[i].segment[1])\n || (!isTime && value >= (pixelOffset + widthPixels + marginPixels) / totalPixels)) {\n pixelOffset += widthPixels + marginPixels;\n lastCheckedChapter = i;\n } else {\n break;\n }\n }\n\n // The next chapter is the one we are currently inside of\n const latestChapter = this.existingChapters[lastCheckedChapter + 1];\n if (latestChapter) {\n const latestWidth = parseFloat(this.originalChapterBarBlocks[lastCheckedChapter + 1].style.width.replace(\"px\", \"\"));\n const latestChapterDuration = latestChapter.segment[1] - latestChapter.segment[0];\n\n if (isTime) {\n const percentageInCurrentChapter = (value - latestChapter.segment[0]) / latestChapterDuration;\n const sizeOfCurrentChapter = latestWidth / totalPixels;\n return Math.min(1, ((pixelOffset / totalPixels) + (percentageInCurrentChapter * sizeOfCurrentChapter)));\n } else {\n const percentageInCurrentChapter = (value * totalPixels - pixelOffset) / latestWidth;\n return Math.max(0, latestChapter.segment[0] + (percentageInCurrentChapter * latestChapterDuration));\n }\n }\n }\n\n if (isTime) {\n return Math.min(1, value / this.videoDuration);\n } else {\n return Math.max(0, value * this.videoDuration);\n }\n }\n\n /*\n * Approximate size on preview bar for smallest element (due to  )\n */\n getMinimumSize(showLarger = false): number {\n return this.videoDuration * (showLarger ? 0.006 : 0.003);\n }\n\n // Name parameter used for cache\n private getSmallestSegment(timeInSeconds: number, segments: PreviewBarSegment[], name?: string): PreviewBarSegment | null {\n const proposedIndex = name ? this.lastSmallestSegment[name]?.index : null;\n const startSearchIndex = proposedIndex && segments[proposedIndex] === this.lastSmallestSegment[name].segment ? proposedIndex : 0;\n const direction = startSearchIndex > 0 && timeInSeconds < this.lastSmallestSegment[name].segment.segment[0] ? -1 : 1;\n\n let segment: PreviewBarSegment | null = null;\n let index = -1;\n let currentSegmentLength = Infinity;\n\n for (let i = startSearchIndex; i < segments.length && i >= 0; i += direction) {\n const seg = segments[i];\n const segmentLength = seg.segment[1] - seg.segment[0];\n const minSize = this.getMinimumSize(seg.showLarger);\n\n const startTime = segmentLength !== 0 ? seg.segment[0] : Math.floor(seg.segment[0]);\n const endTime = segmentLength > minSize ? seg.segment[1] : Math.ceil(seg.segment[0] + minSize);\n if (startTime <= timeInSeconds && endTime >= timeInSeconds) {\n if (segmentLength < currentSegmentLength) {\n currentSegmentLength = segmentLength;\n segment = seg;\n index = i;\n }\n }\n\n if (direction === 1 && seg.segment[0] > timeInSeconds) {\n break;\n }\n }\n\n if (segment) {\n this.lastSmallestSegment[name] = {\n index: index,\n segment: segment\n };\n }\n\n return segment;\n }\n\n private getChapterChevron(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-chevron\");\n }\n}\n\nexport default PreviewBar;\n","import Config from \"../config\";\nimport { SegmentUUID, SponsorTime } from \"../types\";\nimport { getSkippingText } from \"../utils/categoryUtils\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { isMobileControlsOpen } from \"../utils/mobileUtils\";\n\nexport interface SkipButtonControlBarProps {\n skip: (segment: SponsorTime) => void;\n selectSegment: (UUID: SegmentUUID) => void;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n}\n\nexport class SkipButtonControlBar {\n\n container: HTMLElement;\n skipIcon: HTMLImageElement;\n textContainer: HTMLElement;\n chapterText: HTMLElement;\n segment: SponsorTime;\n\n showKeybindHint = true;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n\n enabled = false;\n\n timeout: NodeJS.Timeout;\n duration = 0;\n\n skip: (segment: SponsorTime) => void;\n\n // Used if on mobile page\n hideButton: () => void;\n showButton: () => void;\n\n // Used by mobile only for swiping away\n left = 0;\n swipeStart = 0;\n\n constructor(props: SkipButtonControlBarProps) {\n this.skip = props.skip;\n this.onMobileYouTube = props.onMobileYouTube;\n this.onYTTV = props.onYTTV;\n\n this.container = document.createElement(\"div\");\n this.container.classList.add(\"skipButtonControlBarContainer\");\n this.container.classList.add(\"sbhidden\");\n if (this.onMobileYouTube) this.container.classList.add(\"mobile\");\n\n this.skipIcon = document.createElement(\"img\");\n this.skipIcon.src = chrome.runtime.getURL(\"icons/skipIcon.svg\");\n this.skipIcon.classList.add(\"ytp-button\");\n this.skipIcon.id = \"sbSkipIconControlBarImage\";\n if (this.onYTTV) {\n this.skipIcon.style.width = \"24px\";\n this.skipIcon.style.height = \"24px\";\n }\n\n this.textContainer = document.createElement(\"div\");\n\n this.container.appendChild(this.skipIcon);\n this.container.appendChild(this.textContainer);\n this.container.addEventListener(\"click\", () => this.toggleSkip());\n this.container.addEventListener(\"mouseenter\", () => {\n this.stopTimer();\n\n if (this.segment) {\n props.selectSegment(this.segment.UUID);\n }\n });\n this.container.addEventListener(\"mouseleave\", () => {\n this.startTimer();\n\n props.selectSegment(null);\n });\n if (this.onMobileYouTube) {\n this.container.addEventListener(\"touchstart\", (e) => this.handleTouchStart(e));\n this.container.addEventListener(\"touchmove\", (e) => this.handleTouchMove(e));\n this.container.addEventListener(\"touchend\", () => this.handleTouchEnd());\n }\n }\n\n getElement(): HTMLElement {\n return this.container;\n }\n\n attachToPage(): void {\n const mountingContainer = this.getMountingContainer();\n this.chapterText = document.querySelector(\".ytp-chapter-container\");\n\n if (mountingContainer && !mountingContainer.contains(this.container)) {\n if (this.onMobileYouTube || this.onYTTV) {\n mountingContainer.appendChild(this.container);\n } else {\n mountingContainer.insertBefore(this.container, this.chapterText);\n }\n\n if (!this.onMobileYouTube) {\n AnimationUtils.setupAutoHideAnimation(this.skipIcon, mountingContainer, false, false);\n } else {\n const { hide, show } = AnimationUtils.setupCustomHideAnimation(this.skipIcon, mountingContainer, false, false);\n this.hideButton = hide;\n this.showButton = show;\n }\n }\n }\n\n private getMountingContainer(): HTMLElement {\n if (!this.onMobileYouTube && !this.onYTTV) {\n return document.querySelector(\".ytp-left-controls\");\n } else if (this.onYTTV) {\n return document.querySelector(\".ypcs-control-buttons-left\");\n } else {\n return document.getElementById(\"player-container-id\");\n }\n }\n\n enable(segment: SponsorTime, duration?: number): void {\n if (duration) this.duration = duration;\n this.segment = segment;\n this.enabled = true;\n\n this.refreshText();\n this.container?.classList?.remove(\"textDisabled\");\n this.textContainer?.classList?.remove(\"sbhidden\");\n AnimationUtils.disableAutoHideAnimation(this.skipIcon);\n\n this.startTimer();\n }\n\n refreshText(): void {\n if (this.segment) {\n this.chapterText?.classList?.add(\"sbhidden\");\n this.container.classList.remove(\"sbhidden\");\n this.textContainer.innerText = this.getTitle();\n this.skipIcon.setAttribute(\"title\", this.getTitle());\n }\n }\n\n setShowKeybindHint(show: boolean): void {\n this.showKeybindHint = show;\n\n this.refreshText();\n }\n\n stopTimer(): void {\n if (this.timeout) clearTimeout(this.timeout);\n }\n\n startTimer(): void {\n this.stopTimer();\n this.timeout = setTimeout(() => this.disableText(), Math.max(Config.config.skipNoticeDuration, this.duration) * 1000);\n }\n\n disable(): void {\n this.container.classList.add(\"sbhidden\");\n\n this.chapterText?.classList?.remove(\"sbhidden\");\n this.getChapterPrefix()?.classList?.remove(\"sbhidden\");\n\n this.enabled = false;\n }\n\n isEnabled(): boolean {\n return this.enabled;\n }\n\n toggleSkip(): void {\n if (this.segment && this.enabled) {\n this.skip(this.segment);\n this.disableText();\n }\n }\n\n disableText(): void {\n if (Config.config.hideSkipButtonPlayerControls) {\n this.disable();\n return;\n }\n\n this.container.classList.add(\"textDisabled\");\n this.textContainer?.classList?.add(\"sbhidden\");\n this.chapterText?.classList?.remove(\"sbhidden\");\n\n this.getChapterPrefix()?.classList?.add(\"sbhidden\");\n\n AnimationUtils.enableAutoHideAnimation(this.skipIcon);\n if (this.onMobileYouTube) {\n this.hideButton();\n }\n }\n\n updateMobileControls(): void {\n if (this.enabled) {\n if (isMobileControlsOpen()) {\n this.showButton();\n } else {\n this.hideButton();\n }\n }\n }\n\n private getTitle(): string {\n return getSkippingText([this.segment], false) + (this.showKeybindHint ? \" (\" + keybindToString(Config.config.skipToHighlightKeybind) + \")\" : \"\");\n }\n\n private getChapterPrefix(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-prefix\");\n }\n\n // Swiping away on mobile\n private handleTouchStart(event: TouchEvent): void {\n this.swipeStart = event.touches[0].clientX;\n }\n\n // Swiping away on mobile\n private handleTouchMove(event: TouchEvent): void {\n const distanceMoved = this.swipeStart - event.touches[0].clientX;\n this.left = Math.min(-distanceMoved, 0);\n\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private handleTouchEnd(): void {\n if (this.left < -this.container.offsetWidth / 2) {\n this.disableText();\n\n // Don't let animation play\n this.skipIcon.style.display = \"none\";\n setTimeout(() => this.skipIcon.style.removeProperty(\"display\"), 200);\n }\n\n this.left = 0;\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private updateLeftStyle() {\n this.container.style.left = this.left + \"px\";\n }\n}\n","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport CategoryPillComponent, { CategoryPillState } from \"../components/CategoryPillComponent\";\nimport Config from \"../config\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\nimport { Tooltip } from \"./Tooltip\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../../maze-utils/src/elements\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\n\nconst id = \"categoryPill\";\n\nexport class CategoryPill {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n lastState: CategoryPillState;\n\n mutationObserver?: MutationObserver;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n \n constructor() {\n this.ref = React.createRef();\n\n addCleanupListener(() => {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n });\n }\n\n async attachToPage(onMobileYouTube: boolean, onInvidious: boolean,\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise): Promise {\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.vote = vote;\n\n this.attachToPageInternal();\n }\n\n private async attachToPageInternal(): Promise {\n let referenceNode =\n await waitFor(() => getYouTubeTitleNode());\n\n // Experimental YouTube layout with description on right\n const isOnDescriptionOnRightLayout = document.querySelector(\"#title #description\");\n if (isOnDescriptionOnRightLayout) {\n referenceNode = referenceNode.parentElement;\n }\n\n if (referenceNode && !referenceNode.contains(this.container)) {\n if (!this.container) {\n this.container = document.createElement('span');\n this.container.id = id;\n this.container.style.display = \"relative\";\n\n this.root = createRoot(this.container);\n this.ref = React.createRef();\n this.root.render();\n\n if (this.onMobileYouTube) {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n \n this.mutationObserver = new MutationObserver((changes) => {\n if (changes.some((change) => change.removedNodes.length > 0)) {\n this.attachToPageInternal();\n }\n });\n \n this.mutationObserver.observe(referenceNode, { \n childList: true,\n subtree: true\n });\n }\n }\n\n if (this.lastState) {\n waitFor(() => this.ref.current).then(() => {\n this.ref.current?.setState(this.lastState);\n });\n }\n\n // Use a parent because YouTube does weird things to the top level object\n // react would have to rerender if container was the top level\n const parent = document.createElement(\"span\");\n parent.id = \"categoryPillParent\";\n parent.appendChild(this.container);\n\n referenceNode.prepend(parent);\n if (!isOnDescriptionOnRightLayout) {\n referenceNode.style.display = \"flex\";\n }\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n open: show ? this.ref.current?.state.open : false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n }\n\n async setSegment(segment: SponsorTime): Promise {\n await waitFor(() => this.ref.current);\n\n if (this.ref.current?.state?.segment !== segment || !this.ref.current?.state?.show) {\n const newState = {\n segment,\n show: true,\n open: false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n\n if (!Config.config.categoryPillUpdate) {\n Config.config.categoryPillUpdate = true;\n\n const watchDiv = await waitFor(() => document.querySelector(\"#info.ytd-watch-flexy\") as HTMLElement);\n if (watchDiv) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"categoryPillNewFeature\"),\n link: \"https://blog.ajay.app/full-video-sponsorblock\",\n referenceNode: watchDiv,\n prependElement: watchDiv.firstChild as HTMLElement,\n bottomOffset: \"-10px\",\n opacity: 0.95,\n timeout: 50000\n });\n }\n }\n }\n\n if (this.onMobileYouTube && !document.contains(this.container)) {\n this.attachToPageInternal();\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport ChapterVoteComponent, { ChapterVoteState } from \"../components/ChapterVoteComponent\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nexport class ChapterVote {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n unsavedState: ChapterVoteState;\n\n mutationObserver?: MutationObserver;\n \n constructor(vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise) {\n this.ref = React.createRef();\n\n this.container = document.createElement('span');\n this.container.id = \"chapterVote\";\n this.container.style.height = \"100%\";\n\n if (document.location.host === \"tv.youtube.com\") {\n this.container.style.lineHeight = \"initial\";\n }\n\n this.root = createRoot(this.container);\n this.root.render();\n }\n\n getContainer(): HTMLElement {\n return this.container;\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n ...(!show ? { segment: null } : {})\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n\n async setSegment(segment: SponsorTime): Promise {\n if (this.ref.current?.state?.segment !== segment) {\n const newState = {\n segment,\n show: true\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nexport interface RectangleTooltipProps {\n text: string; \n link?: string;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n leftOffset?: string;\n timeout?: number;\n htmlId?: string;\n maxHeight?: string;\n maxWidth?: string;\n backgroundColor?: string;\n fontSize?: string;\n buttonFunction?: () => void;\n}\n\nexport class RectangleTooltip {\n text: string; \n container: HTMLDivElement;\n root: Root;\n timer: NodeJS.Timeout;\n \n constructor(props: RectangleTooltipProps) {\n props.bottomOffset ??= \"0px\";\n props.leftOffset ??= \"0px\";\n props.maxHeight ??= \"100px\";\n props.maxWidth ??= \"300px\";\n props.backgroundColor ??= \"rgba(28, 28, 28, 0.7)\";\n this.text = props.text;\n props.fontSize ??= \"10px\";\n\n this.container = document.createElement('div');\n props.htmlId ??= \"sponsorRectangleTooltip\" + props.text;\n this.container.id = props.htmlId;\n this.container.style.display = \"relative\";\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n \n \n \n {this.text + (props.link ? \". \" : \"\")}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null}\n \n
\n \n
\n )\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nimport { SponsorTime, ContentContainer, NoticeVisibilityMode } from \"../types\";\nimport Config from \"../config\";\nimport { SkipNoticeAction } from \"../utils/noticeUtils\";\n\nclass SkipNotice {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n skipNoticeRef: React.MutableRefObject;\n root: Root;\n\n constructor(segments: SponsorTime[], autoSkip = false, contentContainer: ContentContainer, componentDidMount: () => void, unskipTime: number = null, startReskip = false, upcomingNoticeShown: boolean, voteNotice = false) {\n this.skipNoticeRef = React.createRef();\n\n this.segments = segments;\n this.autoSkip = autoSkip;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n \n const amountOfPreviousNotices = document.getElementsByClassName(\"sponsorSkipNotice\").length;\n //this is the suffix added at the end of every id\n let idSuffix = \"\";\n for (const segment of this.segments) {\n idSuffix += segment.UUID;\n }\n idSuffix += amountOfPreviousNotices;\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={!voteNotice && (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAll \n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAutoSkip && autoSkip))}\n fadeIn={!upcomingNoticeShown && !voteNotice}\n unskipTime={unskipTime}\n componentDidMount={componentDidMount} />\n );\n }\n\n setShowKeybindHint(value: boolean): void {\n this.skipNoticeRef?.current?.setState({\n showKeybindHint: value\n });\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n\n const skipNotices = this.contentContainer().skipNotices;\n skipNotices.splice(skipNotices.indexOf(this), 1);\n }\n\n toggleSkip(): void {\n this.skipNoticeRef?.current?.prepAction(SkipNoticeAction.Unskip0);\n }\n\n unmutedListener(time: number): void {\n this.skipNoticeRef?.current?.unmutedListener(time);\n }\n\n async waitForSkipNoticeRef(): Promise {\n const waitForRef = () => new Promise((resolve) => {\n const observer = new MutationObserver(() => {\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n observer.observe(document.getElementsByClassName(\"sponsorSkipNoticeContainer\")[0], { childList: true, subtree: true});\n\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n return this.skipNoticeRef?.current || await waitForRef();\n }\n}\n\nexport default SkipNotice;","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SubmissionNoticeComponent from \"../components/SubmissionNoticeComponent\";\nimport { ContentContainer } from \"../types\";\n\nclass SubmissionNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: () => unknown;\n\n callback: () => Promise;\n\n noticeRef: React.MutableRefObject;\n\n noticeElement: HTMLDivElement;\n\n root: Root;\n\n constructor(contentContainer: ContentContainer, callback: () => Promise) {\n this.noticeRef = React.createRef();\n\n this.contentContainer = contentContainer;\n this.callback = callback;\n\n const referenceNode = utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.id = \"submissionNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close(false)} />\n );\n }\n\n update(): void {\n this.noticeRef.current.forceUpdate();\n }\n\n close(callRef = true): void {\n if (callRef) this.noticeRef.current.cancel();\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n\n submit(): void {\n this.noticeRef.current?.submit?.();\n }\n\n scrollToBottom(): void {\n this.noticeRef.current?.scrollToBottom?.();\n }\n}\n\nexport default SubmissionNotice;","import { GenericTooltip, TooltipProps } from \"../../maze-utils/src/components/Tooltip\";\n\nexport class Tooltip extends GenericTooltip {\n constructor(props: TooltipProps) {\n super(props, \"icons/IconSponsorBlocker256px.png\")\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ContentContainer, SponsorTime } from \"../types\";\n\nimport Utils from \"../utils\";\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nconst utils = new Utils();\n\nclass UpcomingNotice {\n segments: SponsorTime[];\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n upcomingNoticeRef: React.MutableRefObject;\n root: Root;\n\n closed = false;\n\n constructor(segments: SponsorTime[], contentContainer: ContentContainer, timeLeft: number, autoSkip: boolean) {\n this.upcomingNoticeRef = React.createRef();\n\n this.segments = segments;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={true}\n fadeIn={true}\n maxCountdownTime={timeLeft} />\n );\n }\n\n close(): void {\n this.root.unmount();\n this.noticeElement.remove();\n\n this.closed = true;\n }\n\n sameNotice(segments: SponsorTime[]): boolean {\n if (segments.length !== this.segments.length) return false;\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i].UUID !== this.segments[i].UUID) return false;\n }\n\n return true;\n }\n}\n\nexport default UpcomingNotice;","import * as React from \"react\";\n\nconst pencilSvg = ({\n fill = \"#ffffff\"\n }): JSX.Element => (\n \n \n \n );\n\nexport default pencilSvg;\n","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import * as React from \"react\";\n\nconst thumbsDownSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n \n
\n
\n \n );\n\nexport default thumbsDownSvg;\n","import * as React from \"react\";\n\nconst thumbsUpSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n
\n
\n \n );\n\nexport default thumbsUpSvg;\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","export function partition(array: T[], filter: (element: T) => boolean): [T[], T[]] {\n const pass = [], fail = [];\n array.forEach((element) => (filter(element) ? pass : fail).push(element));\n \n return [pass, fail];\n}","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function runCompatibilityChecks() {\n if (Config.config.showZoomToFillError2 && document.URL.includes(\"watch?v=\")) {\n setTimeout(() => {\n const zoomToFill = document.querySelector(\".zoomtofillBtn\");\n \n if (zoomToFill) {\n alert(chrome.i18n.getMessage(\"zoomToFillUnsupported\"));\n }\n\n Config.config.showZoomToFillError2 = false;\n }, 10000);\n }\n}\n\nexport function isVorapisInstalled() {\n return document.querySelector(`.v3`);\n}","import { TextBox } from \"../render/GenericNotice\";\nimport { Category } from \"../types\";\n\nexport function getGuidelineInfo(category: Category): TextBox[] {\n switch (category) {\n case \"sponsor\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"selfpromo\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"exclusive_access\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }];\n case \"interaction\":\n return [{\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"intro\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"outro\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"preview\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"hook\":\n return [{\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"filler\":\n return [{\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"music_offtopic\":\n return [{\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"poi_highlight\":\n return [{\n icon: \"icons/star.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n case \"chapter\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n default:\n return [{\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n }\n}\n\nexport const defaultPreviewTime = 2;","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","/* Gets percieved luminance of a color */\nfunction getLuminance(color: string): number {\n const {r, g, b} = hexToRgb(color);\n return Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\n}\n\n/* Converts hex color to rgb color */\nconst hexChars = \"0123456789abcdef\";\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n if (hex.length == 4)\n hex = \"#\" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\n return /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n ? {\n r: hexChars.indexOf(hex[1]) * 16 + hexChars.indexOf(hex[2]),\n g: hexChars.indexOf(hex[3]) * 16 + hexChars.indexOf(hex[4]),\n b: hexChars.indexOf(hex[5]) * 16 + hexChars.indexOf(hex[6]),\n }: null;\n}\n\n/**\n * List of all indexes that have the specified value\n * https://stackoverflow.com/a/54954694/1985387\n */\nfunction indexesOf(array: T[], value: T): number[] {\n return array.map((v, i) => v === value ? i : -1).filter(i => i !== -1);\n}\n\nexport const GenericUtils = {\n getLuminance,\n indexesOf\n}\n","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","export function isMobileControlsOpen(): boolean {\n const overlay = document.getElementById(\"player-control-overlay\");\n\n if (overlay) {\n return !!overlay?.classList?.contains(\"fadein\");\n }\n\n return false;\n}","import Config from \"../config\";\nimport { SponsorTime } from \"../types\";\n\nexport enum SkipNoticeAction {\n None,\n Upvote,\n Downvote,\n CategoryVote,\n CopyDownvote,\n Unskip0,\n Unskip1\n}\n\nexport function downvoteButtonColor(segments: SponsorTime[], actionState: SkipNoticeAction, downvoteType: SkipNoticeAction): string {\n // Also used for \"Copy and Downvote\"\n if (segments?.length > 1) {\n return (actionState === downvoteType) ? Config.config.colorPalette.red : Config.config.colorPalette.white;\n } else {\n // You dont have segment selectors so the lockbutton needs to be colored and cannot be selected.\n return Config.config.isVip && segments?.[0].locked === 1 ? Config.config.colorPalette.locked : Config.config.colorPalette.white;\n }\n}","export function cleanPage() {\n // For live-updates\n if (document.readyState === \"complete\") {\n for (const element of document.querySelectorAll(\"#categoryPillParent, .playerButton, .sponsorThumbnailLabel, #submissionNoticeContainer, .sponsorSkipNoticeContainer, #sponsorBlockPopupContainer, .skipButtonControlBarContainer, #previewbar, .sponsorBlockChapterBar\")) {\n element.remove();\n }\n }\n}","import { ActionType, Category, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { getSkipProfileBool } from \"./skipProfiles\";\n\nexport function getControls(): HTMLElement {\n const controlsSelectors = [\n // YouTube\n \".ytp-right-controls\",\n // Mobile YouTube\n \".player-controls-top\",\n // Invidious/videojs video element's controls element\n \".vjs-control-bar\",\n // Piped shaka player\n \".shaka-bottom-controls\",\n // Vorapis v3\n \".html5-player-chrome\",\n // tv.youtube.com\n \".ypcs-control-buttons-right\"\n ];\n\n for (const controlsSelector of controlsSelectors) {\n const controls = Array.from(document.querySelectorAll(controlsSelector)).filter(el => !isInPreviewPlayer(el));\n\n if (controls.length > 0) {\n return controls[controls.length - 1];\n }\n }\n\n return null;\n}\n\nexport function isInPreviewPlayer(element: Element): boolean {\n return !!element.closest(\"#inline-preview-player\");\n}\n\nexport function isVisible(element: HTMLElement): boolean {\n return element && element.offsetWidth > 0 && element.offsetHeight > 0;\n}\n\nexport function getHashParams(): Record {\n const windowHash = window.location.hash.slice(1);\n if (windowHash) {\n const params: Record = windowHash.split('&').reduce((acc, param) => {\n const [key, value] = param.split('=');\n const decoded = decodeURIComponent(value);\n try {\n acc[key] = decoded?.match(/{|\\[/) ? JSON.parse(decoded) : value;\n } catch (e) {\n console.error(`Failed to parse hash parameter ${key}: ${value}`);\n }\n\n return acc;\n }, {});\n\n return params;\n }\n\n return {};\n}\n\nexport function hasAutogeneratedChapters(): boolean {\n return !!document.querySelector(\"ytd-engagement-panel-section-list-renderer ytd-macro-markers-list-renderer #menu\");\n}\n\nexport function getExistingChapters(currentVideoID: VideoID, duration: number): SponsorTime[] {\n const chaptersBox = document.querySelector(\"ytd-macro-markers-list-renderer\");\n const title = chaptersBox?.closest(\"ytd-engagement-panel-section-list-renderer\")?.querySelector(\"#title-text.ytd-engagement-panel-title-header-renderer\");\n if (title?.textContent?.includes(\"Key moment\")) return [];\n\n const autogenerated = hasAutogeneratedChapters();\n if (!getSkipProfileBool(\"showAutogeneratedChapters\") && autogenerated) return [];\n\n const chapters: SponsorTime[] = [];\n // .ytp-timed-markers-container indicates that key-moments are present, which should not be divided\n if (chaptersBox) {\n let lastSegment: SponsorTime = null;\n const links = chaptersBox.querySelectorAll(\"ytd-macro-markers-list-item-renderer > a\");\n for (const link of links) {\n const timeElement = link.querySelector(\"#time\") as HTMLElement;\n const description = link.querySelector(\"#details h4\") as HTMLElement;\n if (timeElement && description?.innerText?.length > 0 && link.getAttribute(\"href\")?.includes(currentVideoID)) {\n const time = getFormattedTimeToSeconds(timeElement.innerText.replace(/\\./g, \":\"));\n if (time === null) return [];\n\n if (lastSegment) {\n lastSegment.segment[1] = time;\n chapters.push(lastSegment);\n }\n\n lastSegment = {\n segment: [time, null],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: description.innerText,\n source: autogenerated ? SponsorSourceType.Autogenerated : SponsorSourceType.YouTube,\n UUID: null\n };\n }\n }\n\n if (lastSegment) {\n lastSegment.segment[1] = duration;\n chapters.push(lastSegment);\n }\n }\n\n return chapters;\n}\n\nexport function isPlayingPlaylist() {\n return !!document.URL.includes(\"&list=\");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { DataCache } from \"../../maze-utils/src/cache\";\nimport { getHash, HashedValue } from \"../../maze-utils/src/hash\";\nimport Config, { } from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { ActionTypes, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getHashParams } from \"./pageUtils\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { extensionUserAgent } from \"../../maze-utils/src\";\nimport { logRequest, serializeOrStringify } from \"../../maze-utils/src/background-request-proxy\";\n\nconst segmentDataCache = new DataCache(() => {\n return {\n segments: null,\n status: 200\n };\n}, 5);\n\nconst pendingList: Record> = {};\n\nexport interface SegmentResponse {\n segments: SponsorTime[] | null;\n status: number | Error | string;\n}\n\nexport async function getSegmentsForVideo(videoID: VideoID, ignoreCache: boolean): Promise {\n if (!ignoreCache) {\n const cachedData = segmentDataCache.getFromCache(videoID);\n if (cachedData) {\n segmentDataCache.cacheUsed(videoID);\n return cachedData;\n }\n }\n\n if (pendingList[videoID]) {\n return await pendingList[videoID];\n }\n\n const pendingData = fetchSegmentsForVideo(videoID);\n pendingList[videoID] = pendingData;\n\n let result: Awaited;\n try {\n result = await pendingData;\n } catch (e) {\n console.error(\"[SB] Caught error while fetching segments\", e);\n return {\n segments: null,\n status: serializeOrStringify(e),\n }\n } finally {\n delete pendingList[videoID];\n }\n\n return result;\n}\n\nasync function fetchSegmentsForVideo(videoID: VideoID): Promise {\n const extraRequestData: Record = {};\n const hashParams = getHashParams();\n if (hashParams.requiredSegment) extraRequestData.requiredSegment = hashParams.requiredSegment;\n\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 5) as VideoID & HashedValue;\n const hasDownvotedSegments = !!Config.local.downvotedSegments[hashPrefix.slice(0, 4)];\n const response = await asyncRequestToServer('GET', \"/api/skipSegments/\" + hashPrefix, {\n categories: CompileConfig.categoryList,\n actionTypes: ActionTypes,\n trimUUIDs: hasDownvotedSegments ? null : 5,\n ...extraRequestData\n }, {\n \"X-CLIENT-NAME\": extensionUserAgent(),\n });\n\n if (response.ok) {\n const receivedSegments: SponsorTime[] = JSON.parse(response.responseText)\n ?.filter((video) => video.videoID === videoID)\n ?.map((video) => video.segments)?.[0]\n ?.map((segment) => ({\n ...segment,\n source: SponsorSourceType.Server\n }))\n ?.sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (receivedSegments && receivedSegments.length) {\n const result = {\n segments: receivedSegments,\n status: response.status\n };\n\n segmentDataCache.setupCache(videoID).segments = result.segments;\n return result;\n } else {\n // Setup with null data\n segmentDataCache.setupCache(videoID);\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"skip segments\");\n }\n\n return {\n segments: null,\n status: response.status\n };\n}","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","import { getCurrentPageTitle } from \"../../maze-utils/src/elements\";\nimport { getChannelIDInfo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { CategorySelection, CategorySkipOption, SponsorSourceType, SponsorTime } from \"../types\";\nimport { getSkipProfile, getSkipProfileBool } from \"./skipProfiles\";\nimport { VideoLabelsCacheData } from \"./videoLabels\";\n\nexport interface Permission {\n canSubmit: boolean;\n}\n\nexport enum SkipRuleAttribute {\n StartTime = \"time.start\",\n EndTime = \"time.end\",\n Duration = \"time.duration\",\n StartTimePercent = \"time.startPercent\",\n EndTimePercent = \"time.endPercent\",\n DurationPercent = \"time.durationPercent\",\n Category = \"category\",\n ActionType = \"actionType\",\n Description = \"chapter.name\",\n Source = \"chapter.source\",\n ChannelID = \"channel.id\",\n ChannelName = \"channel.name\",\n VideoDuration = \"video.duration\",\n Title = \"video.title\"\n}\n\nexport enum SkipRuleOperator {\n Less = \"<\",\n LessOrEqual = \"<=\",\n Greater = \">\",\n GreaterOrEqual = \">=\",\n Equal = \"==\",\n NotEqual = \"!=\",\n Contains = \"*=\",\n NotContains = \"!*=\",\n Regex = \"~=\",\n RegexIgnoreCase = \"~i=\",\n NotRegex = \"!~=\",\n NotRegexIgnoreCase = \"!~i=\"\n}\n\nexport interface AdvancedSkipRule {\n attribute: SkipRuleAttribute;\n operator: SkipRuleOperator;\n value: string | number;\n}\n\nexport interface AdvancedSkipRuleSet {\n rules: AdvancedSkipRule[];\n skipOption: CategorySkipOption;\n comment: string;\n}\n\nexport function getCategorySelection(segment: SponsorTime | VideoLabelsCacheData): CategorySelection {\n // First check skip rules\n for (const ruleSet of Config.local.skipRules) {\n if (ruleSet.rules.every((rule) => isSkipRulePassing(segment, rule))) {\n return { name: segment.category, option: ruleSet.skipOption } as CategorySelection;\n }\n }\n\n // Action type filters\n if (\"actionType\" in segment && (segment as SponsorTime).actionType === \"mute\" && !getSkipProfileBool(\"muteSegments\")) {\n return { name: segment.category, option: CategorySkipOption.Disabled } as CategorySelection;\n }\n\n // Then check skip profile\n const profile = getSkipProfile();\n if (profile) {\n const profileSelection = profile.categorySelections.find(selection => selection.name === segment.category);\n if (profileSelection) {\n return profileSelection;\n }\n }\n\n // Then fallback to default\n for (const selection of Config.config.categorySelections) {\n if (selection.name === segment.category) {\n return selection;\n }\n }\n return { name: segment.category, option: CategorySkipOption.Disabled} as CategorySelection;\n}\n\nfunction getSkipRuleValue(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): string | number | undefined {\n switch (rule.attribute) {\n case SkipRuleAttribute.StartTime:\n return (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.EndTime:\n return (segment as SponsorTime).segment?.[1];\n case SkipRuleAttribute.Duration:\n return (segment as SponsorTime).segment?.[1] - (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.StartTimePercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n if (startTime === undefined) return undefined;\n\n return startTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.EndTimePercent: {\n const endTime = (segment as SponsorTime).segment?.[1];\n if (endTime === undefined) return undefined;\n\n return endTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.DurationPercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n const endTime = (segment as SponsorTime).segment?.[1];\n if (startTime === undefined || endTime === undefined) return undefined;\n\n return (endTime - startTime) / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.Category:\n return segment.category;\n case SkipRuleAttribute.ActionType:\n return (segment as SponsorTime).actionType;\n case SkipRuleAttribute.Description:\n return (segment as SponsorTime).description || \"\";\n case SkipRuleAttribute.Source:\n switch ((segment as SponsorTime).source) {\n case SponsorSourceType.Local:\n return \"local\";\n case SponsorSourceType.YouTube:\n return \"youtube\";\n case SponsorSourceType.Autogenerated:\n return \"autogenerated\";\n case SponsorSourceType.Server:\n return \"server\";\n default:\n return undefined;\n }\n case SkipRuleAttribute.ChannelID:\n return getChannelIDInfo().id;\n case SkipRuleAttribute.ChannelName:\n return getChannelIDInfo().author;\n case SkipRuleAttribute.VideoDuration:\n return getVideoDuration();\n case SkipRuleAttribute.Title:\n return getCurrentPageTitle() || \"\";\n default:\n return undefined;\n }\n}\n\nfunction isSkipRulePassing(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): boolean {\n const value = getSkipRuleValue(segment, rule);\n \n switch (rule.operator) {\n case SkipRuleOperator.Less:\n return typeof value === \"number\" && value < (rule.value as number);\n case SkipRuleOperator.LessOrEqual:\n return typeof value === \"number\" && value <= (rule.value as number);\n case SkipRuleOperator.Greater:\n return typeof value === \"number\" && value > (rule.value as number);\n case SkipRuleOperator.GreaterOrEqual:\n return typeof value === \"number\" && value >= (rule.value as number);\n case SkipRuleOperator.Equal:\n return value === rule.value;\n case SkipRuleOperator.NotEqual:\n return value !== rule.value;\n case SkipRuleOperator.Contains:\n return String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.NotContains:\n return !String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.Regex:\n return new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.RegexIgnoreCase:\n return new RegExp(rule.value as string, \"i\").test(String(value));\n case SkipRuleOperator.NotRegex:\n return !new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.NotRegexIgnoreCase:\n return !new RegExp(rule.value as string, \"i\").test(String(value));\n default:\n return false;\n }\n}\n\nexport function getCategoryDefaultSelection(category: string): CategorySelection {\n for (const selection of Config.config.categorySelections) {\n if (selection.name === category) {\n return selection;\n }\n }\n return { name: category, option: CategorySkipOption.Disabled} as CategorySelection;\n}","import { extractVideoID, isOnInvidious } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { getHasStartSegment, getVideoLabel } from \"./videoLabels\";\nimport { getThumbnailSelector, setThumbnailListener } from \"../../maze-utils/src/thumbnailManagement\";\nimport { VideoID } from \"../types\";\nimport { getSegmentsForVideo } from \"./segmentData\";\nimport { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport async function handleThumbnails(thumbnails: HTMLImageElement[]): Promise {\n await Promise.all(thumbnails.map((t) => {\n labelThumbnail(t);\n setupThumbnailHover(t);\n }));\n}\n\nexport async function labelThumbnail(thumbnail: HTMLImageElement): Promise {\n if (!Config.config?.fullVideoSegments || !Config.config?.fullVideoLabelsOnThumbnails) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n \n const videoID = await extractVideoIDFromElement(thumbnail);\n if (!videoID) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const category = await getVideoLabel(videoID);\n if (!category) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const { overlay, text } = createOrGetThumbnail(thumbnail);\n\n overlay.style.setProperty('--category-color', `var(--sb-category-preview-${category}, var(--sb-category-${category}))`);\n overlay.style.setProperty('--category-text-color', `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`);\n text.innerText = chrome.i18n.getMessage(`category_${category}`);\n overlay.classList.add(\"sponsorThumbnailLabelVisible\");\n\n return overlay;\n}\n\nexport async function setupThumbnailHover(thumbnail: HTMLImageElement): Promise {\n // Cache would be reset every load due to no SPA\n if (isOnInvidious()) return;\n\n const mainElement = thumbnail.closest(\"#dismissible\") as HTMLElement;\n if (mainElement) {\n mainElement.removeEventListener(\"mouseenter\", thumbnailHoverListener);\n mainElement.addEventListener(\"mouseenter\", thumbnailHoverListener);\n }\n}\n\nfunction thumbnailHoverListener(e: MouseEvent) {\n if (!chrome.runtime?.id) return;\n\n const thumbnail = (e.target as HTMLElement).querySelector(getThumbnailSelector()) as HTMLImageElement;\n if (!thumbnail) return;\n\n // Pre-fetch data for this video\n let fetched = false;\n const preFetch = async () => {\n fetched = true;\n const videoID = await extractVideoIDFromElement(thumbnail);\n if (videoID && await getHasStartSegment(videoID)) {\n void getSegmentsForVideo(videoID, false);\n }\n };\n const timeout = setTimeout(preFetch, 100);\n const onMouseDown = () => {\n clearTimeout(timeout);\n if (!fetched) {\n preFetch();\n }\n };\n\n e.target.addEventListener(\"mousedown\", onMouseDown, { once: true });\n e.target.addEventListener(\"mouseleave\", () => {\n clearTimeout(timeout);\n e.target.removeEventListener(\"mousedown\", onMouseDown);\n }, { once: true });\n}\n\nfunction getLink(thumbnail: HTMLImageElement): HTMLAnchorElement | null {\n if (isOnInvidious()) {\n return thumbnail.parentElement as HTMLAnchorElement | null;\n } else if (!onMobile()) {\n const link = thumbnail.querySelector(\"a#thumbnail, a.reel-item-endpoint, a.yt-lockup-metadata-view-model__title, a.yt-lockup-metadata-view-model__title-link, a.yt-lockup-view-model__content-image, a.yt-lockup-metadata-view-model-wiz__title\") as HTMLAnchorElement;\n if (link) {\n return link;\n } else if (thumbnail.nodeName === \"YTD-HERO-PLAYLIST-THUMBNAIL-RENDERER\"\n || thumbnail.nodeName === \"YT-THUMBNAIL-VIEW-MODEL\"\n ) {\n return thumbnail.closest(\"a\") as HTMLAnchorElement;\n } else {\n return null;\n }\n } else {\n // Big thumbnails, compact thumbnails, shorts, channel feature, playlist header\n return thumbnail.querySelector(\"a.media-item-thumbnail-container, a.compact-media-item-image, a.reel-item-endpoint, :scope > a, .amsterdam-playlist-thumbnail-wrapper > a\") as HTMLAnchorElement;\n }\n}\n\nasync function extractVideoIDFromElement(thumbnail: HTMLImageElement): Promise {\n const link = getLink(thumbnail);\n if (!link || link.nodeName !== \"A\" || !link.href) return null; // no link found\n\n return await extractVideoID(link);\n}\n\nfunction getOldThumbnailLabel(thumbnail: HTMLImageElement): HTMLElement | null {\n return thumbnail.querySelector(\".sponsorThumbnailLabel\") as HTMLElement | null;\n} \n\nfunction hideThumbnailLabel(thumbnail: HTMLImageElement): void {\n const oldLabel = getOldThumbnailLabel(thumbnail);\n if (oldLabel) {\n oldLabel.classList.remove(\"sponsorThumbnailLabelVisible\");\n }\n}\n\nfunction createOrGetThumbnail(thumbnail: HTMLImageElement): { overlay: HTMLElement; text: HTMLElement } {\n const oldElement = getOldThumbnailLabel(thumbnail);\n if (oldElement) {\n return {\n overlay: oldElement as HTMLElement,\n text: oldElement.querySelector(\"span\") as HTMLElement\n };\n }\n\n const overlay = document.createElement(\"div\") as HTMLElement;\n overlay.classList.add(\"sponsorThumbnailLabel\");\n // Disable hover autoplay\n overlay.addEventListener(\"pointerenter\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerleave\", { bubbles: true }));\n });\n overlay.addEventListener(\"pointerleave\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerenter\", { bubbles: true }));\n });\n\n const icon = createSBIconElement();\n const text = document.createElement(\"span\");\n overlay.appendChild(icon);\n overlay.appendChild(text);\n thumbnail.appendChild(overlay);\n\n return {\n overlay,\n text\n };\n}\n\nfunction createSBIconElement(): SVGSVGElement {\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"viewBox\", \"0 0 565.15 568\");\n const use = document.createElementNS(\"http://www.w3.org/2000/svg\", \"use\");\n use.setAttribute(\"href\", \"#SponsorBlockIcon\");\n svg.appendChild(use);\n return svg;\n}\n\n\n// Inserts the icon svg definition, so it can be used elsewhere\nfunction insertSBIconDefinition() {\n const container = document.createElement(\"span\");\n\n // svg from /public/icons/PlayerStartIconSponsorBlocker.svg, with useless stuff removed\n container.innerHTML = `\n\n \n \n \n \n \n \n`;\n document.body.appendChild(container.children[0]);\n}\n\nexport function setupThumbnailListener(): void {\n setThumbnailListener(handleThumbnails, () => {\n insertSBIconDefinition();\n }, () => Config.isReady());\n}","\nexport function getStartTimeFromUrl(url: string): number {\n const urlParams = new URLSearchParams(url);\n const time = urlParams?.get('t') || urlParams?.get('time_continue');\n\n return urlTimeToSeconds(time);\n}\n\nexport function urlTimeToSeconds(time: string): number {\n if (!time) {\n return 0;\n }\n\n const re = /(?:(\\d{1,3})h)?(?:(\\d{1,2})m)?(\\d+)s?/;\n const match = re.exec(time);\n\n if (match) {\n const hours = parseInt(match[1] ?? '0', 10);\n const minutes = parseInt(match[2] ?? '0', 10);\n const seconds = parseInt(match[3] ?? '0', 10);\n\n return hours * 3600 + minutes * 60 + seconds;\n } else if (/\\d+/.test(time)) {\n return parseInt(time, 10);\n } else {\n return 0;\n }\n}","import { Category, CategorySkipOption, VideoID } from \"../types\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { logWarn } from \"./logger\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { getCategorySelection } from \"./skipRule\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface VideoLabelsCacheData {\n category: Category;\n hasStartSegment: boolean;\n}\n\nexport interface LabelCacheEntry {\n timestamp: number;\n videos: Record;\n}\n\nconst labelCache: Record = {};\nconst cacheLimit = 1000;\n\nasync function getLabelHashBlock(hashPrefix: string): Promise {\n // Check cache\n const cachedEntry = labelCache[hashPrefix];\n if (cachedEntry) {\n return cachedEntry;\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"GET\", `/api/videoLabels/${hashPrefix}?hasStartSegment=true`);\n } catch (e) {\n console.error(\"[SB] Caught error while fetching video labels\", e)\n return null;\n }\n if (response.status !== 200) {\n logRequest(response, \"SB\", \"video labels\");\n // No video labels or server down\n labelCache[hashPrefix] = {\n timestamp: Date.now(),\n videos: {},\n };\n return null;\n }\n\n try {\n const data = JSON.parse(response.responseText);\n\n const newEntry: LabelCacheEntry = {\n timestamp: Date.now(),\n videos: Object.fromEntries(data.map(video => [video.videoID, {\n category: video.segments[0]?.category,\n hasStartSegment: video.hasStartSegment\n }])),\n };\n labelCache[hashPrefix] = newEntry;\n\n if (Object.keys(labelCache).length > cacheLimit) {\n // Remove oldest entry\n const oldestEntry = Object.entries(labelCache).reduce((a, b) => a[1].timestamp < b[1].timestamp ? a : b);\n delete labelCache[oldestEntry[0]];\n }\n\n return newEntry;\n } catch (e) {\n logWarn(`Error parsing video labels: ${e}`);\n\n return null;\n }\n}\n\nexport async function getVideoLabel(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n const category = result.videos[videoID]?.category;\n if (category && getCategorySelection(result.videos[videoID]).option !== CategorySkipOption.Disabled) {\n return category;\n } else {\n return null;\n }\n }\n\n return null;\n}\n\nexport async function getHasStartSegment(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n return result?.videos[videoID]?.hasStartSegment ?? false;\n }\n\n return null;\n}\n","import { objectToURI } from \"../../maze-utils/src\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport Config from \"../config\";\nimport GenericNotice, { NoticeOptions } from \"../render/GenericNotice\";\nimport { ContentContainer } from \"../types\";\nimport { asyncRequestToServer } from \"./requests\";\n\nexport interface ChatConfig {\n displayName: string;\n composerInitialValue?: string;\n customDescription?: string;\n}\n\nexport async function openWarningDialog(contentContainer: ContentContainer): Promise {\n let userInfo: FetchResponse;\n try {\n userInfo = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config.userID),\n values: [\"warningReason\"]\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to fetch user's active warnings\", e)\n return;\n }\n\n if (userInfo.ok) {\n const warningReason = JSON.parse(userInfo.responseText)?.warningReason;\n let userName = \"\";\n try {\n const userNameData = await asyncRequestToServer(\"GET\", \"/api/getUsername?userID=\" + Config.config.userID);\n userName = userNameData.ok ? JSON.parse(userNameData.responseText).userName : \"\";\n } catch (e) {\n console.warn(\"[SB] Caught non-fatal error while trying to resolve user's username\", e);\n }\n const publicUserID = await getHash(Config.config.userID);\n\n let notice: GenericNotice = null;\n const options: NoticeOptions = {\n title: chrome.i18n.getMessage(\"deArrowMessageRecieved\"),\n textBoxes: [{\n text: chrome.i18n.getMessage(\"warningChatInfo\"),\n icon: null\n }, ...warningReason.split(\"\\n\").map((reason) => ({\n text: reason,\n icon: null\n }))],\n buttons: [{\n name: chrome.i18n.getMessage(\"questionButton\"),\n listener: () => openChat({\n displayName: `${userName ? userName : ``}${userName !== publicUserID ? ` | ${publicUserID}` : ``}`\n })\n },\n {\n name: chrome.i18n.getMessage(\"warningConfirmButton\"),\n listener: async () => {\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"POST\", \"/api/warnUser\", {\n userID: Config.config.userID,\n enabled: false\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to acknowledge user's active warning\", e);\n alert(formatJSErrorMessage(e));\n }\n\n if (result.ok) {\n notice?.close();\n } else {\n logRequest(result, \"SB\", \"warning acknowledgement\");\n alert(getLongErrorMessage(result.status, result.responseText));\n }\n }\n }],\n timed: false\n };\n\n notice = new GenericNotice(contentContainer, \"warningNotice\", options);\n } else {\n logRequest(userInfo, \"SB\", \"user's active warnings\");\n }\n}\n\nexport function openChat(config: ChatConfig): void {\n window.open(\"https://chat.sponsor.ajay.app/#\" + objectToURI(\"\", config, false));\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(6069);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","logoUrl","bottomOffset","topOffset","leftOffset","rightOffset","innerBottomMargin","displayTriangle","topTriangle","extraClass","showLogo","showGotIt","positionRealtive","containerAbsolute","center","elements","buttonsAtBottom","textBoxes","textBoxMaxHeight","position","prependElement","referenceNode","timeout","timer","close","backgroundColor","root","bottom","right","margin","undefined","className","marginBottom","maxHeight","overflowY","getURL","getTextElements","textDecoration","rel","i18n","getMessage","linkOnClick","marginLeft","cursor","onAuxClick","getButtons","float","secondButtonText","secondButtonOnClick","result","line","padding","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","fetchConfig","all","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","getYouTubeTitleNode","titleNode","formattedText","innerText","elem","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CategoryPillComponent","React","mainRef","segment","open","getColor","getTextColor","toggle","showTextByDefault","getTitleText","toggleOpen","onMouseEnter","openTooltip","onMouseLeave","closeTooltip","prideTheme","category","vote","fill","colorPalette","white","downvoteButtonColor","SkipNoticeAction","Downvote","showTooltipOnClick","stopAnimation","UUID","formatJSErrorMessage","logRequest","getLongErrorMessage","tooltip","tooltipMount","Tooltip","firstElementChild","shortDescription","ChapterVoteComponent","draggable","chapterNode","actionType","ActionType","Chapter","outerBounding","buttonBounding","CountdownMode","bounds","NoticeComponent","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","showInSecondSlot","startCountdown","noticeStyle","userSelect","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","limitWidth","hideLogo","logoFill","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","icon","textParts","textPart","SelectorComponent","getOptions","option","onChange","label","utils","SkipButtonState","SkipNoticeComponent","noticeRef","categoryOptionRef","segments","autoSkip","contentContainer","voteNotice","getVoteText","upcomingNotice","getUpcomingText","getSkippingText","previousSkipNotices","selectedColor","red","unselectedColor","lockedColor","locked","isMuteSegment","Mute","getFullDurationCountdown","defaultSkipButtonState","startReskip","Redo","Undo","skipButtonStates","Start","defaultSkipButtonCallback","reskip","unskip","skipButtonCallbacks","messages","messageOnClick","countdownText","showSkipButton","editing","choosingCategory","actionState","None","showKeybindHint","voted","copied","getUnskippedModeInfo","transform","getSkipButton","noticeVisibilityMode","NoticeVisibilityMode","FadedForAll","FadedForAutoSkip","barTypes","getMessageBoxes","getBottomRow","prepAction","Upvote","openEditingOptions","CopyDownvote","dontShowNoticeAgain","CategoryVote","resetStateToStart","getCategoryOptions","getSubmissionChooser","buttonIndex","Poi","unskipTime","forceSeek","Unskip0","Unskip1","minWidth","getSkipButtonText","Skip","keybindToString","skipKeybind","getSubmissionChooserOpacity","getSubmissionChooserColor","performAction","getFormattedTime","isUpvote","isDownvote","isCopyDownvote","isVip","noAction","upvote","downvote","categoryVote","copyDownvote","unskipAction","sponsorVideoID","sponsorTimesSubmitting","generateUserID","SponsorSourceType","Local","segmentTimes","unsubmittedSegments","updatePreviewBar","resetSponsorSubmissionNotice","updateEditButtonsOnPlayer","categories","CompileConfig","categoryList","cat","categorySupport","getCategoryNameClass","lockedCategories","unskipSponsorTime","unskippedMode","reskipSponsorTime","reskippedMode","newState","skipButtonState","sponsorTime","round","playbackRate","afterVote","getSponsorIndexFromUUID","wikiLinkText","wikiLinks","clearConfigListener","setNoticeInfoMessageWithOnClick","addVoteButtonInfo","setNoticeInfoMessage","resetVoteButtonInfo","configListener","unmutedListener","forceType","getUndoText","getRedoText","getStartText","categoryNamesGrams","SponsorTimeEditComponent","timesBeforeChanging","fullVideoWarningShown","categoryNameWarningShown","lastEditTime","editTimeTimeout","actionTypeOptionRef","descriptionOptionRef","previousSkipType","sponsorTimeEdits","selectedCategory","DEFAULT_CATEGORY","selectedActionType","description","suggestedNames","chapterNameSelectorOpen","chapterNameSelectorHovering","configUpdateListener","configUpdate","checkToShowFullVideoWarning","checkToShowChapterWarning","textAlign","marginTop","borderColor","timeDisplay","timeDisplayStyle","Full","setTimeTo","setTimeToNow","onKeyDown","onKeyUp","handleOnChange","onWheel","changeTimesWhenScrolling","setTimeToEnd","toggleEditTime","categorySelectionChange","actionTypeSelectionChange","getActionTypeOptions","hidden","SponsorHideType","Hidden","Visible","saveEditTimes","onBlur","onContextMenu","descriptionUpdate","onFocus","deleteTime","previewTime","inspectTime","targetValue","before","getFormattedTimeToSeconds","after","difference","abs","showScrollToEditToolTip","allowScrollingToEdit","step","timeAsNumber","scrollToEditTimeUpdate","showToolTip","buttonFunction","htmlId","RectangleTooltip","fontSize","getVideoDuration","defaultBlockCategories","permission","showCategoryWithoutPermission","permissions","getCategoryLockedClass","chosenCategory","categorySelections","confirm","hash","hookUpdate","handleReplacingLostTimes","categoryChangeListener","getNextActionType","getRealCurrentTime","addedTime","getFormattedSponsorTimesEdits","timeSinceLastEdit","endTime","addingTime","ctrlPressed","shiftPressed","skipToEndTime","sponsorTimes","seekTime","defaultPreviewTime","skipTime","removingIncomplete","submissionNotice","cancel","fetchingSuggestions","fetchSuggestions","asyncRequestToServer","names","parse","SubmissionNoticeComponent","lastSegmentCount","videoObserver","currentSegmentCount","scrollToBottom","scrollElement","scrollTo","scrollHeight","sortButton","sortSegments","exportButton","exportSegments","getSponsorTimeMessages","submissionCountSinceCategories","submit","timeEditRefs","timeRef","guidelinesReminder","isCurrentTimeWrong","videoInfo","microformat","playerMicroformatRenderer","success","clipboard","writeText","exportTimes","dialogWidth","showCategoryGuidelines","getGuidelineInfo","update","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","categoryPillUpdate","showChapterInfoMessage","darkMode","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","downvotedSegments","alreadyInstalled","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","cleanPage","wait","getElementsByTagName","fileref","addCSS","setCategoryColorCSSVariables","runCompatibilityChecks","skipBuffer","endTimeSkipBuffer","sponsorDataFound","existingChaptersImported","importingChaptersWaitingForFocus","importingChaptersWaiting","loopedChapter","skipNotices","activeSkipKeybindElement","shownSegmentFailedToFetchWarning","selectedSegment","previewedSegment","lastKnownVideoTime","videoTime","preciseTime","fromPause","approximateDelay","lastTimeFromWaitingEvent","lastNextChapterKeybind","currentSkipSchedule","currentSkipInterval","currentVirtualTimeInterval","currentUpcomingSchedule","sponsorSkipped","videoMuted","controlsWithEventListeners","setupVideoModule","previewBar","isOnMobileYouTube","handleMobileControlsMutations","controlsContainer","getControls","createPreviewBar","getVideoID","getChannelIDInfo","channelAuthor","sponsorsLookup","updateVisibilityOfPlayerControlsButton","updateSponsorTimesSubmitting","tryShowingDeArrowPromotion","logWarn","checkPreviewbarState","getIsInline","videoOnReadyListener","durationChangeListener","setupVideoListenersFirstTime","switchingVideos","startedWaiting","lastPausedAtZero","lastVideoDataChange","rateChangeListener","updateVirtualTime","clearWaitingTime","startSponsorSchedule","playListener","firstPlay","miniPlayerUI","onVideoPage","getLastNonInlineVideoID","triggerVideoIDChange","triggerVideoElementChange","checkForMiniplayerPlaying","logDebug","startSkipScheduleCheckingForStartSponsors","updateAdFlag","lastCheckVideoTime","lastCheckTime","playingListener","playbackRateCheckInterval","lastPlaybackSpeed","seekingListener","updateActiveSegment","loop","stoppedPlayback","updateWaitingTime","cancelSponsorSchedule","pauseListener","waitingListener","emptyListener","metadataLoadedListener","setupVideoListeners","skipButtonControlBar","SkipButtonControlBar","skip","skipToTime","skippingSegments","openNotice","forceAutoSkip","selectSegment","isOnYTTV","attachToPage","categoryPill","CategoryPill","voteAsync","lastResponseStatus","disable","setVisibility","hideDeArrowPromotion","manifest_version","setupThumbnailListener","controls","playerButtons","hotkeyListener","hotkeyPropagationListener","loadedPreloadedSegment","popupInitialised","skipNoticeContentContainer","sponsorSubmissionNotice","manualSkipPercentCount","contentConfigUpdateListener","updateAll","contentLocalConfigUpdateListener","updateMobileControls","isMobileControlsOpen","isConnected","getPreviewBarAttachElement","progressElementOptions","isVisibleCheck","allElements","chapterVote","ChapterVote","importExistingChapters","includeIntersectingSegments","includeNonIntersectingSegments","getIsAdPlaying","checkIfNewVideoID","getVirtualTime","skipInfo","autoSkipSorter","skipOption","getCategorySelection","shouldAutoSkip","includedTimes","submittedArray","scheduledTimes","sponsorStartTimes","getStartTimes","sponsorStartTimesAfterCurrentTime","minSponsorTimeIndexes","GenericUtils","indexesOf","minSponsorTimeIndex","extraIndexes","endTimeIndex","getLatestEndTimeIndex","unsubmittedArray","unsubmittedSponsorStartTimes","unsubmittedSponsorStartTimesAfterCurrentTime","minUnsubmittedSponsorTimeIndex","previewEndTimeIndex","array","endIndex","getNextSkipIndex","currentSkip","scheduledTime","timeUntilSponsor","inMuteSegment","muted","incorrectVideoCheck","shouldSkip","skippingFunction","forceVideoTime","forcedSkipTime","forcedIncludeIntersectingSegments","forcedIncludeNonIntersectingSegments","extra","extraSkip","delayTime","forceStartIntervalTime","once","startIntervalTime","startVideoTime","startWaitingForReportedTimeToChange","reportedVideoTimeAtStart","intervalDuration","offsetDelayTime","maxPopupTime","timeUntilPopup","popupTime","createUpcomingNotice","virtualTime","includeOverlap","checkFunction","currentVideoID","recordedVideoID","isLoopedChapter","checkVideoIDChange","sendResponse","startOrEndTimingNewSegment","creatingSegment","isSegmentCreationInProgress","Disabled","currentTabSkipProfileID","getSkipProfileIDForTab","updating","closeInfoMenu","isYTTV","openSubmissionMenu","hasVideo","getSponsorTimeFromUUID","addHiddenSegment","isEnabled","every","importedSegments","importTimes","addedSegments","hasChaptersPermission","getCategoryDefaultSelection","KeyboardEvent","setCurrentTabSkipProfile","configID","rawCount","lastTime","lastPerformanceTime","frameTime","keepOldSubmissions","segmentData","getSegmentsForVideo","receivedSegments","oldSegments","otherSegment","other","hashPrefix","downvotedData","hashedUUID","segmentDownvoteData","uuid","hideTooShortSegments","waitForVideo","notifyPopupOfSegments","categoriesResponse","lockInfo","lockedCategoriesLookup","waitCondition","getExistingChapters","hasFocus","chapters","getSkipProfileBool","hasAutogeneratedChapters","startingSegmentTime","getStartTimeFromUrl","poiSegments","hashParams","getHashParams","requiredSegment","previewBarSegments","unsubmitted","showLarger","skippedDuration","durationID","paddingLeft","durationAfterSkips","showTimeWithoutSkips","getTimestampsDuration","updateCategoryPill","fullVideoSegment","setSegment","Autogenerated","checkingPreviewbarAgain","hideHiddenSponsors","latestEndTimeIndex","currentSegment","latestEndTime","minimum","shouldIncludeTime","possibleTimes","unpause","setCurrentTime","play","sendTelemetryAndCount","secondsSkipped","fullSkip","extension","inIncognitoContext","counted","isSubmittingSegment","isPlayingPlaylist","beep","Audio","volume","oldMetadata","mediaSession","setShowKeybindHint","toggleSkip","createSkipNotice","enable","skipNotice","upcomingNoticeShown","closed","newSkipNotice","timeLeft","sameNotice","skippedTime","createButton","baseID","imageName","isDraggable","existingElement","newButton","newButtonImage","prepend","setupListener","canSkipNonMusic","isOnYouTubeMusic","confirmMessage","getSegmentsMessage","clearSponsorTimes","info","popup","frame","borderRadius","stylusStyle","enhancerStyle","enhancerStyleVariables","enhancerCss","enhancerVariablesCss","elemHasChild","parentNodeOptions","hasChildCheck","openInfoMenu","createButtons","buttonsEnabled","submitButtonVisible","deleteButtonVisible","startSegment","cancelSegment","getIsLivePremiere","verifyCurrentTime","roundedTime","Number","EPSILON","existingSegment","getIncompleteSegment","existingTime","getFromConfig","segmentTime","pushed","checkForPreloadedSegment","openWarningDialog","sponsorIndex","Server","factor","Downvoted","notices","getElementsByClassName","closeAllSkipNotices","callRef","sendSubmitMessage","confirmShort","videoDuration","extensionUserAgent","newSegments","receivedNewSegments","sponsorTimesMessage","timeMessage","updateChapterText","handleKeybindVote","lastSkipNotice","skipNoticeRef","lastSegment","waitForSkipNoticeRef","isContentEditable","skipKey","skipToHighlightKey","closeSkipNoticeKey","startSponsorKey","submitKey","previewKey","openSubmissionMenuKey","nextChapterKey","previousChapterKey","upvoteKey","downvoteKey","unfilteredChapterGroups","nextChapter","previousChapter","wasAdPlaying","setIsAdPlaying","styleContainer","isVorapisInstalled","luminance","getLuminance","TOOLTIP_VISIBLE_CLASS","updateExistingChapters","lastSmallestSegment","hasYouTubeChapters","existingChapters","lastChapterUpdate","updatePageElements","createChapterMutationObservers","setupHoverText","categoryTooltip","chapterTooltip","categoryScrubTooltip","chapterScrubTooltip","tooltipTextWrapper","defaultTooltipSelector","originalTooltip","findNonEmptyElement","categoryTooltipContainer","titleTooltip","scrubTooltipTextWrapper","seekBar","mouseOnSeekBar","noYoutubeChapters","timeInSeconds","decimalToTime","normalSegments","chapterSegments","partition","mainSegment","getSmallestSegment","secondarySegment","hasAYouTubeChapterRemoved","setTooltipTitle","normalizeChapterName","shortCategoryName","getComputedStyle","getPropertyValue","customChaptersBar","originalChapterBar","YouTube","chapter","segmentDuration","duplicate","ariaDuration","progressBar","allProgressBars","newChapterBar","chapterChevron","getChapterChevron","chapterMargin","originalChapterBarBlocks","sortedSegments","bar","createBar","createChaptersBar","barSegment","fullCategoryName","timeToPercentage","timeToRightPercentage","chapterFilter","childElementCount","remakingBar","lastRenderedSegments","createChapterRenderGroups","filteredSegments","groups","chapterGroups","chapterGroupFilter","originalDuration","createFromScratch","cloneNode","originalSections","originalSection","newSection","firstTimeSetupChapterSection","setupChapterSection","updateChapterAllMutation","latestChapter","latestValidChapter","chaptersToAddBack","invalidChapter","priorityActionType","getActionTypePrioritized","lastChapterChecked","nextSegment","nextTime","intervalToDecimal","actionTypes","section","addMargin","sizePercent","intervalToPercentage","hoveredSection","attributeObserver","currentElement","updateChapterMutation","attributeFilter","childListObserver","firstUpdate","sections","sectionWidthDecimal","sectionWidthDecimalNoMargin","customChangedElement","fullSectionWidth","changedElement","changedData","findLeftAndScale","calculatedLeft","scale","transformScale","backgroundSize","backgroundPosition","currentWidth","lastWidth","leftPosition","scalePosition","scaleWidth","lastScalePosition","checkElement","currentSectionWidthNoMargin","getPartialChapterSectionStyle","currentSectionWidth","checkLeft","transformMatch","endPosition","submittingSegments","chaptersContainer","getChaptersContainer","activeSegments","setActiveSegments","chosenSegment","chapterButton","getChapterButton","chapterTitle","chapterVoteContainer","getContainer","oldVoteContainers","oldVoteContainer","titlePrefixDot","dest","sbChapterContainer","sbChapterTitleContent","timeToDecimal","decimalTimeConverter","decimal","isTime","totalPixels","pixelOffset","lastCheckedChapter","chapterElement","widthPixels","marginPixels","latestWidth","latestChapterDuration","percentageInCurrentChapter","sizeOfCurrentChapter","getMinimumSize","proposedIndex","startSearchIndex","direction","currentSegmentLength","seg","segmentLength","minSize","swipeStart","skipIcon","textContainer","stopTimer","startTimer","handleTouchStart","handleTouchMove","handleTouchEnd","mountingContainer","getMountingContainer","chapterText","hideButton","showButton","refreshText","getTitle","disableText","getChapterPrefix","distanceMoved","updateLeftStyle","mutationObserver","attachToPageInternal","isOnDescriptionOnRightLayout","change","removedNodes","lastState","watchDiv","unsavedState","findReferenceNode","noticeElement","maxWidth","MiniForAll","MiniForAutoSkip","waitForRef","GenericTooltip","upcomingNoticeRef","xmlns","viewBox","points","ActionTypes","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","endOverlaps","other1","other2","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","segmentUUID","segmentIDData","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","pass","fail","categoryName","messageId","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","inTest","chapterNames","exportTime","removeIf","matchers","matcher","lines","timeRegex","anyLineHasTime","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","hashparamSegments","hexChars","hex","sqrt","toISOString","overlay","downvoteType","isInPreviewPlayer","controlsSelectors","controlsSelector","windowHash","decoded","decodeURIComponent","chaptersBox","autogenerated","links","timeElement","address","testingServerAddress","sendRequestToCustomServer","segmentDataCache","pendingList","pendingData","extraRequestData","hasDownvotedSegments","trimUUIDs","fetchSegmentsForVideo","currentTabSkipProfile","getSkipProfileIDForTime","getSkipProfileIDForVideo","getSkipProfileIDForChannel","getSkipProfileID","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","MinimumDuration","SkipRuleAttribute","SkipRuleOperator","isSkipRulePassing","rule","attribute","StartTime","EndTime","Duration","StartTimePercent","EndTimePercent","DurationPercent","Category","Description","Source","ChannelID","ChannelName","VideoDuration","Title","getCurrentPageTitle","getSkipRuleValue","operator","Less","LessOrEqual","Greater","GreaterOrEqual","Equal","NotEqual","Contains","toLocaleLowerCase","NotContains","Regex","RegExp","RegexIgnoreCase","NotRegex","NotRegexIgnoreCase","ruleSet","rules","profileSelection","handleThumbnails","labelThumbnail","setupThumbnailHover","hideThumbnailLabel","extractVideoIDFromElement","getVideoLabel","oldElement","getOldThumbnailLabel","PointerEvent","svg","use","createSBIconElement","createOrGetThumbnail","mainElement","thumbnailHoverListener","fetched","preFetch","getHasStartSegment","getLink","extractVideoID","oldLabel","setThumbnailListener","insertSBIconDefinition","urlTimeToSeconds","urlParams","URLSearchParams","labelCache","getLabelHashBlock","cachedEntry","timestamp","videos","newEntry","fromEntries","hasStartSegment","oldestEntry","openChat","userInfo","publicUserID","warningReason","userName","userNameData","reason","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/chrome/6.0.3/help.js.map b/chrome/6.0.3/help.js.map new file mode 100644 index 00000000..ca9403e3 --- /dev/null +++ b/chrome/6.0.3/help.js.map @@ -0,0 +1 @@ +{"version":3,"file":"help.js","mappings":"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","sources":["webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./src/config.ts","webpack:///./src/help.ts","webpack:///./src/types.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import { localizeHtmlPage } from \"../maze-utils/src/setup\";\nimport Config from \"./config\";\nimport { showDonationLink } from \"./utils/configUtils\";\n\nimport { waitFor } from \"../maze-utils/src\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\n\nif (document.readyState === \"complete\") {\n init();\n} else {\n document.addEventListener(\"DOMContentLoaded\", init);\n}\n\n// DeArrow promotion\nwaitFor(() => Config.isReady()).then(() => {\n if (Config.config.showNewFeaturePopups && Config.config.showUpsells) {\n isDeArrowInstalled().then((installed) => {\n if (!installed) {\n const deArrowPromotion = document.getElementById(\"dearrow-link\");\n deArrowPromotion.classList.remove(\"hidden\");\n\n deArrowPromotion.addEventListener(\"click\", () => Config.config.showDeArrowPromotion = false);\n\n const text = deArrowPromotion.querySelector(\"#dearrow-link-text\");\n text.textContent = `${chrome.i18n.getMessage(\"DeArrowPromotionMessage2\").split(\"?\")[0]}? ${chrome.i18n.getMessage(\"DeArrowPromotionMessage3\")}`;\n\n const closeButton = deArrowPromotion.querySelector(\".close-button\");\n closeButton.addEventListener(\"click\", (e) => {\n e.preventDefault();\n\n deArrowPromotion.classList.add(\"hidden\");\n Config.config.showDeArrowPromotion = false;\n Config.config.showDeArrowInSettings = false;\n });\n }\n });\n }\n});\n\nasync function init() {\n localizeHtmlPage();\n\n await waitFor(() => Config.config !== null);\n\n if (!Config.config.darkMode) {\n document.documentElement.setAttribute(\"data-theme\", \"light\");\n }\n\n if (!showDonationLink()) {\n document.getElementById(\"donate-component\").style.display = \"none\";\n }\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(3105);\n"],"names":["isSafari","navigator","vendor","formatKey","key","length","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","then","result","sync","configProxy","chrome","storage","onChanged","addListener","changes","areaName","newValue","callback","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","value","Date","now","add","delayUpdate","items","clear","map","v","reduce","acc","k","setTimeout","get","data","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","error","runtime","lastError","alert","i18n","getMessage","fetchConfig","Promise","all","resolve","undefined","window","location","href","includes","isFirefoxOrSafari","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","condition","timeout","check","predicate","reject","interval","intervalCheck","clearInterval","toString","Error","stack","setInterval","url","includeQuestionMark","counter","seperator","JSON","stringify","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","id","getManifest","version","getLocalizedMessage","text","valNewH","replace","match","v1","charset","cryptoFuncs","crypto","getRandomValues","values","Uint32Array","i","Math","floor","random","localizedTitle","document","title","body","querySelector","localizedMessage","innerHTML","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","supportInvidious","serverAddress","CompileConfig","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","prideTheme","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","name","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","navigationApiAvailable","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","filter","s","channelID","keys","some","push","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","init","localizeHtmlPage","waitFor","documentElement","setAttribute","getElementById","style","display","readyState","addEventListener","isDeArrowInstalled","installed","deArrowPromotion","classList","textContent","split","e","preventDefault","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","count","sendMessage","message","response","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/chrome/6.0.3/options.js.LICENSE.txt b/chrome/6.0.3/options.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/chrome/6.0.3/options.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/chrome/6.0.3/options.js.map b/chrome/6.0.3/options.js.map new file mode 100644 index 00000000..9b985b31 --- /dev/null +++ b/chrome/6.0.3/options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"options.js","mappings":"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","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/options/AdvancedSkipOptionsComponent.tsx","webpack:///./src/components/options/CategoryChooserComponent.tsx","webpack:///./src/components/options/CategorySkipOptionsComponent.tsx","webpack:///./src/components/options/KeybindComponent.tsx","webpack:///./src/components/options/KeybindDialogComponent.tsx","webpack:///./src/components/options/NumberInputOptionComponent.tsx","webpack:///./src/components/options/SelectOptionComponent.tsx","webpack:///./src/components/options/ToggleOptionComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListItem.tsx","webpack:///./src/components/options/UnsubmittedVideosComponent.tsx","webpack:///./src/config.ts","webpack:///./src/options.ts","webpack:///./src/render/AdvancedSkipOptions.tsx","webpack:///./src/render/CategoryChooser.tsx","webpack:///./src/render/UnsubmittedVideos.tsx","webpack:///./src/svg-icons/resetIcon.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport * as CompileConfig from \"../../../config.json\";\n\nimport Config from \"../../config\";\nimport { AdvancedSkipRuleSet, SkipRuleAttribute, SkipRuleOperator } from \"../../utils/skipRule\";\nimport { ActionType, ActionTypes, CategorySkipOption } from \"../../types\";\n\nlet configSaveTimeout: NodeJS.Timeout | null = null;\n\nexport function AdvancedSkipOptionsComponent() {\n const [optionsOpen, setOptionsOpen] = React.useState(false);\n const [config, setConfig] = React.useState(configToText(Config.local.skipRules));\n const [configValid, setConfigValid] = React.useState(true);\n\n return (\n
\n
{\n setOptionsOpen(!optionsOpen);\n }}>\n {chrome.i18n.getMessage(\"openAdvancedSkipOptions\")}\n
\n\n {\n optionsOpen &&\n
\n
\n \n {chrome.i18n.getMessage(\"advancedSkipSettingsHelp\")}\n \n\n \n {\" - \"}\n {chrome.i18n.getMessage(\"advancedSkipNotSaved\")}\n \n
\n\n \n\n \n \n
\n )\n}\n","import * as React from \"react\";\nimport { VideoID } from \"../types\";\nimport Config from \"../config\";\nimport { Message, MessageResponse } from \"../messageTypes\";\nimport { LoadingStatus } from \"./PopupComponent\";\n\ninterface SegmentSubmissionComponentProps {\n videoID: VideoID;\n status: LoadingStatus;\n\n sendMessage: (request: Message) => Promise;\n}\n\nexport const SegmentSubmissionComponent = (props: SegmentSubmissionComponentProps) => {\n const segments = Config.local.unsubmittedSegments[props.videoID];\n\n const [showSubmitButton, setShowSubmitButton] = React.useState(segments && segments.length > 0);\n const [showStartSegment, setShowStartSegment] = React.useState(!segments || segments[segments.length - 1].segment.length === 2);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"recordTimesDescription\")}\n

\n \n {chrome.i18n.getMessage(\"popupHint\")}\n \n
\n \n \n
\n \n {chrome.i18n.getMessage(\"submissionEditHint\")}\n \n
\n );\n};","import * as React from \"react\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { formatJSErrorMessage, getShortErrorMessage } from \"../../maze-utils/src/formating\";\nimport Config from \"../config\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport PencilIcon from \"../svg-icons/pencilIcon\";\nimport ClipboardIcon from \"../svg-icons/clipboardIcon\";\nimport CheckIcon from \"../svg-icons/checkIcon\";\nimport { showDonationLink } from \"../utils/configUtils\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport const YourWorkComponent = () => {\n const [isSettingUsername, setIsSettingUsername] = React.useState(false);\n const [username, setUsername] = React.useState(\"\");\n const [newUsername, setNewUsername] = React.useState(\"\");\n const [usernameSubmissionStatus, setUsernameSubmissionStatus] = React.useState(\"\");\n const [submissionCount, setSubmissionCount] = React.useState(\"\");\n const [viewCount, setViewCount] = React.useState(0);\n const [minutesSaved, setMinutesSaved] = React.useState(0);\n const [showDonateMessage, setShowDonateMessage] = React.useState(false);\n\n React.useEffect(() => {\n (async () => {\n const values = [\"userName\", \"viewCount\", \"minutesSaved\", \"vip\", \"permissions\", \"segmentCount\"];\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config!.userID!),\n values\n });\n } catch (e) {\n console.error(\"[SB] Caught error while fetching user info\", e);\n return\n }\n\n if (result.ok) {\n const userInfo = JSON.parse(result.responseText);\n setUsername(userInfo.userName);\n setSubmissionCount(Math.max(Config.config.sponsorTimesContributed ?? 0, userInfo.segmentCount).toLocaleString());\n setViewCount(userInfo.viewCount);\n setMinutesSaved(userInfo.minutesSaved);\n\n if (username === \"sponege\") {\n Config.config.prideTheme = true;\n }\n\n Config.config!.isVip = userInfo.vip;\n Config.config!.permissions = userInfo.permissions;\n\n setShowDonateMessage(Config.config.showDonationLink && Config.config.donateClicked <= 0 && Config.config.showPopupDonationCount < 5\n && viewCount < 50000 && !Config.config.isVip && Config.config.skipCount > 10 && showDonationLink());\n } else {\n logRequest(result, \"SB\", \"user info\");\n }\n })();\n }, []);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"yourWork\")}\n

\n
\n {/* Username */}\n
\n

\n {chrome.i18n.getMessage(\"Username\")}:\n {/* loading/errors */}\n \n {usernameSubmissionStatus}\n \n

\n
\n

{username}

\n \n \n
\n
\n {\n setNewUsername(e.target.value);\n }}/>\n \n
\n
\n \n
\n\n \n\n {showDonateMessage && {\n setShowDonateMessage(false);\n Config.config.showPopupDonationCount = 100;\n }} />}\n\n
\n );\n};\n\nfunction SubmissionCounts(props: { isSettingUsername: boolean; submissionCount: string }): JSX.Element {\n return <>\n
\n

\n {chrome.i18n.getMessage(\"Submissions\")}:\n

\n

{props.submissionCount}

\n
\n \n}\n\nfunction TimeSavedMessage({ viewCount, minutesSaved }: { viewCount: number; minutesSaved: number }): JSX.Element {\n return (\n <>\n {\n viewCount > 0 &&\n

\n {chrome.i18n.getMessage(\"savedPeopleFrom\")}\n \n {viewCount.toLocaleString()}{\" \"}\n \n {viewCount !== 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}\n
\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(minutesSaved)}{\" \"}\n {minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {chrome.i18n.getMessage(\"youHaveSavedTimeEnd\")}{\" \"}\n {\" )\"}\n \n

\n }\n

\n {chrome.i18n.getMessage(\"youHaveSkipped\")}\n \n {Config.config.skipCount}{\" \"}\n \n {Config.config.skipCount > 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}{\" \"}\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(Config.config.minutesSaved)}{\" \"}\n {Config.config.minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {\")\"}\n \n

\n \n );\n}\n\nfunction DonateMessage(props: { onClose: () => void }): JSX.Element {\n return (\n \n );\n}\n\n/**\n * Converts time in minutes to 2d 5h 25.1\n * If less than 1 hour, just returns minutes\n *\n * @param {float} minutes\n * @returns {string}\n */\nfunction getFormattedHours(minutes) {\n minutes = Math.round(minutes * 10) / 10;\n const years = Math.floor(minutes / 525600); // Assumes 365.0 days in a year\n const days = Math.floor(minutes / 1440) % 365;\n const hours = Math.floor(minutes / 60) % 24;\n return (years > 0 ? years + chrome.i18n.getMessage(\"yearAbbreviation\") + \" \" : \"\") + (days > 0 ? days + chrome.i18n.getMessage(\"dayAbbreviation\") + \" \" : \"\") + (hours > 0 ? hours + chrome.i18n.getMessage(\"hourAbbreviation\") + \" \" : \"\") + (minutes % 60).toFixed(1);\n}\n","import * as React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { PopupComponent } from \"./PopupComponent\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport Config from \"../config\";\n\n\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n await waitFor(() => Config.isReady());\n\n const root = createRoot(document.body);\n root.render();\n})","import { Message, MessageResponse } from \"../messageTypes\";\n\nexport function copyToClipboardPopup(text: string, sendMessage: (request: Message) => Promise): void {\n if (window === window.top) {\n window.navigator.clipboard.writeText(text);\n } else {\n sendMessage({\n message: \"copyToClipboard\",\n text\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\n\nexport interface CheckIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst CheckIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: CheckIconProps): JSX.Element => (\n \n \n \n);\n\nexport default CheckIcon;","import * as React from \"react\";\n\nexport interface ClipboardIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ClipboardIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: ClipboardIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ClipboardIcon;","import * as React from \"react\";\n\nexport interface PencilIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst PencilIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: PencilIconProps): JSX.Element => (\n \n \n \n);\n\nexport default PencilIcon;","import * as React from \"react\";\n\nexport interface AddIconProps {\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ResetIcon = ({\n className = \"\",\n style = {},\n onClick\n}: AddIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ResetIcon;","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4901);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","timeout","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","innerText","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CountdownMode","bounds","NoticeComponent","React","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","right","bottom","showInSecondSlot","startCountdown","noticeStyle","userSelect","className","extraClass","onMouseEnter","onMouseLeave","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","prideTheme","limitWidth","hideLogo","getURL","fill","logoFill","float","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","close","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","cursor","textDecoration","icon","getTextElements","textParts","textPart","rel","SelectOptionComponent","label","htmlFor","onChange","option","showResetButton","onReset","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","CompileConfig","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","downvotedSegments","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","LoadingStatus","loadRetryCount","loadSegments","updating","segmentsLoaded","setStatus","NoVideo","SegmentsFound","JSError","NoSegmentsFound","ConnectionError","StillLoading","setVideoID","Video","setCurrentTime","setChanelIDInfo","channelAuthor","setCurrentTabSkipProfile","currentTabSkipProfileID","setSegments","sponsorTimes","segment","SponsorSourceType","Server","actionType","ActionType","Full","setLoopedChapter","loopedChapter","active","currentWindow","setupComPort","port","connect","onDisconnect","msg","SkipProfileButton","menuOpen","setMenuOpen","channelSkipProfileSet","getSkipProfileIDForChannel","skipProfileSet","getSkipProfileID","role","tabIndex","setShowForceChannelCheckWarning","viewBox","SkipProfileMenu","open","PopupComponent","Loading","extensionEnabled","setExtensionEnabled","showForceChannelCheckWarning","showNoticeButton","setShowNoticeButton","segments","forwardClickEvents","getVideoStatusText","stopAnimation","SegmentListComponent","SegmentSubmissionComponent","YourWorkComponent","logs","copyToClipboardPopup","generateDebugDetails","origin","endsWith","skipProfileOptions","getSkipProfileIDForTime","getSkipProfileIDForTab","getSkipProfileIDForVideo","configID","setConfigID","selectedSkipProfileAction","setSelectedSkipProfileAction","allSkipProfiles","setAllSkipProfiles","getChannelIDInfo","isOnYTTV","position","hash","updateSkipProfileSetting","SkipProfileRadioButtons","setSelected","updateConfig","alreadySelected","highlighted","overridden","SkipOptionActionComponent","getVideoID","SegmentListTab","isSegment","Chapter","isChapter","SegmentListItem","tabFilter","voteMessage","setVoteMessage","hidden","setHidden","SponsorHideType","Visible","isLooped","setIsLooped","UUID","extraInfo","Downvoted","MinimumDuration","Hidden","onDoubleClick","skipSegment","selectSegment","backgroundColor","category","description","shortCategoryName","margin","getFormattedTime","Poi","vote","segmentIDData","asyncRequestToServer","logRequest","loopChapter","Skip","Mute","newState","innerChapters","InnerChapterList","chapters","chapter","messageDuration","formatJSErrorMessage","getShortErrorMessage","ImportSegments","importMenuVisible","setImportMenuVisible","textArea","exportTimes","referenceNode","minWidth","rows","setTab","setIsVip","hasSegments","hasChapters","setTabBasedOnConfig","preferChapters","Chapters","segmentsWithNesting","chapterStack","seg","lastChapter","showSubmitButton","setShowSubmitButton","showStartSegment","setShowStartSegment","textAlign","SubmissionCounts","isSettingUsername","submissionCount","TimeSavedMessage","viewCount","toLocaleString","getFormattedHours","DonateMessage","alignItems","justifyContent","paddingLeft","onClose","round","years","days","setIsSettingUsername","username","setUsername","newUsername","setNewUsername","usernameSubmissionStatus","setUsernameSubmissionStatus","setSubmissionCount","setViewCount","setMinutesSaved","showDonateMessage","setShowDonateMessage","publicUserID","userInfo","userName","segmentCount","vip","clipboard","writeText","placeholder","utils","contentContainer","noticeRef","findReferenceNode","noticeElement","prepend","root","update","textBoxes","maxHeight","getMessageBoxes","getButtons","xmlns","points","ActionTypes","backgroundScriptContainer","wait","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","enable","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","other","endOverlaps","other1","other2","getTimestampsDuration","getSponsorIndexFromUUID","getSponsorTimeFromUUID","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","extension","inIncognitoContext","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","uuid","autoSkip","categoryName","messageId","DEFAULT_CATEGORY","inTest","chapterNames","categoryList","names","exportTime","removeIf","matchers","matcher","YouTube","Autogenerated","videoDuration","lines","timeRegex","anyLineHasTime","line","getFormattedTimeToSeconds","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","Local","generateUserID","hashparamSegments","address","testingServerAddress","sendRequestToCustomServer","currentTabSkipProfile","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/edge/6.0.3/background.js.map b/edge/6.0.3/background.js.map new file mode 100644 index 00000000..6fb80340 --- /dev/null +++ b/edge/6.0.3/background.js.map @@ -0,0 +1 @@ +{"version":3,"file":"background.js","mappings":"wlBAAA,gBACA,UACA,UACA,UAuBA,SAAsBA,EAA8BC,EAAcC,EAC1DC,EAAuC,CAAC,EAAGC,EAAmC,CAAC,G,yCAkBnF,MAhB2B,QAAvBH,EAAKI,gBACLH,GAAM,IAAAI,aAAYJ,EAAKC,GAAM,GAE7BA,EAAO,YAGYI,MAAML,EAAK,CAC9BM,OAAQP,EACRG,QAAS,OAAF,QACH,eAAgB,oBACZA,GAAW,CAAC,GAEpBK,SAAU,SACVC,KAAMP,EAAOQ,KAAKC,UAAUT,GAAQ,MAI5C,G,CAQA,SAAgBU,EAAeC,GAC3B,IAEI,OADAC,OAAOC,gBAAgBF,IAChB,C,CACT,SACE,OAAO,C,CAEf,CAcA,SAAgBG,EAAwBH,GACpC,OAAOD,EAAeC,GAChBA,EAEE,aAAcA,GAAmC,mBAAnBA,EAAMI,SAClCJ,EAAMI,WACNC,OAAOL,EAErB,CAzDA,kCA4BA,mBAqBA,yBAUA,yCACIM,OAAOC,QAAQC,UAAUC,aAAY,CAACC,EAASC,EAAQC,IAC3B,gBAApBF,EAAQG,SACR3B,EAA8BwB,EAAQvB,KAAMuB,EAAQtB,IAAKsB,EAAQrB,KAAMqB,EAAQpB,SAASwB,MAAYC,GAAa,EAAD,gCAC5G,MAAMC,EAASN,EAAQO,QACf,IAAAC,wBAAwB,IAAAC,kBAChBJ,EAASK,OACfC,MAAMC,KAAK,IAAIC,iBAAiBR,EAASS,gBAC7C,KAENZ,EAAS,CACLa,aAAef,EAAQO,OAAiC,SAAlBF,EAASW,OAC/CC,eAAgBX,EAChB1B,QAAUoB,EAAQkB,eAAiBb,EAASzB,QAClC,IAAIyB,EAASzB,QAAQuC,WAAWC,QAAO,CAACC,GAAMC,EAAKhC,MACjD+B,EAAIC,GAAOhC,EACJ+B,IAEb,CAAC,GACD,KACNE,OAAQlB,EAASkB,OACjBC,GAAInB,EAASmB,IAErB,MAAGC,OAAMC,IACLC,QAAQD,MAAM,0BAA2BA,GACzCxB,EAAS,CACLwB,MAAOjC,EAAqBiC,IAC9B,KAGC,GAGa,YAApB1B,EAAQG,WACR,IAAAyB,SAAQ5B,EAAQV,MAAOU,EAAQ6B,OAAOzB,KAAKF,GAAUuB,OAAOK,IACxDH,QAAQD,MAAM,uBAAwBI,GACtC5B,EAAS,CACLwB,MAAOjC,EAAqBqC,IAC9B,KAGC,IAKnB,EAEA,qCAA0CrD,EAAcC,EAAaC,EAAO,CAAC,EAAGC,EAAU,CAAC,GACvF,OAAO,IAAImD,SAAQ,CAACC,EAASC,KAEzBrC,OAAOC,QAAQqC,YAAY,CACvB/B,QAAS,cACT1B,OACAC,MACAC,OACAC,YACAyB,IACI,UAAWA,EACX4B,EAAO5B,EAASqB,OAEhBM,EAAQ3B,E,GAEd,GAEV,EAEA,2CAAgD5B,EAAcC,EAAaC,EAAO,CAAC,EAAGC,EAAU,CAAC,GAC7F,OAAO,IAAImD,SAAQ,CAACC,EAASC,KAEzBrC,OAAOC,QAAQqC,YAAY,CACvB/B,QAAS,cACT1B,OACAC,MACAC,OACAC,UACA2B,QAAQ,EACRW,eAAe,IACfb,IACI,UAAWA,EACX4B,EAAO5B,EAASqB,OAEhBM,EAAQ3B,E,GAEd,GAEV,EAWA,sBAA2BL,EAA8CmC,EAAgBC,GACrF,MAAMlD,EAAQ,iBAAkBc,KAAY,IAAAqC,eAAcrC,EAAQe,cAAiB,KAAKf,EAAQe,eAAiB,GACjHY,QAAQW,KAAK,IAAIH,iCAAsCnC,EAAQuB,eAAea,YAA6BlD,IAC/G,C,iFCzLa,EAAAqD,QAA8B,oBAAd,QAAgD,oBAAb,OAA2B3C,OAAS,KAAoC4C,O,0fCAxI,gBAEMC,EAAmC,GA2BzC,SAAgBC,IACZ,MAAO,GAAG9C,OAAOC,QAAQ8C,YAC7B,CA5BA,8BAAmCC,GAC/BH,EAAiBI,KAAKD,EAC1B,EAEA,kCACI,MAAME,EAASJ,IAETK,EAAUC,YAAYC,MAC5B1D,OAAO2D,YAAY,CACfJ,SACA3C,QAqBG,kBAlBPZ,OAAO4D,iBAAiB,WAAYhD,I,MAChC,IAAgB,QAAZ,EAAAA,EAAQxB,YAAI,eAAEmE,SACP3C,EAAQxB,KAAKmE,SAAWA,GAgBhC,kBAfQ3C,EAAQxB,KAAKwB,SACb6C,YAAYC,MAAQF,EAAU,IAErC,IAAK,MAAMH,KAAYH,EACnBG,G,GAIhB,EAEA,iBAIA,oCACI,MAAO,eACX,EAQA,gCAA2CQ,EAAiC,GAAIC,GAAqB,G,yCACjG,MAAMC,EAAUD,EAAqBD,EAAeA,EAAaG,OAAO3D,OAAOC,QAAQ2D,cAAcC,iBAAmB,IACxH,GAAI,cAAe7D,OACf,IAAK,MAAM8D,KAAMJ,EACb,IAAK,MAAMK,WAAa,EAAApB,QAAQqB,KAAKC,MAAM,CAACnF,IAAKgF,EAAGI,UAC5CJ,EAAGK,KAAOL,EAAGK,IAAIC,OAAS,UACpB,EAAAzB,QAAQ0B,UAAUC,UAAU,CAC9BC,OAAQ,CAACC,MAAOT,EAAIhB,IACpB0B,MAAOX,EAAGK,KAAO,YAInB,EAAAxB,QAAQ0B,UAAUK,cAAc,CAClCH,OAAQ,CAACC,MAAOT,EAAIhB,IACpB0B,MAAOX,EAAGa,IAAM,GAEhBC,MAAOd,EAAU,OAAK,kBAKlC9D,OAAO6E,QAAQC,OAAO,CAClBC,UAAU,IACVF,I,QACA,IAAK,MAAMlF,KAAUkF,EACjB,GAAIlF,EAAOqE,KACP,IAAK,MAAMD,KAAOpE,EAAOqE,KACrB,IAAK,MAAMgB,KAAUtB,EACjB,GAAIK,EAAIjF,MAA2B,QAApB,EAAc,QAAd,EAAAkG,EAAOd,eAAO,eAAEe,YAAI,uBAAIC,GAC/BnB,EAAIjF,IAAKoG,MAAMA,EACNC,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,UAAS,CACrC,GAAIH,EAAOL,GACP,IAAK,MAAMS,KAAQJ,EAAOL,GACjB3E,OAAOgE,KAAKU,cAAcX,EAAIhB,GAAK,CACpCqC,SAKZ,GAAIJ,EAAOb,IACP,IAAK,MAAMiB,KAAQJ,EAAOb,IACjBnE,OAAOgE,KAAKM,UAAUP,EAAIhB,GAAK,CAChCqC,Q,IAW5C,G,udClGA,gBA4OA,SAAgBvE,IACZ,MAA6B,oBAAhB,WAAoD,yBAArBwE,UAAUC,MAC1D,CAcA,SAAgBC,EAAU7D,GACtB,OAAW,MAAPA,EACO,GACK,KAAPA,EACE,QACY,GAAdA,EAAI0C,OACF1C,EAAI8D,cAEJ9D,CACf,CA5OA,oBAWI,WAAA+D,CAAaC,EAAiBC,EACtBC,EAAuDC,GAAY,GAX3E,KAAAC,qBAA0E,GAC1E,KAAAC,oBAAyE,GAGzE,KAAAC,iBAA6B,KAC7B,KAAAC,mBAA+B,KAC/B,KAAAC,OAAmB,KACnB,KAAAC,MAAkB,KAClB,KAAAN,WAAY,EAIRO,KAAKV,aAAeA,EACpBU,KAAKT,cAAgBA,EACrBS,KAAKP,UAAYA,EAEZO,KAAKC,YAAYT,GAAuBpF,MAAM8F,IAC/CF,KAAKF,OAASI,aAAM,EAANA,EAAQC,KACtBH,KAAKD,MAAQG,aAAM,EAANA,EAAQH,KAAK,GAElC,CAEA,WAAAK,GACIxG,OAAOyG,QAAQC,UAAUvG,aAAY,CAACwG,EAAwDC,KAC1F,GAAiB,SAAbA,EAAqB,CACrB,IAAK,MAAMlF,KAAOiF,EACdP,KAAKJ,iBAAkBtE,GAAOiF,EAAQjF,GAAKmF,SAG/C,IAAK,MAAMvG,KAAY8F,KAAKL,oBACxBzF,EAASqG,E,MAEV,GAAiB,UAAbC,EAAsB,CAC7B,IAAK,MAAMlF,KAAOiF,EACdP,KAAKH,mBAAoBvE,GAAOiF,EAAQjF,GAAKmF,SAGjD,IAAK,MAAMvG,KAAY8F,KAAKN,qBACxBxF,EAASqG,E,KAKrB,IAAIG,EAAU,EACd,MAAMC,EAA4B,IAAIC,IACtC,IAAIC,EAAuC,KAE3C,MAAMC,EAAOd,KACPe,EAAyC,CAC3C,GAAAC,CAAiCC,EAAkBC,EAAS5H,GAGxD,GAFAwH,EAAKlB,iBAAkBsB,GAAQ5H,EAE3B6H,KAAKlE,MAAQyD,EAAU,IAAK,CAE5B,GADAC,EAAaS,IAAIF,IACZL,EAAe,CAChB,MAAMQ,EAAc,KAChB,MAAMC,EAAQ,IAAIX,GAClBA,EAAaY,QAER3H,OAAOyG,QAAQF,KAAKa,IAAIM,EAAME,KAAKC,GAAM,CAACA,EAAGX,EAAKlB,iBAAkB6B,MAAKrG,QAAO,CAACC,GAAMqG,EAAGD,MAC3FpG,EAAIqG,GAAKD,EACFpG,IACR,CAAC,IAEJwF,EAAgB,IAAI,EAGxBA,EAAgBc,WAAWN,EAAa,G,CAG5C,OAAO,C,CASX,OANKzH,OAAOyG,QAAQF,KAAKa,IAAI,CACzB,CAACE,GAAO5H,IAGZoH,EAAUS,KAAKlE,OAER,CACX,EAEA,GAAA2E,CAAiCX,EAAkBC,GAC/C,MAAMvI,EAAOmI,EAAKlB,iBAAkBsB,GAEpC,OAAOD,EAAIC,IAASvI,CACxB,EAEAkJ,eAAc,CAACZ,EAAkBC,KACxBtH,OAAOyG,QAAQF,KAAK2B,OAAgBZ,IAElC,IAKTa,EAA2C,CAC7Cf,IAAG,CAA+BC,EAAmBC,EAAS5H,KAC1DwH,EAAKjB,mBAAoBqB,GAAQ5H,EAE5BM,OAAOyG,QAAQN,MAAMiB,IAAI,CAC1B,CAACE,GAAO5H,KAGL,GAGX,GAAAsI,CAAkCX,EAAmBC,GACjD,MAAMvI,EAAOmI,EAAKjB,mBAAoBqB,GAEtC,OAAOD,EAAIC,IAASvI,CACxB,EAEAkJ,eAAc,CAACZ,EAAmBC,KACzBtH,OAAOyG,QAAQN,MAAM+B,OAAgBZ,IAEnC,IAKf,MAAO,CACHf,KAAM,IAAI6B,MAAS,CAAEC,QAASlB,GAA+BA,GAC7DhB,MAAO,IAAIiC,MAAS,CAAEC,QAASF,GAAgCA,GAEvE,CAEA,eAAAG,CAAgBhB,GACZ,MAAM5H,EAAQ0G,KAAKJ,iBAAkBsB,GAChCtH,OAAOyG,QAAQF,KAAKa,IAAI,CACzB,CAACE,GAAO5H,GAEhB,CAEA,gBAAA6I,CAAiBjB,GACb,MAAM5H,EAAQ0G,KAAKH,mBAAoBqB,GAElCtH,OAAOyG,QAAQN,MAAMiB,IAAI,CAC1B,CAACE,GAAO5H,IACT,KACC,MAAMoC,EAAQ9B,OAAOC,QAAQuI,UACzB1G,GAAkB,2BAATwF,GACTmB,MAAM,yBAAyBzI,OAAO0I,KAAKC,WAAW,qBAAqB7G,I,GAGvF,CAEM,WAAA8G,G,+CACIzG,QAAQ0G,IAAI,CAAC,IAAI1G,SAAeC,IAClCpC,OAAOyG,QAAQF,KAAKyB,IAAI,MAAON,IAC3BtB,KAAKJ,iBAAiC0B,OAERoB,IAA1B1C,KAAKJ,mBACLI,KAAKJ,iBAAmB,CAAC,GAErBI,KAAKP,WACElG,OAAOoJ,SAASC,KAAKC,SAAS,kBACrCR,MAAM,GAAGzI,OAAO0I,KAAKC,WAAW,yBAC5BvC,KAAKP,UAAY,OAAO7F,OAAO0I,KAAKC,WAAW,gCAAkC,MACjF,IAAA/H,uBAAwBC,IAAa,OAAOb,OAAO0I,KAAKC,WAAW,oCAAsC,OAIrHvG,GAAS,GACX,IACF,IAAID,SAAeC,IACnBpC,OAAOyG,QAAQN,MAAM6B,IAAI,MAAON,IAC5BtB,KAAKH,mBAAoCyB,QAAAA,EAAS,CAAC,EACnDtF,GAAS,GACX,KAEV,G,CAEM,WAAAiE,CAAYT,G,yCACd,GAAuB,oBAAb,OAA0B,OAAO,WAErCQ,KAAKwC,cACXxC,KAAK8C,cACL,MAAM5C,EAASF,KAAKI,cAGpB,OAFAZ,EAAsBU,EAAOC,KAAMD,EAAOH,OAEnCG,CACX,G,CAGA,WAAA4C,GACI,IAAK,MAAMxH,KAAO0E,KAAKV,aACnB,GAAIyD,OAAOC,UAAUC,eAAeC,KAAKlD,KAAKJ,iBAAkBtE,IAEzD,GAAY,aAARA,EACP,IAAK,MAAM6H,KAAQnD,KAAKV,aAAahE,GAC7ByH,OAAOC,UAAUC,eAAeC,KAAKlD,KAAKJ,iBAAkBtE,GAAM6H,KAClEnD,KAAKJ,iBAAkBtE,GAAK6H,GAAQnD,KAAKV,aAAahE,GAAK6H,SAJnEnD,KAAKJ,iBAAkBtE,GAAO0E,KAAKV,aAAahE,GAUxD,IAAK,MAAMA,KAAO0E,KAAKT,cACfwD,OAAOC,UAAUC,eAAeC,KAAKlD,KAAKH,mBAAoBvE,KAC9D0E,KAAKH,mBAAoBvE,GAAO0E,KAAKT,cAAcjE,GAG/D,CAEA,OAAA8H,GACI,OAAuB,OAAhBpD,KAAKF,MAChB,GAGJ,aAIA,yBAA8BuD,EAAgBC,GAC1C,QAAa,MAATD,GAA2B,MAAVC,GACbC,QAAQF,EAAMG,MAAQD,QAAQD,EAAOE,MAAQD,QAAQF,EAAMI,OAASF,QAAQD,EAAOG,OAASF,QAAQF,EAAMK,QAAUH,QAAQD,EAAOI,QACtH,MAAbL,EAAM/H,KAA6B,MAAd+H,EAAMM,MAA8B,MAAdL,EAAOhI,KAA8B,MAAfgI,EAAOK,QAE9D,MAAdN,EAAMM,MAA+B,MAAfL,EAAOK,KACtBN,EAAMM,OAASL,EAAOK,KAChB,MAAbN,EAAM/H,KAA6B,MAAdgI,EAAOhI,KACrB+H,EAAM/H,IAAI8D,gBAAkBkE,EAAOhI,IAAI8D,cAEtD,EAEA,cAWA,2BAAgCwE,GAC5B,GAAe,MAAXA,GAAkC,MAAfA,EAAQtI,IAC3B,MAAO,GAEX,IAAIuI,EAAM,GAQV,OAPID,EAAQH,OACRI,GAAO,WACPD,EAAQJ,MACRK,GAAO,UACPD,EAAQF,QACRG,GAAO,YAEJA,EAAO1E,EAAUyE,EAAQtI,IACpC,C,qVCpRA,SAAgBwI,EAAUC,EAA6BC,GAAc,G,UACjE,IAAKD,EACD,OAAO,EAIX,GAAwB,UAApBA,EAAQE,UACJF,EAAQG,UAAUC,SAAS,qBAAsC,WAAfJ,EAAQpH,IAAkC,qBAAfoH,EAAQpH,KACT,IAA7E,IAAIyH,SAASC,iBAAiB,UAAUC,QAAQ7C,GAAMA,EAAE8C,WAAUvG,QACjE+F,EAA6BQ,SACjC,OAAO,EAGX,GAA6B,IAAzBR,EAAQS,cAA+C,IAAxBT,EAAQU,cAAsBT,EAC7D,OAAO,EAGX,MAAMU,EAAeX,aAAO,EAAPA,EAASY,wBACxBC,EAAiBR,SAASS,iBAAiBH,EAAaI,KAAOJ,EAAaK,MAAQ,EACtFL,EAAaM,IAAMN,EAAaO,OAAS,IACtCb,SAASS,iBAAiBH,EAAaI,KAAMJ,EAAaM,KAEjE,OAAKJ,GACqB,iBAAfb,EAAQpH,IACR+H,EAAaM,IAAM,MAI1BJ,IAAmBb,GACTa,GAAkBb,EAAQI,SAASS,IACnCA,GAAkBA,EAAeT,SAASJ,KAShC,UAApBA,EAAQE,aAC+C,QAA9C,EAAAW,aAAc,EAAdA,EAAgBM,QAAQ,8BAAsB,eAAEf,SAASJ,QACJ,QAArD,EAA0C,QAA1C,EAAAA,aAAO,EAAPA,EAASmB,QAAQ,iCAAyB,eAAEhB,iBAAS,eAAEC,SAAS,iBAIjF,CAEA,SAAgBgB,EAAkBpB,EAA6BC,GAAc,EAAOoB,GAAc,G,QAC9F,OAAOtB,EAAUC,EAASC,IAClBoB,KAAiBrB,IAAYD,EAAUC,EAAQsB,cAAerB,IAAgBF,EAA8C,QAApC,EAAqB,QAArB,EAAAC,EAAQsB,qBAAa,eAAEA,qBAAa,QAAI,KAAMrB,GAClJ,CAMA,SAAgBsB,EAAiBC,EAAmDvB,GAAc,EAAOoB,GAAc,GACnH,OAAOI,EAA8BD,EAAUvB,EAAaoB,EAChE,CAEA,SAASI,EAAiCC,EAAwCzB,GAAc,EAAOoB,GAAc,EAAOM,GACxH,IAAK,MAAMzE,KAAOwE,EAAS,CACvB,MAAM1B,EAAU2B,EAAYA,EAAUzE,GAAYA,EAClD,GAAI8C,GAAWoB,EAAkBpB,EAASC,EAAaoB,GACnD,OAAOrB,C,CAIf,OAAO,IACX,CAEA,SAAgB4B,EAAsBC,EAAqBC,GACvD,IAAK,MAAMC,KAAYF,EAAW,CAC9B,MAAM7B,EAAUK,SAAS2B,cAAcD,GACvC,GAAI/B,GAAW8B,EAAU9B,GACrB,OAAOA,C,CAIf,OAAO,IACX,C,sNAhFA,cA+CA,sBAKA,wCAA6C6B,EAAqB5B,GAAc,EAAOoB,GAAc,GACjG,OAAOI,EAA8BI,EAAW5B,EAAaoB,GAAcU,GAAa1B,SAAS2B,cAAcD,IACnH,EAEA,qBAeA,0BAWA,+BAAoCF,GAChC,OAAOD,EAAsBC,GAAY7B,IAAW,QAAC,OAA4B,QAA3B,EAAmB,QAAnB,EAAAA,EAAQiC,mBAAW,eAAEC,cAAM,QAAI,IAAIjI,OAAS,CAAC,GACvG,EAYA,IAAIkI,GAAkC,EAClCC,EAAmD,KACnDC,EAAoC,GAwCxC,SAASC,IACL,IAAKF,EAAyB,CAC1B,MAAMG,EAAmBC,I,MACrB,MAAMC,EAA2B,GACjC,IAAK,MAAMC,KAAkBL,EAAiB,CAC1C,MAAM,SAAEN,EAAQ,aAAEY,EAAY,YAAE1C,EAAW,YAAEoB,EAAW,UAAEuB,GAAcF,EAExE,IAAIG,GAAyB,EAC7B,GAAIL,EAAW,CACX,IAAIM,GAAQ,EACZ,IAAK,MAAMC,KAAYP,EACnB,GAAsB,cAAlBO,EAASrO,MAAwBqO,EAASC,WAAW/I,OAAS,EAAG,CACjE,GAAI8I,EAAS3I,kBAAkB6I,cACnBF,EAAS3I,OAAOL,QAAQgI,IAAagB,EAAS3I,OAAO4H,cAAcD,IAAY,CACvFe,GAAQ,EACR,K,CAGJ,IAAK,MAAMI,KAAQH,EAASC,WACxB,GAAIE,aAAgBD,cACRC,EAAKnJ,QAAQgI,IAAamB,EAAKlB,cAAcD,IAAY,CACjEe,GAAQ,EACR,K,CAIR,GAAIA,EACA,K,CAKPA,IACDD,GAAyB,E,CAIjC,MAAMM,EACFN,EAAyBxC,SAASC,iBAAiByB,GAAYW,EAAelB,SAClF,GAAI2B,GAAoBA,EAAiBlJ,OAAS,EAAG,CACjDyI,EAAelB,SAAW2B,EAE1B,MAAMnD,EAAU2C,EAAepB,EAAiB4B,EAAkBlD,EAAaoB,GAAe8B,EAAiB,GAC/G,GAAInD,EAAS,CACT,GAAkB,QAAd,EAAAnK,OAAOC,eAAO,eAAE8C,GAChB,IAAK,MAAMzC,KAAYyM,EACnBzM,EAAS6J,GAIjByC,EAAe3J,KAAKiJ,E,GAKhCM,EAAkBA,EAAgB9B,QAAQP,IAAayC,EAAe3D,SAASkB,EAAQ+B,YAExD,IAA3BM,EAAgBpI,SAChBmI,SAAAA,EAAyBgB,aACzBhB,EAA0B,KAC1BD,GAAkC,E,EAK1CI,IAEIF,EAAgBpI,OAAS,IACzBmI,EAA0B,IAAIiB,iBAAiBd,GAE/CH,EAAwBkB,QAAQjD,SAASkD,gBAAiB,CACtDC,WAAW,EACXC,SAAS,I,CAIzB,CAEA,SAAgBC,EAAW3B,EAAkBY,EAAuB1C,GAAc,EAAOoB,GAAc,GACnG,OAAOsB,EAAepB,EAAiBlB,SAASC,iBAAiByB,GAAW9B,EAAaoB,GAAehB,SAAS2B,cAAcD,EACnI,CArHA,0BAAqCA,EAAkBY,GAAe,EAAO1C,GAAc,EAAOoB,GAAc,G,yCAC5G,aAAa,IAAIrJ,SAASC,IACtB,MAAM0L,EAAiBD,EAAW3B,EAAUY,EAAc1C,EAAaoB,GACvE,GAAIsC,EAEA,YADA1L,EAAQ0L,GAIZ,MAAMC,EAAyBvB,EAAgBwB,MAAMnB,GAAmBA,EAAeX,WAAaA,GAC7FW,EAAeC,eAAiBA,IAEnCiB,EACAA,EAAuBhB,UAAU9J,KAAKb,GAEtCoK,EAAgBvJ,KAAK,CACjBiJ,WACAY,eACA1C,cACAoB,cACAuB,UAAW,CAAC3K,KAIfkK,IACDA,GAAkC,EAE9B9B,SAASlL,KACTmN,IAEA9M,OAAO4D,iBAAiB,oBAAoB,KACxCkJ,GAA8B,I,GAKlD,G,EAgFA,c,eCvIA,SAAgBhK,EAAcnD,GAC1B,OAAOA,EAAK2J,SAAS,eAAiB3J,EAAK2J,SAAS,kBACxD,C,2LAnFA,qCAA0CgF,GACtC,MAAMC,EAAY,4CAA4CC,KAAKF,GAEnE,OAAkB,OAAdC,EACO,KAOI,MAJDA,EAAU,GAAKE,SAASF,EAAU,IAAM,GAItB,IAHhBA,EAAU,GAAKE,SAASF,EAAU,IAAM,KAAO,IAC/CA,EAAU,GAAKG,WAAWH,EAAU,GAAG/I,QAAQ,IAAK,MAAQ,EAGhF,EAEA,4BAAiCmJ,EAAiBC,GAC9CD,EAAUE,KAAKC,IAAIH,EAAS,GAE5B,MAAMI,EAAQF,KAAKG,MAAML,EAAU,GAAK,IAClCM,EAAUJ,KAAKG,MAAML,EAAU,IAAM,GAC3C,IAAIO,EAAiB9O,OAAO6O,GACxBE,EAAaR,EAAU,GACtBC,IACDO,EAAaN,KAAKG,MAAMG,IAG5B,IAAIC,EAAiBhP,OAAOwO,EAAUO,EAAWE,QAAQ,GAAKF,GAU9D,OARIA,EAAa,KAEbC,EAAiB,IAAMA,GAEvBL,GAASE,EAAU,KAEnBC,EAAiB,IAAMA,GAEvBI,MAAMP,IAAUO,MAAML,GACf,MAGQF,EAAQA,EAAQ,IAAM,IAAMG,EAAiB,IAAME,CAG1E,EAUA,gCAAqCG,EAAoB/N,GAErD,GAAmB,IAAf+N,EACA,OAAOlP,OAAO0I,KAAKC,WAAW,KAGlC,MAAMwG,EACDhO,IACQA,EAAa8H,SAAS,gBAAiB9H,EAAa8H,SAAS,oBAC/D9H,EAAaiD,OAAS,GAEvB,IAAIjD,IACJ,GAGV,IAAIiO,EAAcpP,OAAO0I,KAAKC,WAAW,GAAkB,MAAfuG,EAAqB,IAAMA,KAKvE,MAJoB,KAAhBE,IACAA,EAAcpP,OAAO0I,KAAKC,WAAW,oBAGlC,GAAGyG,KADcpP,OAAO0I,KAAKC,WAAW,aAAaxD,QAAQ,SAAU,GAAG+J,IAAaC,MAElG,EAQA,kBAYA,+BAAoCD,EAAoB/N,GAEpD,GAAmB,IAAf+N,EACA,OAAOlP,OAAO0I,KAAKC,WAAW,KAGlC,MAAM0G,EAAWlO,IAAiBsB,EAActB,GAAiB,OAASA,EAAe,GAEzF,IAAIiO,EAAcpP,OAAO0I,KAAKC,WAAW,GAAkB,MAAfuG,EAAqB,IAAMA,KAMvE,MALoB,KAAhBE,IACAA,EAAcpP,OAAO0I,KAAKC,WAAW,oBAIlC,GAAGyG,KAFcpP,OAAO0I,KAAKC,WAAW,aAAaxD,QAAQ,SAAU,GAAG+J,OAEtCG,IADV,MAAfH,GAAqC,MAAfA,EAAsB,OAAOlP,OAAO0I,KAAKC,WAAW,oBAAsB,IAEtH,EAQA,gCAAqC7G,GAEjC,MAAO,GADc9B,OAAO0I,KAAKC,WAAW,sBACnB7G,GAC7B,C,uZCrHA,mBAAgDpC,EAAUuC,EAAQ,K,yCAC9D,GAAIA,GAAS,EAAG,MAAO,GAEvB,KAAM,WAAYqN,QAEd,OAAO,IAAInN,SAAQ,CAACC,EAASC,IAAWrC,OAAOC,QAAQqC,YAAY,CAC/D/B,QAAS,UACTb,QACAuC,UACAxB,IACIA,EAASqB,MACTO,EAAO5B,EAASqB,OAEhBM,EAAQ3B,E,MAKpB,IAAI8O,EAAkB7P,EACtB,IAAK,IAAI8P,EAAI,EAAGA,EAAIvN,EAAOuN,IAAK,CAC5B,MAAMC,QAAmBH,OAAOI,OAAOC,OAAO,WAAW,IAAIC,aAAcC,OAAON,GAAS7O,QAG3F6O,EADkBxO,MAAMC,KAAK,IAAIC,WAAWwO,IACxB7H,KAAIkI,GAAKA,EAAEhQ,SAAS,IAAIiQ,SAAS,EAAG,OAAMC,KAAK,G,CAGvE,OAAOT,CACX,G,qfC5BA,mBAAiCU,EAAoBC,EAAU,IAAMC,EAAQ,IAAKlE,G,yCAC9E,aAAa,IAAI9J,SAAQ,CAACC,EAASC,KAC/B,IAAI+N,EAAkC,KAEtC,MAAMC,EAAgB,KAClB,MAAM/J,EAAS2J,KACXhE,EAAYA,EAAU3F,GAAUA,KAChClE,EAAQkE,GACJ8J,GAAUE,cAAcF,G,EAIhCF,IACAnI,YAAW,KACPuI,cAAcF,GACd/N,EAAO,uBAAuB4N,aAAS,EAATA,EAAWnQ,eAAeyQ,QAAQC,QAAQ,GACzEN,GAEHE,EAAWK,YAAYJ,EAAeF,IAI1CE,GAAe,GAEvB,G,EAEA,uBAA+BvR,EAAaC,EAAS2R,GACjD,IAAIC,EAAU,EACd,IAAK,MAAMjP,KAAO3C,EAAM,CACpB,MAAM6R,EAAa9R,EAAImK,SAAS,MAAQ0H,EAAU,EAAK,IAAOD,EAAsB,IAAM,GACpFhR,EAA+B,iBAAfX,EAAK2C,GAAsB3C,EAAK2C,GAA4BnC,KAAKC,UAAUT,EAAK2C,IACtG5C,GAAO8R,EAAYC,mBAAmBnP,GAAO,IAAMmP,mBAAmBnR,GAEtEiR,G,CAGJ,OAAO7R,CACX,EAEA,MAAagS,UAA+BP,MAGxC,WAAA9K,CAAYsL,GACRC,MAAM,qBAEN5K,KAAK2K,QAAUA,CACnB,EAqBJ,IAAIE,EA5BJ,wBAUA,yBAAiCf,GAC7B,OAAO,IAAI/N,SAAQ,CAACC,EAASC,KACrB6N,GACAnI,YAAW,KACP1F,EAAO,IAAIyO,EAAsB,GAClCZ,E,GAGf,EAKA,+BAEI,MAA2B,oBAAd,OACjB,EAGA,gCAEI,OADAe,UAAAA,EAAoB,GAAGjR,OAAOC,QAAQ8C,OAAO/C,OAAOC,QAAQ2D,cAAcsN,WACnED,CACX,C,eC3CA,SAAgBE,EAAoB/P,GAChC,MAAMgQ,EAAUhQ,EAAK+D,QAAQ,kBAAkB,SAASD,EAAOmM,GAC3D,OAAOA,EAAKrR,OAAO0I,KAAKC,WAAW0I,GAAIlM,QAAQ,KAAM,SAChDA,QAAQ,KAAM,UAAUA,QAAQ,MAAO,SAAW,EAC3D,IAEA,OAAIiM,GAAWhQ,GACJgQ,CAIf,C,kHAxCA,0BAA+BhN,EAAS,IACpC,MAAMkN,EAAU,iEAChB,IAAIhL,EAAS,GACb,MAAMiL,EAAgC,oBAAX5R,OAAyB2P,OAAS3P,OAAO2P,OACpE,GAAIiC,GAAeA,EAAYC,gBAAiB,CACxC,MAAMC,EAAS,IAAIC,YAAYtN,GAC/BmN,EAAYC,gBAAgBC,GAC5B,IAAK,IAAIjC,EAAI,EAAGA,EAAIpL,EAAQoL,IACpBlJ,GAAUgL,EAAQG,EAAOjC,GAAK8B,IAEtC,OAAOhL,C,CAEP,IAAK,IAAIkJ,EAAI,EAAGA,EAAIpL,EAAQoL,IACxBlJ,GAAUgL,EAAQ9C,KAAKG,MAAsB2C,GAAhB9C,KAAKmD,WAEtC,OAAOrL,CAEnB,EAEA,8BAEI,MAAMsL,EAAiBT,EAAoB3G,SAASqH,OAChDD,IAAgBpH,SAASqH,MAAQD,GAErC,MAAMtS,EAAOkL,SAAS2B,cAAc,yBAC9B2F,EAAmBX,EAAoB7R,EAAMyS,UAAUjS,YACzDgS,IAAkBxS,EAAMyS,UAAYD,EAC5C,EAEA,uB,2FC7BA,gBAGA,SAASE,EAAqBxN,GAC1BxE,OAAOgE,KAAK1B,YAAYkC,EAAO,CAC3BjE,QAAS,WACV,KAAWP,OAAOC,QAAQuI,SAAS,GAC1C,CAEA,SAASyJ,EAA+BtL,GAChCA,EAAQuL,yBACJvL,EAAQuL,uBAAuBrL,SAC/B7G,OAAOgE,KAAKmO,UAAUC,eAAeJ,GAErChS,OAAOgE,KAAKmO,UAAUhS,YAAY6R,GAG9C,CAEA,2BAA+E9L,GAG3ElG,OAAOgE,KAAKmO,UAAUhS,YAAY6R,IAC7B,IAAAK,UAAQ,IAAuB,OAAjBnM,EAAOC,QAAgB3F,MAAK,KACvC0F,EAAOC,MAAO+L,wBACdlS,OAAOgE,KAAKmO,UAAUC,eAAeJ,E,IAIxC9L,EAAOH,oBAAoBkD,SAASgJ,IACrC/L,EAAOH,oBAAoB9C,KAAKgP,EAExC,C,wYChCA,gBAEA,UAEA,QACA,gBACA,UACA,UAEA,SACA,UACA,UACA,UACA,UACA,UACA,UACMK,EAAQ,IAAI,UAAM,CACpBC,+BACAC,mCAGEC,EAAiD,CAAC,EAGlDC,EAA6B,CAAC,EA8IpC,SAAeH,EAA6BI,G,qDACxC,GAAI,cAAe3S,QAAU,gCAAiCA,OAAOqE,UAAW,CAC5E,MAAMuO,QAA8B,EAAAjQ,QAAQ0B,UAAUwO,4BAA4B,CAC9EC,IAAK,CAACH,EAAQ5P,MACflB,OAAM,IAAM,KAEf,GAAI+Q,GAAyBA,EAAsBxO,OAAS,GACrDuO,EAAQzO,QAAQ6O,OAAO7N,GAAU0N,EAAsB,GAAG1O,QAAQ+E,SAAS/D,KAE9E,M,OAIFsN,EAA+BG,EAAQ5P,IAEzC,cAAe/C,QAAU,gCAAiCA,OAAOqE,gBAC3D,EAAA1B,QAAQ0B,UAAU2O,uBAAuB,CAAC,CAC5CjQ,GAAI4P,EAAQ5P,GACZkQ,MAAO,iBACP/O,QAASyO,EAAQzO,QACjBgP,UAAWP,EAAQO,UACnBvO,GAAIgO,EAAQhO,GACZR,IAAKwO,EAAQxO,IACbgP,uBAAuB,KAG3BnT,OAAOoT,eAAeC,SAAS,CAC3BH,UAAWP,EAAQO,UACnBvO,GAAmB,QAAf,EAAU,QAAV,EAAAgO,EAAQhO,UAAE,eAAEiD,WAAG,uBAAGxC,IAAQ,CAAEA,WAChCjB,IAAqB,QAAhB,EAAW,QAAX,EAAAwO,EAAQxO,WAAG,eAAEyD,WAAG,uBAAGxC,IAAQ,CAAEA,WAClClB,QAASyO,EAAQzO,UAClB1D,MAAM8S,IAAuBZ,EAA2BC,EAAQ5P,IAAMuQ,CAAa,G,IAS9F,SAAgBd,EAA+BzP,G,yCAC3C,GAAI,cAAe/C,QAAU,gCAAiCA,OAAOqE,UACjE,UACU,EAAA1B,QAAQ0B,UAAUkP,yBAAyB,CAC7CT,IAAK,CAAC/P,I,CAEZ,MAAOb,G,MAILwQ,EAA2B3P,KAC3B2P,EAA2B3P,GAAIyQ,oBACxBd,EAA2B3P,GAG9C,G,CAlMAuP,EAAMmB,MAAK,IAAM,UAAOjK,YAAWhJ,MAAK,WAChC,UAAO0F,OAAOwN,kBAAkBpB,EAAMqB,8BAC9C,KAEA,IAAAC,gCACA,IAAAC,iBAAgB,WAEhB7T,OAAOC,QAAQC,UAAUC,aAAY,SAAUC,EAASC,EAAQC,G,MAC5D,OAAOF,EAAQG,SACX,IAAK,aAED,OADAP,OAAOgE,KAAK8P,OAAO,CAAChV,IAAKkB,OAAOC,QAAQ8T,OAAO,wBAA0B3T,EAAQ4T,KAAO,IAAM5T,EAAQ4T,KAAO,QACtG,EACX,IAAK,WAED,OADAhU,OAAOgE,KAAK8P,OAAO,CAAChV,IAAKkB,OAAOC,QAAQ8T,OAAO,sBACxC,EACX,IAAK,WAED,OADA/T,OAAOgE,KAAK8P,OAAO,CAAChV,IAAKkB,OAAOC,QAAQ8T,OAAO3T,EAAQtB,QAChD,EACX,IAAK,aAID,OA8KZ,SAA0BD,EAAcoV,EAAcC,EAAkBC,G,yCACpE,IAAIC,EAAS,UAAOlO,OAAOkO,OAEbtL,MAAVsL,GAAkC,cAAXA,IAEvBA,GAAS,IAAAC,kBACT,UAAOnO,OAAOkO,OAASA,GAG3B,MAAME,OAAwBxL,IAATjK,EAAsB,SAAWA,EAAO,aAAeqV,EAE5E,IACI,MAAMzT,QAgBd,SAAoC5B,EAAc0V,EAAiBxV,EAAO,CAAC,G,yCACvE,MAAMyV,EAAgB,UAAOtO,OAAOuO,cAAgBC,EAAcC,qBAAuB,UAAOzO,OAAOsO,cAEvG,aAAc,IAAA5V,+BAA8BC,EAAM2V,EAAgBD,EAASxV,EAC/E,G,CApB+B6V,CAAqB,OAAQ,+BAAiCX,EAAO,YAAcE,EAAU,WAAaC,EAASE,GAE1I,MAAO,CACH3S,OAAQlB,EAASkB,OACjBC,GAAInB,EAASmB,GACbT,mBAAoBV,EAASW,O,CAEnC,MAAOc,GAEL,OADAH,QAAQD,MAAM,sBAAuBI,GAC9B,CACHJ,OAAO,IAAAjC,sBAAqBqC,G,CAGxC,G,CA1MY2S,CAAWzU,EAAQvB,KAAMuB,EAAQ6T,KAAM7T,EAAQ8T,SAAU9T,EAAQ+T,SAAS3T,KAAKF,IAGxE,EACX,IAAK,wBAED,OADAiS,EAA6BnS,IACtB,EACX,IAAK,0BAED,OADAoS,EAA+BpS,EAAQ2C,KAChC,EACX,IAAK,OAaD,OAZA/C,OAAOgE,KAAKC,MAAM,CACd6Q,QAAQ,EACRC,eAAe,IAChB/Q,IACChE,OAAOgE,KAAK1B,YACR0B,EAAK,GAAGjB,GACR3C,EAAQrB,MACP0B,IACGH,EAASG,EAAS,GAEzB,KAEE,EAEX,IAAK,OACL,IAAK,cACL,IAAK,eACD,GAAIJ,EAAO0D,IACP,IAC4B,QAAxB,EAAA0O,EAAUpS,EAAO0D,IAAIhB,WAAG,SAAEO,YAAYlD,E,CACxC,MAAO8B,G,CAIb,OAAO,EACX,QACI,OAAO,EAEnB,IAEAlC,OAAOC,QAAQ+U,kBAAkB7U,aAAY,CAACC,EAASC,EAAQC,MACvD,IAAA2U,+BAA8BhM,SAAS5I,EAAO0C,KACtB,kBAApB3C,EAAQG,SACRD,EAAS,CACL8T,OAAQ,UAAOlO,OAAOkO,OACtBc,iBAAkB,UAAOhP,OAAOgP,iBAChCC,iBAAkB,UAAOjP,OAAOiP,iBAChCC,YAAa,UAAOlP,OAAOkP,YAC3BC,SAAU,UAAOnP,OAAOmP,U,IAMxCrV,OAAOC,QAAQqV,UAAUnV,aAAaoV,IAChB,UAAdA,EAAKC,MACLxV,OAAOgE,KAAKC,MAAM,CACd6Q,QAAQ,EACRC,eAAe,IAChB/Q,IACCyO,EAAUzO,EAAK,GAAGjB,IAAMwS,CAAI,G,IAMxCvV,OAAOC,QAAQwV,YAAYtV,aAAY,WAGnC4H,YAAW,IAAY,EAAD,gCAIlB,IAHe,UAAO7B,OAAOkO,SAGb,UAAOjO,MAAMuP,iBAAiB,CAE1C1V,OAAOgE,KAAK8P,OAAO,CAAChV,IAAKkB,OAAOC,QAAQ8T,OAAO,sBAG/C,MAAM4B,GAAY,IAAAtB,kBAElB,UAAOnO,OAAOkO,OAASuB,EACvB,UAAOxP,MAAMuP,kBAAmB,EAGhC,UAAOxP,OAAO0P,oBAAqB,C,CAGnC,UAAO1P,OAAOwN,0BACFpB,EAAMuD,gCACd7V,OAAOgE,KAAK8P,OAAO,CAAChV,IAAKkB,OAAOC,QAAQ8T,OAAO,+BAIvD,IAAA/R,SAAQ,UAAOkE,OAAQkO,QAAS5T,MAAM4T,IACpB,oEAAVA,IACA,UAAOlO,OAAO4P,YAAa,E,GAGvC,KAAG,OAEE,IAAAlV,wBACD,IAAAmV,wBAAuBlU,MAAM,EAAAmU,UAE7B,IAAA3D,UAAQ,IAAM,UAAO7I,YAAWhJ,MAAK,KAC7B,UAAO0F,OAAOwN,mBACd,IAAAqC,sBAAqB,CACjBzD,EAAM2D,4B,IAGfpU,MAAM,EAAAmU,SAEjB,G,gGC9JA,gBACA,UACA,UACA,UA0KA,MAAME,UAAoB,EAAAC,YACtB,cAAAC,GACIpW,OAAOyG,QAAQF,KAAKa,IAAI,OAAD,wBAChBhB,KAAKV,cAAY,CACpB0O,OAAQhO,KAAKF,OAAOkO,OACpBiC,aAAcjQ,KAAKF,OAAOmQ,aAC1BC,UAAWlQ,KAAKF,OAAOoQ,UACvBC,wBAAyBnQ,KAAKF,OAAOqQ,2BAGzCvW,OAAOyG,QAAQN,MAAMiB,IAAI,OAAD,UACjBhB,KAAKT,eAEhB,EAsJJ,MAsOM6Q,EAAS,IAAIN,EAtOE,CACjB9B,OAAQ,KACRqC,OAAO,EACPC,YAAa,CAAC,EACdC,gBAAiB,kBACjBC,sBAAuB,EAAAC,sBAAsBC,SAC7CC,0BAA0B,EAC1BC,mBAAmB,EACnBX,aAAc,EACdC,UAAW,EACXC,wBAAyB,EACzBU,+BAAgC,EAChCC,mBAAmB,EACnBC,iBAAiB,EACjBC,cAAc,EACdC,mBAAmB,EACnBC,6BAA6B,EAC7BC,uBAAuB,EACvBC,gBAAgB,EAChBC,yBAAyB,EACzBC,gBAAgB,EAChBC,yBAAyB,EACzBC,gBAAgB,EAChBC,oBAAoB,EACpBC,qBAAsB,EAAAC,qBAAqBC,iBAC3CC,yBAAyB,EACzBC,8BAA8B,EAC9BC,gCAAgC,EAChCC,gCAAgC,EAChCC,8BAA8B,EAC9BC,oBAAqB,EACrBC,iBAAiB,EACjBC,mBAAoB,GACpB9E,kBAAkB,EAClBc,cAAeE,EAAcF,cAC7BiE,YAAa,EACbC,mBAAoB,EACpBC,yBAAyB,EACzBC,wBAAwB,EACxBnE,eAAe,EACfoE,yBAAyB,EACzB3D,kBAAkB,EAClBC,kBAAkB,EAClB2D,uBAAwB,EACxB1D,aAAa,EACb2D,sBAAsB,EACtBC,cAAe,EACfC,oBAAoB,EACpBC,uBAAuB,EACvBC,gCAAgC,EAChCC,wBAAwB,EACxBxD,oBAAoB,EACpByD,YAAY,EACZC,wBAAwB,EACxBjE,UAAU,EACVkE,wBAAwB,EACxBC,+BAA+B,EAC/BC,6BAA6B,EAC7BC,2BAA2B,EAC3BC,gBAAgB,EAChBC,iCAAiC,EACjCC,sBAAsB,EACtBC,kBAAkB,EAClBC,sBAAsB,EACtBC,uBAAuB,EACvBC,uBAAuB,EACvBC,sBAAsB,EACtBC,YAAY,EACZC,4BAA4B,EAC5BtE,YAAY,EAEZuE,mBAAoB,CAAC,EASrBC,YAAa,CAAE5Y,IAAK,SACpB6Y,uBAAwB,CAAE7Y,IAAK,QAASmI,MAAM,GAC9C2Q,oBAAqB,CAAE9Y,IAAK,KAC5B+Y,cAAe,CAAE/Y,IAAK,KACtBgZ,sBAAuB,CAAEhZ,IAAK,IAAKmI,MAAM,GACzC8Q,eAAgB,CAAEjZ,IAAK,IAAKmI,MAAM,GAClC+Q,mBAAoB,CAAElZ,IAAK,aAAcmI,MAAM,GAC/CgR,uBAAwB,CAAEnZ,IAAK,YAAamI,MAAM,GAClDiR,uBAAwB,CAAEpZ,IAAK,aAC/BqZ,gBAAiB,CAAErZ,IAAK,IAAKoI,OAAO,GACpCkR,cAAe,CAAEtZ,IAAK,IAAKoI,OAAO,GAElCmR,mBAAoB,CAAC,CACjBzF,KAAM,UACN0F,OAAQ,EAAAC,mBAAmBC,UAC5B,CACC5F,KAAM,gBACN0F,OAAQ,EAAAC,mBAAmBE,YAC5B,CACC7F,KAAM,mBACN0F,OAAQ,EAAAC,mBAAmBG,aAC5B,CACC9F,KAAM,UACN0F,OAAQ,EAAAC,mBAAmBG,cAG/BC,SAAU,CACNC,WAAY,KACZC,UAAW,EACXC,cAAe,EACfC,YAAY,EACZC,iBAAiB,GAGrBC,aAAc,CACVC,IAAK,UACLC,MAAO,UACPC,OAAQ,WAIZC,SAAU,CACN,0BAA2B,CACvBC,MAAO,UACPC,QAAS,OAEb,QAAW,CACPD,MAAO,UACPC,QAAS,OAEb,kBAAmB,CACfD,MAAO,UACPC,QAAS,OAEb,UAAa,CACTD,MAAO,UACPC,QAAS,OAEb,oBAAqB,CACjBD,MAAO,UACPC,QAAS,OAEb,iBAAoB,CAChBD,MAAO,UACPC,QAAS,OAEb,YAAe,CACXD,MAAO,UACPC,QAAS,OAEb,sBAAuB,CACnBD,MAAO,UACPC,QAAS,OAEb,MAAS,CACLD,MAAO,UACPC,QAAS,OAEb,gBAAiB,CACbD,MAAO,UACPC,QAAS,OAEb,MAAS,CACLD,MAAO,UACPC,QAAS,OAEb,gBAAiB,CACbD,MAAO,UACPC,QAAS,OAEb,QAAW,CACPD,MAAO,UACPC,QAAS,OAEb,kBAAmB,CACfD,MAAO,UACPC,QAAS,OAEb,KAAQ,CACJD,MAAO,UACPC,QAAS,OAEb,eAAgB,CACZD,MAAO,UACPC,QAAS,OAEb,eAAkB,CACdD,MAAO,UACPC,QAAS,OAEb,yBAA0B,CACtBD,MAAO,UACPC,QAAS,OAEb,cAAiB,CACbD,MAAO,UACPC,QAAS,OAEb,wBAAyB,CACrBD,MAAO,UACPC,QAAS,OAEb,OAAU,CACND,MAAO,UACPC,QAAS,OAEb,iBAAkB,CACdD,MAAO,UACPC,QAAS,OAEb,QAAW,CACPD,MAAO,UACPC,QAAS,OAKC,CAClBC,kBAAmB,CAAC,EACpBlK,uBAAwB,KACxBwD,kBAAkB,EAElB2G,oBAAqB,CAAC,EACtBC,UAAW,GAEXC,sBAAuB,CAAC,EACxBC,aAAc,CAAC,EACfC,gBAAiB,OAtXrB,SAA+BvW,EAAkBC,GAC7C,GAAID,EAA4B,oBAAG,CAE/B,MAAMwW,EAAsBxW,EAA4B,oBAClDyW,EAAiC,oBAEvCxW,EAAMqW,aAAaG,GAAiB,CAChCnH,KAAMxV,OAAO0I,KAAKC,WAAW,uBAC7BsS,mBAAoB/U,EAAO+U,mBACtBvQ,QAAQkS,IAAO,CAAC,mBAAoB,WAAW3T,SAAS2T,EAAEpH,QAC1D5N,KAAIgV,IAAK,CACNpH,KAAMoH,EAAEpH,KACR0F,OAAQ,EAAAC,mBAAmBG,gBAEnC5B,0BAA2B,KAC3BR,sBAAuB,KACvBC,+BAAgC,KAChC/B,aAAc,KACdC,kBAAmB,KACnBE,sBAAuB,KACvBkB,YAAa,MAEjBtS,EAAMqW,aAAerW,EAAMqW,aAE3B,IAAK,MAAMK,KAAaH,EACpBvW,EAAMoW,sBAAsBM,GAAaF,EAE7CxW,EAAMoW,sBAAwBpW,EAAMoW,sBAEpCvc,OAAOyG,QAAQF,KAAK2B,OAAO,sB,CAuD/B,GApDKhC,EAA2B,qBAC5BA,EAAO+V,SAAkB,QAAEC,MAAQ,UACnChW,EAA2B,oBAAI,EAC/BlG,OAAOyG,QAAQF,KAAKa,IAAI,CACpB,oBAAsB,EACtB,SAAYlB,EAAO+V,YAIvB/V,EAA4B,qBAC5BlG,OAAOyG,QAAQF,KAAK2B,OAAO,uBAG3BhC,EAA4B,qBAAKiD,OAAO2T,KAAK5W,EAA4B,qBAAG9B,OAAS,GACrFpE,OAAOyG,QAAQN,MAAMiB,IAAI,CACrBiV,oBAAqBnW,EAA4B,sBAClD,KACClG,OAAOyG,QAAQF,KAAK2B,OAAO,sBAAsB,IAIpDhC,EAA6B,uBAC9BA,EAA6B,sBAAI,EAE5BA,EAAO+U,mBAAmBhW,MAAM2X,GAAiB,YAAXA,EAAEpH,SACzCtP,EAAO+U,mBAAmBhY,KAAK,CAC3BuS,KAAM,UACN0F,OAAQ,EAAAC,mBAAmBG,cAG/BpV,EAAO+U,mBAAqB/U,EAAO+U,0BAIKnS,IAA5C5C,EAAsC,+BACtClG,OAAOyG,QAAQF,KAAK2B,OAAO,sCAGAY,IAA3B5C,EAAqB,cACrBlG,OAAOyG,QAAQF,KAAK2B,OAAO,qBAEUY,IAArC5C,EAA+B,wBAC/BlG,OAAOyG,QAAQF,KAAK2B,OAAO,+BAEWY,IAAtC5C,EAAgC,yBAChClG,OAAOyG,QAAQF,KAAK2B,OAAO,2BAG3BhC,EAA+B,wBAC/BlG,OAAOyG,QAAQF,KAAK2B,OAAO,2BAG1BhC,EAAoC,4BAAG,CACxCA,EAAoC,6BAAI,EACxC,IAAK,MAAM6W,KAAa7W,EAAO+U,mBAC3B,GAAuB,mBAAnB8B,EAAUvH,MACPuH,EAAU7B,SAAW,EAAAC,mBAAmBC,SAAU,CAErDlV,EAAOgT,uBAAwB,EAC/B,K,EAKZ,GAAIhT,EAAwB,gBACxB,IAAK,MAAM6W,KAAa7W,EAAO+U,mBACJ,YAAnB8B,EAAUvH,OACVuH,EAAU7B,OAAS,EAAAC,mBAAmBE,WAEtCrb,OAAOyG,QAAQF,KAAK2B,OAAO,oBAKH,iBAAzBhC,EAAoB,cAC3BA,EAAoB,YAAI,CAAExE,IAAKwE,EAAoB,cAGX,iBAAjCA,EAA4B,sBACnCA,EAA4B,oBAAI,CAAExE,IAAKwE,EAA4B,sBAGjC,iBAA3BA,EAAsB,gBAC7BA,EAAsB,cAAI,CAAExE,IAAKwE,EAAsB,gBAI3D,MAAM8W,EAAW,CAAC,cAAe,sBAAuB,iBACxD,IAAK,IAAIxN,EAAIwN,EAAS5Y,OAAS,EAAGoL,GAAK,EAAGA,IACtC,IAAK,IAAIyN,EAAI,EAAGA,EAAID,EAAS5Y,OAAQ6Y,IAC7BzN,GAAKyN,IAEL,IAAAC,eAAchX,EAAO8W,EAASxN,IAAKtJ,EAAO8W,EAASC,OACnD/W,EAAO8W,EAASxN,IAAM,WAKD1G,IAA7B5C,EAAuB,gBACvBlG,OAAOyG,QAAQF,KAAK2B,OAAO,uBAEGY,IAA9B5C,EAAwB,iBACxBlG,OAAOyG,QAAQF,KAAK2B,OAAO,oBAI1BhC,EAAyB,kBAAKA,EAA2B,mBAAE9B,OAAS+Y,EAAc/Y,SACnF8B,EAA2B,mBAAI,IAAI,IAAIc,IAAI,IAAImW,KAAkBjX,EAA2B,uBAG5FA,EAAwB,iBACxBlG,OAAOyG,QAAQF,KAAK2B,OAAO,kBAEnC,IAyOA,UAAesO,EAEf,kCAEI,MAAM4G,EAAS,CACXC,MAAO,CACHC,UAAWjY,UAAUiY,UACrBC,SAAUlY,UAAUkY,SACpBC,SAAUnY,UAAUmY,SACpBC,iBAAkBzd,OAAOC,QAAQ2D,cAAcsN,SAEnDhL,OAAQ3G,KAAKme,MAAMne,KAAKC,UAAUgX,EAAOxQ,oBAU7C,cANOoX,EAAOlX,OAAOkO,OACrBgJ,EAAOlX,OAAOsO,cAAiB4I,EAAOlX,OAAOsO,gBAAkBE,EAAcF,cACvE,yBAA2B,wBACjC4I,EAAOlX,OAAOsS,mBAAqB4E,EAAOlX,OAAOsS,mBAAmBpU,OACpEgZ,EAAOlX,OAAOoW,UAAYc,EAAOlX,OAAOoW,UAAUlY,OAE3C7E,KAAKC,UAAU4d,EAAQ,KAAM,EACxC,C,eC9iBA,IAoBYO,EAoLA9G,EARAkB,EAzBA6F,EAhIAC,EA1BAC,EAbA3C,E,gNAAAA,EAAA,EAAAA,qBAAA,EAAAA,mBAAkB,KAC1B,4CACA,4BACA,iCACA,+BACA,4BAQQ2C,EAAA,EAAAA,kBAAA,EAAAA,gBAAe,KACvB,eAAUhV,GAAS,UACnB,6BACA,yCACA,uBAGJ,SAAY6U,GACR,cACA,cACA,oBACA,cACA,WACH,CAND,CAAYA,EAAA,EAAAA,aAAA,EAAAA,WAAU,KAQT,EAAAI,YAAc,CACvBJ,EAAWK,KACXL,EAAWM,KACXN,EAAWO,QACXP,EAAWQ,KACXR,EAAWS,MAMHP,EAAA,EAAAA,oBAAA,EAAAA,kBAAiB,KACzB,cAAS/U,GAAS,SAClB,qBACA,yBACA,sCA4HQ8U,EAAA,EAAAA,kBAAA,EAAAA,gBAAe,KACvB,yBACA,qBACA,wBAsBQ7F,EAAA,EAAAA,uBAAA,EAAAA,qBAAoB,KAC5B,yBACA,yCACA,+BACA,2CACA,kCAGQlB,EAAA,EAAAA,wBAAA,EAAAA,sBAAqB,KAC7B,yBACA,0B,uYCzOJ,gBACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,gBAgBI,WAAApR,CAAY4Y,EAAuD,MAVnE,KAAA1Z,GAAK,CACD,mBAEJ,KAAAR,IAAM,CACF,cACA,6BACA,YACA,cAIAiC,KAAKiY,0BAA4BA,CACrC,CAEM,IAAA5K,CAAQxD,EAAoBC,EAAU,IAAMC,EAAQ,K,yCACtD,OAAO,IAAAkC,SAAQpC,EAAWC,EAASC,EACvC,G,CAEA,kBAAAmO,CAAmB5H,GACf,OAAO,IAAIvU,SAASC,IAChBpC,OAAO0W,YAAYnM,SAASmM,EAAatU,EAAQ,GAEzD,CAUA,yBAAAmc,CAA0Bje,GACtB,MAAMoW,EAAc,IAChB,IAAA7V,aACA6V,EAAYzT,KAAK,iBAGrBjD,OAAO0W,YAAYtW,QAAQ,CACvBoe,QAASpY,KAAKqY,qBACd/H,YAAaA,IACPgI,GAAY,EAAD,gCACbA,EACAtY,KAAKuN,+BAELvN,KAAKuY,8BAGTre,EAASoe,EACb,KACJ,CAEA,wBAAAzI,GACI,MAAO,CACH1V,QAAS,wBACTwC,GAAI,YACJmQ,WAAW,EACXvO,GAAIyB,KAAKzB,GACTR,IAAKiC,KAAKjC,IACVD,QAASkC,KAAKqY,qBAEtB,CASA,4BAAA9K,GACI,MAAML,EAAelN,KAAK6P,2BAEtB7P,KAAKiY,0BACLjY,KAAKiY,0BAA0B9L,6BAA6Be,GAE5DtT,OAAOC,QAAQqC,YAAYgR,EAEnC,CAKA,2BAAAqL,GACI,MAAM5b,EAAK,YAEPqD,KAAKiY,0BACLjY,KAAKiY,0BAA0B7L,+BAA+BzP,GAE9D/C,OAAOC,QAAQqC,YAAY,CACvB/B,QAAS,0BACTwC,GAAIA,IAIZ/C,OAAO0W,YAAYxO,OAAO,CACtBsW,QAASpY,KAAKqY,sBAEtB,CAEA,yBAAAG,CAA0BC,EAAiB3D,EAAS,oBAChD,OAAO,IAAI/Y,SAASC,IACZyc,EACAzY,KAAKmY,2BAA2BG,IACvBA,IACD,UAAOxY,OAAOgV,IAAU,GAG5B9Y,EAAQsc,EAAQ,KAGpBtY,KAAKuY,8BACLvc,GAAQ,G,GAGpB,CAEA,2BAAAyT,GACI,OAAO,IAAI1T,SAASC,IAChB,MAAMsU,EAAc,IAChB,IAAA7V,aACA6V,EAAYzT,KAAK,iBAGrBjD,OAAO0W,YAAYnM,SAAS,CACxBiU,QAASpY,KAAKqY,qBACd/H,YAAaA,IACd,SAAUpQ,GACTlE,EAAQkE,EACZ,GAAE,GAEV,CAKA,mBAAAwY,CAAoBC,GAChB,IAAIC,EAA8B,GAmClC,OA/BAD,EAAWE,SAASC,IAEhB,MAAMC,EAAgBH,EAAQI,WAAWC,GAAUH,EAAM,IAAMG,EAAM,IAAMH,EAAM,IAAMG,EAAM,KACvFC,EAAcN,EAAQI,WAAWC,GAAUH,EAAM,IAAMG,EAAM,IAAMH,EAAM,IAAMG,EAAM,KAE3F,IAAKF,IAAkBG,EAAa,CAGhC,GAAIH,IAAkBG,EAAa,OAGnC,MAAMC,EAASP,EAAQQ,OAAOhR,KAAKC,IAAI0Q,EAAeG,GAAc,GAAG,GACjEG,EAAST,EAAQQ,OAAOhR,KAAKkR,IAAIP,EAAeG,GAAc,GAAG,GAGvEN,EAAQ/b,KAAK,CAACuL,KAAKkR,IAAIH,EAAO,GAAIE,EAAO,IAAKjR,KAAKC,IAAI8Q,EAAO,GAAIE,EAAO,K,MACjEN,EAERH,EAAQG,GAAe,GAAKD,EAAM,IAC1BI,EAERN,EAAQM,GAAa,GAAKJ,EAAM,GAGhCF,EAAQ/b,KAAKic,EAAMS,SAIvBX,EAAUA,EAAQtU,QAAQ2U,KAAYA,EAAM,GAAKH,EAAM,IAAMG,EAAM,GAAKH,EAAM,KAAI,IAG/EF,CACX,CAKA,qBAAAY,CAAsBb,GAClB,OAAO3Y,KAAK0Y,oBAAoBC,GAAYvd,QAAO,CAACC,EAAKyd,IAC9Czd,EAAMyd,EAAM,GAAKA,EAAM,IAC/B,EACP,CAEA,uBAAAW,CAAwBC,EAA6B7L,GACjD,IAAK,IAAIzE,EAAI,EAAGA,EAAIsQ,EAAa1b,OAAQoL,IACrC,GAAIsQ,EAAatQ,GAAGyE,OAAS6L,EAAatQ,GAAGyE,KAAK8L,WAAW9L,IAASA,EAAK8L,WAAWD,EAAatQ,GAAGyE,OAClG,OAAOzE,EAIf,OAAQ,CACZ,CAEA,sBAAAwQ,CAAuBF,EAA6B7L,GAChD,OAAO6L,EAAa1Z,KAAKyZ,wBAAwBC,EAAc7L,GACnE,CAKA,kBAAAwK,CAAmBwB,EAAoB,IACnC,MAAMC,EAA4B,GACX,IAAnBD,EAAQ7b,SACR6b,EAAU,IAAI,UAAO/Z,OAAOsS,qBAGhC,IAAK,MAAM1Z,KAAOmhB,EACdC,EAAgBjd,KAAK,aAAenE,EAAM,MAC1CohB,EAAgBjd,KAAK,YAAcnE,EAAM,MAG7C,OAAOohB,CACX,CAEA,iBAAAC,G,QAeI,IAAIC,GAAgB,IAAAC,8BAdF,CACd,uBACA,gBACA,sBACA,aACA,oBACA,kCACA,8BACA,yCACA,yBACA,+BACA,qBAIJ,GAAqB,MAAjBD,EAAuB,CAEvB,MAAME,EAAS9V,SAAS+V,eAAe,UAEvC,GADAH,EAAgBE,aAAM,EAANA,EAAQE,WACpBJ,EAAe,CACf,IAAIK,EAAQ,EAGZ,KAAOA,EAAQH,EAAOI,SAAStc,WAAmC,QAAvB,EAAAgc,EAAc9V,iBAAS,eAAEC,SAAS,0BAAiD,QAAvB,EAAA6V,EAAc9V,iBAAS,eAAEC,SAAS,gBACrI6V,EAAgBE,EAAOI,SAASD,GAEhCA,G,EAKZ,OAAOL,CACX,CAEA,eAAAO,GACI,MAAoC,UAA7BhhB,OAAOoJ,SAAS6X,UAAqD,WAA7BjhB,OAAOoJ,SAAS6X,QACnE,CAEA,KAAAC,CAAMC,GACF,OAAOnX,QAAQmX,EAAI5b,MAAM,gBAC7B,CAEM,gBAAA6b,CAAiB5M,EAAkB6M,EAAqBC,G,yCAC1D,GAAKjhB,OAAOkhB,UAAUC,qBAAuB,UAAOjb,OAAOyR,0BAC/C,UAAOzR,OAAOwR,eAAgB,OAE1C,GAAIsJ,EAAY5c,OAAS,GAAI,CACzB,IAAIgd,EACJ,IACIA,QAAsB,IAAAxM,sBAAqB,MAAO,iBAAkB,CAChEX,KAAM+M,EACN7M,W,CAEN,MAAOjS,GAGL,OAFAH,QAAQD,MAAM,0EAA2EI,QACzFuG,MAAM,GAAGzI,OAAO0I,KAAKC,WAAW,0BAAyB,IAAA0Y,sBAAqBnf,K,CAIlF,IAAIkf,EAAcxf,KAAMwf,EAAcjgB,aAKlC,OAFA,IAAAmgB,YAAWF,EAAe,KAAM,gCAChC3Y,MAAM,GAAGzI,OAAO0I,KAAKC,WAAW,0BAAyB,IAAA4Y,qBAAoBH,EAAczf,OAAQyf,EAAcjgB,iBAHjH6f,EAAcI,EAAcjgB,Y,CAQpC,MAAMqgB,SAAuB,IAAAxf,SAAQmS,EAAS,IAAIwL,MAAM,EAAG,GACrD8B,QAAiB,IAAAzf,SAAQgf,EAAa,GAEtCU,EAAe,UAAOvb,MAAMiW,kBAC5BuF,EAAmBD,EAAaF,IAAkB,CAAEI,SAAU,GAAIC,WAAY,GAEpFF,EAAiBE,WAAata,KAAKlE,MACnC,MAAMye,EAAeH,EAAiBC,SAAS5T,MAAM+T,GAAYA,EAAQC,OAASP,IAC9ER,IAAW,EAAAnD,gBAAgBmE,SAC3BN,EAAiBC,SAASpC,OAAOmC,EAAiBC,SAASM,QAAQJ,GAAe,GAEzC,IAArCH,EAAiBC,SAASxd,eACnBsd,EAAaF,KAGpBM,EACAA,EAAab,OAASA,EAEtBU,EAAiBC,SAAS3e,KAAK,CAC3B+e,KAAMP,EACNR,WAIRS,EAAaF,GAAiBG,GAGlC,MAAMpgB,EAAU4H,OAAO5H,QAAQmgB,GAC/B,GAAIngB,EAAQ6C,OAAS,IAAO,CACxB,IAAIsb,EAAgC,KACpC,IAAK,IAAIlQ,EAAI,EAAGA,EAAIjO,EAAQ,GAAG6C,OAAQoL,KACvB,OAARkQ,GAAgBne,EAAQiO,GAAG,GAAGqS,WAAanC,EAAI,GAAGmC,cAClDnC,EAAMne,EAAQiO,WAIfkS,EAAahC,EAAI,G,CAG5B,UAAOnX,iBAAiB,oBAC5B,G,8HCrVJ,gBAEA,UACA,UACA,UA+BA,SAAgB0M,IACZ,OAAI,IAAApU,YACO6T,EAAcyN,oBAAoBC,QAClC,IAAAxhB,qBACA8T,EAAcyN,oBAAoBE,QAElC3N,EAAcyN,oBAAoBG,QAEjD,CArCA,gCACI,OAAI,UAAOpc,OAAO4T,iBACP3X,QAAQC,SAAQ,GAEhB,IAAID,SAASC,IAChB,MAAMmgB,EAAetN,IAErB,IAAIuN,EAAQ,EACZ,IAAK,MAAMzf,KAAMwf,EACbviB,OAAOC,QAAQqC,YAAYS,EAAI,CAAExC,QAAS,gBAAkBE,IACxD,GAAIT,OAAOC,QAAQuI,UAMf,OALAga,SAEIA,IAAUD,EAAane,QACvBhC,GAAQ,IAKhBA,EAAQ3B,GACJA,IACA,UAAOyF,OAAO4T,kBAAmB,E,MAMzD,EAEA,+B,4FCnCwB,oBAAb,SACPna,OAAe,OAAI,CACf0d,MAAO,GACP3a,KAAM,KAId,oBAAyBnC,GACG,oBAAb,OACPZ,OAAe,OAAE0d,MAAMpa,KAAK,KAAI,IAAIsE,MAAOkb,kBAAkBliB,KAE7DwB,QAAQ2gB,IAAI,KAAI,IAAInb,MAAOkb,kBAAkBliB,IAErD,EAEA,mBAAwBA,GACI,oBAAb,OACPZ,OAAe,OAAE+C,KAAKO,KAAK,KAAI,IAAIsE,MAAOkb,kBAAkBliB,KAE5DwB,QAAQW,KAAK,KAAI,IAAI6E,MAAOkb,kBAAkBliB,IAEtD,C,saCrBA,gBACA,UACA,UASA,gCAA2C1B,EAAc0V,EAAiBxV,EAAO,CAAC,EAAGC,EAAU,CAAC,G,yCAC5F,MAAMwV,EAAgB,UAAOtO,OAAOuO,cAAgBC,EAAcC,qBAAuB,UAAOzO,OAAOsO,cAEvG,aAAc,IAAAmO,2BAA0B9jB,EAAM2V,EAAgBD,EAASxV,EAAMC,EACjF,G,aCUA,MAEA,EAFgB4jB,WAAW5iB,QAAU,IAzBrC,SAAS6iB,EAAYte,GACpB,OAAO,IAAI6D,MAAM7D,EAAQ,CACxB,GAAAyD,CAAIzD,EAAQ+C,GACX,GAAK/C,EAAO+C,GAIZ,MAA4B,mBAAjB/C,EAAO+C,GACV,IAAIub,EAAYte,EAAO+C,IAGxB,IAAIwb,IACV,IAAI3gB,SAAQ,CAACC,EAASC,KACrBkC,EAAO+C,MAASwb,GAAYxc,IACvBtG,OAAOC,QAAQuI,UAClBnG,EAAO,IAAIkO,MAAMvQ,OAAOC,QAAQuI,UAAUjI,UAE1C6B,EAAQkE,EACT,GACC,GAEL,GAEF,CAEqC,CAAgBsc,WAAW5iB,QCvBnD+iB,EAAyB,+HAChCC,EAAiC,iBAAd3d,WAA0BA,UAAUiY,UAAUrU,SAAS,YACnEga,EAAgBD,EACvB,sCACA,+BACOE,EAAe,0BAoBrB,SAAS,KAAkBC,GAE9B,OAA6B,IAAzBA,EAAc/e,OACP,KAEP+e,EAAcla,SAAS,cAChBia,EAEPC,EAAcla,SAAS,WAChBga,EAEJ,IAAIG,OAAOD,EAAcvb,KAAIyb,GA9BxC,SAA4BC,GACxB,IAAKP,EAAuBQ,KAAKD,GAC7B,MAAM,IAAI/S,MAAM+S,EAAe,yCAA2CvjB,OAAOgjB,IAErF,IAAK,CAAEnC,EAAU4C,EAAMC,GAAYH,EAAaI,MAAM,2BAatD,OAZA9C,EAAWA,EACNzb,QAAQ,IAAK6d,EAAY,gBAAkB,UAC3C7d,QAAQ,OAAQ,OACrBqe,GAAQA,QAAmCA,EAAO,IAC7Cre,QAAQ,UAAW,aACnBA,QAAQ,QAAS,SACjBA,QAAQ,OAAQ,OAChBA,QAAQ,QAAS,SACtBse,EAAWA,EACNte,QAAQ,OAAQ,OAChBA,QAAQ,OAAQ,OAChBA,QAAQ,OAAQ,MACd,IAAMyb,EAAW4C,EAAO,IAAMC,EAAW,KACpD,CAY6CE,CAAmBN,KAAIrT,KAAK,KACzE,CCrCA,MAAM4T,EAAeja,QAAQiZ,WAAW5iB,QAAQqE,WAiBhD,SAASwf,EAAUC,GACf,OAAI/iB,MAAMgjB,QAAQD,GACPA,EAEJ,CAACA,EACZ,CAwBA,SAASE,EAAiBtkB,GACtB,YAAiBoJ,IAAVpJ,OAAsBoJ,EAAY,CAACpJ,EAC9C,CAEOukB,eAAe3f,GAAU,MAAEE,EAAK,QAAE0f,EAAO,MAAEzf,EAAK,UAAEyO,EAAS,gBAAEiR,EAAe,MAAElR,IAAU,mBAAEmR,GAAuB,CAAC,GACrH,MAAMC,EAAiBliB,QAAQ0G,IAAIpE,EAAMmD,KAAIqc,MAAOK,IACzB,iBAAZA,IACPA,EAAU,CAAElf,KAAMkf,IAElBV,EACO5jB,OAAOqE,UAAUC,UAAU,CAC9BC,OAAQ,CACJC,QACA+f,SAAUP,EAAiBE,GAC3BhR,eAAuBpK,IAAZob,EAAwBhR,OAAYpK,GAEnDrE,MAAO,SAAU6f,EAAU,CAACA,EAAQlf,WAAQ0D,EAC5C3E,IAAK,SAAUmgB,EAAUA,EAAQva,UAAOjB,IAGzC,EAAQ9E,KAAKM,UAAUE,EAAO,IAC9B8f,EACHH,kBACAjR,YACAgR,UACAjR,MAAOA,GAAS,uBAGpBmR,QACMI,EAA2BH,SAG3BA,CAEd,CAMOJ,eAAevf,GAAc,MAAEF,EAAK,QAAE0f,EAAO,MAAEzf,EAAK,UAAEyO,EAAS,gBAAEiR,EAAe,MAAElR,IAAU,mBAAEmR,GAAuB,CAAC,GACzH,MAAMK,EAAkBhgB,EAAMmD,KAAIxC,GAAwB,iBAATA,EAAoB,CAAEA,QAASA,IAChF,GAAIwe,EAAc,EAPtB,SAAsBnf,GAClB,GAAIA,EAAMQ,MAAKqf,GAAW,SAAUA,IAChC,MAAM,IAAI/T,MAAM,gEAExB,CAIQmU,CAAaD,GACb,MAAME,EAAY3kB,OAAOqE,UAAUK,cAAc,CAC7CH,OAAQ,CACJC,QACA+f,SAAUP,EAAiBE,GAC3BhR,eAAuBpK,IAAZob,EAAwBhR,OAAYpK,GAEnDrE,MAAOggB,EAAgB7c,KAAI,EAAGxC,UAAWA,MAS7C,YAPIgf,QACMI,EAA2BG,SAG3BA,EAId,CAEA,MAAMC,EAAa,GACnB,IAAK,MAAMN,KAAWG,EAEd,SAAUH,SAEJM,EAAWC,IAAI,GAEzBD,EAAW3hB,KAAK,EAAQe,KAAKU,cAAcF,EAAO,IAC3C8f,EACHH,kBACAjR,YACAgR,UACAjR,WAGJmR,QACMI,EAA2BriB,QAAQ0G,IAAI+b,UAGvCziB,QAAQ0G,IAAI+b,EAE1B,CA+DA,MAAME,EAAe,2GACrBb,eAAeO,EAA2BzT,GACtC,UACUA,CACV,CACA,MAAOjP,GAGH,IAAKgjB,EAAavB,KAAKzhB,GAAOvB,SAC1B,MAAMuB,CAEd,CACJ,CC3MA,MAEMijB,EAAkC,iBAAX/kB,QAAuB,kBAAmBA,OCFjD,iBAAXA,QAAwBA,OAAOoT,iBACtCpT,OAAOoT,eAAiB,CAAEC,SDQf4Q,eAAqCe,EAAsB1kB,GACtE,MAAM,GAAEqE,EAAK,GAAE,IAAER,EAAM,GAAE,gBAAEggB,EAAe,QAAEjgB,EAAU,GAAE,eAAE+gB,EAAc,MAAEhS,GAAW+R,EACrF,IAAI,UAAE9R,GAAc8R,EAOpB,GANID,EACA7R,GAAY,EAEPA,GACLnR,QAAQW,KAAK,0JAEM,IAAnBwB,EAAQE,OACR,MAAM,IAAImM,MAnBK,4JAqBbpO,QAAQ0G,IAAI3E,EAAQ0D,KAAIqc,MAAOiB,IACjC,UAAW,EAAQxO,YAAYnM,SAAS,CAAEiU,QAAS,CAAC0G,KAChD,MAAM,IAAI3U,MAtBI,sDAsBsB2U,EACxC,KAEJ,MAAMC,EAAe,KAAkBjhB,GACjCkhB,EAAsB,KAAkBH,QAAuDA,EAAiB,IAChHI,EAASpB,MAAOnlB,EAAK0F,EAAO0f,EAAU,KACnCiB,EAAa5B,KAAKzkB,KAChBsmB,EAAoB7B,KAAKzkB,UA3BxCmlB,eAAiCnlB,GAC7B,OAAO,EAAQ4X,YAAYnM,SAAS,CAChCiU,QAAS,CAAC,IAAI8G,IAAIxmB,GAAKymB,OAAS,OAExC,CAwBsBC,CAAkB1mB,UD4GjCmlB,eAAmCwB,EAAO/hB,EAASiP,EAAU,CAAC,GACjE,MAAM+S,EAAU7B,EAAU4B,SACpBtjB,QAAQ0G,IAAI6c,EAAQ9d,KAAIqc,MAAO1f,GAEzC0f,gBAAmD,QAAEC,EAAO,MAAE1f,EAAK,UAAE0O,GAAaxP,EAASiP,EAAU,CAAC,GAClG,MAAMgT,EAAa9B,EAAUngB,GAASkiB,SAAQ5gB,GAAU,CACpDV,EAAU,CACNE,QACA0f,UACAhR,YACAzO,MAAOO,EAAOb,KAAO,GACrBggB,gBAAiBnf,EAAOmf,iBAAmBnf,EAAO6gB,kBAClD5S,MAAOjO,EAAOiO,OAASjO,EAAO8gB,QAC/BnT,GACHjO,EAAc,CACVF,QACA0f,UACAhR,YACAzO,MAAOO,EAAOL,IAAM,GACpBwf,gBAAiBnf,EAAOmf,iBAAmBnf,EAAO6gB,kBAClD5S,MAAOjO,EAAOiO,OAASjO,EAAO8gB,QAC/BnT,YAEDxQ,QAAQ0G,IAAI8c,EACtB,CAtBoDI,CAvIpD,SAA6BxhB,GACzB,MAAsB,iBAAXA,EACA,IAAKA,EAAQ2O,WAAW,GAE5B,CACH1O,MAAOD,EACP2f,aAASpb,EACToK,WAAW,EAEnB,CA8HwF8S,CAAoBzhB,GAASb,EAASiP,KAC9H,CC3GcsT,CAAoB,CACtBzhB,QACA0f,WACD,CACC/f,MACAQ,KACAwf,kBACAlR,SACD,CACCmR,oBAAoB,GACtB,EAEA8B,EAAcjC,MAAOzf,GAAS7C,WAAY7C,UAG7B,YAAX6C,GAAwB7C,GACnBumB,EAAOvmB,EAAK0F,EACrB,EAEE2hB,EAAclC,OAASzf,QAAO0f,UAASplB,UACpCumB,EAAOvmB,EAAK0F,EAAO0f,EAAQ,EAEhCa,EACA/kB,OAAOomB,cAAcC,YAAYlmB,YAAYgmB,GAG7CnmB,OAAOgE,KAAKmO,UAAUhS,YAAY+lB,GAEtC,MAAMI,EAA0B,CAC5B,gBAAM9S,GACEuR,EACA/kB,OAAOomB,cAAcC,YAAYjU,eAAe+T,GAGhDnmB,OAAOgE,KAAKmO,UAAUC,eAAe8T,EAE7C,GAKJ,MAHwB,mBAAb5lB,GACPA,EAASgmB,GAENA,CACX,G,2iEE/EIC,EAA2B,CAAC,GAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3d,IAAjB4d,EACH,OAAOA,EAAaC,QAGrB,IAAIC,EAASL,EAAyBE,GAAY,CAGjDE,QAAS,CAAC,GAOX,OAHAE,EAAoBJ,GAAUnd,KAAKsd,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAGpEI,EAAOD,OACf,CCnB0BH,CAAoB,K","sources":["webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/tab-updates.ts","webpack:///./src/background.ts","webpack:///./src/config.ts","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/requests.ts","webpack:///./node_modules/webext-polyfill-kinda/index.js","webpack:///./node_modules/webext-patterns/index.js","webpack:///./node_modules/webext-content-scripts/index.js","webpack:///./node_modules/content-scripts-register-polyfill/ponyfill.js","webpack:///./node_modules/content-scripts-register-polyfill/index.js","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage } from \"./config\";\n\nfunction onTabUpdatedListener(tabId: number) {\n chrome.tabs.sendMessage(tabId, {\n message: 'update',\n }, () => void chrome.runtime.lastError ); // Suppress error on Firefox\n}\n\nfunction onNavigationApiAvailableChange(changes: {[key: string]: chrome.storage.StorageChange}) {\n if (changes.navigationApiAvailable) {\n if (changes.navigationApiAvailable.newValue) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n } else {\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n }\n }\n}\n\nexport function setupTabUpdates(config: ProtoConfig) {\n // If Navigation API is not supported, then background has to inform content script about video change.\n // This happens on Safari, Firefox, and Chromium 101 (inclusive) and below.\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n void waitFor(() => config.local !== null).then(() => {\n if (config.local!.navigationApiAvailable) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n }\n });\n\n if (!config.configSyncListeners.includes(onNavigationApiAvailableChange)) {\n config.configSyncListeners.push(onNavigationApiAvailableChange);\n }\n}","import * as CompileConfig from \"../config.json\";\n\nimport Config from \"./config\";\nimport { Registration } from \"./types\";\nimport \"content-scripts-register-polyfill\";\nimport { sendRealRequestToCustomServer, serializeOrStringify, setupBackgroundRequestProxy } from \"../maze-utils/src/background-request-proxy\";\nimport { setupTabUpdates } from \"../maze-utils/src/tab-updates\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\n\nimport Utils from \"./utils\";\nimport { getExtensionIdsToImportFrom } from \"./utils/crossExtension\";\nimport { isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { injectUpdatedScripts } from \"../maze-utils/src/cleanup\";\nimport { logWarn } from \"./utils/logger\";\nimport { chromeP } from \"../maze-utils/src/browserApi\";\nimport { getHash } from \"../maze-utils/src/hash\";\nconst utils = new Utils({\n registerFirefoxContentScript,\n unregisterFirefoxContentScript\n});\n\nconst popupPort: Record = {};\n\n// Used only on Firefox, which does not support non persistent background pages.\nconst contentScriptRegistrations = {};\n\n// Register content script if needed\nutils.wait(() => Config.isReady()).then(function() {\n if (Config.config.supportInvidious) utils.setupExtraSiteContentScripts();\n});\n\nsetupBackgroundRequestProxy();\nsetupTabUpdates(Config);\n\nchrome.runtime.onMessage.addListener(function (request, sender, callback) {\n switch(request.message) {\n case \"openConfig\":\n chrome.tabs.create({url: chrome.runtime.getURL('options/options.html' + (request.hash ? '#' + request.hash : ''))});\n return false;\n case \"openHelp\":\n chrome.tabs.create({url: chrome.runtime.getURL('help/index.html')});\n return false;\n case \"openPage\":\n chrome.tabs.create({url: chrome.runtime.getURL(request.url)});\n return false;\n case \"submitVote\":\n submitVote(request.type, request.UUID, request.category, request.videoID).then(callback);\n\n //this allows the callback to be called later\n return true;\n case \"registerContentScript\":\n registerFirefoxContentScript(request);\n return false;\n case \"unregisterContentScript\":\n unregisterFirefoxContentScript(request.id)\n return false;\n case \"tabs\": {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n chrome.tabs.sendMessage(\n tabs[0].id,\n request.data,\n (response) => {\n callback(response);\n }\n );\n });\n return true;\n }\n case \"time\":\n case \"infoUpdated\":\n case \"videoChanged\":\n if (sender.tab) {\n try {\n popupPort[sender.tab.id]?.postMessage(request);\n } catch (e) {\n // This can happen if the popup is closed\n }\n }\n return false;\n default:\n return false;\n\t}\n});\n\nchrome.runtime.onMessageExternal.addListener((request, sender, callback) => {\n if (getExtensionIdsToImportFrom().includes(sender.id)) {\n if (request.message === \"requestConfig\") {\n callback({\n userID: Config.config.userID,\n allowExpirements: Config.config.allowExpirements,\n showDonationLink: Config.config.showDonationLink,\n showUpsells: Config.config.showUpsells,\n darkMode: Config.config.darkMode,\n })\n }\n }\n});\n\nchrome.runtime.onConnect.addListener((port) => {\n if (port.name === \"popup\") {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n popupPort[tabs[0].id] = port;\n });\n }\n});\n\n//add help page on install\nchrome.runtime.onInstalled.addListener(function () {\n // This let's the config sync to run fully before checking.\n // This is required on Firefox\n setTimeout(async () => {\n const userID = Config.config.userID;\n\n // If there is no userID, then it is the first install.\n if (!userID && !Config.local.alreadyInstalled){\n //open up the install page\n chrome.tabs.create({url: chrome.runtime.getURL(\"/help/index.html\")});\n\n //generate a userID\n const newUserID = generateUserID();\n //save this UUID\n Config.config.userID = newUserID;\n Config.local.alreadyInstalled = true;\n\n // Don't show update notification\n Config.config.categoryPillUpdate = true;\n }\n\n if (Config.config.supportInvidious) {\n if (!(await utils.containsInvidiousPermission())) {\n chrome.tabs.create({url: chrome.runtime.getURL(\"/permissions/index.html\")});\n }\n }\n\n getHash(Config.config!.userID!).then((userID) => {\n if (userID == \"60eed03c8644b7efa32df06977b3a4c11b62f63518e74a0e29baa1fd449cb54f\") {\n Config.config.prideTheme = true;\n }\n });\n }, 1500);\n\n if (!isFirefoxOrSafari()) {\n injectUpdatedScripts().catch(logWarn);\n\n waitFor(() => Config.isReady()).then(() => {\n if (Config.config.supportInvidious) {\n injectUpdatedScripts([\n utils.getExtraSiteRegistration()\n ])\n }\n }).catch(logWarn);\n }\n});\n\n/**\n * Only works on Firefox.\n * Firefox requires that it be applied after every extension restart.\n *\n * @param {JSON} options\n */\nasync function registerFirefoxContentScript(options: Registration) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n const existingRegistrations = await chromeP.scripting.getRegisteredContentScripts({\n ids: [options.id]\n }).catch(() => []);\n\n if (existingRegistrations && existingRegistrations.length > 0 \n && options.matches.every((match) => existingRegistrations[0].matches.includes(match))) {\n // No need to register another script, already registered\n return;\n }\n }\n\n await unregisterFirefoxContentScript(options.id);\n\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n await chromeP.scripting.registerContentScripts([{\n id: options.id,\n runAt: \"document_start\",\n matches: options.matches,\n allFrames: options.allFrames,\n js: options.js,\n css: options.css,\n persistAcrossSessions: true,\n }]);\n } else {\n chrome.contentScripts.register({\n allFrames: options.allFrames,\n js: options.js?.map?.(file => ({file})),\n css: options.css?.map?.(file => ({file})),\n matches: options.matches\n }).then((registration) => void (contentScriptRegistrations[options.id] = registration));\n }\n\n}\n\n/**\n * Only works on Firefox.\n * Firefox requires that this is handled by the background script\n */\nasync function unregisterFirefoxContentScript(id: string) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n try {\n await chromeP.scripting.unregisterContentScripts({\n ids: [id]\n });\n } catch (e) {\n // Not registered yet\n }\n } else {\n if (contentScriptRegistrations[id]) {\n contentScriptRegistrations[id].unregister();\n delete contentScriptRegistrations[id];\n }\n }\n}\n\nasync function submitVote(type: number, UUID: string, category: string, videoID: string) {\n let userID = Config.config.userID;\n\n if (userID == undefined || userID === \"undefined\") {\n //generate one\n userID = generateUserID();\n Config.config.userID = userID;\n }\n\n const typeSection = (type !== undefined) ? \"&type=\" + type : \"&category=\" + category;\n\n try {\n const response = await asyncRequestToServer(\"POST\", \"/api/voteOnSponsorTime?UUID=\" + UUID + \"&videoID=\" + videoID + \"&userID=\" + userID + typeSection);\n\n return {\n status: response.status,\n ok: response.ok,\n responseText: await response.text(),\n };\n } catch (e) {\n console.error(\"Error while voting:\", e);\n return {\n error: serializeOrStringify(e),\n };\n }\n}\n\n\nasync function asyncRequestToServer(type: string, address: string, data = {}) {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRealRequestToCustomServer(type, serverAddress + address, data));\n}\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","function NestedProxy(target) {\n\treturn new Proxy(target, {\n\t\tget(target, prop) {\n\t\t\tif (!target[prop]) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof target[prop] !== 'function') {\n\t\t\t\treturn new NestedProxy(target[prop]);\n\t\t\t}\n\n\t\t\treturn (...arguments_) =>\n\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\ttarget[prop](...arguments_, result => {\n\t\t\t\t\t\tif (chrome.runtime.lastError) {\n\t\t\t\t\t\t\treject(new Error(chrome.runtime.lastError.message));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t});\n}\n\nconst chromeP = globalThis.chrome && new NestedProxy(globalThis.chrome);\n\nexport default chromeP;\n","import escapeStringRegexp from 'escape-string-regexp';\n// Copied from https://github.com/mozilla/gecko-dev/blob/073cc24f53d0cf31403121d768812146e597cc9d/toolkit/components/extensions/schemas/manifest.json#L487-L491\nexport const patternValidationRegex = /^(https?|wss?|file|ftp|\\*):\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^file:\\/\\/\\/.*$|^resource:\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^about:/;\nconst isFirefox = typeof navigator === 'object' && navigator.userAgent.includes('Firefox/');\nexport const allStarsRegex = isFirefox\n ? /^(https?|wss?):[/][/][^/]+([/].*)?$/\n : /^https?:[/][/][^/]+([/].*)?$/;\nexport const allUrlsRegex = /^(https?|file|ftp):[/]+/;\nfunction getRawPatternRegex(matchPattern) {\n if (!patternValidationRegex.test(matchPattern)) {\n throw new Error(matchPattern + ' is an invalid pattern, it must match ' + String(patternValidationRegex));\n }\n let [, protocol, host, pathname] = matchPattern.split(/(^[^:]+:[/][/])([^/]+)?/);\n protocol = protocol\n .replace('*', isFirefox ? '(https?|wss?)' : 'https?') // Protocol wildcard\n .replace(/[/]/g, '[/]'); // Escape slashes\n host = (host !== null && host !== void 0 ? host : '') // Undefined for file:///\n .replace(/^[*][.]/, '([^/]+.)*') // Initial wildcard\n .replace(/^[*]$/, '[^/]+') // Only wildcard\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]$/g, '[^.]+'); // Last wildcard\n pathname = pathname\n .replace(/[/]/g, '[/]') // Escape slashes\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]/g, '.*'); // Any wildcard\n return '^' + protocol + host + '(' + pathname + ')?$';\n}\nexport function patternToRegex(...matchPatterns) {\n // No pattern, match nothing https://stackoverflow.com/q/14115522/288906\n if (matchPatterns.length === 0) {\n return /$./;\n }\n if (matchPatterns.includes('')) {\n return allUrlsRegex;\n }\n if (matchPatterns.includes('*://*/*')) {\n return allStarsRegex;\n }\n return new RegExp(matchPatterns.map(x => getRawPatternRegex(x)).join('|'));\n}\n// The parens are required by .split() to preserve the symbols\nconst globSymbols = /([?*]+)/;\nfunction splitReplace(part, index) {\n if (part === '') {\n // Shortcut for speed\n return '';\n }\n if (index % 2 === 0) {\n // Raw text, escape it\n return escapeStringRegexp(part);\n }\n // Else: Symbol\n if (part.includes('*')) { // Can be more than one and it swallows surrounding question marks\n return '.*';\n }\n return [...part].map(() => isFirefox ? '.' : '.?').join('');\n}\nfunction getRawGlobRegex(glob) {\n const regexString = glob\n .split(globSymbols)\n // eslint-disable-next-line unicorn/no-array-callback-reference -- tis ok 🤫\n .map(splitReplace)\n .join('');\n // Drop \"start with anything\" and \"end with anything\" sequences because they're the default for regex\n return ('^' + regexString + '$')\n .replace(/^[.][*]/, '')\n .replace(/[.][*]$/, '')\n .replace(/^[$]$/, '.+'); // Catch `*` and `*`\n}\nexport function globToRegex(...globs) {\n // No glob, match anything; `include_globs: []` is the default\n if (globs.length === 0) {\n return /.*/;\n }\n return new RegExp(globs.map(x => getRawGlobRegex(x)).join('|'));\n}\nexport function excludeDuplicatePatterns(matchPatterns) {\n if (matchPatterns.includes('')) {\n return [''];\n }\n if (matchPatterns.includes('*://*/*')) {\n return ['*://*/*'];\n }\n return matchPatterns.filter(possibleSubset => !matchPatterns.some(possibleSuperset => possibleSubset !== possibleSuperset && patternToRegex(possibleSuperset).test(possibleSubset)));\n}\n","import chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst gotScripting = Boolean(globalThis.chrome?.scripting);\nfunction castTarget(target) {\n return typeof target === 'object' ? target : {\n tabId: target,\n frameId: 0,\n };\n}\nfunction castAllFramesTarget(target) {\n if (typeof target === 'object') {\n return { ...target, allFrames: false };\n }\n return {\n tabId: target,\n frameId: undefined,\n allFrames: true,\n };\n}\nfunction castArray(possibleArray) {\n if (Array.isArray(possibleArray)) {\n return possibleArray;\n }\n return [possibleArray];\n}\nconst nativeFunction = /^function \\w+\\(\\) {[\\n\\s]+\\[native code][\\n\\s]+}/;\nexport async function executeFunction(target, function_, ...args) {\n if (nativeFunction.test(String(function_))) {\n throw new TypeError('Native functions need to be wrapped first, like `executeFunction(1, () => alert(1))`');\n }\n const { frameId, tabId } = castTarget(target);\n if (gotScripting) {\n const [injection] = await chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: [frameId],\n },\n func: function_,\n args,\n });\n return injection?.result;\n }\n const [result] = await chromeP.tabs.executeScript(tabId, {\n code: `(${function_.toString()})(...${JSON.stringify(args)})`,\n frameId,\n });\n return result;\n}\nfunction arrayOrUndefined(value) {\n return value === undefined ? undefined : [value];\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention -- It follows the native naming\nexport async function insertCSS({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const everyInsertion = Promise.all(files.map(async (content) => {\n if (typeof content === 'string') {\n content = { file: content };\n }\n if (gotScripting) {\n return chrome.scripting.insertCSS({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: 'file' in content ? [content.file] : undefined,\n css: 'code' in content ? content.code : undefined,\n });\n }\n return chromeP.tabs.insertCSS(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt: runAt ?? 'document_start', // CSS should prefer `document_start` when unspecified\n });\n }));\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(everyInsertion);\n }\n else {\n await everyInsertion;\n }\n}\nfunction assertNoCode(files) {\n if (files.some(content => 'code' in content)) {\n throw new Error('chrome.scripting does not support injecting strings of `code`');\n }\n}\nexport async function executeScript({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const normalizedFiles = files.map(file => typeof file === 'string' ? { file } : file);\n if (gotScripting) {\n assertNoCode(normalizedFiles);\n const injection = chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: normalizedFiles.map(({ file }) => file),\n });\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(injection);\n }\n else {\n await injection;\n }\n // Don't return `injection`; the \"return value\" of a file is generally not useful\n return;\n }\n // Don't use .map(), `code` injections can't be \"parallel\"\n const executions = [];\n for (const content of normalizedFiles) {\n // Files are executed in order, but `code` isn’t, so it must await the last script before injecting more\n if ('code' in content) {\n // eslint-disable-next-line no-await-in-loop -- On purpose, see above\n await executions.at(-1);\n }\n executions.push(chromeP.tabs.executeScript(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt,\n }));\n }\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(Promise.all(executions));\n }\n else {\n await Promise.all(executions);\n }\n}\nexport async function getTabsByUrl(matches, excludeMatches) {\n if (matches.length === 0) {\n return [];\n }\n const exclude = excludeMatches ? patternToRegex(...excludeMatches) : undefined;\n const tabs = await chromeP.tabs.query({ url: matches });\n return tabs\n .filter(tab => tab.id && tab.url && (exclude ? !exclude.test(tab.url) : true))\n .map(tab => tab.id);\n}\nexport async function injectContentScript(where, scripts, options = {}) {\n const targets = castArray(where);\n await Promise.all(targets.map(async (target) => injectContentScriptInSpecificTarget(castAllFramesTarget(target), scripts, options)));\n}\nasync function injectContentScriptInSpecificTarget({ frameId, tabId, allFrames }, scripts, options = {}) {\n const injections = castArray(scripts).flatMap(script => [\n insertCSS({\n tabId,\n frameId,\n allFrames,\n files: script.css ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n executeScript({\n tabId,\n frameId,\n allFrames,\n files: script.js ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n ]);\n await Promise.all(injections);\n}\n// Sourced from:\n// https://source.chromium.org/chromium/chromium/src/+/main:extensions/common/extension_urls.cc;drc=6b42116fe3b3d93a77750bdcc07948e98a728405;l=29\n// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts\nconst blockedPrefixes = [\n 'chrome.google.com/webstore',\n 'accounts-static.cdn.mozilla.net',\n 'accounts.firefox.com',\n 'addons.cdn.mozilla.net',\n 'addons.mozilla.org',\n 'api.accounts.firefox.com',\n 'content.cdn.mozilla.net',\n 'discovery.addons.mozilla.org',\n 'input.mozilla.org',\n 'install.mozilla.org',\n 'oauth.accounts.firefox.com',\n 'profile.accounts.firefox.com',\n 'support.mozilla.org',\n 'sync.services.mozilla.com',\n 'testpilot.firefox.com',\n];\nexport function isScriptableUrl(url) {\n if (!url.startsWith('http')) {\n return false;\n }\n const cleanUrl = url.replace(/^https?:\\/\\//, '');\n return blockedPrefixes.every(blocked => !cleanUrl.startsWith(blocked));\n}\nconst targetErrors = /^No frame with id \\d+ in tab \\d+.$|^No tab with id: \\d+.$|^The tab was closed.$|^The frame was removed.$/;\nasync function catchTargetInjectionErrors(promise) {\n try {\n await promise;\n }\n catch (error) {\n // @ts-expect-error Optional chaining is good enough\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!targetErrors.test(error?.message)) {\n throw error;\n }\n }\n}\n","import { injectContentScript } from 'webext-content-scripts';\nimport chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst noMatchesError = 'Type error for parameter contentScriptOptions (Error processing matches: Array requires at least 1 items; you have 0) for contentScripts.register.';\nconst noPermissionError = 'Permission denied to register a content script for ';\nconst gotNavigation = typeof chrome === 'object' && 'webNavigation' in chrome;\nasync function isOriginPermitted(url) {\n return chromeP.permissions.contains({\n origins: [new URL(url).origin + '/*'],\n });\n}\n// The callback is only used by webextension-polyfill\nexport default async function registerContentScript(contentScriptOptions, callback) {\n const { js = [], css = [], matchAboutBlank, matches = [], excludeMatches, runAt, } = contentScriptOptions;\n let { allFrames } = contentScriptOptions;\n if (gotNavigation) {\n allFrames = false;\n }\n else if (allFrames) {\n console.warn('`allFrames: true` requires the `webNavigation` permission to work correctly: https://github.com/fregante/content-scripts-register-polyfill#permissions');\n }\n if (matches.length === 0) {\n throw new Error(noMatchesError);\n }\n await Promise.all(matches.map(async (pattern) => {\n if (!await chromeP.permissions.contains({ origins: [pattern] })) {\n throw new Error(noPermissionError + pattern);\n }\n }));\n const matchesRegex = patternToRegex(...matches);\n const excludeMatchesRegex = patternToRegex(...excludeMatches !== null && excludeMatches !== void 0 ? excludeMatches : []);\n const inject = async (url, tabId, frameId = 0) => {\n if (!matchesRegex.test(url) // Manual `matches` glob matching\n || excludeMatchesRegex.test(url) // Manual `exclude_matches` glob matching\n || !await isOriginPermitted(url) // Without this, we might have temporary access via accessTab\n ) {\n return;\n }\n await injectContentScript({\n tabId,\n frameId,\n }, {\n css,\n js,\n matchAboutBlank,\n runAt,\n }, {\n ignoreTargetErrors: true,\n });\n };\n const tabListener = async (tabId, { status }, { url }) => {\n // Only status updates are relevant\n // No URL = no permission\n if (status === 'loading' && url) {\n void inject(url, tabId);\n }\n };\n const navListener = async ({ tabId, frameId, url, }) => {\n void inject(url, tabId, frameId);\n };\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.addListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.addListener(tabListener);\n }\n const registeredContentScript = {\n async unregister() {\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.removeListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.removeListener(tabListener);\n }\n },\n };\n if (typeof callback === 'function') {\n callback(registeredContentScript);\n }\n return registeredContentScript;\n}\n","/// \n// The .js extension is required to create ESM-compatible file\nimport register from './ponyfill.js';\nif (typeof chrome === 'object' && !chrome.contentScripts) {\n chrome.contentScripts = { register };\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(1398);\n"],"names":["sendRealRequestToCustomServer","type","url","data","headers","toLowerCase","objectToURI","fetch","method","redirect","body","JSON","stringify","isSerializable","value","window","structuredClone","serializeOrStringify","toString","String","chrome","runtime","onMessage","addListener","request","sender","callback","message","then","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","Array","from","Uint8Array","arrayBuffer","responseText","text","responseBinary","returnHeaders","entries","reduce","acc","key","status","ok","catch","error","console","getHash","times","e","Promise","resolve","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","cleanupListeners","getCleanupId","id","listener","push","source","started","performance","now","postMessage","addEventListener","extraScripts","ignoreNormalScipts","scripts","concat","getManifest","content_scripts","cs","tab","tabs","query","matches","css","length","scripting","insertCSS","target","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","match","replace","file","navigator","vendor","formatKey","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","Date","add","delayUpdate","items","clear","map","v","k","setTimeout","get","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","location","href","includes","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","isVisible","element","ignoreWidth","tagName","classList","contains","document","querySelectorAll","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","left","width","top","height","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","textContent","trim","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","node","possibleElements","disconnect","MutationObserver","observe","documentElement","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","Math","max","hours","floor","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","isNaN","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","digest","TextEncoder","encode","b","padStart","join","condition","timeout","check","interval","intervalCheck","clearInterval","Error","stack","setInterval","includeQuestionMark","counter","seperator","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","version","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","random","localizedTitle","title","localizedMessage","innerHTML","onTabUpdatedListener","onNavigationApiAvailableChange","navigationApiAvailable","onUpdated","removeListener","waitFor","utils","registerFirefoxContentScript","unregisterFirefoxContentScript","popupPort","contentScriptRegistrations","options","existingRegistrations","getRegisteredContentScripts","ids","every","registerContentScripts","runAt","allFrames","persistAcrossSessions","contentScripts","register","registration","unregisterContentScripts","unregister","wait","supportInvidious","setupExtraSiteContentScripts","setupBackgroundRequestProxy","setupTabUpdates","create","getURL","hash","UUID","category","videoID","userID","generateUserID","typeSection","address","serverAddress","testingServer","CompileConfig","testingServerAddress","asyncRequestToServer","submitVote","active","currentWindow","onMessageExternal","getExtensionIdsToImportFrom","allowExpirements","showDonationLink","showUpsells","darkMode","onConnect","port","name","onInstalled","alreadyInstalled","newUserID","categoryPillUpdate","containsInvidiousPermission","prideTheme","injectUpdatedScripts","logWarn","getExtraSiteRegistration","ConfigClass","ProtoConfig","resetToDefault","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","ytInfoPermissionGranted","showPopupDonationCount","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","hookUpdate","showChapterInfoMessage","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","s","channelID","keys","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","removeExtraSiteRegistration","applyInvidiousPermissions","enable","getMergedTimestamps","timestamps","deduped","forEach","range","startOverlaps","findIndex","other","endOverlaps","other1","splice","other2","min","slice","getTimestampsDuration","getSponsorIndexFromUUID","sponsorTimes","startsWith","getSponsorTimeFromUUID","domains","permissionRegex","findReferenceNode","referenceNode","findValidElementFromSelector","player","getElementById","firstChild","index","children","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","hidden","extension","inIncognitoContext","segmentIDData","formatJSErrorMessage","logRequest","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","segments","lastAccess","existingData","segment","uuid","Visible","indexOf","extensionImportList","safari","firefox","chromium","extensionIds","count","toISOString","log","sendRequestToCustomServer","globalThis","NestedProxy","arguments_","patternValidationRegex","isFirefox","allStarsRegex","allUrlsRegex","matchPatterns","RegExp","x","matchPattern","test","host","pathname","split","getRawPatternRegex","gotScripting","castArray","possibleArray","isArray","arrayOrUndefined","async","frameId","matchAboutBlank","ignoreTargetErrors","everyInsertion","content","frameIds","catchTargetInjectionErrors","normalizedFiles","assertNoCode","injection","executions","at","targetErrors","gotNavigation","contentScriptOptions","excludeMatches","pattern","matchesRegex","excludeMatchesRegex","inject","URL","origin","isOriginPermitted","where","targets","injections","flatMap","match_about_blank","run_at","injectContentScriptInSpecificTarget","castAllFramesTarget","injectContentScript","tabListener","navListener","webNavigation","onCommitted","registeredContentScript","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/edge/6.0.3/content.js.LICENSE.txt b/edge/6.0.3/content.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/edge/6.0.3/content.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/edge/6.0.3/content.js.map b/edge/6.0.3/content.js.map new file mode 100644 index 00000000..8cb63cc0 --- /dev/null +++ b/edge/6.0.3/content.js.map @@ -0,0 +1 @@ +{"version":3,"file":"content.js","mappings":"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","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/animationUtils.ts","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/components/Tooltip.tsx","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/CategoryPillComponent.tsx","webpack:///./src/components/ChapterVoteComponent.tsx","webpack:///./src/components/NoticeComponent.tsx","webpack:///./src/components/NoticeTextSectionComponent.tsx","webpack:///./src/components/SelectorComponent.tsx","webpack:///./src/components/SkipNoticeComponent.tsx","webpack:///./src/components/SponsorTimeEditComponent.tsx","webpack:///./src/components/SubmissionNoticeComponent.tsx","webpack:///./src/config.ts","webpack:///./src/content.ts","webpack:///./src/dearrowPromotion.ts","webpack:///./src/js-components/previewBar.ts","webpack:///./src/js-components/skipButtonControlBar.ts","webpack:///./src/render/CategoryPill.tsx","webpack:///./src/render/ChapterVote.tsx","webpack:///./src/render/GenericNotice.tsx","webpack:///./src/render/RectangleTooltip.tsx","webpack:///./src/render/SkipNotice.tsx","webpack:///./src/render/SubmissionNotice.tsx","webpack:///./src/render/Tooltip.tsx","webpack:///./src/render/UpcomingNotice.tsx","webpack:///./src/svg-icons/pencil_svg.tsx","webpack:///./src/svg-icons/sb_svg.tsx","webpack:///./src/svg-icons/thumbs_down_svg.tsx","webpack:///./src/svg-icons/thumbs_up_svg.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/arrayUtils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/compatibility.ts","webpack:///./src/utils/constants.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/genericUtils.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/mobileUtils.ts","webpack:///./src/utils/noticeUtils.ts","webpack:///./src/utils/pageCleaner.ts","webpack:///./src/utils/pageUtils.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/segmentData.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///./src/utils/thumbnails.ts","webpack:///./src/utils/urlParser.ts","webpack:///./src/utils/videoLabels.ts","webpack:///./src/utils/warnings.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n"," /**\n * Starts a spinning animation and returns a function to be called when it should be stopped\n * The callback will be called when the animation is finished \n * It waits until a full rotation is complete\n */\nfunction applyLoadingAnimation(element: HTMLElement, time: number, callback?: () => void): () => Promise {\n element.style.animation = `rotate ${time}s 0s infinite`;\n\n return async () => new Promise((resolve) => {\n // Make the animation finite\n element.style.animation = `rotate ${time}s`;\n\n // When the animation is over, hide the button\n const animationEndListener = () => {\n if (callback) callback();\n\n element.style.animation = \"none\";\n\n element.removeEventListener(\"animationend\", animationEndListener);\n\n resolve();\n };\n\n element.addEventListener(\"animationend\", animationEndListener);\n });\n}\n\nfunction setupCustomHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): { hide: () => void; show: () => void } {\n if (enabled) element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n element.classList.add(\"animationDone\");\n if (!rightSlide) element.classList.add(\"autoHideLeft\");\n\n let mouseEntered = false;\n\n return {\n hide: () => {\n mouseEntered = false;\n if (element.classList.contains(\"autoHiding\")) {\n element.classList.add(\"sbhidden\");\n }\n },\n show: () => {\n mouseEntered = true;\n element.classList.remove(\"animationDone\");\n\n // Wait for next event loop\n setTimeout(() => {\n if (mouseEntered) element.classList.remove(\"sbhidden\")\n }, 10);\n }\n };\n}\n\nfunction setupAutoHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): void {\n const { hide, show } = this.setupCustomHideAnimation(element, container, enabled, rightSlide);\n\n container.addEventListener(\"mouseleave\", () => hide());\n container.addEventListener(\"mouseenter\", () => show());\n}\n\nfunction enableAutoHideAnimation(element: Element): void {\n element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n}\n\nfunction disableAutoHideAnimation(element: Element): void {\n element.classList.remove(\"autoHiding\");\n element.classList.remove(\"sbhidden\");\n}\n\nexport const AnimationUtils = {\n applyLoadingAnimation,\n setupAutoHideAnimation,\n setupCustomHideAnimation,\n enableAutoHideAnimation,\n disableAutoHideAnimation\n};","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ButtonListener } from \"./component-types\";\nimport { isFirefoxOrSafari } from \"..\";\nimport { isSafari } from \"../config\";\n\nexport interface TooltipProps {\n text?: string;\n textBoxes?: string[];\n link?: string;\n linkOnClick?: () => void;\n secondButtonOnClick?: () => void;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n topOffset?: string;\n leftOffset?: string;\n rightOffset?: string;\n zIndex?: number;\n innerBottomMargin?: string;\n timeout?: number;\n opacity?: number;\n displayTriangle?: boolean;\n topTriangle?: boolean;\n extraClass?: string;\n showLogo?: boolean;\n showGotIt?: boolean;\n secondButtonText?: string;\n center?: boolean;\n positionRealtive?: boolean;\n containerAbsolute?: boolean;\n buttons?: ButtonListener[];\n elements?: JSX.Element[];\n buttonsAtBottom?: boolean;\n textBoxMaxHeight?: string;\n}\n\nexport class GenericTooltip {\n text?: string; \n container: HTMLDivElement;\n\n timer: NodeJS.Timeout;\n root: Root;\n \n constructor(props: TooltipProps, logoUrl: string) {\n props.bottomOffset ??= \"70px\";\n props.topOffset ??= \"inherit\";\n props.leftOffset ??= \"inherit\";\n props.rightOffset ??= \"inherit\";\n props.zIndex ??= 10000;\n props.innerBottomMargin ??= \"0px\";\n props.opacity ??= 0.7;\n props.displayTriangle ??= !props.topTriangle;\n props.topTriangle ??= false;\n props.extraClass ??= \"\";\n props.showLogo ??= true;\n props.showGotIt ??= true;\n props.positionRealtive ??= true;\n props.containerAbsolute ??= false;\n props.center ??= false;\n props.elements ??= [];\n props.buttonsAtBottom ??= false;\n props.textBoxes ??= [];\n props.textBoxMaxHeight ??= \"inherit\";\n this.text = props.text;\n\n this.container = document.createElement('div');\n this.container.id = \"sponsorTooltip\" + props.text;\n if (props.positionRealtive) this.container.style.position = \"relative\";\n if (props.containerAbsolute) this.container.style.position = \"absolute\";\n if (props.center) {\n if (isFirefoxOrSafari() && !isSafari()) {\n this.container.style.width = \"-moz-available\";\n } else {\n this.container.style.width = \"-webkit-fill-available\";\n }\n }\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n const backgroundColor = `rgba(28, 28, 28, ${props.opacity})`;\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n {props.showLogo ? \n \n \n : null}\n {this.text ? \n \n {this.getTextElements(this.text + (props.link ? \". \" : \"\"))}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : (props.linkOnClick ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null)}\n \n : null}\n\n {props.textBoxes ? props.textBoxes.map((text, index) => (\n
\n {text || String.fromCharCode(8203)} {/* Zero width space */}\n
\n )) : null}\n\n {props.elements}\n\n {!props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n
\n\n {props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n\n {props.showGotIt ?\n \n : null}\n\n {\n props.secondButtonText ?\n \n : null\n }\n
\n )\n }\n\n private getTextElements(text: string): JSX.Element[] {\n if (!text.includes(\"\\n\")) return [<>{text}];\n\n const result: JSX.Element[] = [];\n\n for (const line of text.split(\"\\n\")) {\n result.push(\n
\n {line}\n
\n );\n }\n\n return result;\n }\n\n getButtons(buttons: ButtonListener[] | undefined, buttonsAtBottom: boolean): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n const style: React.CSSProperties = {};\n if (buttonsAtBottom) {\n style.float = \"right\";\n }\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return [];\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport Config from \"../config\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface CategoryPillProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n showTextByDefault: boolean;\n showTooltipOnClick: boolean;\n}\n\nexport interface CategoryPillState {\n segment?: SponsorTime;\n show: boolean;\n open?: boolean;\n}\n\nclass CategoryPillComponent extends React.Component {\n mainRef: React.MutableRefObject;\n tooltip?: Tooltip;\n\n constructor(props: CategoryPillProps) {\n super(props);\n\n this.mainRef = React.createRef();\n\n this.state = {\n segment: null,\n show: false,\n open: false\n };\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {\n backgroundColor: this.getColor(),\n display: this.state.show ? \"flex\" : \"none\",\n color: this.getTextColor(),\n }\n\n // To be able to remove the margin from the parent\n this.mainRef?.current?.parentElement?.classList?.toggle(\"cbPillOpen\", this.state.show);\n\n return (\n this.toggleOpen(e)}\n onMouseEnter={() => this.openTooltip()}\n onMouseLeave={() => this.closeTooltip()}\n ref={this.mainRef}>\n \n \n \n \n\n {\n (this.props.showTextByDefault || this.state.open) &&\n \n {chrome.i18n.getMessage(\"category_\" + this.state.segment?.category)}\n \n }\n \n\n {this.state.open && (\n <>\n {/* Upvote Button */}\n
this.vote(e, 1)}>\n \n
\n\n {/* Downvote Button */}\n
this.vote(event, 0)}>\n \n
\n \n )}\n\n {/* Close Button */}\n {\n this.setState({ show: false });\n this.closeTooltip();\n }}>\n \n
\n );\n }\n\n private toggleOpen(event: React.MouseEvent): void {\n event.stopPropagation();\n\n if (this.state.show) {\n if (this.props.showTooltipOnClick) {\n if (this.state.open) {\n this.closeTooltip();\n } else {\n this.openTooltip();\n }\n }\n\n this.setState({ open: !this.state.open });\n }\n }\n\n private async vote(event: React.MouseEvent, type: number): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response) {\n console.error(\"[SB] Caught error while attempting to vote on a FV label\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status === 429) {\n this.setState({\n open: false,\n show: type === 1\n });\n\n this.closeTooltip();\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on FV label\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n\n private getColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-preview-${category}, var(--sb-category-${category}))`;\n }\n\n private getTextColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`;\n }\n\n private openTooltip(): void {\n if (this.tooltip) {\n this.tooltip.close();\n }\n\n const tooltipMount = document.querySelector(\"#above-the-fold, ytm-slim-owner-renderer\") as HTMLElement;\n if (tooltipMount) {\n this.tooltip = new Tooltip({\n text: this.getTitleText(),\n referenceNode: tooltipMount,\n bottomOffset: \"0px\",\n opacity: 0.95,\n displayTriangle: false,\n showLogo: false,\n showGotIt: false,\n prependElement: tooltipMount.firstElementChild as HTMLElement\n });\n }\n }\n\n private closeTooltip(): void {\n this.tooltip?.close?.();\n this.tooltip = null;\n }\n\n getTitleText(): string {\n const shortDescription = chrome.i18n.getMessage(`category_${this.state.segment?.category}_pill`);\n return (shortDescription ? shortDescription + \". \": \"\") + chrome.i18n.getMessage(\"categoryPillTitleText\");\n }\n}\n\nexport default CategoryPillComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport { ActionType, Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface ChapterVoteProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n size?: string;\n}\n\nexport interface ChapterVoteState {\n segment?: SponsorTime;\n show: boolean;\n size?: string;\n}\n\nclass ChapterVoteComponent extends React.Component {\n tooltip?: Tooltip;\n\n constructor(props: ChapterVoteProps) {\n super(props);\n\n this.state = {\n segment: null,\n show: false,\n size: props.size ?? \"22px\"\n };\n }\n\n render(): React.ReactElement {\n if (this.tooltip && !this.state.show) {\n this.tooltip.close();\n this.tooltip = null;\n }\n\n return (\n <>\n {/* Upvote Button */}\n \n\n {/* Downvote Button */}\n \n \n );\n }\n\n private async vote(event: React.MouseEvent, type: number, element?: HTMLElement): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(element ?? event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response){\n console.error(\"[SB] Caught error while attempting to vote on a chapter\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status == 429) {\n this.setState({\n show: type === 1\n });\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on chapter\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n}\n\nexport default ChapterVoteComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport SbSvg from \"../svg-icons/sb_svg\";\n\nenum CountdownMode {\n Timer,\n Paused,\n Stopped\n}\n\nexport interface NoticeProps {\n noticeTitle: string;\n\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n amountOfPreviousNotices?: number;\n showInSecondSlot?: boolean;\n timed?: boolean;\n idSuffix?: string;\n\n fadeIn?: boolean;\n fadeOut?: boolean;\n startFaded?: boolean;\n firstColumn?: React.ReactElement[] | React.ReactElement;\n firstRow?: React.ReactElement;\n bottomRow?: React.ReactElement[];\n\n smaller?: boolean;\n limitWidth?: boolean;\n extraClass?: string;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n logoFill?: string;\n\n // Callback for when this is closed\n closeListener: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n zIndex?: number;\n style?: React.CSSProperties;\n biggerCloseButton?: boolean;\n children?: React.ReactNode;\n}\n\ninterface MouseDownInfo {\n x: number;\n y: number;\n right: number;\n bottom: number;\n}\n\nexport interface NoticeState {\n maxCountdownTime: () => number;\n\n countdownTime: number;\n countdownMode: CountdownMode;\n\n mouseHovering: boolean;\n\n startFaded: boolean;\n\n mouseDownInfo: MouseDownInfo | null;\n mouseMoved: boolean;\n right: number;\n bottom: number;\n}\n\n// Limits for dragging notice around\nconst bounds = [10, 100, 10, 10];\n\nclass NoticeComponent extends React.Component {\n countdownInterval: NodeJS.Timeout;\n\n idSuffix: string;\n\n amountOfPreviousNotices: number;\n\n parentRef: React.RefObject;\n\n handleMouseMoveBinded: (e: MouseEvent) => void = this.handleMouseMove.bind(this);\n\n constructor(props: NoticeProps) {\n super(props);\n\n this.parentRef = React.createRef();\n\n const maxCountdownTime = () => {\n if (this.props.maxCountdownTime) return this.props.maxCountdownTime();\n else return Config.config.skipNoticeDuration;\n };\n \n //the id for the setInterval running the countdown\n this.countdownInterval = null;\n\n this.amountOfPreviousNotices = props.amountOfPreviousNotices || 0;\n\n this.idSuffix = props.idSuffix || \"\";\n\n // Setup state\n this.state = {\n maxCountdownTime,\n\n //the countdown until this notice closes\n countdownTime: maxCountdownTime(),\n countdownMode: CountdownMode.Timer,\n mouseHovering: false,\n\n startFaded: this.props.startFaded ?? false,\n\n mouseDownInfo: null,\n mouseMoved: false,\n right: bounds[0],\n bottom: props.showInSecondSlot ? 290 : bounds[1]\n }\n }\n\n componentDidMount(): void {\n this.startCountdown();\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = {\n zIndex: this.props.zIndex || (1000 + this.amountOfPreviousNotices),\n right: this.state.right,\n bottom: this.state.bottom,\n userSelect: this.state.mouseDownInfo && this.state.mouseMoved ? \"none\" : \"auto\",\n ...(this.props.style ?? {})\n }\n\n return (\n
this.onMouseEnter(e) }\n onMouseLeave={() => {\n this.timerMouseLeave();\n }}\n onMouseDown={(e) => {\n document.addEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: {\n x: e.clientX,\n y: e.clientY,\n right: this.state.right,\n bottom: this.state.bottom\n },\n mouseMoved: false\n });\n }}\n onMouseUp={() => {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: null\n });\n }}\n ref={this.parentRef}\n style={noticeStyle} >\n
\n \n \n\n {/* First row */}\n \n {/* Left column */}\n \n\n {this.props.firstRow}\n\n {/* Right column */}\n {!this.props.hideRightInfo &&\n \n }\n \n\n {this.props.children}\n\n {!this.props.smaller && this.props.bottomRow ? \n this.props.bottomRow\n : null}\n\n \n
\n {/* Logo */}\n {!this.props.hideLogo &&\n (\n !Config.config.prideTheme ?\n \n :\n \n )\n }\n\n \n \n {this.props.noticeTitle}\n \n\n {this.props.firstColumn}\n \n \n {/* Time left */}\n {this.props.timed ? ( \n this.toggleManualPause()}\n className=\"sponsorSkipObject sponsorSkipNoticeTimeLeft\">\n\n {this.getCountdownElements()}\n\n \n ) : \"\"}\n \n\n {/* Close button */}\n this.close()}>\n \n
\n
\n\n {/* Add as a hidden table to keep the height constant */}\n {this.props.smaller && this.props.bottomRow ? \n \n \n {this.props.bottomRow}\n \n
\n : null}\n
\n );\n }\n\n getCountdownElements(): React.ReactElement[] {\n return [(\n \n {chrome.i18n.getMessage(\"NoticeTimeAfterSkip\").replace(\"{seconds}\", Math.ceil(this.state.countdownTime).toString())}\n \n ),(\n {chrome.i18n.getMessage(\"paused\")}\n ),(\n {chrome.i18n.getMessage(\"manualPaused\")}\n )];\n }\n\n onMouseEnter(event: React.MouseEvent): void {\n if (this.props.onMouseEnter) this.props.onMouseEnter(event);\n\n this.fadedMouseEnter();\n this.timerMouseEnter();\n }\n\n fadedMouseEnter(): void {\n if (this.state.startFaded) {\n this.setState({\n startFaded: false\n });\n }\n }\n\n timerMouseEnter(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.pauseCountdown();\n\n this.setState({\n mouseHovering: true\n });\n }\n\n timerMouseLeave(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.startCountdown();\n\n this.setState({\n mouseHovering: false\n });\n }\n\n toggleManualPause(): void {\n this.setState({\n countdownMode: this.state.countdownMode === CountdownMode.Stopped ? CountdownMode.Timer : CountdownMode.Stopped\n }, () => {\n if (this.state.countdownMode === CountdownMode.Stopped || this.state.mouseHovering) {\n this.pauseCountdown();\n } else {\n this.startCountdown();\n }\n });\n }\n\n //called every second to lower the countdown before hiding the notice\n countdown(): void {\n if (!this.props.timed) return;\n\n const countdownTime = Math.min(this.state.countdownTime - 1, this.state.maxCountdownTime());\n\n if (countdownTime <= 0) {\n //remove this from setInterval\n clearInterval(this.countdownInterval);\n\n //time to close this notice\n this.close();\n\n return;\n }\n\n if (countdownTime == 3 && this.props.fadeOut) {\n //start fade out animation\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice?.style.removeProperty(\"animation\");\n notice?.classList.add(\"sponsorSkipNoticeFadeOut\");\n }\n\n this.setState({\n countdownTime\n })\n }\n \n removeFadeAnimation(): void {\n //remove the fade out class if it exists\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice.classList.remove(\"sponsorSkipNoticeFadeOut\");\n notice.style.animation = \"none\";\n }\n\n pauseCountdown(): void {\n if (!this.props.timed || this.props.dontPauseCountdown) return;\n\n //remove setInterval\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n this.countdownInterval = null;\n\n //reset countdown and inform the user\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: this.state.countdownMode === CountdownMode.Timer ? CountdownMode.Paused : this.state.countdownMode\n });\n \n this.removeFadeAnimation();\n }\n\n startCountdown(): void {\n if (!this.props.timed) return;\n\n //if it has already started, don't start it again\n if (this.countdownInterval !== null) return;\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.setupInterval();\n }\n\n setupInterval(): void {\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n\n this.countdownInterval = setInterval(this.countdown.bind(this), 1000);\n }\n\n resetCountdown(): void {\n if (!this.props.timed) return;\n\n this.setupInterval();\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.removeFadeAnimation();\n }\n \n /**\n * @param silent If true, the close listener will not be called\n */\n close(silent?: boolean): void {\n //remove setInterval\n if (this.countdownInterval !== null) clearInterval(this.countdownInterval);\n\n if (!silent) this.props.closeListener();\n }\n\n addNoticeInfoMessage(message: string, message2 = \"\"): void {\n //TODO: Replace\n\n const previousInfoMessage = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix);\n if (previousInfoMessage != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage);\n }\n\n const previousInfoMessage2 = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix + \"2\");\n if (previousInfoMessage2 != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage2);\n }\n \n //add info\n const thanksForVotingText = document.createElement(\"p\");\n thanksForVotingText.id = \"sponsorTimesInfoMessage\" + this.idSuffix;\n thanksForVotingText.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText.innerText = message;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n \n if (message2 !== undefined) {\n const thanksForVotingText2 = document.createElement(\"p\");\n thanksForVotingText2.id = \"sponsorTimesInfoMessage\" + this.idSuffix + \"2\";\n thanksForVotingText2.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText2.innerText = message2;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText2, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n }\n }\n\n getElement(): React.RefObject {\n return this.parentRef;\n }\n\n componentWillUnmount(): void {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n\n // For dragging around notice\n handleMouseMove(e: MouseEvent): void {\n if (this.state.mouseDownInfo && e.buttons === 1) {\n const [mouseX, mouseY] = [e.clientX, e.clientY];\n\n const deltaX = mouseX - this.state.mouseDownInfo.x;\n const deltaY = mouseY - this.state.mouseDownInfo.y;\n\n if (deltaX > 0 || deltaY > 0) this.setState({ mouseMoved: true });\n\n const element = this.parentRef.current;\n const parent = element.parentElement.parentElement;\n this.setState({\n right: Math.min(parent.clientWidth - element.clientWidth - bounds[2], Math.max(bounds[0], this.state.mouseDownInfo.right - deltaX)),\n bottom: Math.min(parent.clientHeight - element.clientHeight - bounds[3], Math.max(bounds[1], this.state.mouseDownInfo.bottom - deltaY))\n });\n } else {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n }\n}\n\nexport default NoticeComponent;\n","import * as React from \"react\";\n\nexport interface NoticeTextSelectionProps {\n icon?: string;\n text: string;\n idSuffix: string;\n onClick?: (event: React.MouseEvent) => unknown;\n children?: React.ReactNode;\n}\n\nexport interface NoticeTextSelectionState {\n\n}\n\nclass NoticeTextSelectionComponent extends React.Component {\n\n constructor(props: NoticeTextSelectionProps) {\n super(props);\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {};\n if (this.props.onClick) {\n style.cursor = \"pointer\";\n style.textDecoration = \"underline\"\n }\n\n return (\n \n \n \n {this.props.icon ? \n \n : null}\n\n \n {this.getTextElements(this.props.text)}\n \n \n \n );\n }\n\n private getTextElements(text: string): Array {\n const elements: Array = [];\n const textParts = text.split(/(?=\\s+)/);\n for (const textPart of textParts) {\n if (textPart.match(/^\\s*http/)) {\n elements.push(\n \n {textPart}\n \n );\n } else {\n elements.push(textPart);\n }\n\n }\n\n return elements;\n }\n}\n\nexport default NoticeTextSelectionComponent;","import * as React from \"react\";\n\nexport interface SelectorOption {\n label: string;\n}\n\nexport interface SelectorProps { \n id: string;\n options: SelectorOption[];\n onChange: (value: string) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport interface SelectorState {\n\n}\n\nclass SelectorComponent extends React.Component {\n\n constructor(props: SelectorProps) {\n super(props);\n\n // Setup state\n this.state = {\n \n }\n }\n\n render(): React.ReactElement {\n return (\n
0 ? \"inherit\" : \"none\"}}\n className=\"sbSelector\">\n
\n {this.getOptions()}\n
\n
\n );\n }\n\n getOptions(): React.ReactElement[] {\n const result: React.ReactElement[] = [];\n for (const option of this.props.options) {\n result.push(\n
{\n e.stopPropagation();\n this.props.onChange(option.label);\n }}\n key={option.label}>\n {option.label}\n
\n );\n }\n\n return result;\n }\n}\n\nexport default SelectorComponent;","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\"\nimport { Category, ContentContainer, SponsorTime, NoticeVisibilityMode, ActionType, SponsorSourceType, SegmentUUID } from \"../types\";\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport Utils from \"../utils\";\nconst utils = new Utils();\nimport { getSkippingText, getUpcomingText, getVoteText } from \"../utils/categoryUtils\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport PencilSvg from \"../svg-icons/pencil_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { getFormattedTime } from \"../../maze-utils/src/formating\";\nimport { getCurrentTime, getVideo } from \"../../maze-utils/src/video\";\n\nenum SkipButtonState {\n Undo, // Unskip\n Redo, // Reskip\n Start // Skip\n}\n\nexport interface SkipNoticeProps {\n segments: SponsorTime[];\n\n autoSkip: boolean;\n startReskip?: boolean;\n upcomingNotice?: boolean;\n voteNotice?: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n closeListener: () => void;\n showKeybindHint?: boolean;\n smaller: boolean;\n fadeIn: boolean;\n maxCountdownTime?: number;\n\n componentDidMount?: () => void;\n\n unskipTime?: number;\n}\n\nexport interface SkipNoticeState {\n noticeTitle?: string;\n\n messages?: string[];\n messageOnClick?: (event: React.MouseEvent) => unknown;\n\n countdownTime?: number;\n maxCountdownTime?: () => number;\n countdownText?: string;\n\n skipButtonStates?: SkipButtonState[];\n skipButtonCallbacks?: Array<(buttonIndex: number, index: number, forceSeek: boolean) => void>;\n showSkipButton?: boolean[];\n\n editing?: boolean;\n choosingCategory?: boolean;\n thanksForVotingText?: string; //null until the voting buttons should be hidden\n\n actionState?: SkipNoticeAction;\n\n showKeybindHint?: boolean;\n\n smaller?: boolean;\n\n voted?: SkipNoticeAction[];\n copied?: SkipNoticeAction[];\n\n}\n\nclass SkipNoticeComponent extends React.Component {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n amountOfPreviousNotices: number;\n showInSecondSlot: boolean;\n\n idSuffix: string;\n\n noticeRef: React.MutableRefObject;\n categoryOptionRef: React.RefObject;\n\n selectedColor: string;\n unselectedColor: string;\n lockedColor: string;\n\n // Used to update on config change\n configListener: () => void;\n\n constructor(props: SkipNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n this.categoryOptionRef = React.createRef();\n\n this.segments = props.segments;\n this.autoSkip = props.autoSkip;\n this.contentContainer = props.contentContainer;\n\n const noticeTitle = this.props.voteNotice ? getVoteText(this.segments) : !this.props.upcomingNotice ? getSkippingText(this.segments, this.props.autoSkip) : getUpcomingText(this.segments);\n\n const previousSkipNotices = document.querySelectorAll(\".sponsorSkipNoticeParent:not(.sponsorSkipUpcomingNotice)\");\n this.amountOfPreviousNotices = previousSkipNotices.length;\n // If there is at least one already in the first slot\n this.showInSecondSlot = previousSkipNotices.length > 0 && [...previousSkipNotices].some(notice => !notice.classList.contains(\"secondSkipNotice\"));\n\n // Sort segments\n if (this.segments.length > 1) {\n this.segments.sort((a, b) => a.segment[0] - b.segment[0]);\n }\n\n // This is the suffix added at the end of every id\n for (const segment of this.segments) {\n this.idSuffix += segment.UUID;\n }\n this.idSuffix += this.amountOfPreviousNotices;\n\n this.selectedColor = Config.config.colorPalette.red;\n this.unselectedColor = Config.config.colorPalette.white;\n this.lockedColor = Config.config.colorPalette.locked;\n\n const isMuteSegment = this.segments[0].actionType === ActionType.Mute;\n const maxCountdownTime = props.maxCountdownTime ? () => props.maxCountdownTime : (isMuteSegment ? this.getFullDurationCountdown(0) : () => Config.config.skipNoticeDuration);\n\n const defaultSkipButtonState = this.props.startReskip ? SkipButtonState.Redo : SkipButtonState.Undo;\n const skipButtonStates = [defaultSkipButtonState, isMuteSegment ? SkipButtonState.Start : defaultSkipButtonState];\n\n const defaultSkipButtonCallback = this.props.startReskip ? this.reskip.bind(this) : this.unskip.bind(this);\n const skipButtonCallbacks = [defaultSkipButtonCallback, isMuteSegment ? this.reskip.bind(this) : defaultSkipButtonCallback];\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n messageOnClick: null,\n\n //the countdown until this notice closes\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n countdownText: null,\n\n skipButtonStates,\n skipButtonCallbacks,\n showSkipButton: [true, true],\n\n editing: false,\n choosingCategory: false,\n thanksForVotingText: null,\n\n actionState: SkipNoticeAction.None,\n\n showKeybindHint: this.props.showKeybindHint ?? true,\n\n smaller: this.props.smaller ?? false,\n\n // Keep track of what segment the user interacted with.\n voted: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n copied: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n }\n\n if (!this.autoSkip) {\n // Assume manual skip is only skipping 1 submission\n Object.assign(this.state, this.getUnskippedModeInfo(null, 0, SkipButtonState.Start));\n }\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = { }\n if (this.contentContainer().onMobileYouTube) {\n noticeStyle.bottom = \"4em\";\n noticeStyle.transform = \"scale(0.8) translate(10%, 10%)\";\n }\n\n const firstColumn = this.getSkipButton(0);\n\n return (\n = NoticeVisibilityMode.FadedForAll\n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.FadedForAutoSkip && this.autoSkip)}\n timed={true}\n maxCountdownTime={this.state.maxCountdownTime}\n style={noticeStyle}\n biggerCloseButton={this.contentContainer().onMobileYouTube}\n ref={this.noticeRef}\n closeListener={() => this.closeListener()}\n smaller={this.state.smaller}\n logoFill={Config.config.barTypes[this.segments[0].category].color}\n limitWidth={true}\n firstColumn={firstColumn}\n dontPauseCountdown={!!this.props.upcomingNotice}\n bottomRow={[...this.getMessageBoxes(), ...this.getBottomRow() ]}\n extraClass={this.props.upcomingNotice ? \"sponsorSkipUpcomingNotice\" : \"\"}\n onMouseEnter={() => this.onMouseEnter() } >\n \n );\n }\n\n componentDidMount(): void {\n if (this.props.componentDidMount) {\n this.props.componentDidMount();\n }\n }\n\n getBottomRow(): JSX.Element[] {\n return [\n /* Bottom Row */\n (\n\n {/* Vote Button Container */}\n {!this.state.thanksForVotingText ?\n \n\n {/* Upvote Button */}\n
this.prepAction(SkipNoticeAction.Upvote)}>\n \n
\n\n {/* Report Button */}\n
this.prepAction(SkipNoticeAction.Downvote)}>\n \n
\n\n {/* Copy and Downvote Button */}\n {\n !this.props.voteNotice &&\n
this.openEditingOptions()}>\n \n
\n }\n \n\n :\n\n \n\n {/* Submitted string */}\n \n {this.state.thanksForVotingText}\n \n\n {/* Continue Voting Button */}\n \n \n }\n\n {/* Unskip/Skip Button */}\n {!this.props.voteNotice && (!this.props.smaller || this.segments[0].actionType === ActionType.Mute)\n ? this.getSkipButton(1) : null}\n\n {/* Never show button */}\n {!this.autoSkip || this.props.startReskip || this.props.voteNotice ? \"\" :\n \n \n \n }\n ),\n\n /* Edit Segments Row */\n (this.state.editing && !this.state.thanksForVotingText && !(this.state.choosingCategory || this.state.actionState === SkipNoticeAction.CopyDownvote) &&\n \n \n\n {/* Copy Segment */}\n \n\n {/* Category vote */}\n \n \n \n ),\n\n /* Category Chooser Row */\n (this.state.choosingCategory && !this.state.thanksForVotingText &&\n \n \n {/* Category Selector */}\n \n\n {/* Submit Button */}\n {this.segments.length === 1 &&\n \n }\n \n \n ),\n\n /* Segment Chooser Row */\n (this.state.actionState !== SkipNoticeAction.None && this.segments.length > 1 && !this.state.thanksForVotingText &&\n \n \n {this.getSubmissionChooser()}\n \n \n )\n ];\n }\n\n getSkipButton(buttonIndex: number): JSX.Element {\n if (this.state.showSkipButton[buttonIndex] && (this.segments.length > 1\n || this.segments[0].actionType !== ActionType.Poi\n || this.props.unskipTime)) {\n\n const forceSeek = buttonIndex === 1 && this.segments[0].actionType === ActionType.Mute;\n\n const style: React.CSSProperties = {\n marginLeft: \"4px\",\n color: ([SkipNoticeAction.Unskip0, SkipNoticeAction.Unskip1].includes(this.state.actionState))\n ? this.selectedColor : this.unselectedColor\n };\n if (this.contentContainer().onMobileYouTube) {\n style.padding = \"20px\";\n style.minWidth = \"100px\";\n }\n\n const showSkipButton = (buttonIndex !== 0 || this.props.smaller || !this.props.voteNotice || this.segments[0].actionType === ActionType.Mute) && !this.props.upcomingNotice;\n\n return (\n \n \n \n );\n }\n return null;\n }\n\n getSubmissionChooser(): JSX.Element[] {\n const elements: JSX.Element[] = [];\n for (let i = 0; i < this.segments.length; i++) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getSubmissionChooserOpacity(index: number): number {\n const isUpvote = this.state.actionState === SkipNoticeAction.Upvote;\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldBeGray: boolean = (isUpvote && this.state.voted[index] == SkipNoticeAction.Upvote) ||\n (isDownvote && this.state.voted[index] == SkipNoticeAction.Downvote) ||\n (isCopyDownvote && this.state.copied[index] == SkipNoticeAction.CopyDownvote);\n\n return shouldBeGray ? 0.35 : 1;\n }\n\n getSubmissionChooserColor(index: number): string {\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldWarnUser = Config.config.isVip && (isDownvote || isCopyDownvote)\n && this.segments[index].locked === 1;\n\n return shouldWarnUser ? this.lockedColor : this.unselectedColor;\n }\n\n onMouseEnter(): void {\n if (this.state.smaller && !this.props.upcomingNotice) {\n this.setState({\n smaller: false\n });\n }\n }\n\n getMessageBoxes(): JSX.Element[] {\n if (this.state.messages.length === 0) {\n // Add a spacer if there is no text\n return [\n \n \n ];\n }\n\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n \n \n \n \n )\n }\n\n return elements;\n }\n\n prepAction(action: SkipNoticeAction): void {\n if (this.segments.length === 1) {\n this.performAction(0, action);\n } else {\n if (this.state.smaller) {\n this.setState({\n smaller: false\n });\n\n this.noticeRef.current.fadedMouseEnter();\n this.noticeRef.current.resetCountdown();\n }\n\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.resetStateToStart();\n break;\n case SkipNoticeAction.Upvote:\n this.resetStateToStart(SkipNoticeAction.Upvote);\n break;\n case SkipNoticeAction.Downvote:\n this.resetStateToStart(SkipNoticeAction.Downvote);\n break;\n case SkipNoticeAction.CategoryVote:\n this.resetStateToStart(SkipNoticeAction.CategoryVote, true, true);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.resetStateToStart(SkipNoticeAction.CopyDownvote, true);\n break;\n case SkipNoticeAction.Unskip0:\n this.resetStateToStart(SkipNoticeAction.Unskip0);\n break;\n case SkipNoticeAction.Unskip1:\n this.resetStateToStart(SkipNoticeAction.Unskip1);\n break;\n }\n }\n }\n\n /**\n * Performs the action from the current state\n *\n * @param index\n */\n performAction(index: number, action?: SkipNoticeAction): void {\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.noAction(index);\n break;\n case SkipNoticeAction.Upvote:\n this.upvote(index);\n break;\n case SkipNoticeAction.Downvote:\n this.downvote(index);\n break;\n case SkipNoticeAction.CategoryVote:\n this.categoryVote(index);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.copyDownvote(index);\n break;\n case SkipNoticeAction.Unskip0:\n this.unskipAction(0, index, false);\n break;\n case SkipNoticeAction.Unskip1:\n this.unskipAction(1, index, true);\n break;\n default:\n this.resetStateToStart();\n break;\n }\n }\n\n noAction(index: number): void {\n const voted = this.state.voted;\n voted[index] = SkipNoticeAction.None;\n\n this.setState({\n voted\n });\n }\n\n upvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n this.contentContainer().vote(1, this.segments[index].UUID, undefined, this);\n }\n\n downvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n }\n\n categoryVote(index: number): void {\n this.contentContainer().vote(undefined, this.segments[index].UUID, this.categoryOptionRef.current.value as Category, this)\n }\n\n copyDownvote(index: number): void {\n const sponsorVideoID = this.props.contentContainer().sponsorVideoID;\n const sponsorTimesSubmitting : SponsorTime = {\n segment: this.segments[index].segment,\n UUID: generateUserID() as SegmentUUID,\n category: this.segments[index].category,\n actionType: this.segments[index].actionType,\n source: SponsorSourceType.Local\n };\n\n const segmentTimes = Config.local.unsubmittedSegments[sponsorVideoID] || [];\n segmentTimes.push(sponsorTimesSubmitting);\n Config.local.unsubmittedSegments[sponsorVideoID] = segmentTimes;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().sponsorTimesSubmitting.push(sponsorTimesSubmitting);\n this.props.contentContainer().updatePreviewBar();\n this.props.contentContainer().resetSponsorSubmissionNotice();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n\n const copied = this.state.copied;\n copied[index] = SkipNoticeAction.CopyDownvote;\n\n this.setState({\n copied\n });\n }\n\n unskipAction(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.state.skipButtonCallbacks[buttonIndex](buttonIndex, index, forceSeek);\n }\n\n openEditingOptions(): void {\n this.resetStateToStart(undefined, true);\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [];\n\n const categories = (CompileConfig.categoryList.filter((cat => CompileConfig.categorySupport[cat].includes(ActionType.Skip)))) as Category[];\n for (const category of categories) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getCategoryNameClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\"\n }\n\n unskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().unskipSponsorTime(this.segments[index], this.props.unskipTime, forceSeek, this.props.voteNotice);\n\n this.unskippedMode(buttonIndex, index, this.segments[0].actionType === ActionType.Poi ? SkipButtonState.Undo : SkipButtonState.Redo);\n }\n\n reskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().reskipSponsorTime(this.segments[index], forceSeek);\n this.reskippedMode(buttonIndex);\n }\n\n reskippedMode(buttonIndex: number): void {\n const skipButtonStates = this.state.skipButtonStates;\n skipButtonStates[buttonIndex] = SkipButtonState.Undo;\n\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n skipButtonCallbacks[buttonIndex] = this.unskip.bind(this);\n\n const newState: SkipNoticeState = {\n skipButtonStates,\n skipButtonCallbacks,\n\n maxCountdownTime: () => Config.config.skipNoticeDuration,\n countdownTime: Config.config.skipNoticeDuration\n };\n\n //reset countdown\n this.setState(newState, () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n /** Sets up notice to be not skipped yet */\n unskippedMode(buttonIndex: number, index: number, skipButtonState: SkipButtonState): void {\n //setup new callback and reset countdown\n this.setState(this.getUnskippedModeInfo(buttonIndex, index, skipButtonState), () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n getUnskippedModeInfo(buttonIndex: number, index: number, skipButtonState: SkipButtonState): SkipNoticeState {\n const changeCountdown = !this.props.voteNotice && this.segments[index].actionType !== ActionType.Poi;\n\n const maxCountdownTime = changeCountdown ?\n this.getFullDurationCountdown(index) : this.state.maxCountdownTime;\n\n const skipButtonStates = this.state.skipButtonStates;\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n if (buttonIndex === null) {\n for (let i = 0; i < skipButtonStates.length; i++) {\n skipButtonStates[i] = skipButtonState;\n skipButtonCallbacks[i] = this.reskip.bind(this);\n }\n } else {\n skipButtonStates[buttonIndex] = skipButtonState;\n skipButtonCallbacks[buttonIndex] = this.reskip.bind(this);\n\n if (buttonIndex === 1) {\n // Trigger both to move at once\n skipButtonStates[0] = SkipButtonState.Redo;\n skipButtonCallbacks[0] = this.reskip.bind(this);\n }\n }\n\n return {\n skipButtonStates,\n skipButtonCallbacks,\n // change max duration to however much of the sponsor is left\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n showSkipButton: buttonIndex === 1 ? [true, true] : this.state.showSkipButton\n } as SkipNoticeState;\n }\n\n getFullDurationCountdown(index: number): () => number {\n return () => {\n const sponsorTime = this.segments[index];\n const duration = Math.round((sponsorTime.segment[1] - (getCurrentTime() ?? 0)) * (1 / (getVideo()?.playbackRate ?? 1)));\n\n return Math.max(duration, Config.config.skipNoticeDuration);\n };\n }\n\n afterVote(segment: SponsorTime, type: number, category: Category): void {\n const index = utils.getSponsorIndexFromUUID(this.segments, segment.UUID);\n const wikiLinkText = CompileConfig.wikiLinks[segment.category];\n\n const voted = this.state.voted;\n switch (type) {\n case 0:\n this.clearConfigListener();\n this.setNoticeInfoMessageWithOnClick(() => window.open(wikiLinkText), chrome.i18n.getMessage(\"OpenCategoryWikiPage\"));\n\n voted[index] = SkipNoticeAction.Downvote;\n break;\n case 1:\n voted[index] = SkipNoticeAction.Upvote;\n break;\n case 20:\n voted[index] = SkipNoticeAction.None;\n break;\n }\n\n this.setState({\n voted\n });\n\n this.addVoteButtonInfo(chrome.i18n.getMessage(\"voted\"));\n\n if (segment && category) {\n // This is the segment inside the skip notice\n this.segments[index].category = category;\n }\n }\n\n setNoticeInfoMessageWithOnClick(onClick: (event: React.MouseEvent) => unknown, ...messages: string[]): void {\n this.setState({\n messages,\n messageOnClick: (event) => onClick(event)\n });\n }\n\n setNoticeInfoMessage(...messages: string[]): void {\n this.setState({\n messages\n });\n }\n\n addVoteButtonInfo(message: string): void {\n this.setState({\n thanksForVotingText: message\n });\n }\n\n resetVoteButtonInfo(): void {\n this.setState({\n thanksForVotingText: null\n });\n }\n\n closeListener(): void {\n this.clearConfigListener();\n\n this.props.closeListener();\n }\n\n clearConfigListener(): void {\n if (this.configListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configListener), 1);\n this.configListener = null;\n }\n }\n\n unmutedListener(time: number): void {\n if (this.props.segments.length === 1\n && this.props.segments[0].actionType === ActionType.Mute\n && time >= this.props.segments[0].segment[1]) {\n this.setState({\n showSkipButton: [false, true]\n });\n }\n }\n\n resetStateToStart(actionState: SkipNoticeAction = SkipNoticeAction.None, editing = false, choosingCategory = false): void {\n this.setState({\n actionState: actionState,\n editing: editing,\n choosingCategory: choosingCategory,\n thanksForVotingText: null,\n messages: []\n });\n }\n\n private getSkipButtonText(buttonIndex: number, forceType?: ActionType): string {\n switch (this.state.skipButtonStates[buttonIndex]) {\n case SkipButtonState.Undo:\n return this.getUndoText(forceType);\n case SkipButtonState.Redo:\n return this.getRedoText(forceType);\n case SkipButtonState.Start:\n return this.getStartText(forceType);\n }\n }\n\n private getUndoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"unmute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"unskip\");\n }\n }\n }\n\n private getRedoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"reskip\");\n }\n }\n }\n\n private getStartText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"skip\");\n }\n }\n }\n}\n\nexport default SkipNoticeComponent;\n","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\";\nimport { ActionType, Category, ChannelIDStatus, ContentContainer, SponsorHideType, SponsorTime } from \"../types\";\nimport SubmissionNoticeComponent from \"./SubmissionNoticeComponent\";\nimport { RectangleTooltip } from \"../render/RectangleTooltip\";\nimport SelectorComponent, { SelectorOption } from \"./SelectorComponent\";\nimport { DEFAULT_CATEGORY } from \"../utils/categoryUtils\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport { defaultPreviewTime } from \"../utils/constants\";\nimport { getVideo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface SponsorTimeEditProps {\n index: number;\n\n idSuffix: string;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n submissionNotice: SubmissionNoticeComponent;\n categoryList?: Category[];\n categoryChangeListener?: (index: number, category: Category) => void;\n children?: React.ReactNode;\n}\n\nexport interface SponsorTimeEditState {\n editing: boolean;\n sponsorTimeEdits: [string, string];\n selectedCategory: Category;\n selectedActionType: ActionType;\n description: string;\n suggestedNames: SelectorOption[];\n chapterNameSelectorOpen: boolean;\n chapterNameSelectorHovering: boolean;\n}\n\nconst categoryNamesGrams: string[] = [].concat(...CompileConfig.categoryList.filter((name) => ![\"chapter\", \"intro\"].includes(name))\n .map((name) => chrome.i18n.getMessage(\"category_\" + name).split(/\\/|\\s|-/)));\n\nclass SponsorTimeEditComponent extends React.Component {\n\n idSuffix: string;\n\n categoryOptionRef: React.RefObject;\n actionTypeOptionRef: React.RefObject;\n descriptionOptionRef: React.RefObject;\n\n configUpdateListener: () => void;\n\n previousSkipType: ActionType;\n // Used when selecting POI or Full\n timesBeforeChanging: number[] = [];\n fullVideoWarningShown = false;\n categoryNameWarningShown = false;\n\n // For description auto-complete\n fetchingSuggestions: boolean;\n\n constructor(props: SponsorTimeEditProps) {\n super(props);\n\n this.categoryOptionRef = React.createRef();\n this.actionTypeOptionRef = React.createRef();\n this.descriptionOptionRef = React.createRef();\n\n this.idSuffix = this.props.idSuffix;\n this.previousSkipType = ActionType.Skip;\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.state = {\n editing: false,\n sponsorTimeEdits: [null, null],\n selectedCategory: sponsorTime.category ?? DEFAULT_CATEGORY as Category,\n selectedActionType: sponsorTime.actionType,\n description: sponsorTime.description || \"\",\n suggestedNames: [],\n chapterNameSelectorOpen: false,\n chapterNameSelectorHovering: false\n };\n }\n\n componentDidMount(): void {\n // Prevent inputs from triggering key events\n document.getElementById(\"sponsorTimeEditContainer\" + this.idSuffix).addEventListener('keydown', (e) => {\n e.stopPropagation();\n });\n\n // Prevent scrolling while changing times\n document.getElementById(\"sponsorTimesContainer\" + this.idSuffix).addEventListener('wheel', (e) => {\n if (this.state.editing) {\n e.preventDefault();\n }\n }, {passive: false});\n\n // Add as a config listener\n if (!this.configUpdateListener) {\n this.configUpdateListener = () => this.configUpdate();\n Config.configSyncListeners.push(this.configUpdate.bind(this));\n }\n\n this.checkToShowFullVideoWarning();\n }\n\n componentWillUnmount(): void {\n if (this.configUpdateListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configUpdate.bind(this)), 1);\n }\n }\n\n render(): React.ReactElement {\n this.checkToShowFullVideoWarning();\n this.checkToShowChapterWarning();\n\n const style: React.CSSProperties = {\n textAlign: \"center\"\n };\n\n if (this.props.index != 0) {\n style.marginTop = \"15px\";\n }\n\n const borderColor = this.state.selectedCategory ? Config.config.barTypes[this.state.selectedCategory]?.color : null;\n\n // Create time display\n let timeDisplay: JSX.Element;\n const timeDisplayStyle: React.CSSProperties = {};\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segment = sponsorTime.segment;\n if (this.state.selectedActionType === ActionType.Full) timeDisplayStyle.display = \"none\";\n if (this.state.editing) {\n timeDisplay = (\n
\n\n {this.state.selectedActionType !== ActionType.Poi ? (\n this.setTimeTo(0, 0)}>\n {chrome.i18n.getMessage(\"bracketStart\")}\n \n ): \"\"}\n\n this.setTimeToNow(0)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(0, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(0, e, sponsorTime)}>\n \n\n {this.state.selectedActionType !== ActionType.Poi ? (\n \n \n {\" \" + chrome.i18n.getMessage(\"to\") + \" \"}\n \n\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(1, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(1, e, sponsorTime)}>\n \n\n this.setTimeToNow(1)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n\n this.setTimeToEnd()}>\n {chrome.i18n.getMessage(\"bracketEnd\")}\n \n \n ): \"\"}\n
\n );\n } else {\n timeDisplay = (\n \n
\n {getFormattedTime(segment[0], true) +\n ((!isNaN(segment[1]) && this.state.selectedActionType !== ActionType.Poi)\n ? \" \" + chrome.i18n.getMessage(\"to\") + \" \" + getFormattedTime(segment[1], true) : \"\")}\n
\n );\n }\n\n return (\n
\n \n {timeDisplay}\n\n {/* Category */}\n
\n \n\n {/* open in new tab */}\n \n \n \n
\n\n {/* Action Type */}\n {CompileConfig.categorySupport[sponsorTime.category] && \n (CompileConfig.categorySupport[sponsorTime.category]?.length > 1 \n || CompileConfig.categorySupport[sponsorTime.category]?.[0] === ActionType.Full) ? (\n
\n \n {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.4);\n stopAnimation();\n \n if (sponsorTime.hidden === SponsorHideType.Hidden) {\n sponsorTime.hidden = SponsorHideType.Visible;\n } else {\n sponsorTime.hidden = SponsorHideType.Hidden;\n }\n\n this.saveEditTimes();\n }}/>\n
\n ): \"\"}\n\n {/* Chapter Name */}\n {this.state.selectedActionType=== ActionType.Chapter ? (\n
this.setState({chapterNameSelectorOpen: false})}>\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onContextMenu={(e) => e.stopPropagation()}\n onChange={(e) => this.descriptionUpdate(e.target.value)}\n onFocus={() => this.setState({chapterNameSelectorOpen: true})}>\n \n {this.state.description \n && (this.state.chapterNameSelectorOpen || this.state.chapterNameSelectorHovering) &&\n this.setState({chapterNameSelectorHovering: true})}\n onMouseLeave={() => this.setState({chapterNameSelectorHovering: false})}\n onChange={(v) => this.descriptionUpdate(v)}\n />\n }\n
\n ): \"\"}\n\n {/* Editing Tools */}\n\n
\n \n {chrome.i18n.getMessage(\"delete\")}\n \n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) \n && this.state.selectedActionType !== ActionType.Chapter ? (\n this.previewTime(e.ctrlKey, e.shiftKey)}>\n {chrome.i18n.getMessage(\"preview\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {chrome.i18n.getMessage(\"inspect\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) ? (\n this.previewTime(e.ctrlKey, e.shiftKey, true)}>\n {chrome.i18n.getMessage(\"End\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {this.state.editing ? chrome.i18n.getMessage(\"save\") : chrome.i18n.getMessage(\"edit\")}\n \n ): \"\"}\n
\n\n
\n );\n }\n\n handleOnChange(index: number, e: React.ChangeEvent, sponsorTime: SponsorTime, targetValue: string): void {\n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n \n // check if change is small engough to show tooltip\n const before = getFormattedTimeToSeconds(sponsorTimeEdits[index]);\n const after = getFormattedTimeToSeconds(targetValue);\n const difference = Math.abs(before - after);\n if (0 < difference && difference < 0.5) this.showScrollToEditToolTip();\n\n sponsorTimeEdits[index] = targetValue;\n if (index === 0 && sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = targetValue;\n\n this.setState({sponsorTimeEdits}, () => this.saveEditTimes());\n }\n\n changeTimesWhenScrolling(index: number, e: React.WheelEvent, sponsorTime: SponsorTime): void {\n if (!Config.config.allowScrollingToEdit) return;\n let step = 0;\n // shift + ctrl = 1\n // ctrl = 0.1\n // default = 0.01\n // shift = 0.001\n if (e.shiftKey) {\n step = (e.ctrlKey) ? 1 : 0.001;\n } else {\n step = (e.ctrlKey) ? 0.1 : 0.01;\n }\n \n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n let timeAsNumber = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[index]);\n if (timeAsNumber !== null && e.deltaY != 0) {\n if (e.deltaY < 0) {\n timeAsNumber += step;\n } else if (timeAsNumber >= step) {\n timeAsNumber -= step;\n } else {\n timeAsNumber = 0;\n }\n \n sponsorTimeEdits[index] = getFormattedTime(timeAsNumber, true);\n if (sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = sponsorTimeEdits[0];\n\n this.setState({sponsorTimeEdits});\n this.saveEditTimes();\n }\n }\n\n showScrollToEditToolTip(): void {\n if (!Config.config.scrollToEditTimeUpdate && document.getElementById(\"sponsorRectangleTooltip\" + \"sponsorTimesContainer\" + this.idSuffix) === null) {\n this.showToolTip(chrome.i18n.getMessage(\"SponsorTimeEditScrollNewFeature\"), \"scrollToEdit\", () => { Config.config.scrollToEditTimeUpdate = true });\n }\n }\n\n showToolTip(text: string, id: string, buttonFunction?: () => void): boolean {\n const element = document.getElementById(\"sponsorTimesContainer\" + this.idSuffix);\n if (element) {\n const htmlId = `sponsorRectangleTooltip${id + this.idSuffix}`;\n if (!document.getElementById(htmlId)) {\n new RectangleTooltip({\n text,\n referenceNode: element.parentElement,\n prependElement: element,\n timeout: 15,\n bottomOffset: 0 + \"px\",\n leftOffset: -318 + \"px\",\n backgroundColor: \"rgba(28, 28, 28, 1.0)\",\n htmlId,\n buttonFunction,\n fontSize: \"14px\",\n maxHeight: \"200px\"\n });\n }\n\n return true;\n } else {\n return false;\n }\n }\n\n checkToShowFullVideoWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segmentDuration = sponsorTime.segment[1] - sponsorTime.segment[0];\n const videoPercentage = segmentDuration / getVideoDuration();\n\n if (videoPercentage > 0.6 && !this.fullVideoWarningShown \n && (sponsorTime.category === \"sponsor\" || sponsorTime.category === \"selfpromo\" || sponsorTime.category === \"chooseACategory\")) {\n if (this.showToolTip(chrome.i18n.getMessage(\"fullVideoTooltipWarning\"), \"fullVideoWarning\")) {\n this.fullVideoWarningShown = true;\n }\n }\n }\n\n checkToShowChapterWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n if (sponsorTime.actionType === ActionType.Chapter && sponsorTime.description\n && !this.categoryNameWarningShown\n && categoryNamesGrams.some(\n (category) => sponsorTime.description.toLowerCase().includes(category.toLowerCase()))) {\n if (this.showToolTip(chrome.i18n.getMessage(\"chapterNameTooltipWarning\"), \"chapterWarning\")) {\n this.categoryNameWarningShown = true;\n }\n }\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [(\n \n )];\n\n for (const category of (this.props.categoryList ?? CompileConfig.categoryList)) {\n // If permission not loaded, treat it like we have permission except chapter\n const defaultBlockCategories = [\"chapter\"];\n const permission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[category as Category]);\n if ((defaultBlockCategories.includes(category) \n || (permission !== undefined && !Config.config.showCategoryWithoutPermission)) && !permission) continue;\n\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n getCategoryLockedClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\";\n }\n\n categorySelectionChange(event: React.ChangeEvent): void {\n const chosenCategory = event.target.value as Category;\n this.setState({\n selectedCategory: chosenCategory\n });\n\n // See if show more categories was pressed\n if (chosenCategory !== DEFAULT_CATEGORY && !Config.config.categorySelections.some((category) => category.name === chosenCategory)) {\n event.target.value = DEFAULT_CATEGORY;\n \n // Alert that they have to enable this category first\n if (confirm(chrome.i18n.getMessage(\"enableThisCategoryFirst\")\n .replace(\"{0}\", chrome.i18n.getMessage(\"category_\" + chosenCategory)))) {\n // Open options page\n chrome.runtime.sendMessage({message: \"openConfig\", hash: \"behavior\"});\n }\n \n return;\n }\n\n // Hook update\n if (!Config.config.hookUpdate && chosenCategory === \"preview\") {\n Config.config.hookUpdate = true;\n\n const target = event.target.closest(\".sponsorSkipNotice tbody\");\n if (target) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"hookNewFeature\"),\n referenceNode: target.parentElement,\n prependElement: target as HTMLElement,\n bottomOffset: \"30px\",\n opacity: 0.9,\n timeout: 100\n });\n }\n }\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.handleReplacingLostTimes(chosenCategory, sponsorTime.actionType, sponsorTime);\n this.saveEditTimes();\n\n if (this.props.categoryChangeListener) {\n this.props.categoryChangeListener(this.props.index, chosenCategory);\n }\n }\n\n actionTypeSelectionChange(event: React.ChangeEvent): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n selectedActionType: event.target.value as ActionType\n });\n\n this.handleReplacingLostTimes(sponsorTime.category, event.target.value as ActionType, sponsorTime);\n this.saveEditTimes();\n }\n\n private handleReplacingLostTimes(category: Category, actionType: ActionType, segment: SponsorTime): void {\n if (CompileConfig.categorySupport[category]?.includes(ActionType.Poi)) {\n if (this.previousSkipType !== ActionType.Poi) {\n this.timesBeforeChanging = [null, segment.segment[1]];\n }\n\n this.setTimeTo(1, null);\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n if (this.props.contentContainer().sponsorTimesSubmitting\n .some((segment, i) => segment.category === category && i !== this.props.index)) {\n alert(chrome.i18n.getMessage(\"poiOnlyOneSegment\"));\n }\n\n this.previousSkipType = ActionType.Poi;\n } else if (CompileConfig.categorySupport[category]?.length === 1 \n && CompileConfig.categorySupport[category]?.[0] === ActionType.Full) {\n if (this.previousSkipType !== ActionType.Full) {\n this.timesBeforeChanging = [...segment.segment];\n }\n\n this.previousSkipType = ActionType.Full;\n } else if ((category === \"chooseACategory\" || ((CompileConfig.categorySupport[category]?.includes(ActionType.Skip)\n || CompileConfig.categorySupport[category]?.includes(ActionType.Chapter))\n && ![ActionType.Poi, ActionType.Full].includes(this.getNextActionType(category, actionType))))\n && this.previousSkipType !== ActionType.Skip) {\n if (this.timesBeforeChanging[0]) {\n this.setTimeTo(0, this.timesBeforeChanging[0]);\n }\n if (this.timesBeforeChanging[1]) {\n this.setTimeTo(1, this.timesBeforeChanging[1]);\n }\n\n this.previousSkipType = ActionType.Skip;\n }\n }\n\n getActionTypeOptions(sponsorTime: SponsorTime): React.ReactElement[] {\n const elements = [];\n\n for (const actionType of CompileConfig.categorySupport[sponsorTime.category]) {\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n setTimeToNow(index: number): void {\n this.setTimeTo(index, this.props.contentContainer().getRealCurrentTime());\n }\n\n setTimeToEnd(): void {\n this.setTimeTo(1, getVideoDuration());\n }\n\n /**\n * @param index \n * @param time If null, will set time to the first index's time\n */\n setTimeTo(index: number, time: number): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n if (time === null) time = sponsorTime.segment[0];\n\n const addedTime = sponsorTime.segment.length === 1;\n sponsorTime.segment[index] = time;\n if (sponsorTime.actionType === ActionType.Poi) sponsorTime.segment[1] = time;\n\n if (addedTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n this.setState({\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n }, () => this.saveEditTimes());\n }\n\n toggleEditTime(): void {\n if (this.state.editing) {\n \n this.setState({\n editing: false\n });\n\n this.saveEditTimes(); \n } else {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n editing: true,\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n });\n }\n }\n\n /** Returns an array in the sponsorTimeEdits form (formatted time string) from a normal seconds sponsor time */\n getFormattedSponsorTimesEdits(sponsorTime: SponsorTime): [string, string] {\n return [getFormattedTime(sponsorTime.segment[0], true),\n getFormattedTime(sponsorTime.segment[1], true)];\n }\n\n lastEditTime = 0;\n editTimeTimeout: NodeJS.Timeout | null = null;\n saveEditTimes(): void {\n // Rate limit edits\n const timeSinceLastEdit = Date.now() - this.lastEditTime;\n const rateLimitTime = 200;\n if (timeSinceLastEdit < rateLimitTime) {\n if (!this.editTimeTimeout) {\n this.editTimeTimeout = setTimeout(() => {\n this.saveEditTimes();\n }, rateLimitTime - timeSinceLastEdit)\n }\n\n return;\n }\n\n this.lastEditTime = Date.now();\n this.editTimeTimeout = null;\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n const category = this.categoryOptionRef.current.value as Category\n\n if (this.state.editing) {\n const startTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[0]);\n const endTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[1]);\n\n // Change segment time only if the format was correct\n if (startTime !== null && endTime !== null) {\n const addingTime = sponsorTimesSubmitting[this.props.index].segment.length === 1;\n sponsorTimesSubmitting[this.props.index].segment = [startTime, endTime];\n\n if (addingTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n } else if (startTime !== null) {\n // Only start time is valid, still an incomplete segment\n sponsorTimesSubmitting[this.props.index].segment[0] = startTime;\n }\n } else if (this.state.sponsorTimeEdits[1] === null && category === \"outro\" && !sponsorTimesSubmitting[this.props.index].segment[1]) {\n sponsorTimesSubmitting[this.props.index].segment[1] = getVideoDuration();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n sponsorTimesSubmitting[this.props.index].category = category;\n\n const actionType = this.getNextActionType(category, this.actionTypeOptionRef?.current?.value as ActionType);\n sponsorTimesSubmitting[this.props.index].actionType = actionType;\n this.setState({\n selectedActionType: actionType\n });\n\n const description = actionType === ActionType.Chapter ? this.descriptionOptionRef?.current?.value : \"\";\n sponsorTimesSubmitting[this.props.index].description = description;\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n\n if (sponsorTimesSubmitting[this.props.index].actionType === ActionType.Full \n && (sponsorTimesSubmitting[this.props.index].segment[0] !== 0 || sponsorTimesSubmitting[this.props.index].segment[1] !== 0)) {\n this.setTimeTo(0, 0);\n this.setTimeTo(1, 0);\n }\n }\n\n private getNextActionType(category: Category, actionType: ActionType): ActionType {\n return actionType && CompileConfig.categorySupport[category]?.includes(actionType) ? actionType\n : CompileConfig.categorySupport[category]?.[0] ?? ActionType.Skip\n }\n\n previewTime(ctrlPressed = false, shiftPressed = false, skipToEndTime = false): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n let seekTime = defaultPreviewTime;\n if (ctrlPressed) seekTime = 0.5;\n if (shiftPressed) seekTime = 0.25;\n\n const startTime = sponsorTimes[index].segment[0];\n const endTime = sponsorTimes[index].segment[1];\n\n // If segment starts at 0:00, start playback at the end of the segment\n const skipTime = (startTime === 0 || skipToEndTime) ? endTime : (startTime - (seekTime * getVideo().playbackRate));\n\n this.props.contentContainer().previewTime(skipTime, !skipToEndTime);\n }\n\n inspectTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n\n const skipTime = sponsorTimes[index].segment[0];\n\n this.props.contentContainer().previewTime(skipTime + 0.0001, false);\n }\n\n deleteTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n const removingIncomplete = sponsorTimes[index].segment.length < 2;\n\n sponsorTimes.splice(index, 1);\n \n //save this\n if (sponsorTimes.length > 0) {\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimes;\n } else {\n delete Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n \n //if they are all removed\n if (sponsorTimes.length == 0) {\n this.props.submissionNotice.cancel();\n } else {\n //update display\n this.props.submissionNotice.forceUpdate();\n }\n\n //if it is not a complete segment, or all are removed\n if (sponsorTimes.length === 0 || removingIncomplete) {\n //update video player\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n }\n\n descriptionUpdate(description: string): void {\n this.setState({\n description\n }, () => {\n this.saveEditTimes();\n });\n\n if (!this.fetchingSuggestions) {\n this.fetchSuggestions(description);\n }\n }\n\n async fetchSuggestions(description: string): Promise {\n if (this.props.contentContainer().channelIDInfo.status !== ChannelIDStatus.Found) return;\n\n this.fetchingSuggestions = true;\n try {\n const result = await asyncRequestToServer(\"GET\", \"/api/chapterNames\", {\n description,\n channelID: this.props.contentContainer().channelIDInfo.id\n });\n if (result.ok) {\n const names = JSON.parse(result.responseText) as {description: string}[];\n this.setState({\n suggestedNames: names.map(n => ({\n label: n.description\n }))\n });\n } else if (result.status !== 404) {\n logRequest(result, \"SB\", \"chapter suggestion\")\n }\n } catch (e) {\n console.warn(\"[SB] Caught error while fetching chapter suggestions\", e);\n } finally {\n this.fetchingSuggestions = false;\n }\n }\n\n configUpdate(): void {\n this.forceUpdate();\n }\n}\n\nexport default SponsorTimeEditComponent;\n","import * as React from \"react\";\nimport Config from \"../config\"\nimport GenericNotice from \"../render/GenericNotice\";\nimport { Category, ContentContainer } from \"../types\";\nimport * as CompileConfig from \"../../config.json\";\n\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport SponsorTimeEditComponent from \"./SponsorTimeEditComponent\";\nimport { getGuidelineInfo } from \"../utils/constants\";\nimport { exportTimes } from \"../utils/exporter\";\nimport { getVideo, isCurrentTimeWrong } from \"../../maze-utils/src/video\";\n\nexport interface SubmissionNoticeProps { \n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => Promise;\n\n closeListener: () => void;\n}\n\nexport interface SubmissionNoticeState {\n noticeTitle: string;\n messages: string[];\n idSuffix: string;\n}\n\nclass SubmissionNoticeComponent extends React.Component {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => unknown;\n\n noticeRef: React.MutableRefObject;\n timeEditRefs: React.RefObject[];\n\n videoObserver: MutationObserver;\n\n guidelinesReminder: GenericNotice;\n\n lastSegmentCount: number;\n\n constructor(props: SubmissionNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n\n this.contentContainer = props.contentContainer;\n this.callback = props.callback;\n \n const noticeTitle = chrome.i18n.getMessage(\"confirmNoticeTitle\");\n\n this.lastSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n idSuffix: \"SubmissionNotice\"\n };\n }\n\n componentDidMount(): void {\n // Catch and rerender when the video size changes\n //TODO: Use ResizeObserver when it is supported in TypeScript\n this.videoObserver = new MutationObserver(() => {\n this.forceUpdate();\n });\n\n this.videoObserver.observe(getVideo(), {\n attributes: true\n });\n\n // Prevent zooming while changing times\n document.getElementById(\"sponsorSkipNoticeMiddleRow\" + this.state.idSuffix).addEventListener('wheel', function (event) {\n if (event.ctrlKey) {\n event.preventDefault();\n }\n }, {passive: false});\n }\n\n componentWillUnmount(): void {\n if (this.videoObserver) {\n this.videoObserver.disconnect();\n }\n }\n\n componentDidUpdate() {\n const currentSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n if (currentSegmentCount > this.lastSegmentCount) {\n this.lastSegmentCount = currentSegmentCount;\n\n this.scrollToBottom();\n }\n }\n\n scrollToBottom() {\n const scrollElement = this.noticeRef.current.getElement().current.querySelector(\"#sponsorSkipNoticeMiddleRowSubmissionNotice\");\n scrollElement.scrollTo({\n top: scrollElement.scrollHeight + 1000\n });\n }\n\n render(): React.ReactElement {\n const sortButton = \n this.sortSegments()}\n title={chrome.i18n.getMessage(\"sortSegments\")}\n key=\"sortButton\"\n src={chrome.runtime.getURL(\"icons/sort.svg\")}>\n ;\n const exportButton = \n this.exportSegments()}\n title={chrome.i18n.getMessage(\"exportSegments\")}\n key=\"exportButton\"\n src={chrome.runtime.getURL(\"icons/export.svg\")}>\n ;\n return (\n \n\n {/* Text Boxes */}\n {this.getMessageBoxes()}\n\n {/* Sponsor Time List */}\n e.stopPropagation()}>\n \n {this.getSponsorTimeMessages()}\n \n \n\n {/* Last Row */}\n \n\n \n\n {/* Guidelines button */}\n \n\n {/* Submit Button */}\n \n \n \n\n \n );\n }\n\n getSponsorTimeMessages(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n this.timeEditRefs = [];\n\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n const timeRef = React.createRef();\n\n elements.push(\n \n \n );\n\n this.timeEditRefs.push(timeRef);\n }\n\n return elements;\n }\n\n getMessageBoxes(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n );\n }\n\n return elements;\n }\n\n cancel(): void {\n this.guidelinesReminder?.close();\n this.noticeRef.current.close(true);\n\n this.contentContainer().resetSponsorSubmissionNotice(false);\n\n this.props.closeListener();\n }\n\n submit(): void {\n if (isCurrentTimeWrong()) {\n alert(chrome.i18n.getMessage(\"submissionFailedServerSideAds\"));\n return;\n }\n\n // save all items\n for (const ref of this.timeEditRefs) {\n ref.current.saveEditTimes();\n }\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"chooseACategory\") {\n alert(chrome.i18n.getMessage(\"youMustSelectACategory\"));\n return;\n }\n }\n\n // Check if any non music categories are being used on a music video\n if (this.contentContainer().videoInfo?.microformat?.playerMicroformatRenderer?.category === \"Music\") {\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"sponsor\") {\n if (!confirm(chrome.i18n.getMessage(\"nonMusicCategoryOnMusic\"))) return;\n\n break;\n }\n }\n }\n\n this.props.callback().then((success) => {\n if (success) {\n this.cancel();\n }\n });\n }\n\n sortSegments(): void {\n let sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n sponsorTimesSubmitting = sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.forceUpdate();\n }\n\n exportSegments() {\n const sponsorTimesSubmitting = this.props.contentContainer()\n .sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n window.navigator.clipboard.writeText(exportTimes(sponsorTimesSubmitting));\n\n new GenericNotice(null, \"exportCopied\", {\n title: chrome.i18n.getMessage(`CopiedExclamation`),\n timed: true,\n maxCountdownTime: () => 0.6,\n referenceNode: document.querySelector(\".noticeLeftIcon\"),\n dontPauseCountdown: true,\n style: {\n top: 0,\n bottom: 0,\n minWidth: 0,\n right: \"30px\",\n margin: \"auto\"\n },\n hideLogo: true,\n hideRightInfo: true,\n extraClass: \"exportCopiedNotice\"\n });\n }\n\n categoryChangeListener(index: number, category: Category): void {\n const dialogWidth = this.noticeRef?.current?.getElement()?.current?.offsetWidth;\n if (category !== \"chooseACategory\" && Config.config.showCategoryGuidelines\n && getVideo().offsetWidth > dialogWidth * 2) {\n const options = {\n title: chrome.i18n.getMessage(`category_${category}`),\n textBoxes: getGuidelineInfo(category),\n buttons: [{\n name: chrome.i18n.getMessage(\"FullDetails\"),\n listener: () => window.open(CompileConfig.wikiLinks[category])\n },\n {\n name: chrome.i18n.getMessage(\"Hide\"),\n listener: () => {\n Config.config.showCategoryGuidelines = false;\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }],\n timed: false,\n style: {\n right: `${dialogWidth + 10}px`,\n },\n extraClass: \"sb-guidelines-notice\"\n };\n\n if (options.textBoxes) {\n if (this.guidelinesReminder) {\n this.guidelinesReminder.update(options);\n } else {\n this.guidelinesReminder = new GenericNotice(null, \"GuidelinesReminder\", options);\n }\n } else {\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }\n }\n}\n\nexport default SubmissionNoticeComponent;\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import Config from \"./config\";\nimport {\n ActionType,\n Category,\n CategorySkipOption,\n ChannelIDStatus,\n ContentContainer,\n ScheduledTime,\n SegmentUUID,\n SkipToTimeParams,\n SponsorHideType,\n SponsorSourceType,\n SponsorTime,\n ToggleSkippable,\n VideoID,\n VideoInfo,\n} from \"./types\";\nimport Utils from \"./utils\";\nimport PreviewBar, { PreviewBarSegment } from \"./js-components/previewBar\";\nimport SkipNotice from \"./render/SkipNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport UpcomingNotice from \"./render/UpcomingNotice\";\nimport SubmissionNotice from \"./render/SubmissionNotice\";\nimport { Message, MessageResponse, VoteResponse } from \"./messageTypes\";\nimport { SkipButtonControlBar } from \"./js-components/skipButtonControlBar\";\nimport { getStartTimeFromUrl } from \"./utils/urlParser\";\nimport { getControls, getExistingChapters, getHashParams, hasAutogeneratedChapters, isPlayingPlaylist, isVisible } from \"./utils/pageUtils\";\nimport { CategoryPill } from \"./render/CategoryPill\";\nimport { AnimationUtils } from \"../maze-utils/src/animationUtils\";\nimport { GenericUtils } from \"./utils/genericUtils\";\nimport { logDebug, logWarn } from \"./utils/logger\";\nimport { importTimes } from \"./utils/exporter\";\nimport { ChapterVote } from \"./render/ChapterVote\";\nimport { openWarningDialog } from \"./utils/warnings\";\nimport { extensionUserAgent, isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { formatJSErrorMessage, getFormattedTime, getLongErrorMessage } from \"../maze-utils/src/formating\";\nimport { getChannelIDInfo, getVideo, getIsAdPlaying, getIsLivePremiere, setIsAdPlaying, checkVideoIDChange, getVideoID, getYouTubeVideoID, setupVideoModule, checkIfNewVideoID, isOnInvidious, isOnMobileYouTube, isOnYouTubeMusic, isOnYTTV, getLastNonInlineVideoID, triggerVideoIDChange, triggerVideoElementChange, getIsInline, getCurrentTime, setCurrentTime, getVideoDuration, verifyCurrentTime, waitForVideo } from \"../maze-utils/src/video\";\nimport { Keybind, StorageChangesObject, isSafari, keybindEquals, keybindToString } from \"../maze-utils/src/config\";\nimport { findValidElement } from \"../maze-utils/src/dom\"\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\nimport { updateAll } from \"../maze-utils/src/thumbnailManagement\";\nimport { setupThumbnailListener } from \"./utils/thumbnails\";\nimport * as documentScript from \"../dist/js/document.js\";\nimport { isVorapisInstalled, runCompatibilityChecks } from \"./utils/compatibility\";\nimport { cleanPage } from \"./utils/pageCleaner\";\nimport { addCleanupListener } from \"../maze-utils/src/cleanup\";\nimport { hideDeArrowPromotion, tryShowingDeArrowPromotion } from \"./dearrowPromotion\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { isMobileControlsOpen } from \"./utils/mobileUtils\";\nimport { defaultPreviewTime } from \"./utils/constants\";\nimport { onVideoPage } from \"../maze-utils/src/pageInfo\";\nimport { getSegmentsForVideo } from \"./utils/segmentData\";\nimport { getCategoryDefaultSelection, getCategorySelection } from \"./utils/skipRule\";\nimport { getSkipProfileBool, getSkipProfileIDForTab, hideTooShortSegments, setCurrentTabSkipProfile } from \"./utils/skipProfiles\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\n\ncleanPage();\n\nconst utils = new Utils();\n\nutils.wait(() => Config.isReady(), 5000, 10).then(() => {\n // Hack to get the CSS loaded on permission-based sites (Invidious)\n addCSS();\n setCategoryColorCSSVariables();\n\n runCompatibilityChecks();\n});\n\nconst skipBuffer = 0.003;\n// If this close to the end, skip to the end\nconst endTimeSkipBuffer = 0.5;\n\n//was sponsor data found when doing SponsorsLookup\nlet sponsorDataFound = false;\n//the actual sponsorTimes if loaded and UUIDs associated with them\nlet sponsorTimes: SponsorTime[] = [];\nlet existingChaptersImported = false;\nlet importingChaptersWaitingForFocus = false;\nlet importingChaptersWaiting = false;\nlet loopedChapter :SponsorTime = null;\n// List of open skip notices\nconst skipNotices: SkipNotice[] = [];\nlet upcomingNotice: UpcomingNotice | null = null;\nlet activeSkipKeybindElement: ToggleSkippable = null;\nlet shownSegmentFailedToFetchWarning = false;\nlet selectedSegment: SegmentUUID | null = null;\nlet previewedSegment = false;\n\n// JSON video info\nlet videoInfo: VideoInfo = null;\n// Locked Categories in this tab, like: [\"sponsor\",\"intro\",\"outro\"]\nlet lockedCategories: Category[] = [];\n// Used to calculate a more precise \"virtual\" video time\nconst lastKnownVideoTime: { videoTime: number; preciseTime: number; fromPause: boolean; approximateDelay: number } = {\n videoTime: null,\n preciseTime: null,\n fromPause: false,\n approximateDelay: null,\n};\n// It resumes with a slightly later time on chromium\nlet lastTimeFromWaitingEvent: number = null;\nconst lastNextChapterKeybind = {\n time: 0,\n date: 0\n};\n\n// Skips are scheduled to ensure precision.\n// Skips are rescheduled every seeking event.\n// Skips are canceled every seeking event\nlet currentSkipSchedule: NodeJS.Timeout = null;\nlet currentSkipInterval: NodeJS.Timeout = null;\nlet currentVirtualTimeInterval: NodeJS.Timeout = null;\nlet currentUpcomingSchedule: NodeJS.Timeout = null;\n\n/** Has the sponsor been skipped */\nlet sponsorSkipped: boolean[] = [];\n\nlet videoMuted = false; // Has it been attempted to be muted\nconst controlsWithEventListeners: HTMLElement[] = [];\n\nsetupVideoModule({\n videoIDChange,\n channelIDChange,\n videoElementChange,\n playerInit: () => {\n previewBar = null; // remove old previewbar\n createPreviewBar();\n },\n updatePlayerBar: () => {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n },\n resetValues,\n documentScript: chrome.runtime.getManifest().manifest_version === 2 ? documentScript : undefined\n}, () => Config);\nsetupThumbnailListener();\n\n// Is the video currently being switched\nlet switchingVideos = null;\n\n// Used by the play and playing listeners to make sure two aren't\n// called at the same time\nlet lastCheckTime = 0;\nlet lastCheckVideoTime = -1;\n\n// To determine if a video resolution change is happening\nlet firstPlay = true;\n\nlet previewBar: PreviewBar = null;\n// Skip to highlight button\nlet skipButtonControlBar: SkipButtonControlBar = null;\n// For full video sponsors/selfpromo\nlet categoryPill: CategoryPill = null;\n\n/** Element containing the player controls on the YouTube player. */\nlet controls: HTMLElement | null = null;\n\n/** Contains buttons created by `createButton()`. */\nconst playerButtons: Record = {};\n\naddHotkeyListener();\n\n/** Segments created by the user which have not yet been submitted. */\nlet sponsorTimesSubmitting: SponsorTime[] = [];\nlet loadedPreloadedSegment = false;\n\n//becomes true when isInfoFound is called\n//this is used to close the popup on YouTube when the other popup opens\nlet popupInitialised = false;\n\nlet submissionNotice: SubmissionNotice = null;\n\nlet lastResponseStatus: number | Error | string;\n\n// Contains all of the functions and variables needed by the skip notice\nconst skipNoticeContentContainer: ContentContainer = () => ({\n vote,\n dontShowNoticeAgain,\n unskipSponsorTime,\n sponsorTimes,\n sponsorTimesSubmitting,\n skipNotices,\n sponsorVideoID: getVideoID(),\n reskipSponsorTime,\n updatePreviewBar,\n onMobileYouTube: isOnMobileYouTube(),\n sponsorSubmissionNotice: submissionNotice,\n resetSponsorSubmissionNotice,\n updateEditButtonsOnPlayer,\n previewTime,\n videoInfo,\n getRealCurrentTime: getRealCurrentTime,\n lockedCategories,\n channelIDInfo: getChannelIDInfo()\n});\n\n// value determining when to count segment as skipped and send telemetry to server (percent based)\nconst manualSkipPercentCount = 0.5;\n\n//get messages from the background script and the popup\nchrome.runtime.onMessage.addListener(messageListener);\n\nfunction messageListener(request: Message, sender: unknown, sendResponse: (response: MessageResponse) => void): void | boolean {\n //messages from popup script\n switch(request.message){\n case \"update\":\n checkVideoIDChange();\n break;\n case \"sponsorStart\":\n startOrEndTimingNewSegment()\n\n sendResponse({\n creatingSegment: isSegmentCreationInProgress(),\n });\n\n break;\n case \"isInfoFound\":\n //send the sponsor times along with if it's found\n sendResponse({\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n\n if (!request.updating && popupInitialised && document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //the popup should be closed now that another is opening\n closeInfoMenu();\n }\n\n popupInitialised = true;\n break;\n case \"getChannelID\":\n sendResponse({\n channelID: getChannelIDInfo().id,\n isYTTV: (document.location.host === \"tv.youtube.com\")\n });\n\n break;\n case \"submitTimes\":\n openSubmissionMenu();\n break;\n case \"refreshSegments\":\n // update video on refresh if videoID invalid\n if (!getVideoID()) {\n checkVideoIDChange();\n }\n // if popup rescieves no response, or the videoID is invalid,\n // it will assume the page is not a video page and stop the refresh animation\n sendResponse({ hasVideo: getVideoID() != null });\n // fetch segments\n if (getVideoID()) {\n sponsorsLookup(false, true);\n }\n\n break;\n case \"unskip\":\n unskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), null, true);\n break;\n case \"reskip\":\n reskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), true);\n break;\n case \"selectSegment\":\n selectSegment(request.UUID);\n break;\n case \"submitVote\":\n vote(request.type, request.UUID).then((response) => sendResponse(response));\n return true;\n case \"hideSegment\":\n utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID).hidden = request.type;\n utils.addHiddenSegment(getVideoID(), request.UUID, request.type);\n updatePreviewBar();\n\n if (skipButtonControlBar?.isEnabled()\n && sponsorTimesSubmitting.every((s) => s.hidden !== SponsorHideType.Visible || s.actionType !== ActionType.Poi)) {\n skipButtonControlBar.disable();\n }\n break;\n case \"closePopup\":\n closeInfoMenu();\n break;\n case \"copyToClipboard\":\n navigator.clipboard.writeText(request.text);\n break;\n case \"loopChapter\":\n if (!request.UUID){\n loopedChapter = null;\n break;\n }\n loopedChapter = {...utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID)};\n loopedChapter.segment = [loopedChapter.segment[1], loopedChapter.segment[0]];\n break;\n case \"importSegments\": {\n const importedSegments = importTimes(request.data, getVideoDuration());\n let addedSegments = false;\n for (const segment of importedSegments) {\n if (!sponsorTimesSubmitting.some(\n (s) => Math.abs(s.segment[0] - segment.segment[0]) < 1\n && Math.abs(s.segment[1] - segment.segment[1]) < 1\n && s.description === segment.description)) {\n const hasChaptersPermission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[\"chapter\"]);\n if (segment.category === \"chapter\" && (!getCategoryDefaultSelection(\"chapter\") || !hasChaptersPermission)) {\n segment.category = \"chooseACategory\" as Category;\n segment.actionType = ActionType.Skip;\n segment.description = \"\";\n }\n\n sponsorTimesSubmitting.push(segment);\n addedSegments = true;\n }\n }\n\n if (addedSegments) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n openSubmissionMenu();\n }\n\n sendResponse({\n importedSegments\n });\n break;\n }\n case \"keydown\":\n (document.body || document).dispatchEvent(new KeyboardEvent('keydown', {\n key: request.key,\n keyCode: request.keyCode,\n code: request.code,\n which: request.which,\n shiftKey: request.shiftKey,\n ctrlKey: request.ctrlKey,\n altKey: request.altKey,\n metaKey: request.metaKey\n }));\n break;\n case \"getLogs\":\n sendResponse({\n debug: window[\"SBLogs\"].debug,\n warn: window[\"SBLogs\"].warn\n });\n break;\n case \"setCurrentTabSkipProfile\":\n setCurrentTabSkipProfile(request.configID);\n channelIDChange();\n break;\n }\n\n sendResponse({});\n}\n\n/**\n * Called when the config is updated\n */\nfunction contentConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"hideVideoPlayerControls\":\n case \"hideInfoButtonPlayerControls\":\n case \"hideDeleteButtonPlayerControls\":\n updateVisibilityOfPlayerControlsButton()\n break;\n case \"categorySelections\":\n channelIDChange();\n break;\n case \"barTypes\":\n setCategoryColorCSSVariables();\n break;\n case \"fullVideoSegments\":\n case \"fullVideoLabelsOnThumbnails\":\n updateAll();\n break;\n }\n }\n}\nfunction contentLocalConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"channelSkipProfileIDs\":\n case \"skipProfiles\":\n case \"skipProfileTemp\":\n channelIDChange();\n break;\n }\n }\n}\n\nif (!window.location.href.includes(\"youtube.com/live_chat\")) {\n if (!Config.configSyncListeners.includes(contentConfigUpdateListener)) {\n Config.configSyncListeners.push(contentConfigUpdateListener);\n }\n\n if (!Config.configLocalListeners.includes(contentLocalConfigUpdateListener)) {\n Config.configLocalListeners.push(contentLocalConfigUpdateListener);\n }\n}\n\nfunction resetValues() {\n lastCheckTime = 0;\n lastCheckVideoTime = -1;\n previewedSegment = false;\n firstPlay = true;\n\n sponsorTimes = [];\n existingChaptersImported = false;\n sponsorSkipped = [];\n loopedChapter = null;\n lastResponseStatus = 0;\n shownSegmentFailedToFetchWarning = false;\n\n videoInfo = null;\n lockedCategories = [];\n\n //empty the preview bar\n if (previewBar !== null) {\n previewBar.clear();\n }\n\n //reset sponsor data found check\n sponsorDataFound = false;\n\n // When first loading a video, it is not switching videos\n // Hover play also doesn't need this check\n if (switchingVideos === null || !onVideoPage()) {\n switchingVideos = false;\n } else {\n switchingVideos = true;\n logDebug(\"Setting switching videos to true (reset data)\");\n }\n\n skipButtonControlBar?.disable();\n categoryPill?.setVisibility(false);\n\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop()?.close();\n }\n\n if (upcomingNotice) {\n upcomingNotice.close();\n upcomingNotice = null;\n }\n\n hideDeArrowPromotion();\n}\n\nfunction videoIDChange(): void {\n //setup the preview bar\n if (previewBar === null) {\n if (isOnMobileYouTube()) {\n // Mobile YouTube workaround\n const observer = new MutationObserver(handleMobileControlsMutations);\n let controlsContainer = null;\n\n utils.wait(() => {\n controlsContainer = document.getElementById(\"player-control-container\")\n return controlsContainer !== null\n }).then(() => {\n observer.observe(document.getElementById(\"player-control-container\"), {\n attributes: true,\n childList: true,\n subtree: true\n });\n }).catch();\n } else {\n utils.wait(getControls).then(createPreviewBar);\n }\n }\n\n // Notify the popup about the video change\n chrome.runtime.sendMessage({\n message: \"videoChanged\",\n videoID: getVideoID(),\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author\n });\n\n sponsorsLookup();\n\n // Make sure all player buttons are properly added\n updateVisibilityOfPlayerControlsButton();\n\n // Clear unsubmitted segments from the previous video\n sponsorTimesSubmitting = [];\n updateSponsorTimesSubmitting();\n\n tryShowingDeArrowPromotion().catch(logWarn);\n\n checkPreviewbarState();\n\n if (getIsInline()) {\n // Hover preview progress bar can take some time to appear\n // and if the miniplayer is also active then it would \n // attach to the wrong one\n setTimeout(checkPreviewbarState, 500);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 3000);\n }\n}\n\nfunction handleMobileControlsMutations(): void {\n // Don't update while scrubbing\n if (!chrome.runtime?.id \n || document.querySelector(\".YtProgressBarProgressBarPlayheadDotInDragging\")) return;\n\n updateVisibilityOfPlayerControlsButton();\n\n skipButtonControlBar?.updateMobileControls();\n\n if (previewBar !== null) {\n if (!previewBar.parent.contains(previewBar.container) && isMobileControlsOpen()) {\n previewBar.createElement();\n updatePreviewBar();\n\n return;\n } else if (!previewBar.parent.isConnected) {\n // The parent does not exist anymore, remove that old preview bar\n previewBar.remove();\n previewBar = null;\n }\n }\n\n // Create the preview bar if needed (the function hasn't returned yet)\n createPreviewBar();\n}\n\nfunction getPreviewBarAttachElement(): HTMLElement | null {\n const progressElementOptions = [{\n // For newer mobile YouTube (Sept 2024)\n selector: \".ytChapteredProgressBarHost, .ytProgressBarLineHost, .YtProgressBarLineHost, .YtChapteredProgressBarHost\",\n isVisibleCheck: true\n }, {\n // For newer mobile YouTube (May 2024)\n selector: \".YtmProgressBarProgressBarLine\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube hover play\n // Priority is given to the hover play progress bar over the main progress bar\n // for miniplayer + hover preview case\n // Second is new hover play selector\n selector: \"#video-preview .ytp-progress-bar, #video-preview .YtProgressBarLineHost\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".ytp-progress-bar\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".no-model.cue-range-marker\",\n isVisibleCheck: true\n }, {\n // For Invidious/VideoJS\n selector: \".vjs-progress-holder\",\n isVisibleCheck: false\n }, {\n // For Youtube Music and YTKids\n // there are two sliders, one for volume and one for progress - both called #progressContainer\n selector: \"#progress-bar>#sliderContainer>div>#sliderBar>#progressContainer\",\n }, {\n // For piped\n selector: \".shaka-ad-markers\",\n isVisibleCheck: false\n }, {\n // For Vorapis v3\n selector: \".ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\"\n }, {\n // For YTTV\n selector: \".yssi-slider > div.ytu-ss-timeline-container\",\n isVisibleCheck: false\n }\n ];\n\n for (const option of progressElementOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.isVisibleCheck ? findValidElement(allElements) : allElements[0];\n\n if (el) {\n return el;\n }\n }\n\n return null;\n}\n\n/**\n * Creates a preview bar on the video\n */\nfunction createPreviewBar(): void {\n if (previewBar !== null) return;\n\n const el = getPreviewBarAttachElement();\n\n if (el) {\n const chapterVote = new ChapterVote(voteAsync);\n previewBar = new PreviewBar(el, isOnMobileYouTube(), isOnInvidious(), isOnYTTV(), chapterVote, () => importExistingChapters(true));\n\n updatePreviewBar();\n }\n}\n\n/**\n * Triggered every time the video duration changes.\n * This happens when the resolution changes or at random time to clear memory.\n */\nfunction durationChangeListener(): void {\n updateAdFlag();\n updatePreviewBar();\n}\n\n/**\n * Triggered once the video is ready.\n * This is mainly to attach to embedded players who don't have a video element visible.\n */\nfunction videoOnReadyListener(): void {\n createPreviewBar();\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton()\n}\n\nfunction cancelSponsorSchedule(): void {\n logDebug(\"Pausing skipping\");\n\n if (currentSkipSchedule !== null) {\n clearTimeout(currentSkipSchedule);\n currentSkipSchedule = null;\n }\n\n if (currentSkipInterval !== null) {\n clearInterval(currentSkipInterval);\n currentSkipInterval = null;\n }\n\n if (currentUpcomingSchedule !== null) {\n clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = null;\n }\n}\n\n/**\n * @param currentTime Optional if you don't want to use the actual current time\n */\nasync function startSponsorSchedule(includeIntersectingSegments = false, currentTime?: number, includeNonIntersectingSegments = true): Promise {\n cancelSponsorSchedule();\n\n // Don't skip if advert playing and reset last checked time\n if (getIsAdPlaying()) {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n logDebug(\"[SB] Ad playing, pausing skipping\");\n\n return;\n }\n\n // Give up if video changed, and trigger a videoID change if so\n if (await checkIfNewVideoID()) {\n return;\n }\n\n logDebug(`Considering to start skipping: ${!getVideo()}, ${getVideo()?.paused}`);\n if (!getVideo()) return;\n if (currentTime === undefined || currentTime === null) {\n currentTime = getVirtualTime();\n }\n clearWaitingTime();\n\n updateActiveSegment(currentTime);\n\n if ((getVideo().paused && getCurrentTime() !== 0) // Allow autoplay disabled videos to skip before playing\n || (getCurrentTime() >= getVideoDuration() - 0.01 && getVideoDuration() > 1)) return;\n const skipInfo = getNextSkipIndex(currentTime, includeIntersectingSegments, includeNonIntersectingSegments);\n\n const currentSkip = skipInfo.array[skipInfo.index];\n const skipTime: number[] = [currentSkip?.scheduledTime, skipInfo.array[skipInfo.endIndex]?.segment[1]];\n const timeUntilSponsor = skipTime?.[0] - currentTime;\n const videoID = getVideoID();\n\n if (videoMuted && !inMuteSegment(currentTime, skipInfo.index !== -1\n && timeUntilSponsor < skipBuffer && shouldAutoSkip(currentSkip))) {\n getVideo().muted = false;\n videoMuted = false;\n\n for (const notice of skipNotices) {\n // So that the notice can hide buttons\n notice.unmutedListener(currentTime);\n }\n }\n\n logDebug(`Ready to start skipping: ${skipInfo.index} at ${currentTime}`);\n if (skipInfo.index === -1) return;\n\n if (Config.config.disableSkipping || (getChannelIDInfo().status === ChannelIDStatus.Fetching && Config.config.forceChannelCheck)){\n return;\n }\n\n if (incorrectVideoCheck()) return;\n\n // Find all indexes in between the start and end\n let skippingSegments = [skipInfo.array[skipInfo.index]];\n if (skipInfo.index !== skipInfo.endIndex) {\n skippingSegments = [];\n\n for (const segment of skipInfo.array) {\n if (shouldAutoSkip(segment) &&\n segment.segment[0] >= skipTime[0] && segment.segment[1] <= skipTime[1]\n && segment.segment[0] === segment.scheduledTime) { // Don't include artificial scheduled segments (end times for mutes)\n skippingSegments.push(segment);\n }\n }\n }\n\n logDebug(`Next step in starting skipping: ${!shouldSkip(currentSkip)}, ${!sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)}`);\n\n const skippingFunction = (forceVideoTime?: number) => {\n let forcedSkipTime: number = null;\n let forcedIncludeIntersectingSegments = false;\n let forcedIncludeNonIntersectingSegments = true;\n\n if (incorrectVideoCheck(videoID, currentSkip)) return;\n forceVideoTime ||= Math.max(getCurrentTime(), getVirtualTime());\n\n if ((shouldSkip(currentSkip)\n || sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment\n && segment.actionType !== ActionType.Chapter\n && segment.hidden === SponsorHideType.Visible))) {\n if (forceVideoTime >= skipTime[0] - skipBuffer && (forceVideoTime < skipTime[1] || skipTime[1] < skipTime[0])) {\n skipToTime({\n v: getVideo(),\n skipTime,\n skippingSegments,\n openNotice: skipInfo.openNotice\n });\n\n // These are segments that start at the exact same time but need separate notices\n for (const extra of skipInfo.extraIndexes) {\n const extraSkip = skipInfo.array[extra];\n if (shouldSkip(extraSkip)) {\n skipToTime({\n v: getVideo(),\n skipTime: [extraSkip.scheduledTime, extraSkip.segment[1]],\n skippingSegments: [extraSkip],\n openNotice: skipInfo.openNotice\n });\n }\n }\n\n if (getCategorySelection(currentSkip)?.option === CategorySkipOption.ManualSkip\n || currentSkip.actionType === ActionType.Mute) {\n forcedSkipTime = skipTime[0] + 0.001;\n } else {\n forcedSkipTime = skipTime[1];\n forcedIncludeNonIntersectingSegments = false;\n\n // Only if not at the end of the video\n if (Math.abs(skipTime[1] - getVideoDuration()) > endTimeSkipBuffer) {\n forcedIncludeIntersectingSegments = true;\n }\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n\n // Don't pretend to be earlier than we are, could result in loops\n if (forcedSkipTime !== null && forceVideoTime > forcedSkipTime && skipTime[1] > skipTime[0]) {\n forcedSkipTime = forceVideoTime;\n }\n\n startSponsorSchedule(forcedIncludeIntersectingSegments, forcedSkipTime, forcedIncludeNonIntersectingSegments);\n };\n\n if (timeUntilSponsor < skipBuffer) {\n skippingFunction(currentTime);\n } else {\n let delayTime = timeUntilSponsor * 1000 * (1 / getVideo().playbackRate);\n if (delayTime < (isFirefoxOrSafari() && !isSafari() ? 750 : 300)\n && shouldAutoSkip(skippingSegments[0])) {\n let forceStartIntervalTime: number | null = null;\n if (isFirefoxOrSafari() && !isSafari() && delayTime > 300) {\n forceStartIntervalTime = await waitForNextTimeChange();\n }\n\n // Use interval instead of timeout near the end to combat imprecise video time\n const startIntervalTime = forceStartIntervalTime || performance.now();\n const startVideoTime = Math.max(currentTime, getVirtualTime());\n delayTime = (skipTime?.[0] - startVideoTime) * 1000 * (1 / getVideo().playbackRate);\n\n let startWaitingForReportedTimeToChange = true;\n const reportedVideoTimeAtStart = getCurrentTime();\n logDebug(`Starting setInterval skipping ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n if (currentSkipInterval !== null) clearInterval(currentSkipInterval);\n currentSkipInterval = setInterval(() => {\n // Estimate delay, but only take the current time right after a change\n // Current time remains the same for many \"frames\" on Firefox\n if (isFirefoxOrSafari() && !lastKnownVideoTime.fromPause && startWaitingForReportedTimeToChange\n && reportedVideoTimeAtStart !== getCurrentTime()) {\n startWaitingForReportedTimeToChange = false;\n const delay = getVirtualTime() - getCurrentTime();\n if (delay > 0) lastKnownVideoTime.approximateDelay = delay;\n }\n\n const intervalDuration = performance.now() - startIntervalTime;\n if (intervalDuration + skipBuffer * 1000 >= delayTime || getVirtualTime() + skipBuffer >= skipTime[0]) {\n clearInterval(currentSkipInterval);\n if (!isFirefoxOrSafari() && !getVideo().muted && !inMuteSegment(getCurrentTime(), true)) {\n // Workaround for more accurate skipping on Chromium\n getVideo().muted = true;\n getVideo().muted = false;\n }\n\n skippingFunction(Math.max(getVirtualTime(), startVideoTime + getVideo().playbackRate * Math.max(delayTime, intervalDuration) / 1000));\n }\n }, 0);\n } else {\n logDebug(`Starting timeout to skip ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n const offset = (isFirefoxOrSafari() && !isSafari() ? 600 : 150);\n // Schedule for right before to be more precise than normal timeout\n const offsetDelayTime = Math.max(0, delayTime - offset);\n currentSkipSchedule = setTimeout(skippingFunction, offsetDelayTime);\n\n // Show the notice only if the segment hasn't already started\n if (Config.config.showUpcomingNotice && getCurrentTime() < skippingSegments[0].segment[0] \n && !sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)\n && [ActionType.Skip, ActionType.Mute].includes(skippingSegments[0].actionType)\n && getCategorySelection(skippingSegments[0])?.option > CategorySkipOption.ShowOverlay\n && !getVideo()?.paused) {\n const maxPopupTime = 3000;\n const timeUntilPopup = Math.max(0, offsetDelayTime - maxPopupTime);\n const popupTime = offsetDelayTime - timeUntilPopup;\n const autoSkip = shouldAutoSkip(skippingSegments[0]);\n\n if (currentUpcomingSchedule) clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = setTimeout(createUpcomingNotice, timeUntilPopup, [skippingSegments[0]], popupTime, autoSkip);\n }\n }\n }\n}\n\n/**\n * Used on Firefox only, waits for the next animation frame until\n * the video time has changed\n */\nfunction waitForNextTimeChange(): Promise {\n return new Promise((resolve) => {\n getVideo().addEventListener(\"timeupdate\", () => resolve(performance.now()), { once: true });\n });\n}\n\nfunction getVirtualTime(): number {\n const virtualTime = lastTimeFromWaitingEvent ?? (lastKnownVideoTime.videoTime !== null ?\n (performance.now() - lastKnownVideoTime.preciseTime) * (getVideo()?.playbackRate || 1) / 1000 + lastKnownVideoTime.videoTime : null);\n\n if (Config.config.useVirtualTime && !isSafari() && virtualTime\n && virtualTime > getCurrentTime() && virtualTime - getCurrentTime() < 0.8 && getCurrentTime() !== 0) {\n return Math.max(virtualTime, getCurrentTime());\n } else {\n return getCurrentTime();\n }\n}\n\nfunction inMuteSegment(currentTime: number, includeOverlap: boolean): boolean {\n const checkFunction = (segment) => segment.actionType === ActionType.Mute\n && segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime\n && (segment.segment[1] > currentTime || (includeOverlap && segment.segment[1] + 0.02 > currentTime));\n return sponsorTimes?.some(checkFunction) || sponsorTimesSubmitting.some(checkFunction);\n}\n\n/**\n * This makes sure the videoID is still correct and if the sponsorTime is included\n */\nfunction incorrectVideoCheck(videoID?: string, sponsorTime?: SponsorTime): boolean {\n if (!onVideoPage()) return false;\n\n const currentVideoID = getYouTubeVideoID();\n const recordedVideoID = videoID || getVideoID();\n if (currentVideoID !== recordedVideoID || (sponsorTime\n && (!sponsorTimes || !sponsorTimes?.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1]))\n && !sponsorTimesSubmitting.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1])\n && (!isLoopedChapter(sponsorTime)))) {\n // Something has really gone wrong\n console.error(\"[SponsorBlock] The videoID recorded when trying to skip is different than what it should be.\");\n console.error(\"[SponsorBlock] VideoID recorded: \" + recordedVideoID + \". Actual VideoID: \" + currentVideoID);\n console.error(\"[SponsorBlock] SponsorTime\", sponsorTime, \"sponsorTimes\", sponsorTimes, \"sponsorTimesSubmitting\", sponsorTimesSubmitting);\n\n // Video ID change occured\n checkVideoIDChange();\n\n return true;\n } else {\n return false;\n }\n}\n\nlet playbackRateCheckInterval: NodeJS.Timeout | null = null;\nlet lastPlaybackSpeed = 1;\nlet setupVideoListenersFirstTime = true;\nfunction setupVideoListeners(video: HTMLVideoElement) {\n if (!video) return; // Maybe video became invisible\n\n //wait until it is loaded\n video.addEventListener('loadstart', videoOnReadyListener)\n video.addEventListener('durationchange', durationChangeListener);\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('loadstart', videoOnReadyListener);\n video.removeEventListener('durationchange', durationChangeListener);\n });\n }\n\n if (!Config.config.disableSkipping) {\n switchingVideos = false;\n\n let startedWaiting = false;\n let lastPausedAtZero = true;\n let lastVideoDataChange = 0;\n\n const rateChangeListener = () => {\n updateVirtualTime();\n clearWaitingTime();\n\n startSponsorSchedule();\n };\n video.addEventListener('ratechange', rateChangeListener);\n // Used by videospeed extension (https://github.com/igrigorik/videospeed/pull/740)\n video.addEventListener('videoSpeed_ratechange', rateChangeListener);\n\n const playListener = () => {\n // Prevent video resolution changes from causing skips\n if (!firstPlay && Date.now() - lastVideoDataChange < 200 && video.currentTime === 0) return;\n\n firstPlay = false;\n updateVirtualTime();\n checkForMiniplayerPlaying();\n\n if (switchingVideos || lastPausedAtZero) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n lastPausedAtZero = false;\n\n // Check if an ad is playing\n updateAdFlag();\n\n // Make sure it doesn't get double called with the playing event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n };\n video.addEventListener('play', playListener);\n\n const playingListener = () => {\n updateVirtualTime();\n lastPausedAtZero = false;\n\n if (startedWaiting) {\n startedWaiting = false;\n logDebug(`[SB] Playing event after buffering: ${Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)}`);\n }\n\n if (switchingVideos) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n // Make sure it doesn't get double called with the play event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n lastPlaybackSpeed = video.playbackRate;\n\n // Video speed controller compatibility\n // That extension makes rate change events not propagate\n if (document.body.classList.contains(\"vsc-initialized\")) {\n playbackRateCheckInterval = setInterval(() => {\n if ((!getVideoID() || video.paused) && playbackRateCheckInterval) {\n // Video is gone, stop checking\n clearInterval(playbackRateCheckInterval);\n return;\n }\n \n if (video.playbackRate !== lastPlaybackSpeed) {\n lastPlaybackSpeed = video.playbackRate;\n \n rateChangeListener();\n }\n }, 2000);\n }\n };\n video.addEventListener('playing', playingListener);\n \n const seekingListener = () => {\n lastKnownVideoTime.fromPause = false;\n\n if (!video.paused){\n // Reset lastCheckVideoTime\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n updateVirtualTime();\n clearWaitingTime();\n\n // Sometimes looped videos loop back to almost zero, but not quite\n if (video.loop && video.currentTime < 0.2 && getCurrentTime() < 0.2) {\n startSponsorSchedule(false, 0);\n } else {\n startSponsorSchedule();\n }\n } else {\n updateActiveSegment(getCurrentTime());\n\n if (getCurrentTime() === 0) {\n lastPausedAtZero = true;\n }\n }\n };\n video.addEventListener('seeking', seekingListener);\n \n const stoppedPlayback = () => {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n\n lastKnownVideoTime.videoTime = null;\n lastKnownVideoTime.preciseTime = null;\n updateWaitingTime(video);\n\n cancelSponsorSchedule();\n };\n const pauseListener = () => {\n lastKnownVideoTime.fromPause = true;\n\n stoppedPlayback();\n };\n video.addEventListener('pause', pauseListener);\n const waitingListener = () => {\n logDebug(\"[SB] Not skipping due to buffering\");\n startedWaiting = true;\n\n stoppedPlayback();\n };\n video.addEventListener('waiting', waitingListener);\n\n // When video data is changed\n const emptyListener = () => {\n lastVideoDataChange = Date.now();\n\n if (firstPlay && video.currentTime === 0) {\n playListener();\n }\n }\n video.addEventListener('emptied', emptyListener);\n\n // For when autoplay is off to skip before starting playback\n const metadataLoadedListener = () => {\n if (firstPlay && getCurrentTime() === 0) {\n playListener();\n }\n }\n video.addEventListener('loadedmetadata', metadataLoadedListener)\n\n startSponsorSchedule();\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('play', playListener);\n video.removeEventListener('playing', playingListener);\n video.removeEventListener('seeking', seekingListener);\n video.removeEventListener('ratechange', rateChangeListener);\n video.removeEventListener('videoSpeed_ratechange', rateChangeListener);\n video.removeEventListener('pause', pauseListener);\n video.removeEventListener('waiting', waitingListener);\n video.removeEventListener('empty', emptyListener);\n video.removeEventListener('loadedmetadata', metadataLoadedListener);\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n });\n }\n }\n\n setupVideoListenersFirstTime = false;\n}\n\nfunction updateVirtualTime() {\n if (currentVirtualTimeInterval) clearInterval(currentVirtualTimeInterval);\n\n lastKnownVideoTime.videoTime = getCurrentTime();\n lastKnownVideoTime.preciseTime = performance.now();\n\n // If on Firefox, wait for the second time change (time remains fixed for many \"frames\" for privacy reasons)\n if (isFirefoxOrSafari()) {\n let count = 0;\n let rawCount = 0;\n let lastTime = lastKnownVideoTime.videoTime;\n let lastPerformanceTime = performance.now();\n\n currentVirtualTimeInterval = setInterval(() => {\n const frameTime = performance.now() - lastPerformanceTime;\n if (lastTime !== getCurrentTime()) {\n rawCount++;\n\n // If there is lag, give it another shot at finding a good change time\n if (frameTime < 20 || rawCount > 30) {\n count++;\n }\n lastTime = getCurrentTime();\n }\n\n if (count > 1) {\n const delay = lastKnownVideoTime.fromPause && lastKnownVideoTime.approximateDelay ?\n lastKnownVideoTime.approximateDelay : 0;\n\n lastKnownVideoTime.videoTime = getCurrentTime() + delay;\n lastKnownVideoTime.preciseTime = performance.now();\n\n clearInterval(currentVirtualTimeInterval);\n currentVirtualTimeInterval = null;\n }\n\n lastPerformanceTime = performance.now();\n }, 1);\n }\n}\n\nfunction updateWaitingTime(video: HTMLVideoElement): void {\n lastTimeFromWaitingEvent = video.currentTime;\n}\n\nfunction clearWaitingTime(): void {\n lastTimeFromWaitingEvent = null;\n}\n\nfunction setupSkipButtonControlBar() {\n if (!skipButtonControlBar) {\n skipButtonControlBar = new SkipButtonControlBar({\n skip: (segment) => skipToTime({\n v: getVideo(),\n skipTime: segment.segment,\n skippingSegments: [segment],\n openNotice: true,\n forceAutoSkip: true\n }),\n selectSegment,\n onMobileYouTube: isOnMobileYouTube(),\n onYTTV: isOnYTTV(),\n });\n }\n\n skipButtonControlBar.attachToPage();\n}\n\nfunction setupCategoryPill() {\n if (!categoryPill) {\n categoryPill = new CategoryPill();\n }\n\n categoryPill.attachToPage(isOnMobileYouTube(), isOnInvidious(), voteAsync);\n}\n\nasync function sponsorsLookup(keepOldSubmissions = true, ignoreCache = false) {\n const videoID = getVideoID();\n if (!videoID) {\n console.error(\"[SponsorBlock] Attempted to fetch segments with a null/undefined videoID.\");\n return;\n }\n\n const segmentData = await getSegmentsForVideo(videoID, ignoreCache);\n\n // Make sure an old pending request doesn't get used.\n if (videoID !== getVideoID()) return;\n\n // store last response status\n lastResponseStatus = segmentData.status;\n if (segmentData.status === 200) {\n const receivedSegments = segmentData.segments;\n\n if (receivedSegments && receivedSegments.length) {\n sponsorDataFound = receivedSegments.findIndex((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled) !== -1;\n\n // Check if any old submissions should be kept\n if (sponsorTimes !== null && keepOldSubmissions) {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].source === SponsorSourceType.Local) {\n // This is a user submission, keep it\n receivedSegments.push(sponsorTimes[i]);\n }\n }\n }\n\n const oldSegments = sponsorTimes || [];\n sponsorTimes = receivedSegments;\n existingChaptersImported = false;\n\n if (keepOldSubmissions) {\n for (const segment of oldSegments) {\n const otherSegment = sponsorTimes.find((other) => segment.UUID === other.UUID);\n if (otherSegment) {\n // If they downvoted it, or changed the category, keep it\n otherSegment.hidden = segment.hidden;\n otherSegment.category = segment.category;\n }\n }\n }\n\n // See if some segments should be hidden\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const downvotedData = Config.local.downvotedSegments[hashPrefix];\n if (downvotedData) {\n for (const segment of sponsorTimes) {\n const hashedUUID = await getHash(segment.UUID, 1);\n const segmentDownvoteData = downvotedData.segments.find((downvote) => downvote.uuid === hashedUUID);\n if (segmentDownvoteData) {\n segment.hidden = segmentDownvoteData.hidden;\n }\n }\n }\n\n hideTooShortSegments(sponsorTimes);\n\n if (!getVideo()) {\n //there is still no video here\n await waitForVideo();\n }\n\n startSkipScheduleCheckingForStartSponsors();\n\n if (!isNaN(getVideoDuration())) {\n updatePreviewBar();\n }\n }\n }\n\n notifyPopupOfSegments();\n importExistingChapters(true);\n\n if (Config.config.isVip) {\n lockedCategoriesLookup();\n }\n}\n\nfunction notifyPopupOfSegments(): void {\n // notify popup of segment changes\n chrome.runtime.sendMessage({\n message: \"infoUpdated\",\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n}\n\nfunction importExistingChapters(wait: boolean) {\n if (!existingChaptersImported && !importingChaptersWaiting && onVideoPage() && !isOnMobileYouTube()) {\n const waitCondition = () => getVideoDuration() && getExistingChapters(getVideoID(), getVideoDuration());\n\n if (wait && !document.hasFocus() && !importingChaptersWaitingForFocus && !waitCondition()) {\n importingChaptersWaitingForFocus = true;\n const listener = () => {\n importExistingChapters(wait);\n window.removeEventListener(\"focus\", listener);\n };\n window.addEventListener(\"focus\", listener);\n } else {\n importingChaptersWaiting = true;\n waitFor(waitCondition,\n wait ? 15000 : 0, 400, (c) => c?.length > 0).then((chapters) => {\n importingChaptersWaiting = false;\n\n if (!existingChaptersImported && chapters?.length > 0) {\n sponsorTimes = (sponsorTimes ?? []).concat(...chapters).sort((a, b) => a.segment[0] - b.segment[0]);\n existingChaptersImported = true;\n updatePreviewBar();\n }\n }).catch(() => { importingChaptersWaiting = false; });\n\n if (!getSkipProfileBool(\"showAutogeneratedChapters\")) {\n waitFor(() => hasAutogeneratedChapters(), wait ? 15000 : 0, 400).then(() => {\n updateActiveSegment(getCurrentTime());\n }).catch(() => { }); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n }\n }\n}\n\nfunction handleExistingChaptersChannelChange() {\n if (existingChaptersImported && hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\")) {\n sponsorTimes = sponsorTimes.filter((segment) => segment.source !== SponsorSourceType.Autogenerated);\n }\n}\n\nasync function lockedCategoriesLookup(): Promise {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n try {\n const response = await asyncRequestToServer(\"GET\", \"/api/lockCategories/\" + hashPrefix);\n\n if (response.ok) {\n const categoriesResponse = JSON.parse(response.responseText).filter((lockInfo) => lockInfo.videoID === getVideoID())[0]?.categories;\n if (Array.isArray(categoriesResponse)) {\n lockedCategories = categoriesResponse;\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"locked categories\")\n }\n } catch (e) {\n console.warn(`[SB] Caught error while looking up category locks for hashprefix ${hashPrefix}`, e)\n }\n}\n\n/**\n * Only should be used when it is okay to skip a sponsor when in the middle of it\n *\n * Ex. When segments are first loaded\n */\nfunction startSkipScheduleCheckingForStartSponsors() {\n\t// switchingVideos is ignored in Safari due to event fire order. See #1142\n if ((!switchingVideos || isSafari()) && sponsorTimes) {\n // See if there are any starting sponsors\n let startingSegmentTime = getStartTimeFromUrl(document.URL) || -1;\n let found = false;\n for (const time of sponsorTimes) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n if (!found) {\n for (const time of sponsorTimesSubmitting) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n }\n\n // For highlight category\n const poiSegments = sponsorTimes\n .filter((time) => time.segment[1] > getCurrentTime()\n && time.actionType === ActionType.Poi\n && time.hidden === SponsorHideType.Visible\n && getCategorySelection(time).option !== CategorySkipOption.Disabled)\n .sort((a, b) => b.segment[0] - a.segment[0]);\n for (const time of poiSegments) {\n const skipOption = getCategorySelection(time)?.option;\n if (skipOption !== CategorySkipOption.ShowOverlay) {\n skipToTime({\n v: getVideo(),\n skipTime: time.segment,\n skippingSegments: [time],\n openNotice: true,\n unskipTime: getCurrentTime()\n });\n if (skipOption === CategorySkipOption.AutoSkip) break;\n }\n }\n\n if (startingSegmentTime !== -1) {\n startSponsorSchedule(undefined, startingSegmentTime);\n } else {\n startSponsorSchedule();\n }\n }\n}\n\nfunction selectSegment(UUID: SegmentUUID): void {\n selectedSegment = UUID;\n updatePreviewBar();\n}\n\nfunction updatePreviewBar(): void {\n if (previewBar === null) return;\n\n if (getIsAdPlaying()) {\n previewBar.clear();\n return;\n }\n\n if (getVideo() === null) return;\n\n const hashParams = getHashParams();\n const requiredSegment = hashParams?.requiredSegment as SegmentUUID || undefined;\n const previewBarSegments: PreviewBarSegment[] = [];\n if (sponsorTimes) {\n sponsorTimes.forEach((segment) => {\n if (segment.hidden !== SponsorHideType.Visible || getCategorySelection(segment).option === CategorySkipOption.Disabled) return;\n\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: false,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source,\n requiredSegment: requiredSegment && (segment.UUID === requiredSegment || segment.UUID?.startsWith(requiredSegment) || requiredSegment.startsWith(segment.UUID)),\n selectedSegment: selectedSegment && segment.UUID === selectedSegment\n });\n });\n }\n\n sponsorTimesSubmitting.forEach((segment) => {\n if (segment.hidden === SponsorHideType.Visible\n && (segment.actionType !== ActionType.Chapter || segment.segment.length > 1)) {\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: true,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source\n });\n }\n });\n\n previewBar.set(previewBarSegments.filter((segment) => segment.actionType !== ActionType.Full), getVideoDuration())\n if (getVideo()) updateActiveSegment(getCurrentTime());\n\n if (Config.config.showTimeWithSkips) {\n const skippedDuration = utils.getTimestampsDuration(previewBarSegments\n .filter(({actionType}) => ![ActionType.Mute, ActionType.Chapter].includes(actionType))\n .map(({segment}) => segment));\n\n showTimeWithoutSkips(skippedDuration);\n }\n}\n\nfunction updateCategoryPill() {\n const fullVideoSegment = sponsorTimes.filter((time) => time.actionType === ActionType.Full)[0];\n if (fullVideoSegment && getSkipProfileBool(\"fullVideoSegments\")) {\n categoryPill?.setSegment(fullVideoSegment);\n } else {\n categoryPill?.setVisibility(false);\n }\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nasync function channelIDChange() {\n // check if the start of segments were missed\n if (Config.config.forceChannelCheck && sponsorTimes?.length > 0) startSkipScheduleCheckingForStartSponsors();\n\n hideTooShortSegments(sponsorTimes);\n handleExistingChaptersChannelChange();\n updatePreviewBar();\n updateCategoryPill();\n notifyPopupOfSegments();\n}\n\nfunction videoElementChange(newVideo: boolean, video: HTMLVideoElement): void {\n waitFor(() => Config.isReady()).then(() => {\n if (newVideo) {\n setupVideoListeners(video);\n setupSkipButtonControlBar();\n setupCategoryPill();\n }\n \n updatePreviewBar();\n checkPreviewbarState();\n \n // Incase the page is still transitioning, check again in a few seconds\n setTimeout(checkPreviewbarState, 100);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 5000);\n })\n}\n\nlet checkingPreviewbarAgain = false;\nfunction checkPreviewbarState(): void {\n if (!getPreviewBarAttachElement() && !checkingPreviewbarAgain && getVideo() && getVideoID()) {\n checkingPreviewbarAgain = true;\n setTimeout(() => {\n checkingPreviewbarAgain = false;\n checkPreviewbarState();\n }, 500);\n\n return;\n }\n\n if (previewBar && !getPreviewBarAttachElement()?.contains(previewBar.container)) {\n previewBar.remove();\n previewBar = null;\n }\n\n createPreviewBar();\n}\n\n/**\n * Returns info about the next upcoming sponsor skip\n */\nfunction getNextSkipIndex(currentTime: number, includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean):\n {array: ScheduledTime[]; index: number; endIndex: number; extraIndexes: number[]; openNotice: boolean} {\n\n const autoSkipSorter = (segment: ScheduledTime) => {\n const skipOption = getCategorySelection(segment)?.option;\n if (segment.hidden !== SponsorHideType.Visible) {\n // Hidden segments sometimes end up here if another segment is at the same time, use them last\n return 3;\n } else if ((skipOption === CategorySkipOption.AutoSkip || shouldAutoSkip(segment))\n && (segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter)) {\n return 0;\n } else if (skipOption !== CategorySkipOption.ShowOverlay) {\n return 1;\n } else {\n return 2;\n }\n }\n\n const { includedTimes: submittedArray, scheduledTimes: sponsorStartTimes } =\n getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: sponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, true);\n\n // This is an array in-case multiple segments have the exact same start time\n const minSponsorTimeIndexes = GenericUtils.indexesOf(sponsorStartTimes, Math.min(...sponsorStartTimesAfterCurrentTime));\n // Find auto skipping segments if possible, sort by duration otherwise\n const minSponsorTimeIndex = minSponsorTimeIndexes.sort(\n (a, b) => ((autoSkipSorter(submittedArray[a]) - autoSkipSorter(submittedArray[b]))\n || (submittedArray[a].segment[1] - submittedArray[a].segment[0]) - (submittedArray[b].segment[1] - submittedArray[b].segment[0])))[0] ?? -1;\n // Store extra indexes for the non-auto skipping segments if others occur at the exact same start time\n const extraIndexes = minSponsorTimeIndexes.filter((i) => i !== minSponsorTimeIndex && autoSkipSorter(submittedArray[i]) !== 0);\n\n const endTimeIndex = getLatestEndTimeIndex(submittedArray, minSponsorTimeIndex);\n\n const { includedTimes: unsubmittedArray, scheduledTimes: unsubmittedSponsorStartTimes } =\n getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: unsubmittedSponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, false);\n\n const minUnsubmittedSponsorTimeIndex = unsubmittedSponsorStartTimes.indexOf(Math.min(...unsubmittedSponsorStartTimesAfterCurrentTime));\n const previewEndTimeIndex = getLatestEndTimeIndex(unsubmittedArray, minUnsubmittedSponsorTimeIndex);\n\n if ((minUnsubmittedSponsorTimeIndex === -1 && minSponsorTimeIndex !== -1) ||\n sponsorStartTimes[minSponsorTimeIndex] < unsubmittedSponsorStartTimes[minUnsubmittedSponsorTimeIndex]) {\n return {\n array: submittedArray,\n index: minSponsorTimeIndex,\n endIndex: endTimeIndex,\n extraIndexes, // Segments at same time that need separate notices\n openNotice: true\n };\n } else {\n return {\n array: unsubmittedArray,\n index: minUnsubmittedSponsorTimeIndex,\n endIndex: previewEndTimeIndex,\n extraIndexes: [], // No manual things for unsubmitted\n openNotice: false\n };\n }\n}\n\n/**\n * This returns index if the skip option is not AutoSkip\n *\n * Finds the last endTime that occurs in a segment that the given\n * segment skips into that is part of an AutoSkip category.\n *\n * Used to find where a segment should truely skip to if there are intersecting submissions due to\n * them having different categories.\n *\n * @param sponsorTimes\n * @param index Index of the given sponsor\n * @param hideHiddenSponsors\n */\nfunction getLatestEndTimeIndex(sponsorTimes: SponsorTime[], index: number, hideHiddenSponsors = true): number {\n // Only combine segments for AutoSkip\n if (index == -1 ||\n !shouldAutoSkip(sponsorTimes[index])\n || sponsorTimes[index].actionType !== ActionType.Skip) {\n return index;\n }\n\n let latestEndTimeIndex = -1;\n // Default to looped chapter if its end would have been skipped\n if (loopedChapter\n && (loopedChapter.segment[0] > sponsorTimes[index].segment[0]\n && loopedChapter.segment[0] <= sponsorTimes[index]?.segment[1])){\n latestEndTimeIndex = sponsorTimes.length - 1;\n } else {\n // or the normal end time otherwise \n latestEndTimeIndex = index;\n }\n\n for (let i = 0; i < sponsorTimes?.length; i++) {\n const currentSegment = sponsorTimes[i].segment;\n const latestEndTime = sponsorTimes[latestEndTimeIndex].segment[1];\n\n if (currentSegment[0] - skipBuffer <= latestEndTime && currentSegment[1] > latestEndTime\n && (!hideHiddenSponsors || sponsorTimes[i].hidden === SponsorHideType.Visible)\n && shouldAutoSkip(sponsorTimes[i])\n && sponsorTimes[i].actionType === ActionType.Skip) {\n // Overlapping segment\n latestEndTimeIndex = i;\n }\n }\n\n // Keep going if required\n if (latestEndTimeIndex !== index) {\n latestEndTimeIndex = getLatestEndTimeIndex(sponsorTimes, latestEndTimeIndex, hideHiddenSponsors);\n }\n\n return latestEndTimeIndex;\n}\n\n/**\n * Gets just the start times from a sponsor times array.\n * Optionally specify a minimum\n *\n * @param sponsorTimes\n * @param minimum\n * @param hideHiddenSponsors\n * @param includeIntersectingSegments If true, it will include segments that start before\n * the current time, but end after\n */\nfunction getStartTimes(sponsorTimes: SponsorTime[], includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean,\n minimum?: number, hideHiddenSponsors = false): {includedTimes: ScheduledTime[]; scheduledTimes: number[]} {\n if (!sponsorTimes) return {includedTimes: [], scheduledTimes: []};\n\n const includedTimes: ScheduledTime[] = [];\n const scheduledTimes: number[] = [];\n\n const shouldIncludeTime = (segment: ScheduledTime ) => (minimum === undefined\n || ((includeNonIntersectingSegments && segment.scheduledTime >= minimum)\n || (includeIntersectingSegments && segment.scheduledTime < minimum\n && ((segment.segment[1] > minimum && shouldSkip(segment)) // Only include intersecting skippable segments\n || isLoopedChapter(segment)))))\n && (!hideHiddenSponsors || segment.hidden === SponsorHideType.Visible)\n && segment.segment.length === 2\n && segment.actionType !== ActionType.Poi\n && segment.actionType !== ActionType.Full;\n\n const possibleTimes = sponsorTimes.map((sponsorTime) => ({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[0]\n }));\n\n // Schedule at the end time to know when to unmute and remove title from seek bar\n sponsorTimes.forEach(sponsorTime => {\n if (!possibleTimes.some((time) => sponsorTime.segment[1] === time.scheduledTime && shouldIncludeTime(time))\n && (minimum === undefined || sponsorTime.segment[1] > minimum)) {\n possibleTimes.push({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[1]\n });\n }\n });\n\n if (loopedChapter){\n possibleTimes.push({\n ...loopedChapter,\n scheduledTime: loopedChapter.segment[0]})\n }\n\n for (let i = 0; i < possibleTimes.length; i++) {\n if (shouldIncludeTime(possibleTimes[i])) {\n scheduledTimes.push(possibleTimes[i].scheduledTime);\n includedTimes.push(possibleTimes[i]);\n }\n }\n\n return { includedTimes, scheduledTimes };\n}\n\n/**\n * Skip to exact time in a video and autoskips\n *\n * @param time\n */\nfunction previewTime(time: number, unpause = true) {\n previewedSegment = true;\n setCurrentTime(time);\n\n // Unpause the video if needed\n if (unpause && getVideo().paused){\n getVideo().play();\n }\n}\n\n//send telemetry and count skip\nfunction sendTelemetryAndCount(skippingSegments: SponsorTime[], secondsSkipped: number, fullSkip: boolean) {\n for (const segment of skippingSegments) {\n if (!previewedSegment && sponsorTimesSubmitting.some((s) => s.segment === segment.segment)) {\n // Count that as a previewed segment\n previewedSegment = true;\n }\n }\n\n if (!Config.config.trackViewCount || (!Config.config.trackViewCountInPrivate && chrome.extension.inIncognitoContext)) return;\n\n let counted = false;\n for (const segment of skippingSegments) {\n const index = sponsorTimes?.findIndex((s) => s.segment === segment.segment);\n if (index !== -1 && !sponsorSkipped[index]) {\n sponsorSkipped[index] = true;\n if (!counted) {\n Config.config.minutesSaved = Config.config.minutesSaved + secondsSkipped / 60;\n if (segment.actionType !== ActionType.Chapter) {\n Config.config.skipCount = Config.config.skipCount + 1;\n }\n counted = true;\n }\n\n if (fullSkip) asyncRequestToServer(\"POST\", \"/api/viewedVideoSponsorTime?UUID=\" + segment.UUID + \"&videoID=\" + getVideoID())\n .then(r => {\n if (!r.ok) logRequest(r, \"SB\", \"segment skip log\");\n })\n .catch(e => console.warn(\"[SB] Caught error while attempting to log segment skip\", e));\n }\n }\n}\n\n//skip from the start time to the end time for a certain index sponsor time\nfunction skipToTime({v, skipTime, skippingSegments, openNotice, forceAutoSkip, unskipTime}: SkipToTimeParams): void {\n if (Config.config.disableSkipping) return;\n\n // There will only be one submission if it is manual skip\n const autoSkip: boolean = forceAutoSkip || shouldAutoSkip(skippingSegments[0]);\n const isSubmittingSegment = sponsorTimesSubmitting.some((time) => time.segment === skippingSegments[0].segment);\n\n if ((autoSkip || isSubmittingSegment)\n && getCurrentTime() !== skipTime[1]) {\n switch(skippingSegments[0].actionType) {\n case ActionType.Poi:\n case ActionType.Chapter:\n case ActionType.Skip: {\n // Fix for looped videos not working when skipping to the end #426\n // for some reason you also can't skip to 1 second before the end\n if (v.loop && getVideoDuration() > 1 && skipTime[1] >= getVideoDuration() - 1) {\n setCurrentTime(0);\n } else if (getVideoDuration() > 1 && skipTime[1] >= getVideoDuration()\n && (navigator.vendor === \"Apple Computer, Inc.\" || isPlayingPlaylist())) {\n // MacOS will loop otherwise #1027\n // Sometimes playlists loop too #1804\n setCurrentTime(getVideoDuration() - 0.001);\n } else if (getVideoDuration() > 1 && Math.abs(skipTime[1] - getVideoDuration()) < endTimeSkipBuffer\n && isFirefoxOrSafari() && !isSafari()) {\n setCurrentTime(getVideoDuration());\n } else {\n if (inMuteSegment(skipTime[1], true)) {\n // Make sure not to mute if skipping into a mute segment\n v.muted = true;\n videoMuted = true;\n }\n\n setCurrentTime(skipTime[1]);\n }\n\n break;\n }\n case ActionType.Mute: {\n if (!v.muted) {\n v.muted = true;\n videoMuted = true;\n }\n break;\n }\n }\n }\n\n if (autoSkip && Config.config.audioNotificationOnSkip\n && !isSubmittingSegment && !getVideo()?.muted) {\n const beep = new Audio(chrome.runtime.getURL(\"icons/beep.oga\"));\n beep.volume = getVideo().volume * 0.1;\n const oldMetadata = navigator.mediaSession.metadata\n beep.play();\n beep.addEventListener(\"ended\", () => {\n navigator.mediaSession.metadata = null;\n setTimeout(() => {\n navigator.mediaSession.metadata = oldMetadata;\n beep.remove();\n });\n })\n }\n\n if (!autoSkip\n && skippingSegments.length === 1\n && skippingSegments[0].actionType === ActionType.Poi) {\n waitFor(() => skipButtonControlBar).then(() => {\n skipButtonControlBar.enable(skippingSegments[0]);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) skipButtonControlBar.setShowKeybindHint(false);\n \n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = skipButtonControlBar;\n })\n } else {\n if (openNotice) {\n //send out the message saying that a sponsor message was skipped\n if (!Config.config.dontShowNotice || !autoSkip) {\n createSkipNotice(skippingSegments, autoSkip, unskipTime, false);\n } else if (autoSkip) {\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = {\n setShowKeybindHint: () => {}, //eslint-disable-line @typescript-eslint/no-empty-function\n toggleSkip: () => {\n unskipSponsorTime(skippingSegments[0], unskipTime);\n\n createSkipNotice(skippingSegments, autoSkip, unskipTime, true);\n }\n };\n }\n }\n }\n\n //send telemetry that a this sponsor was skipped\n if (autoSkip || isSubmittingSegment) sendTelemetryAndCount(skippingSegments, skipTime[1] - skipTime[0], true);\n}\n\nfunction createSkipNotice(skippingSegments: SponsorTime[], autoSkip: boolean, unskipTime: number, startReskip: boolean, voteNotice = false) {\n for (const skipNotice of skipNotices) {\n if (skippingSegments.length === skipNotice.segments.length\n && skippingSegments.every((segment) => skipNotice.segments.some((s) => s.UUID === segment.UUID))) {\n // Skip notice already exists\n return;\n }\n }\n\n const upcomingNoticeShown = !!upcomingNotice && !upcomingNotice.closed;\n\n const newSkipNotice = new SkipNotice(skippingSegments, autoSkip, skipNoticeContentContainer, () => {\n upcomingNotice?.close();\n upcomingNotice = null;\n }, unskipTime, startReskip, upcomingNoticeShown, voteNotice);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) newSkipNotice.setShowKeybindHint(false);\n skipNotices.push(newSkipNotice);\n\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = newSkipNotice;\n}\n\nfunction createUpcomingNotice(skippingSegments: SponsorTime[], timeLeft: number, autoSkip: boolean): void {\n if (upcomingNotice \n && !upcomingNotice.closed\n && upcomingNotice.sameNotice(skippingSegments)) {\n return;\n }\n\n upcomingNotice?.close();\n upcomingNotice = new UpcomingNotice(skippingSegments, skipNoticeContentContainer, timeLeft / 1000, autoSkip);\n}\n\nfunction unskipSponsorTime(segment: SponsorTime, unskipTime: number = null, forceSeek = false, voteNotice = false) {\n if (segment.actionType === ActionType.Mute) {\n getVideo().muted = false;\n videoMuted = false;\n }\n\n if (forceSeek || segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter || voteNotice) {\n //add a tiny bit of time to make sure it is not skipped again\n setCurrentTime(unskipTime ?? segment.segment[0] + 0.001);\n }\n\n}\n\nfunction reskipSponsorTime(segment: SponsorTime, forceSeek = false) {\n if (segment.actionType === ActionType.Mute && !forceSeek) {\n getVideo().muted = true;\n videoMuted = true;\n } else {\n const skippedTime = Math.max(segment.segment[1] - getCurrentTime(), 0);\n const segmentDuration = segment.segment[1] - segment.segment[0];\n const fullSkip = skippedTime / segmentDuration > manualSkipPercentCount;\n\n setCurrentTime(segment.segment[1]);\n sendTelemetryAndCount([segment], segment.actionType !== ActionType.Chapter ? skippedTime : 0, fullSkip);\n startSponsorSchedule(true, segment.segment[1], false);\n }\n}\n\nfunction createButton(baseID: string, title: string, callback: () => void, imageName: string, isDraggable = false): HTMLElement {\n const existingElement = document.getElementById(baseID + \"Button\");\n if (existingElement !== null) return existingElement;\n\n // Button HTML\n const newButton = document.createElement(\"button\");\n newButton.draggable = isDraggable;\n newButton.id = baseID + \"Button\";\n newButton.classList.add(\"playerButton\");\n newButton.classList.add(\"ytp-button\");\n if (Config.config.prideTheme) newButton.classList.add(\"prideTheme\");\n if (isOnYTTV()) {\n // Some style needs to be set here, but the numbers don't matter \n newButton.setAttribute(\"style\", \"width: 40px; height: 40px\");\n }\n newButton.setAttribute(\"title\", chrome.i18n.getMessage(title));\n newButton.addEventListener(\"click\", () => {\n callback();\n });\n\n // Image HTML\n const newButtonImage = document.createElement(\"img\");\n newButton.draggable = isDraggable;\n newButtonImage.id = baseID + \"Image\";\n newButtonImage.className = \"playerButtonImage\";\n newButtonImage.src = chrome.runtime.getURL(\"icons/\" + imageName);\n\n // Append image to button\n newButton.appendChild(newButtonImage);\n\n // Add the button to player\n if (controls) controls.prepend(newButton);\n\n // Store the elements to prevent unnecessary querying\n playerButtons[baseID] = {\n button: newButton,\n image: newButtonImage,\n setupListener: false\n };\n\n return newButton;\n}\n\nfunction shouldAutoSkip(segment: SponsorTime): boolean {\n const canSkipNonMusic = !Config.config.skipNonMusicOnlyOnYoutubeMusic || isOnYouTubeMusic();\n if (segment.category === \"music_offtopic\" && !canSkipNonMusic) {\n return false;\n }\n\n return (!getSkipProfileBool(\"manualSkipOnFullVideo\") || !sponsorTimes?.some((s) => s.category === segment.category && s.actionType === ActionType.Full))\n && (getCategorySelection(segment)?.option === CategorySkipOption.AutoSkip ||\n (getSkipProfileBool(\"autoSkipOnMusicVideos\") && canSkipNonMusic && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || sponsorTimesSubmitting.some((s) => s.segment === segment.segment))\n || isLoopedChapter(segment);\n}\n\nfunction shouldSkip(segment: SponsorTime): boolean {\n return segment.hidden === SponsorHideType.Visible && (segment.actionType !== ActionType.Full\n && getCategorySelection(segment)?.option > CategorySkipOption.ShowOverlay)\n || (getSkipProfileBool(\"autoSkipOnMusicVideos\") && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || isLoopedChapter(segment);\n}\n\nfunction isLoopedChapter(segment: SponsorTime): boolean{\n return !!segment && !!loopedChapter && segment.segment[1] != undefined\n && segment.segment[0] === loopedChapter.segment[0] && segment.segment[1] === loopedChapter.segment[1];\n}\n\n/** Creates any missing buttons on the YouTube player if possible. */\nasync function createButtons(): Promise {\n controls = await utils.wait(getControls).catch();\n\n // Add button if does not already exist in html\n createButton(\"startSegment\", \"sponsorStart\", () => startOrEndTimingNewSegment(), \"PlayerStartIconSponsorBlocker.svg\");\n createButton(\"cancelSegment\", \"sponsorCancel\", () => cancelCreatingSegment(), \"PlayerCancelSegmentIconSponsorBlocker.svg\");\n createButton(\"delete\", \"clearTimes\", () => clearSponsorTimes(), \"PlayerDeleteIconSponsorBlocker.svg\");\n createButton(\"submit\", \"OpenSubmissionMenu\", () => openSubmissionMenu(), \"PlayerUploadIconSponsorBlocker.svg\");\n createButton(\"info\", \"openPopup\", () => openInfoMenu(), \"PlayerInfoIconSponsorBlocker.svg\");\n\n const controlsContainer = getControls();\n if (Config.config.autoHideInfoButton && !isOnInvidious() && controlsContainer\n && playerButtons[\"info\"]?.button && !controlsWithEventListeners.includes(controlsContainer)) {\n controlsWithEventListeners.push(controlsContainer);\n\n AnimationUtils.setupAutoHideAnimation(playerButtons[\"info\"].button, controlsContainer);\n }\n}\n\n/** Creates any missing buttons on the player and updates their visiblity. */\nasync function updateVisibilityOfPlayerControlsButton(): Promise {\n // Not on a proper video yet\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n await createButtons();\n\n updateEditButtonsOnPlayer();\n\n // Don't show the info button on embeds\n if (Config.config.hideInfoButtonPlayerControls || document.URL.includes(\"/embed/\") || isOnInvidious() || isOnYTTV()\n || document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n playerButtons.info.button.style.display = \"none\";\n } else {\n playerButtons.info.button.style.removeProperty(\"display\");\n }\n}\n\n/** Updates the visibility of buttons on the player related to creating segments. */\nfunction updateEditButtonsOnPlayer(): void {\n // Don't try to update the buttons if we aren't on a YouTube video page\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n const buttonsEnabled = !(Config.config.hideVideoPlayerControls || isOnInvidious());\n\n let creatingSegment = false;\n let submitButtonVisible = false;\n let deleteButtonVisible = false;\n\n // Only check if buttons should be visible if they're enabled\n if (buttonsEnabled) {\n creatingSegment = isSegmentCreationInProgress();\n\n // Show only if there are any segments to submit\n submitButtonVisible = sponsorTimesSubmitting.length > 0;\n\n // Show only if there are any segments to delete\n deleteButtonVisible = sponsorTimesSubmitting.length > 1 || (sponsorTimesSubmitting.length > 0 && !creatingSegment);\n }\n\n // Update the elements\n playerButtons.startSegment.button.style.display = buttonsEnabled ? \"unset\" : \"none\";\n playerButtons.cancelSegment.button.style.display = buttonsEnabled && creatingSegment ? \"unset\" : \"none\";\n\n if (buttonsEnabled) {\n if (creatingSegment) {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStopIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorEnd\"));\n } else {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStartIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorStart\"));\n }\n }\n\n playerButtons.submit.button.style.display = submitButtonVisible && !Config.config.hideUploadButtonPlayerControls ? \"unset\" : \"none\";\n playerButtons.delete.button.style.display = deleteButtonVisible && !Config.config.hideDeleteButtonPlayerControls ? \"unset\" : \"none\";\n}\n\n/**\n * Used for submitting. This will use the HTML displayed number when required as the video's\n * current time is out of date while scrubbing or at the end of the getVideo(). This is not needed\n * for sponsor skipping as the video is not playing during these times.\n */\nfunction getRealCurrentTime(): number {\n // Used to check if replay button\n const playButtonSVGData = document.querySelector(\".ytp-play-button\")?.querySelector(\".ytp-svg-fill\")?.getAttribute(\"d\");\n const replaceSVGData = \"M 18,11 V 7 l -5,5 5,5 v -4 c 3.3,0 6,2.7 6,6 0,3.3 -2.7,6 -6,6 -3.3,0 -6,-2.7 -6,-6 h -2 c 0,4.4 3.6,8 8,8 4.4,0 8,-3.6 8,-8 0,-4.4 -3.6,-8 -8,-8 z\";\n\n if (playButtonSVGData === replaceSVGData) {\n // At the end of the video\n return getVideoDuration();\n } else {\n return getCurrentTime();\n }\n}\n\nfunction startOrEndTimingNewSegment() {\n if (isOnYTTV() && getIsLivePremiere()) {\n alert(chrome.i18n.getMessage(\"yttvLiveContentWarning\"));\n return;\n }\n\n verifyCurrentTime(getRealCurrentTime());\n const roundedTime = Math.round((getRealCurrentTime() + Number.EPSILON) * 1000) / 1000;\n if (!isSegmentCreationInProgress()) {\n sponsorTimesSubmitting.push({\n segment: [roundedTime],\n UUID: generateUserID() as SegmentUUID,\n category: Config.config.defaultCategory,\n actionType: ActionType.Skip,\n source: SponsorSourceType.Local\n });\n } else {\n // Finish creating the new segment\n const existingSegment = getIncompleteSegment();\n const existingTime = existingSegment.segment[0];\n const currentTime = roundedTime;\n\n // Swap timestamps if the user put the segment end before the start\n existingSegment.segment = [Math.min(existingTime, currentTime), Math.max(existingTime, currentTime)];\n }\n\n // Save the newly created segment\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Make sure they know if someone has already submitted something it while they were watching\n sponsorsLookup(true, true);\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n\n importExistingChapters(false);\n\n if (lastResponseStatus !== 200 && lastResponseStatus !== 404\n && !shownSegmentFailedToFetchWarning && Config.config.showSegmentFailedToFetchWarning) {\n alert(chrome.i18n.getMessage(\"segmentFetchFailureWarning\"));\n\n shownSegmentFailedToFetchWarning = true;\n }\n}\n\nfunction getIncompleteSegment(): SponsorTime {\n return sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1];\n}\n\n/** Is the latest submitting segment incomplete */\nfunction isSegmentCreationInProgress(): boolean {\n const segment = getIncompleteSegment();\n return segment && segment?.segment?.length !== 2;\n}\n\nfunction cancelCreatingSegment() {\n if (isSegmentCreationInProgress()) {\n if (sponsorTimesSubmitting.length > 1) { // If there's more than one segment: remove last\n sponsorTimesSubmitting.pop();\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n } else { // Otherwise delete the video entry & close submission menu\n resetSponsorSubmissionNotice();\n sponsorTimesSubmitting = [];\n delete Config.local.unsubmittedSegments[getVideoID()];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n}\n\nfunction updateSponsorTimesSubmitting(getFromConfig = true) {\n const segmentTimes = Config.local.unsubmittedSegments[getVideoID()];\n\n //see if this data should be saved in the sponsorTimesSubmitting variable\n if (getFromConfig && segmentTimes != undefined) {\n sponsorTimesSubmitting = [];\n\n for (const segmentTime of segmentTimes) {\n sponsorTimesSubmitting.push({\n segment: segmentTime.segment,\n UUID: segmentTime.UUID,\n category: segmentTime.category,\n actionType: segmentTime.actionType,\n description: segmentTime.description,\n hidden: segmentTime.hidden,\n source: segmentTime.source\n });\n }\n\n if (sponsorTimesSubmitting.length > 0) {\n // Assume they already previewed a segment\n previewedSegment = true;\n\n importExistingChapters(true);\n }\n }\n\n updatePreviewBar();\n\n // Restart skipping schedule\n if (getVideo() !== null) startSponsorSchedule();\n\n if (submissionNotice !== null) {\n submissionNotice.update();\n }\n\n checkForPreloadedSegment();\n}\n\nfunction openInfoMenu() {\n if (document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //it's already added\n return;\n }\n\n popupInitialised = false;\n\n //hide info button\n if (playerButtons.info) playerButtons.info.button.style.display = \"none\";\n\n const popup = document.createElement(\"div\");\n popup.id = \"sponsorBlockPopupContainer\";\n\n const frame = document.createElement(\"iframe\");\n frame.width = \"374\";\n frame.height = \"500\";\n frame.style.borderRadius = \"12px\";\n frame.addEventListener(\"load\", async () => {\n frame.contentWindow.postMessage(\"\", \"*\");\n\n // To support userstyles applying to the popup\n const stylusStyle = document.querySelector(\".stylus\");\n if (stylusStyle) {\n frame.contentWindow.postMessage({\n type: \"style\",\n css: stylusStyle.textContent\n }, \"*\");\n }\n\n const enhancerStyle = document.getElementById(\"efyt-theme\");\n if (enhancerStyle) {\n const enhancerStyleVariables = document.getElementById(\"efyt-theme-variables\");\n if (enhancerStyleVariables) {\n const enhancerCss = await fetch(enhancerStyle.getAttribute(\"href\")).then((response) => response.text());\n const enhancerVariablesCss = await fetch(enhancerStyleVariables.getAttribute(\"href\")).then((response) => response.text());\n\n if (enhancerCss && enhancerVariablesCss) {\n frame.contentWindow.postMessage({\n type: \"style\",\n // Image needs needs to reference the full url now\n css: enhancerCss.replace(\"./images/youtube-deep-dark/IconSponsorBlocker256px.png\",\n \"https://raw.githubusercontent.com/RaitaroH/YouTube-DeepDark/master/YT_Images/IconSponsorBlocker256px.png\")\n + enhancerVariablesCss\n }, \"*\");\n }\n }\n }\n });\n frame.src = chrome.runtime.getURL(\"popup.html\");\n popup.appendChild(frame);\n\n const elemHasChild = (elements: NodeListOf): Element => {\n let parentNode: Element;\n for (const node of elements) {\n if (node.firstElementChild !== null) {\n parentNode = node;\n }\n }\n return parentNode\n }\n\n const parentNodeOptions = [{\n // YouTube\n selector: \"#secondary-inner\",\n hasChildCheck: true\n }, {\n // old youtube theme\n selector: \"#watch7-sidebar-contents\",\n }];\n for (const option of parentNodeOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.hasChildCheck ? elemHasChild(allElements) : allElements[0];\n\n if (el) {\n if (option.hasChildCheck) el.insertBefore(popup, el.firstChild);\n break;\n }\n }\n}\n\nfunction closeInfoMenu() {\n const popup = document.getElementById(\"sponsorBlockPopupContainer\");\n if (popup === null) return;\n\n popup.remove();\n\n // Show info button if it's not an embed\n if (!document.URL.includes(\"/embed/\") && playerButtons.info) {\n playerButtons.info.button.style.display = \"unset\";\n }\n}\n\nfunction clearSponsorTimes() {\n const currentVideoID = getVideoID();\n\n const sponsorTimes = Config.local.unsubmittedSegments[currentVideoID];\n\n if (sponsorTimes != undefined && sponsorTimes.length > 0) {\n const confirmMessage = chrome.i18n.getMessage(\"clearThis\") + getSegmentsMessage(sponsorTimes)\n + \"\\n\" + chrome.i18n.getMessage(\"confirmMSG\")\n if(!confirm(confirmMessage)) return;\n\n resetSponsorSubmissionNotice();\n\n //clear the sponsor times\n delete Config.local.unsubmittedSegments[currentVideoID];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n //clear sponsor times submitting\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateEditButtonsOnPlayer();\n }\n}\n\n//if skipNotice is null, it will not affect the UI\nasync function vote(type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent): Promise {\n if (skipNotice !== null && skipNotice !== undefined) {\n //add loading info\n skipNotice.addVoteButtonInfo(chrome.i18n.getMessage(\"Loading\"))\n skipNotice.setNoticeInfoMessage();\n }\n\n const response = await voteAsync(type, UUID, category);\n if (response != undefined) {\n //see if it was a success or failure\n if (skipNotice != null) {\n if (\"error\" in response) {\n skipNotice.setNoticeInfoMessage(formatJSErrorMessage(response.error))\n skipNotice.resetVoteButtonInfo();\n } else if (response.ok || response.status === 429) {\n //success (treat rate limits as a success)\n skipNotice.afterVote(utils.getSponsorTimeFromUUID(sponsorTimes, UUID), type, category);\n } else {\n logRequest({headers: null, ...response}, \"SB\", \"vote on segment\");\n if (response.status === 403 && response.responseText.startsWith(\"Vote rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n skipNotice.setNoticeInfoMessage(getLongErrorMessage(response.status, response.responseText))\n }\n\n skipNotice.resetVoteButtonInfo();\n }\n }\n }\n\n return response;\n}\n\nasync function voteAsync(type: number, UUID: SegmentUUID, category?: Category): Promise {\n const sponsorIndex = utils.getSponsorIndexFromUUID(sponsorTimes, UUID);\n\n // Don't vote for preview sponsors\n if (sponsorIndex == -1 || sponsorTimes[sponsorIndex].source !== SponsorSourceType.Server) return Promise.resolve(undefined);\n\n // See if the local time saved count and skip count should be saved\n if (type === 0 && sponsorSkipped[sponsorIndex] || type === 1 && !sponsorSkipped[sponsorIndex]) {\n let factor = 1;\n if (type == 0) {\n factor = -1;\n\n sponsorSkipped[sponsorIndex] = false;\n }\n\n // Count this as a skip\n Config.config.minutesSaved = Config.config.minutesSaved + factor * (sponsorTimes[sponsorIndex].segment[1] - sponsorTimes[sponsorIndex].segment[0]) / 60;\n\n Config.config.skipCount = Config.config.skipCount + factor;\n }\n\n return new Promise((resolve) => {\n chrome.runtime.sendMessage({\n message: \"submitVote\",\n type: type,\n UUID: UUID,\n category: category,\n videoID: getVideoID()\n }, (response) => {\n if (response.ok === true) {\n // Change the sponsor locally\n const segment = utils.getSponsorTimeFromUUID(sponsorTimes, UUID);\n if (segment) {\n if (type === 0) {\n segment.hidden = SponsorHideType.Downvoted;\n } else if (category) {\n segment.category = category;\n } else if (type === 1) {\n segment.hidden = SponsorHideType.Visible;\n }\n\n if (!category && !Config.config.isVip) {\n utils.addHiddenSegment(getVideoID(), segment.UUID, segment.hidden);\n }\n\n updatePreviewBar();\n }\n }\n\n resolve(response);\n });\n });\n}\n\n//Closes all notices that tell the user that a sponsor was just skipped\nfunction closeAllSkipNotices(){\n const notices = document.getElementsByClassName(\"sponsorSkipNotice\");\n for (let i = 0; i < notices.length; i++) {\n notices[i].remove();\n }\n}\n\nfunction dontShowNoticeAgain() {\n Config.config.dontShowNotice = true;\n closeAllSkipNotices();\n}\n\n/**\n * Helper method for the submission notice to clear itself when it closes\n */\nfunction resetSponsorSubmissionNotice(callRef = true) {\n submissionNotice?.close(callRef);\n submissionNotice = null;\n}\n\nfunction closeSubmissionMenu() {\n submissionNotice?.close();\n submissionNotice = null;\n}\n\nfunction openSubmissionMenu() {\n if (submissionNotice !== null){\n closeSubmissionMenu();\n return;\n }\n\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n submissionNotice = new SubmissionNotice(skipNoticeContentContainer, sendSubmitMessage);\n }\n}\n\nfunction previewRecentSegment() {\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n previewTime(sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment[0] - defaultPreviewTime);\n \n if (submissionNotice) {\n submissionNotice.scrollToBottom();\n }\n }\n}\n\nfunction submitSegments() {\n if (sponsorTimesSubmitting !== undefined\n && sponsorTimesSubmitting.length > 0\n && submissionNotice !== null) {\n submissionNotice.submit();\n }\n\n}\n\n//send the message to the background js\n//called after all the checks have been made that it's okay to do so\nasync function sendSubmitMessage(): Promise {\n // check if all segments are full video\n const onlyFullVideo = sponsorTimesSubmitting.every((segment) => segment.actionType === ActionType.Full);\n // Block if submitting on a running livestream or premiere\n if (!onlyFullVideo && (getIsLivePremiere() || isVisible(document.querySelector(\".ytp-live-badge\")))) {\n alert(chrome.i18n.getMessage(\"liveOrPremiere\"));\n return false;\n }\n\n if (!previewedSegment \n && !sponsorTimesSubmitting.every((segment) => \n [ActionType.Full, ActionType.Chapter, ActionType.Poi].includes(segment.actionType) \n || segment.segment[1] >= getVideoDuration()\n || segment.segment[0] === 0)) {\n alert(`${chrome.i18n.getMessage(\"previewSegmentRequired\")} ${keybindToString(Config.config.previewKeybind)}`);\n return false;\n }\n\n // Add loading animation\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadIconSponsorBlocker.svg\");\n const stopAnimation = AnimationUtils.applyLoadingAnimation(playerButtons.submit.button, 1, () => updateEditButtonsOnPlayer());\n\n //check if a sponsor exceeds the duration of the video\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n if (sponsorTimesSubmitting[i].segment[1] > getVideoDuration()) {\n sponsorTimesSubmitting[i].segment[1] = getVideoDuration();\n }\n }\n\n //update sponsorTimes\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Check to see if any of the submissions are below the minimum duration set\n if (Config.config.minDuration > 0) {\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n const duration = sponsorTimesSubmitting[i].segment[1] - sponsorTimesSubmitting[i].segment[0];\n if (duration > 0 && duration < Config.config.minDuration) {\n const confirmShort = chrome.i18n.getMessage(\"shortCheck\") + \"\\n\\n\" +\n getSegmentsMessage(sponsorTimesSubmitting);\n\n if(!confirm(confirmShort)) return false;\n }\n }\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"POST\", \"/api/skipSegments\", {\n videoID: getVideoID(),\n userID: Config.config.userID,\n segments: sponsorTimesSubmitting,\n videoDuration: getVideoDuration(),\n userAgent: extensionUserAgent(),\n });\n } catch (e) {\n console.error(\"[SB] Caught error while attempting to submit segments\", e);\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n alert(formatJSErrorMessage(e));\n return false;\n }\n\n if (response.status === 200) {\n stopAnimation();\n\n // Remove segments from storage since they've already been submitted\n delete Config.local.unsubmittedSegments[getVideoID()];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n const newSegments = sponsorTimesSubmitting;\n try {\n const receivedNewSegments = JSON.parse(response.responseText);\n if (receivedNewSegments?.length === newSegments.length) {\n for (let i = 0; i < receivedNewSegments.length; i++) {\n newSegments[i].UUID = receivedNewSegments[i].UUID;\n newSegments[i].source = SponsorSourceType.Server;\n }\n }\n } catch(e) {} // eslint-disable-line no-empty\n\n // Add submissions to current sponsors list\n sponsorTimes = (sponsorTimes || []).concat(newSegments).sort((a, b) => a.segment[0] - b.segment[0]);\n\n // Increase contribution count\n Config.config.sponsorTimesContributed = Config.config.sponsorTimesContributed + sponsorTimesSubmitting.length;\n\n // New count just used to see if a warning \"Read The Guidelines!!\" message needs to be shown\n // One per time submitting\n Config.config.submissionCountSinceCategories = Config.config.submissionCountSinceCategories + 1;\n\n // Empty the submitting times\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateCategoryPill();\n\n return true;\n } else {\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n\n if (response.status === 403 && response.responseText.startsWith(\"Submission rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n logRequest(response, \"SB\", \"segment submission\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n\n return false;\n}\n\n//get the message that visually displays the video times\nfunction getSegmentsMessage(sponsorTimes: SponsorTime[]): string {\n let sponsorTimesMessage = \"\";\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n for (let s = 0; s < sponsorTimes[i].segment.length; s++) {\n let timeMessage = getFormattedTime(sponsorTimes[i].segment[s]);\n //if this is an end time\n if (s == 1) {\n timeMessage = \" \" + chrome.i18n.getMessage(\"to\") + \" \" + timeMessage;\n } else if (i > 0) {\n //add commas if necessary\n timeMessage = \", \" + timeMessage;\n }\n\n sponsorTimesMessage += timeMessage;\n }\n }\n\n return sponsorTimesMessage;\n}\n\nfunction updateActiveSegment(currentTime: number): void {\n if (!chrome.runtime?.id) return;\n\n previewBar?.updateChapterText(sponsorTimes, sponsorTimesSubmitting, currentTime);\n\n chrome.runtime.sendMessage({\n message: \"time\",\n time: currentTime\n });\n}\n\nfunction nextChapter(): void {\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) return;\n\n lastNextChapterKeybind.time = getCurrentTime();\n lastNextChapterKeybind.date = Date.now();\n\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime());\n if (nextChapter !== -1) {\n setCurrentTime(chapters[nextChapter].segment[0]);\n } else {\n setCurrentTime(getVideoDuration());\n }\n}\n\nfunction previousChapter(): void {\n if (Date.now() - lastNextChapterKeybind.date < 3000) {\n setCurrentTime(lastNextChapterKeybind.time);\n lastNextChapterKeybind.date = 0;\n return;\n }\n\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) {\n setCurrentTime(0);\n return;\n }\n\n // subtract 5 seconds to allow skipping back to the previous chapter if close to start of\n // the current one\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime() - Math.min(5, time.segment[1] - time.segment[0]));\n const previousChapter = nextChapter !== -1 ? (nextChapter - 1) : (chapters.length - 1);\n if (previousChapter !== -1) {\n setCurrentTime(chapters[previousChapter].segment[0]);\n } else {\n setCurrentTime(0);\n }\n}\n\nasync function handleKeybindVote(type: number): Promise{\n let lastSkipNotice = skipNotices[0]?.skipNoticeRef.current;\n lastSkipNotice?.onMouseEnter();\n\n if (!lastSkipNotice) {\n const lastSegment = [...sponsorTimes].reverse()?.find((s) => s.source == SponsorSourceType.Server && (s.segment[0] <= getCurrentTime() && getCurrentTime() - (s.segment[1] || s.segment[0]) <= Config.config.skipNoticeDuration));\n if (!lastSegment) return;\n\n createSkipNotice([lastSegment], shouldAutoSkip(lastSegment), lastSegment?.segment[0] + 0.001,false, true);\n lastSkipNotice = await skipNotices[0].waitForSkipNoticeRef();\n lastSkipNotice?.reskippedMode(0);\n }\n\n vote(type,lastSkipNotice?.segments[0]?.UUID, undefined, lastSkipNotice);\n return;\n}\n\nfunction addHotkeyListener(): void {\n document.addEventListener(\"keydown\", hotkeyListener, true);\n document.addEventListener(\"keyup\", hotkeyPropagationListener, true);\n\n addCleanupListener(() => {\n document.body.removeEventListener(\"keydown\", hotkeyListener, true);\n document.body.removeEventListener(\"keyup\", hotkeyPropagationListener, true);\n });\n}\n\nfunction hotkeyListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const skipKey = Config.config.skipKeybind;\n const skipToHighlightKey = Config.config.skipToHighlightKeybind;\n const closeSkipNoticeKey = Config.config.closeSkipNoticeKeybind;\n const startSponsorKey = Config.config.startSponsorKeybind;\n const submitKey = Config.config.actuallySubmitKeybind;\n const previewKey = Config.config.previewKeybind;\n const openSubmissionMenuKey = Config.config.submitKeybind;\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n const upvoteKey = Config.config.upvoteKeybind;\n const downvoteKey = Config.config.downvoteKeybind;\n\n if (keybindEquals(key, skipKey)) {\n if (activeSkipKeybindElement && !(activeSkipKeybindElement instanceof SkipButtonControlBar)) {\n activeSkipKeybindElement.toggleSkip.call(activeSkipKeybindElement);\n }\n\n return;\n } else if (keybindEquals(key, skipToHighlightKey)) {\n if (skipButtonControlBar) {\n skipButtonControlBar.toggleSkip.call(skipButtonControlBar);\n }\n\n return;\n } else if (keybindEquals(key, closeSkipNoticeKey)) {\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop().close();\n }\n \n upcomingNotice?.close();\n upcomingNotice = null;\n return;\n } else if (keybindEquals(key, startSponsorKey)) {\n startOrEndTimingNewSegment();\n return;\n } else if (keybindEquals(key, submitKey)) {\n submitSegments();\n return;\n } else if (keybindEquals(key, openSubmissionMenuKey)) {\n e.preventDefault();\n\n openSubmissionMenu();\n return;\n } else if (keybindEquals(key, previewKey)) {\n previewRecentSegment();\n return;\n } else if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n nextChapter();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n previousChapter();\n return;\n } else if (keybindEquals(key, upvoteKey)) {\n handleKeybindVote(1);\n return;\n } else if (keybindEquals(key, downvoteKey)) {\n handleKeybindVote(0);\n return;\n }\n}\n\nfunction hotkeyPropagationListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n\n if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n }\n}\n\n/**\n * Adds the CSS to the page if needed. Required on optional sites with Chrome.\n */\nfunction addCSS() {\n if (!isFirefoxOrSafari() && Config.config.invidiousInstances.includes(new URL(document.URL).hostname)) {\n const onLoad = () => {\n const head = document.getElementsByTagName(\"head\")[0];\n\n for (const file of utils.css) {\n const fileref = document.createElement(\"link\");\n\n fileref.rel = \"stylesheet\";\n fileref.type = \"text/css\";\n fileref.href = chrome.runtime.getURL(file);\n\n head.appendChild(fileref);\n }\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n document.addEventListener(\"DOMContentLoaded\", onLoad);\n }\n }\n}\n\n/**\n * Update the isAdPlaying flag and hide preview bar/controls if ad is playing\n */\nfunction updateAdFlag(): void {\n const wasAdPlaying = getIsAdPlaying();\n setIsAdPlaying(document.getElementsByClassName('ad-showing').length > 0);\n if(wasAdPlaying != getIsAdPlaying()) {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n }\n}\n\nfunction showTimeWithoutSkips(skippedDuration: number): void {\n if (isNaN(skippedDuration) || skippedDuration < 0) {\n skippedDuration = 0;\n }\n\n // YouTube player time display\n const selector =\n isOnInvidious() ? \".vjs-duration\" :\n isOnYTTV() ? \".ypl-full-controls .ypmcs-control .time-info-bar\" :\n isOnMobileYouTube() ? \".ytwPlayerTimeDisplayContent\" :\n \".ytp-time-display.notranslate .ytp-time-wrapper .ytp-time-contents\";\n const display = document.querySelector(selector);\n if (!display) return;\n\n const durationID = \"sponsorBlockDurationAfterSkips\";\n let duration = document.getElementById(durationID);\n\n // Create span if needed\n if (duration === null) {\n duration = document.createElement('span');\n duration.id = durationID;\n\n if (isOnMobileYouTube()) {\n duration.style.paddingLeft = \"4px\";\n display.insertBefore(duration, display.lastChild);\n } else {\n display.appendChild(duration);\n }\n }\n\n const durationAfterSkips = getFormattedTime(getVideoDuration() - skippedDuration);\n\n duration.innerText = (durationAfterSkips == null || skippedDuration <= 0) ? \"\" : \" (\" + durationAfterSkips + \")\";\n}\n\nfunction checkForPreloadedSegment() {\n if (loadedPreloadedSegment) return;\n\n loadedPreloadedSegment = true;\n const hashParams = getHashParams();\n\n let pushed = false;\n const segments = hashParams.segments;\n if (Array.isArray(segments)) {\n for (const segment of segments) {\n if (Array.isArray(segment.segment)) {\n if (!sponsorTimesSubmitting.some((s) => s.segment[0] === segment.segment[0] && s.segment[1] === s.segment[1])) {\n sponsorTimesSubmitting.push({\n segment: segment.segment,\n UUID: generateUserID() as SegmentUUID,\n category: segment.category ? segment.category : Config.config.defaultCategory,\n actionType: segment.actionType ? segment.actionType : ActionType.Skip,\n description: segment.description ?? \"\",\n source: SponsorSourceType.Local\n });\n\n pushed = true;\n }\n }\n }\n }\n\n if (pushed) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n}\n\n// Generate and inject a stylesheet that creates CSS variables with configured category colors\nfunction setCategoryColorCSSVariables() {\n let styleContainer = document.getElementById(\"sbCategoryColorStyle\");\n if (!styleContainer) {\n styleContainer = document.createElement(\"style\");\n styleContainer.id = \"sbCategoryColorStyle\";\n if (isVorapisInstalled()) {\n // Vorapi deletes styles\n styleContainer.className = 'stylus';\n }\n\n const head = (document.head || document.documentElement);\n head.appendChild(styleContainer)\n }\n\n let css = \":root {\"\n for (const [category, config] of Object.entries(Config.config.barTypes)) {\n css += `--sb-category-${category}: ${config.color};`;\n css += `--darkreader-bg--sb-category-${category}: ${config.color};`;\n\n const luminance = GenericUtils.getLuminance(config.color);\n css += `--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n css += `--darkreader-text--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n }\n css += \"}\";\n\n styleContainer.innerText = css;\n}\n\n/**\n * If mini player starts playing, then videoID change might have to be called\n */\nfunction checkForMiniplayerPlaying() {\n const miniPlayerUI = document.querySelector(\".miniplayer\") as HTMLElement;\n if (!onVideoPage() && isVisible(miniPlayerUI)) {\n const videoID = getLastNonInlineVideoID();\n if (videoID) {\n triggerVideoIDChange(videoID);\n\n // treat as if video element has changed\n const video = miniPlayerUI.querySelector(\"video\") as HTMLVideoElement;\n if (video && getVideo() !== video) {\n triggerVideoElementChange(video);\n }\n }\n }\n}\n","import { waitFor } from \"../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../maze-utils/src/elements\";\nimport { getHash } from \"../maze-utils/src/hash\";\nimport { getVideoID, isOnInvidious, isOnMobileYouTube } from \"../maze-utils/src/video\";\nimport Config from \"./config\";\nimport { Tooltip } from \"./render/Tooltip\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\nimport { isVisible } from \"./utils/pageUtils\";\nimport { asyncRequestToServer } from \"./utils/requests\";\n\nlet tooltip: Tooltip = null;\nconst showDeArrowPromotion = false;\nexport async function tryShowingDeArrowPromotion() {\n if (showDeArrowPromotion\n && Config.config.showDeArrowPromotion\n && !isOnMobileYouTube()\n && !isOnInvidious()\n && document.URL.includes(\"watch\")\n && Config.config.showUpsells \n && Config.config.showNewFeaturePopups\n && (Config.config.skipCount > 30 || !Config.config.trackViewCount)) {\n\n if (!await isDeArrowInstalled()) {\n try {\n const element = await waitFor(() => getYouTubeTitleNode(), 5000, 500, (e) => isVisible(e)) as HTMLElement;\n if (element && element.innerText && badTitle(element.innerText)) {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n const deArrowData = await asyncRequestToServer(\"GET\", \"/api/branding/\" + hashPrefix);\n if (!deArrowData.ok) return;\n\n const deArrowDataJson = JSON.parse(deArrowData.responseText);\n const title = deArrowDataJson?.[getVideoID()]?.titles?.[0];\n if (title && title.title && (title.locked || title.votes > 0)) {\n Config.config.showDeArrowPromotion = false;\n\n tooltip = new Tooltip({\n text: chrome.i18n.getMessage(\"DeArrowTitleReplacementSuggestion\") + \"\\n\\n\" + title.title,\n linkOnClick: () => {\n window.open(\"https://dearrow.ajay.app\");\n Config.config.shownDeArrowPromotion = true;\n },\n secondButtonText: chrome.i18n.getMessage(\"hideNewFeatureUpdates\"),\n referenceNode: element,\n prependElement: element.firstElementChild as HTMLElement,\n timeout: 15000,\n positionRealtive: false,\n containerAbsolute: true,\n bottomOffset: \"inherit\",\n topOffset: \"55px\",\n leftOffset: \"0\",\n rightOffset: \"0\",\n topTriangle: true,\n center: true,\n opacity: 1\n });\n }\n }\n } catch { } // eslint-disable-line no-empty\n } else {\n Config.config.showDeArrowPromotion = false;\n }\n }\n}\n\n/**\n * Two upper case words (at least 2 letters long)\n */\nfunction badTitle(title: string): boolean {\n return !!title.match(/\\p{Lu}{2,} \\p{Lu}{2,}[.!? ]/u);\n}\n\nexport function hideDeArrowPromotion(): void {\n if (tooltip) tooltip.close();\n}\n","/*\nBased on code from\nhttps://github.com/videosegments/videosegments/commits/f1e111bdfe231947800c6efdd51f62a4e7fef4d4/segmentsbar/segmentsbar.js\n*/\n\nimport Config from \"../config\";\nimport { ChapterVote } from \"../render/ChapterVote\";\nimport { ActionType, Category, CategorySkipOption, SegmentContainer, SponsorHideType, SponsorSourceType, SponsorTime } from \"../types\";\nimport { partition } from \"../utils/arrayUtils\";\nimport { DEFAULT_CATEGORY, shortCategoryName } from \"../utils/categoryUtils\";\nimport { normalizeChapterName } from \"../utils/exporter\";\nimport { findNonEmptyElement, findValidElement } from \"../../maze-utils/src/dom\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\nimport { hasAutogeneratedChapters, isVisible } from \"../utils/pageUtils\";\nimport { isVorapisInstalled } from \"../utils/compatibility\";\nimport { isOnYTTV } from \"../../maze-utils/src/video\";\nimport { getCategorySelection } from \"../utils/skipRule\";\nimport { getSkipProfileBool } from \"../utils/skipProfiles\";\n\nconst TOOLTIP_VISIBLE_CLASS = 'sponsorCategoryTooltipVisible';\nconst MIN_CHAPTER_SIZE = 0.003;\n\nexport interface PreviewBarSegment {\n segment: [number, number];\n category: Category;\n actionType: ActionType;\n unsubmitted: boolean;\n showLarger: boolean;\n description: string;\n source: SponsorSourceType;\n requiredSegment?: boolean;\n selectedSegment?: boolean;\n}\n\ninterface ChapterGroup extends SegmentContainer {\n originalDuration: number;\n actionType: ActionType;\n}\n\nclass PreviewBar {\n container: HTMLUListElement;\n categoryTooltip?: HTMLDivElement;\n categoryTooltipContainer?: HTMLElement;\n chapterTooltip?: HTMLDivElement;\n\n // ScrubTooltips for YTTV only\n categoryScrubTooltip?: HTMLDivElement;\n categoryScrubTooltipContainer?: HTMLElement;\n chapterScrubTooltip?: HTMLDivElement;\n\n lastSmallestSegment: Record = {};\n\n parent: HTMLElement;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n onYTTV: boolean;\n progressBar: HTMLElement;\n\n segments: PreviewBarSegment[] = [];\n hasYouTubeChapters = false;\n existingChapters: PreviewBarSegment[] = [];\n videoDuration = 0;\n updateExistingChapters: () => void;\n lastChapterUpdate = 0;\n\n // For chapter bar\n hoveredSection: HTMLElement;\n customChaptersBar: HTMLElement;\n chaptersBarSegments: PreviewBarSegment[];\n chapterVote: ChapterVote;\n originalChapterBar: HTMLElement;\n originalChapterBarBlocks: NodeListOf;\n chapterMargin: number;\n lastRenderedSegments: PreviewBarSegment[];\n unfilteredChapterGroups: ChapterGroup[];\n chapterGroups: ChapterGroup[];\n\n constructor(parent: HTMLElement, onMobileYouTube: boolean, onInvidious: boolean, onYTTV: boolean, chapterVote: ChapterVote, updateExistingChapters: () => void, test=false) {\n if (test) return;\n this.container = document.createElement('ul');\n this.container.id = 'previewbar';\n\n if (onYTTV) {\n this.container.classList.add(\"sponsorblock-yttv-container\");\n }\n\n this.parent = parent;\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.onYTTV = onYTTV;\n this.chapterVote = chapterVote;\n this.updateExistingChapters = updateExistingChapters;\n\n this.updatePageElements();\n this.createElement(parent);\n this.createChapterMutationObservers();\n\n this.setupHoverText();\n }\n\n setupHoverText(): void {\n if (this.onMobileYouTube || this.onInvidious) return;\n\n // delete old ones\n document.querySelectorAll(`.sponsorCategoryTooltip`)\n .forEach((e) => e.remove());\n\n // Create label placeholder\n this.categoryTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.categoryTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.categoryTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n this.chapterTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.chapterTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.chapterTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n\n if (isOnYTTV()) {\n this.categoryScrubTooltip = document.createElement(\"div\");\n this.categoryScrubTooltip.className = \"sponsorCategoryTooltip\";\n this.chapterScrubTooltip = document.createElement(\"div\");\n this.chapterScrubTooltip.className = \"sponsorCategoryTooltip\";\n }\n\n // global chapter tooltip or duration tooltip\n // YT, Vorapis, unknown, YTTV\n const tooltipTextWrapper = document.querySelector(\".ytp-tooltip-text-wrapper, .ytp-progress-tooltip-text-container, .yssi-slider .ys-seek-details .time-info-bar\") ?? document.querySelector(\"#progress-bar-container.ytk-player > #hover-time-info\");\n const defaultTooltipSelector = \".ytp-tooltip-title:not(.sponsorCategoryTooltip), .ytp-tooltip-title:not(.sponsorCategoryTooltip) span, .ytp-progress-tooltip-text:not(.sponsorCategoryTooltip), .current-time:not(.sponsorCategoryTooltip)\";\n const originalTooltip = findNonEmptyElement([\n defaultTooltipSelector,\n \".ytp-tooltip-progress-bar-pill-title\"\n ]) ?? document.querySelector(defaultTooltipSelector);\n if (!tooltipTextWrapper || !tooltipTextWrapper.parentElement) return;\n\n // Grab the tooltip from the text wrapper as the tooltip doesn't have its classes on init\n this.categoryTooltipContainer = tooltipTextWrapper.parentElement;\n // YT, Vorapis, YTTV\n const titleTooltip = tooltipTextWrapper.querySelector(\".ytp-tooltip-title, .ytp-progress-tooltip-text, .current-time\") as HTMLElement;\n if (!this.categoryTooltipContainer || !titleTooltip) return;\n\n tooltipTextWrapper.insertBefore(this.categoryTooltip, titleTooltip.nextSibling);\n tooltipTextWrapper.insertBefore(this.chapterTooltip, titleTooltip.nextSibling);\n\n if (isOnYTTV()) {\n const scrubTooltipTextWrapper = document.querySelector(\".yssi-slider .ysl-filmstrip-lens .time-info-bar\")\n if (!this.categoryTooltipContainer) return;\n \n scrubTooltipTextWrapper.appendChild(this.categoryScrubTooltip);\n scrubTooltipTextWrapper.appendChild(this.chapterScrubTooltip);\n }\n\n const seekBar = (document.querySelector(\".ytp-progress-bar-container, .ypcs-scrub-slider-slot.ytu-player-controls\"));\n if (!seekBar) return;\n\n let mouseOnSeekBar = false;\n\n seekBar.addEventListener(\"mouseenter\", () => {\n mouseOnSeekBar = true;\n });\n\n seekBar.addEventListener(\"mouseleave\", () => {\n mouseOnSeekBar = false;\n });\n\n seekBar.addEventListener(\"mousemove\", (e: MouseEvent) => {\n if (!mouseOnSeekBar || !this.categoryTooltip || !this.categoryTooltipContainer || !chrome.runtime?.id) return;\n\n let noYoutubeChapters = !!tooltipTextWrapper.querySelector(\".ytp-tooltip-text.ytp-tooltip-text-no-title, .ytp-progress-tooltip-timestamp\");\n const timeInSeconds = this.decimalToTime((e.clientX - seekBar.getBoundingClientRect().x) / seekBar.clientWidth);\n\n // Find the segment at that location, using the shortest if multiple found\n const [normalSegments, chapterSegments] =\n partition(this.segments,\n (segment) => segment.actionType !== ActionType.Chapter);\n let mainSegment = this.getSmallestSegment(timeInSeconds, normalSegments, \"normal\");\n let secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments, \"chapter\");\n if (mainSegment === null && secondarySegment !== null) {\n mainSegment = secondarySegment;\n secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments.filter((s) => s !== secondarySegment));\n }\n\n const hasAYouTubeChapterRemoved = this.hasYouTubeChapters\n || (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters());\n if (hasAYouTubeChapterRemoved) {\n // Hide original tooltip if some chapter has been filtered out\n originalTooltip.style.display = \"none\";\n noYoutubeChapters = true;\n }\n\n if (mainSegment === null && secondarySegment === null) {\n if (!hasAYouTubeChapterRemoved) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n originalTooltip.style.removeProperty(\"display\");\n }\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n } else {\n this.categoryTooltipContainer.classList.add(TOOLTIP_VISIBLE_CLASS);\n const hasTwoTooltips = mainSegment !== null && secondarySegment !== null;\n if (hasTwoTooltips) {\n this.categoryTooltipContainer.classList.add(\"sponsorTwoTooltips\");\n } else {\n this.categoryTooltipContainer.classList.remove(\"sponsorTwoTooltips\");\n }\n\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n if (isVorapisInstalled()) {\n const tooltipParent = tooltipTextWrapper.parentElement!;\n tooltipParent.classList.add(\"with-text\");\n }\n\n if (normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.categoryTooltip.textContent)\n || normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.chapterTooltip.textContent)\n || !originalTooltip.textContent) {\n if (originalTooltip.style.display !== \"none\") originalTooltip.style.display = \"none\";\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = true;\n } else if (originalTooltip.style.display === \"none\") {\n originalTooltip.style.removeProperty(\"display\");\n this.categoryTooltipContainer.classList.add(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = false;\n }\n\n // To prevent offset issue\n this.categoryTooltip.style.right = titleTooltip.style.right;\n this.chapterTooltip.style.right = titleTooltip.style.right;\n this.categoryTooltip.style.textAlign = titleTooltip.style.textAlign;\n this.chapterTooltip.style.textAlign = titleTooltip.style.textAlign;\n }\n\n // Used to prevent overlapping\n this.categoryTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n this.chapterTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n });\n }\n\n private setTooltipTitle(segment: PreviewBarSegment, tooltip: HTMLElement): void {\n if (segment) {\n const name = segment.description || shortCategoryName(segment.category);\n if (segment.unsubmitted) {\n tooltip.textContent = chrome.i18n.getMessage(\"unsubmitted\") + \" \" + name;\n } else {\n tooltip.textContent = name;\n }\n\n tooltip.style.removeProperty(\"display\");\n\n // For July 2025 test layout\n if (document.querySelector(\".ytp-delhi-modern\")) {\n tooltip.style.display = \"inline-block\";\n\n // Class gets added back, so grab the top value for when the class is removed\n tooltip.style.removeProperty(\"top\");\n tooltip.classList.remove(\"ytp-tooltip-text-no-title\");\n\n if (tooltip === this.chapterTooltip) {\n tooltip.style.top = `calc(${window.getComputedStyle(tooltip).getPropertyValue(\"top\")} + 5px)`;\n } else {\n tooltip.style.top = window.getComputedStyle(tooltip).getPropertyValue(\"top\");\n }\n }\n } else {\n tooltip.style.display = \"none\";\n }\n }\n\n createElement(parent?: HTMLElement): void {\n if (parent) this.parent = parent;\n\n if (this.onMobileYouTube) {\n this.container.style.transform = \"none\";\n } else if (!this.onInvidious) {\n this.container.classList.add(\"sbNotInvidious\");\n }\n\n // On the seek bar\n if (this.onYTTV) {\n // order of sibling elements matters on YTTV\n this.parent.insertBefore(this.container, this.parent.firstChild.nextSibling.nextSibling);\n } else {\n this.parent.prepend(this.container);\n }\n }\n\n clear(): void {\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild);\n }\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar?.style?.removeProperty(\"display\");\n this.chapterVote?.setVisibility(false);\n\n document.querySelectorAll(`.sponsorBlockChapterBar`).forEach((e) => {\n if (e !== this.customChaptersBar) {\n e.remove();\n }\n });\n }\n\n set(segments: PreviewBarSegment[], videoDuration: number): void {\n this.segments = segments ?? [];\n this.videoDuration = videoDuration ?? 0;\n this.hasYouTubeChapters = segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source));\n\n // Remove unnecessary original chapters if submitted replacements exist\n for (const chapter of this.segments.filter((s) => s.actionType === ActionType.Chapter && s.source === SponsorSourceType.Server)) {\n const segmentDuration = chapter.segment[1] - chapter.segment[0];\n \n const duplicate = this.segments.find((s) => s.actionType === ActionType.Chapter \n && [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source) \n && Math.abs(s.segment[0] - chapter.segment[0]) < Math.min(3, segmentDuration / 3)\n && Math.abs(s.segment[1] - chapter.segment[1]) < Math.min(3, segmentDuration / 3));\n \n if (duplicate) {\n const index = this.segments.indexOf(duplicate);\n this.segments.splice(index, 1);\n }\n }\n\n this.updatePageElements();\n // Sometimes video duration is inaccurate, pull from accessibility info\n const ariaDuration = parseInt(this.progressBar?.getAttribute('aria-valuemax')) ?? 0;\n const multipleActiveVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v)).length > 1;\n if (!multipleActiveVideos && ariaDuration && Math.abs(ariaDuration - this.videoDuration) > 3) {\n this.videoDuration = ariaDuration;\n }\n\n this.update();\n }\n\n private updatePageElements(): void {\n // YT, Vorapis v3\n const allProgressBars = document.querySelectorAll(\".ytp-progress-bar, .ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\") as NodeListOf;\n this.progressBar = findValidElement(allProgressBars) ?? allProgressBars?.[0];\n\n if (this.progressBar) {\n const newChapterBar = this.progressBar.querySelector(\".ytp-chapters-container:not(.sponsorBlockChapterBar)\") as HTMLElement;\n if (this.originalChapterBar !== newChapterBar) {\n // Make sure changes are undone on old bar\n this.originalChapterBar?.style?.removeProperty(\"display\");\n\n this.originalChapterBar = newChapterBar;\n }\n }\n }\n\n private update(): void {\n this.clear();\n const chapterChevron = this.getChapterChevron();\n\n if (!this.segments) {\n chapterChevron?.style?.removeProperty(\"display\");\n }\n\n this.chapterMargin = 2;\n if (this.originalChapterBar) {\n this.originalChapterBarBlocks = this.originalChapterBar.querySelectorAll(\":scope > div\") as NodeListOf\n this.existingChapters = this.segments.filter((s) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source)).sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (this.existingChapters?.length > 0) {\n const margin = parseFloat(this.originalChapterBarBlocks?.[0]?.style?.marginRight?.replace(\"px\", \"\"));\n if (margin) this.chapterMargin = margin;\n }\n }\n\n const sortedSegments = this.segments.sort(({ segment: a }, { segment: b }) => {\n // Sort longer segments before short segments to make shorter segments render later\n return (b[1] - b[0]) - (a[1] - a[0]);\n });\n for (const segment of sortedSegments) {\n if (segment.actionType === ActionType.Chapter) continue;\n const bar = this.createBar(segment);\n\n this.container.appendChild(bar);\n }\n\n this.createChaptersBar(this.segments.sort((a, b) => a.segment[0] - b.segment[0]));\n\n if (chapterChevron) {\n if (this.segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))) {\n chapterChevron.style.removeProperty(\"display\");\n } else if (this.segments) {\n chapterChevron.style.display = \"none\";\n }\n }\n }\n\n createBar(barSegment: PreviewBarSegment): HTMLLIElement {\n const { category, unsubmitted, segment, showLarger } = barSegment;\n\n const bar = document.createElement('li');\n bar.classList.add('previewbar');\n if (barSegment.requiredSegment) bar.classList.add(\"requiredSegment\");\n if (barSegment.selectedSegment) bar.classList.add(\"selectedSegment\");\n bar.innerHTML = showLarger ? '  ' : ' ';\n\n const fullCategoryName = (unsubmitted ? 'preview-' : '') + category;\n bar.setAttribute('sponsorblock-category', fullCategoryName);\n\n // Handled by setCategoryColorCSSVariables() of content.ts\n bar.style.backgroundColor = `var(--sb-category-${fullCategoryName})`;\n if (!this.onMobileYouTube) bar.style.opacity = Config.config.barTypes[fullCategoryName]?.opacity;\n\n bar.style.position = \"absolute\";\n const duration = Math.min(segment[1], this.videoDuration) - segment[0];\n const startTime = segment[1] ? Math.min(this.videoDuration, segment[0]) : segment[0];\n const endTime = Math.min(this.videoDuration, segment[1]);\n bar.style.left = this.timeToPercentage(startTime);\n\n if (duration > 0) {\n bar.style.right = this.timeToRightPercentage(endTime);\n }\n if (this.chapterFilter(barSegment) && segment[1] < this.videoDuration) {\n bar.style.marginRight = `${this.chapterMargin}px`;\n }\n\n if (this.onYTTV) {\n bar.classList.add(\"previewbar-yttv\");\n }\n\n return bar;\n }\n\n createChaptersBar(segments: PreviewBarSegment[]): void {\n if (!this.progressBar || !this.originalChapterBar || this.originalChapterBar.childElementCount <= 0) {\n if (this.originalChapterBar) this.originalChapterBar.style.removeProperty(\"display\");\n\n // Make sure other video types lose their chapter bar\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n this.customChaptersBar = null;\n return;\n }\n\n const remakingBar = segments !== this.lastRenderedSegments;\n if (remakingBar) {\n this.lastRenderedSegments = segments;\n\n // Merge overlapping chapters\n this.unfilteredChapterGroups = this.createChapterRenderGroups(segments);\n }\n \n if ((segments.every((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))\n || (!Config.config.renderSegmentsAsChapters\n && segments.every((segment) => segment.actionType !== ActionType.Chapter\n || [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))))\n && !(hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\"))) {\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n const filteredSegments = segments?.filter((segment) => this.chapterFilter(segment));\n if (filteredSegments) {\n let groups = this.unfilteredChapterGroups;\n if (filteredSegments.length !== segments.length) {\n groups = this.createChapterRenderGroups(filteredSegments);\n }\n this.chapterGroups = groups.filter((segment) => this.chapterGroupFilter(segment));\n\n if (groups.length !== this.chapterGroups.length) {\n // Fix missing sections due to filtered segments\n for (let i = 1; i < this.chapterGroups.length; i++) {\n if (this.chapterGroups[i].segment[0] !== this.chapterGroups[i - 1].segment[1]) {\n this.chapterGroups[i - 1].segment[1] = this.chapterGroups[i].segment[0]\n }\n }\n }\n } else {\n this.chapterGroups = this.unfilteredChapterGroups;\n }\n\n if (this.chapterGroups.length === 0 && !getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Add placeholder chapter group for whole video\n this.chapterGroups = [{\n segment: [0, this.videoDuration],\n originalDuration: 0,\n actionType: null\n }];\n }\n\n if (!this.chapterGroups || this.chapterGroups.length <= 0) {\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n // Create it from cloning\n let createFromScratch = false;\n if (!this.customChaptersBar || !this.progressBar.contains(this.customChaptersBar)) {\n // Clear anything remaining\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n\n createFromScratch = true;\n this.customChaptersBar = this.originalChapterBar.cloneNode(true) as HTMLElement;\n this.customChaptersBar.classList.add(\"sponsorBlockChapterBar\");\n }\n\n this.customChaptersBar.style.display = \"none\";\n const originalSections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\");\n const originalSection = originalSections[0];\n\n // For switching to a video with less chapters\n if (originalSections.length > this.chapterGroups.length) {\n for (let i = originalSections.length - 1; i >= this.chapterGroups.length; i--) {\n this.customChaptersBar.removeChild(originalSections[i]);\n }\n }\n\n // Modify it to have sections for each segment\n for (let i = 0; i < this.chapterGroups.length; i++) {\n const chapter = this.chapterGroups[i].segment;\n let newSection = originalSections[i] as HTMLElement;\n if (!newSection) {\n newSection = originalSection.cloneNode(true) as HTMLElement;\n\n this.firstTimeSetupChapterSection(newSection);\n this.customChaptersBar.appendChild(newSection);\n } else if (createFromScratch) {\n this.firstTimeSetupChapterSection(newSection);\n }\n\n this.setupChapterSection(newSection, chapter[0], chapter[1], i !== this.chapterGroups.length - 1);\n }\n\n // Hide old bar\n this.originalChapterBar.style.display = \"none\";\n this.customChaptersBar.style.removeProperty(\"display\");\n\n if (createFromScratch) {\n if (this.container?.parentElement === this.progressBar) {\n this.progressBar.insertBefore(this.customChaptersBar, this.container.nextSibling);\n } else {\n this.progressBar.prepend(this.customChaptersBar);\n }\n }\n\n if (remakingBar) {\n this.updateChapterAllMutation(this.originalChapterBar, this.progressBar, true);\n }\n }\n\n createChapterRenderGroups(segments: PreviewBarSegment[]): ChapterGroup[] {\n const result: ChapterGroup[] = [];\n\n segments?.forEach((segment, index) => {\n const latestChapter = result[result.length - 1];\n if (latestChapter && latestChapter.segment[1] > segment.segment[0]) {\n const segmentDuration = segment.segment[1] - segment.segment[0];\n if (segment.segment[0] < latestChapter.segment[0]\n || segmentDuration < latestChapter.originalDuration) {\n // Remove latest if it starts too late\n let latestValidChapter = latestChapter;\n const chaptersToAddBack: ChapterGroup[] = []\n while (latestValidChapter?.segment[0] >= segment.segment[0]) {\n const invalidChapter = result.pop();\n if (invalidChapter.segment[1] > segment.segment[1]) {\n if (invalidChapter.segment[0] === segment.segment[0]) {\n invalidChapter.segment[0] = segment.segment[1];\n }\n\n chaptersToAddBack.push(invalidChapter);\n }\n latestValidChapter = result[result.length - 1];\n }\n\n const priorityActionType = this.getActionTypePrioritized([segment.actionType, latestChapter?.actionType]);\n\n // Split the latest chapter if smaller\n result.push({\n segment: [segment.segment[0], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: priorityActionType\n });\n if (latestValidChapter?.segment[1] > segment.segment[1]) {\n result.push({\n segment: [segment.segment[1], latestValidChapter.segment[1]],\n originalDuration: latestValidChapter.originalDuration,\n actionType: latestValidChapter.actionType\n });\n }\n\n chaptersToAddBack.reverse();\n let lastChapterChecked: number[] = segment.segment;\n for (const chapter of chaptersToAddBack) {\n if (chapter.segment[0] < lastChapterChecked[1]) {\n chapter.segment[0] = lastChapterChecked[1];\n }\n\n lastChapterChecked = chapter.segment;\n }\n result.push(...chaptersToAddBack);\n if (latestValidChapter) latestValidChapter.segment[1] = segment.segment[0];\n } else {\n // Start at end of old one otherwise\n result.push({\n segment: [latestChapter.segment[1], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: segment.actionType\n });\n }\n } else {\n // Add empty buffer before segment if needed\n const lastTime = latestChapter?.segment[1] || 0;\n if (segment.segment[0] > lastTime) {\n result.push({\n segment: [lastTime, segment.segment[0]],\n originalDuration: 0,\n actionType: null\n });\n }\n\n // Normal case\n const endTime = Math.min(segment.segment[1], this.videoDuration);\n result.push({\n segment: [segment.segment[0], endTime],\n originalDuration: endTime - segment.segment[0],\n actionType: segment.actionType\n });\n }\n\n // Add empty buffer after segment if needed\n if (index === segments.length - 1) {\n const nextSegment = segments[index + 1];\n const nextTime = nextSegment ? nextSegment.segment[0] : this.videoDuration;\n const lastTime = result[result.length - 1]?.segment[1] || segment.segment[1];\n if (this.intervalToDecimal(lastTime, nextTime) > MIN_CHAPTER_SIZE) {\n result.push({\n segment: [lastTime, nextTime],\n originalDuration: 0,\n actionType: null\n });\n }\n }\n });\n\n return result;\n }\n\n private getActionTypePrioritized(actionTypes: ActionType[]): ActionType {\n if (actionTypes.includes(ActionType.Skip)) {\n return ActionType.Skip;\n } else if (actionTypes.includes(ActionType.Mute)) {\n return ActionType.Mute;\n } else {\n return actionTypes.find(a => a) ?? actionTypes[0];\n }\n }\n\n private setupChapterSection(section: HTMLElement, startTime: number, endTime: number, addMargin: boolean): void {\n const sizePercent = this.intervalToPercentage(startTime, endTime);\n if (addMargin) {\n section.style.marginRight = `${this.chapterMargin}px`;\n section.style.width = `calc(${sizePercent} - ${this.chapterMargin}px)`;\n } else {\n section.style.marginRight = \"0\";\n section.style.width = sizePercent;\n }\n\n section.setAttribute(\"decimal-width\", String(this.intervalToDecimal(startTime, endTime)));\n }\n\n private firstTimeSetupChapterSection(section: HTMLElement): void {\n section.addEventListener(\"mouseenter\", () => {\n this.hoveredSection?.classList.remove(\"ytp-exp-chapter-hover-effect\");\n section.classList.add(\"ytp-exp-chapter-hover-effect\");\n this.hoveredSection = section;\n });\n }\n\n private createChapterMutationObservers(): void {\n if (!this.progressBar || !this.originalChapterBar) return;\n\n const attributeObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n const currentElement = mutation.target as HTMLElement;\n if (mutation.type === \"attributes\"\n && currentElement.parentElement?.classList.contains(\"ytp-progress-list\")) {\n changes[currentElement.classList[0]] = mutation.target as HTMLElement;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n attributeObserver.observe(this.originalChapterBar, {\n subtree: true,\n attributes: true,\n attributeFilter: [\"style\", \"class\"]\n });\n\n const childListObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n if (mutation.type === \"childList\") {\n this.update();\n break;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n // Only direct children, no subtree\n childListObserver.observe(this.originalChapterBar, {\n childList: true\n });\n\n addCleanupListener(() => {\n attributeObserver.disconnect();\n childListObserver.disconnect();\n });\n }\n\n private updateChapterAllMutation(originalChapterBar: HTMLElement, progressBar: HTMLElement, firstUpdate = false): void {\n const elements = originalChapterBar.querySelectorAll(\".ytp-progress-list > *\");\n const changes: Record = {};\n for (const element of elements) {\n changes[element.classList[0]] = element as HTMLElement;\n }\n\n this.updateChapterMutation(changes, progressBar, firstUpdate);\n }\n\n private updateChapterMutation(changes: Record, progressBar: HTMLElement, firstUpdate = false): void {\n // Go through each newly generated chapter bar and update the width based on changes array\n if (this.customChaptersBar) {\n // Width reached so far in decimal percent\n let cursor = 0;\n\n const sections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\") as NodeListOf;\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i];\n\n const sectionWidthDecimal = parseFloat(section.getAttribute(\"decimal-width\"));\n const sectionWidthDecimalNoMargin = sectionWidthDecimal - this.chapterMargin / progressBar.clientWidth;\n\n for (const className in changes) {\n const selector = `.${className}`\n const customChangedElement = section.querySelector(selector) as HTMLElement;\n if (customChangedElement) {\n const fullSectionWidth = i === sections.length - 1 ? sectionWidthDecimal : sectionWidthDecimalNoMargin;\n const changedElement = changes[className];\n const changedData = this.findLeftAndScale(selector, changedElement, progressBar);\n\n const left = (changedData.left) / progressBar.clientWidth;\n const calculatedLeft = Math.max(0, Math.min(1, (left - cursor) / fullSectionWidth));\n if (!isNaN(left) && !isNaN(calculatedLeft)) {\n customChangedElement.style.left = `${calculatedLeft * 100}%`;\n customChangedElement.style.removeProperty(\"display\");\n }\n\n if (changedData.scale !== null) {\n const transformScale = (changedData.scale) / progressBar.clientWidth;\n\n const scale = Math.max(0, Math.min(1 - calculatedLeft, (transformScale - cursor) / fullSectionWidth - calculatedLeft));\n customChangedElement.style.transform =\n `scaleX(${scale})`;\n if (customChangedElement.style.backgroundSize) {\n const backgroundSize = Math.max(changedData.scale / scale, fullSectionWidth * progressBar.clientWidth);\n customChangedElement.style.backgroundSize = `${backgroundSize}px`;\n\n if (changedData.scale < (cursor + fullSectionWidth) * progressBar.clientWidth) {\n customChangedElement.style.backgroundPosition = `-${backgroundSize - fullSectionWidth * progressBar.clientWidth}px`;\n } else {\n // Passed this section\n customChangedElement.style.backgroundPosition = `-${cursor * progressBar.clientWidth}px`;\n }\n }\n\n if (firstUpdate) {\n customChangedElement.style.transition = \"none\";\n setTimeout(() => customChangedElement.style.removeProperty(\"transition\"), 50);\n }\n }\n\n if (customChangedElement.className !== changedElement.className) {\n customChangedElement.className = changedElement.className;\n }\n }\n }\n\n cursor += sectionWidthDecimal;\n }\n\n if (sections.length !== 0 && sections.length !== this.existingChapters?.length\n && Date.now() - this.lastChapterUpdate > 3000) {\n this.lastChapterUpdate = Date.now();\n this.updateExistingChapters();\n }\n }\n }\n\n private findLeftAndScale(selector: string, currentElement: HTMLElement, progressBar: HTMLElement):\n { left: number; scale: number } {\n const sections = currentElement.parentElement.parentElement.parentElement.children;\n let currentWidth = 0;\n let lastWidth = 0;\n\n let left = 0;\n let leftPosition = 0;\n\n let scale = null;\n let scalePosition = 0;\n let scaleWidth = 0;\n let lastScalePosition = 0;\n\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i] as HTMLElement;\n const checkElement = section.querySelector(selector) as HTMLElement;\n const currentSectionWidthNoMargin = this.getPartialChapterSectionStyle(section, \"width\") ?? progressBar.clientWidth;\n const currentSectionWidth = currentSectionWidthNoMargin\n + this.getPartialChapterSectionStyle(section, \"marginRight\");\n\n // First check for left\n const checkLeft = parseFloat(checkElement.style.left.replace(\"px\", \"\"));\n if (checkLeft !== 0) {\n left = checkLeft;\n leftPosition = currentWidth;\n }\n\n // Then check for scale\n const transformMatch = checkElement.style.transform.match(/scaleX\\(([0-9.]+?)\\)/);\n if (transformMatch) {\n const transformScale = parseFloat(transformMatch[1]);\n const endPosition = transformScale + checkLeft / currentSectionWidthNoMargin;\n\n if (lastScalePosition > 0.99999 && endPosition === 0) {\n // Last one was an end section that was fully filled\n scalePosition = currentWidth - lastWidth;\n break;\n }\n\n lastScalePosition = endPosition;\n\n scale = transformScale;\n scaleWidth = currentSectionWidthNoMargin;\n\n if ((i === sections.length - 1 || endPosition < 0.99999) && endPosition > 0) {\n // reached the end of this section for sure\n // if the scale is always zero, then it will go through all sections but still return 0\n\n scalePosition = currentWidth;\n if (checkLeft !== 0) {\n scalePosition += left;\n }\n break;\n }\n }\n\n lastWidth = currentSectionWidth;\n currentWidth += lastWidth;\n }\n\n return {\n left: left + leftPosition,\n scale: scale !== null ? scale * scaleWidth + scalePosition : null\n };\n }\n\n private getPartialChapterSectionStyle(element: HTMLElement, param: string): number {\n const data = element.style[param];\n if (data?.includes(\"%\")) {\n return this.customChaptersBar.clientWidth * (parseFloat(data.replace(\"%\", \"\")) / 100);\n } else {\n return parseInt(element.style[param].match(/\\d+/g)?.[0]) || 0;\n }\n }\n\n updateChapterText(segments: SponsorTime[], submittingSegments: SponsorTime[], currentTime: number): SponsorTime[] {\n if (!Config.config.showSegmentNameInChapterBar\n || Config.config.disableSkipping\n || ((!segments || segments.length <= 0) && submittingSegments?.length <= 0 \n && (getSkipProfileBool(\"showAutogeneratedChapters\") || !hasAutogeneratedChapters()))) {\n const chaptersContainer = this.getChaptersContainer();\n if (chaptersContainer) {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n \n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n }\n\n return [];\n }\n\n segments ??= [];\n if (submittingSegments?.length > 0) segments = segments.concat(submittingSegments);\n const activeSegments = segments.filter((segment) => {\n return segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime && segment.segment[1] > currentTime\n && segment.category !== DEFAULT_CATEGORY\n && getCategorySelection(segment).option !== CategorySkipOption.Disabled\n });\n\n this.setActiveSegments(activeSegments);\n return activeSegments;\n }\n\n /**\n * Adds the text to the chapters slot if not filled by default\n */\n private setActiveSegments(segments: SponsorTime[]): void {\n const chaptersContainer = this.getChaptersContainer();\n\n if (chaptersContainer) {\n if (segments.length > 0) {\n chaptersContainer.classList.add(\"sponsorblock-chapter-visible\");\n\n const chosenSegment = segments.sort((a, b) => {\n if (a.actionType === ActionType.Chapter && b.actionType !== ActionType.Chapter) {\n return -1;\n } else if (a.actionType !== ActionType.Chapter && b.actionType === ActionType.Chapter) {\n return 1;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source === SponsorSourceType.Server && b.source !== SponsorSourceType.Server) {\n return -0.5;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source !== SponsorSourceType.Server && b.source === SponsorSourceType.Server) {\n return 0.5;\n } else {\n return (b.segment[0] - a.segment[0]) * 4;\n }\n })[0];\n\n const chapterButton = this.getChapterButton(chaptersContainer);\n if (chapterButton) {\n chapterButton.classList.remove(\"ytp-chapter-container-disabled\");\n chapterButton.disabled = false;\n }\n\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n chapterTitle.style.display = \"none\";\n\n const chapterCustomText = (chapterTitle.parentElement.querySelector(\".sponsorChapterText\") || (() => {\n const elem = document.createElement(\"div\");\n chapterTitle.parentElement.insertBefore(elem, chapterTitle);\n elem.classList.add(\"sponsorChapterText\");\n if (document.location.host === \"tv.youtube.com\") {\n elem.style.lineHeight = \"initial\";\n }\n return elem;\n })()) as HTMLDivElement;\n chapterCustomText.innerText = chosenSegment.description || shortCategoryName(chosenSegment.category);\n\n if (chosenSegment.actionType !== ActionType.Chapter) {\n chapterTitle.classList.add(\"sponsorBlock-segment-title\");\n } else {\n chapterTitle.classList.remove(\"sponsorBlock-segment-title\");\n }\n\n if (chosenSegment.source === SponsorSourceType.Server) {\n const chapterVoteContainer = this.chapterVote.getContainer();\n if (document.location.host === \"tv.youtube.com\") {\n if (!chaptersContainer.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n chaptersContainer.appendChild(chapterVoteContainer);\n }\n } else if (!chapterButton.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n\n chapterButton.insertBefore(chapterVoteContainer, this.getChapterChevron());\n }\n\n this.chapterVote.setVisibility(true);\n this.chapterVote.setSegment(chosenSegment);\n } else {\n this.chapterVote.setVisibility(false);\n }\n } else if (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Keep original hidden\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.display = \"none\";\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n\n const titlePrefixDot = chaptersContainer.querySelector(\".ytp-chapter-title-prefix\") as HTMLElement;\n if (titlePrefixDot) titlePrefixDot.style.display = \"none\";\n \n this.chapterVote.setVisibility(false);\n } else {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n \n this.chapterVote.setVisibility(false);\n }\n }\n }\n\n private getChaptersContainer(): HTMLElement {\n if (document.location.host === \"tv.youtube.com\") {\n if (!document.querySelector(\".ytp-chapter-container\")) {\n const dest = document.querySelector(\".ypcs-control-buttons-left\");\n if (!dest) return null;\n const sbChapterContainer = document.createElement(\"div\");\n sbChapterContainer.className = \"ytp-chapter-container\";\n const sbChapterTitleContent = document.createElement(\"div\");\n sbChapterTitleContent.className = \"ytp-chapter-title-content\";\n sbChapterContainer.appendChild(sbChapterTitleContent);\n dest.appendChild(sbChapterContainer);\n }\n }\n return document.querySelector(\".ytp-chapter-container\") as HTMLElement;\n }\n\n private getChapterButton(chaptersContainer: HTMLElement): HTMLButtonElement {\n return (chaptersContainer ?? this.getChaptersContainer())\n ?.querySelector(\"button.ytp-chapter-title\") as HTMLButtonElement;\n }\n\n remove(): void {\n this.container.remove();\n\n if (this.categoryTooltip) {\n this.categoryTooltip.remove();\n this.categoryTooltip = undefined;\n }\n\n if (this.categoryTooltipContainer) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n this.categoryTooltipContainer = undefined;\n }\n }\n\n private chapterFilter(segment: PreviewBarSegment): boolean {\n return (Config.config.renderSegmentsAsChapters || segment.actionType === ActionType.Chapter)\n && segment.actionType !== ActionType.Poi\n && this.chapterGroupFilter(segment);\n }\n\n private chapterGroupFilter(segment: SegmentContainer): boolean {\n return segment.segment.length === 2 && this.intervalToDecimal(segment.segment[0], segment.segment[1]) > MIN_CHAPTER_SIZE;\n }\n\n intervalToPercentage(startTime: number, endTime: number) {\n return `${this.intervalToDecimal(startTime, endTime) * 100}%`;\n }\n\n intervalToDecimal(startTime: number, endTime: number) {\n return (this.timeToDecimal(endTime) - this.timeToDecimal(startTime));\n }\n\n timeToPercentage(time: number): string {\n return `${this.timeToDecimal(time) * 100}%`\n }\n\n timeToRightPercentage(time: number): string {\n return `${(1 - this.timeToDecimal(time)) * 100}%`\n }\n\n timeToDecimal(time: number): number {\n return this.decimalTimeConverter(time, true);\n }\n\n decimalToTime(decimal: number): number {\n return this.decimalTimeConverter(decimal, false);\n }\n\n /**\n * Decimal to time or time to decimal\n */\n decimalTimeConverter(value: number, isTime: boolean): number {\n if (this.originalChapterBarBlocks?.length > 1 && this.existingChapters.length === this.originalChapterBarBlocks?.length) {\n // Parent element to still work when display: none\n const totalPixels = this.originalChapterBar.parentElement.clientWidth;\n let pixelOffset = 0;\n let lastCheckedChapter = -1;\n for (let i = 0; i < this.originalChapterBarBlocks.length; i++) {\n const chapterElement = this.originalChapterBarBlocks[i];\n const widthPixels = parseFloat(chapterElement.style.width.replace(\"px\", \"\"));\n\n const marginPixels = chapterElement.style.marginRight ? parseFloat(chapterElement.style.marginRight.replace(\"px\", \"\")) : 0;\n if ((isTime && value >= this.existingChapters[i].segment[1])\n || (!isTime && value >= (pixelOffset + widthPixels + marginPixels) / totalPixels)) {\n pixelOffset += widthPixels + marginPixels;\n lastCheckedChapter = i;\n } else {\n break;\n }\n }\n\n // The next chapter is the one we are currently inside of\n const latestChapter = this.existingChapters[lastCheckedChapter + 1];\n if (latestChapter) {\n const latestWidth = parseFloat(this.originalChapterBarBlocks[lastCheckedChapter + 1].style.width.replace(\"px\", \"\"));\n const latestChapterDuration = latestChapter.segment[1] - latestChapter.segment[0];\n\n if (isTime) {\n const percentageInCurrentChapter = (value - latestChapter.segment[0]) / latestChapterDuration;\n const sizeOfCurrentChapter = latestWidth / totalPixels;\n return Math.min(1, ((pixelOffset / totalPixels) + (percentageInCurrentChapter * sizeOfCurrentChapter)));\n } else {\n const percentageInCurrentChapter = (value * totalPixels - pixelOffset) / latestWidth;\n return Math.max(0, latestChapter.segment[0] + (percentageInCurrentChapter * latestChapterDuration));\n }\n }\n }\n\n if (isTime) {\n return Math.min(1, value / this.videoDuration);\n } else {\n return Math.max(0, value * this.videoDuration);\n }\n }\n\n /*\n * Approximate size on preview bar for smallest element (due to  )\n */\n getMinimumSize(showLarger = false): number {\n return this.videoDuration * (showLarger ? 0.006 : 0.003);\n }\n\n // Name parameter used for cache\n private getSmallestSegment(timeInSeconds: number, segments: PreviewBarSegment[], name?: string): PreviewBarSegment | null {\n const proposedIndex = name ? this.lastSmallestSegment[name]?.index : null;\n const startSearchIndex = proposedIndex && segments[proposedIndex] === this.lastSmallestSegment[name].segment ? proposedIndex : 0;\n const direction = startSearchIndex > 0 && timeInSeconds < this.lastSmallestSegment[name].segment.segment[0] ? -1 : 1;\n\n let segment: PreviewBarSegment | null = null;\n let index = -1;\n let currentSegmentLength = Infinity;\n\n for (let i = startSearchIndex; i < segments.length && i >= 0; i += direction) {\n const seg = segments[i];\n const segmentLength = seg.segment[1] - seg.segment[0];\n const minSize = this.getMinimumSize(seg.showLarger);\n\n const startTime = segmentLength !== 0 ? seg.segment[0] : Math.floor(seg.segment[0]);\n const endTime = segmentLength > minSize ? seg.segment[1] : Math.ceil(seg.segment[0] + minSize);\n if (startTime <= timeInSeconds && endTime >= timeInSeconds) {\n if (segmentLength < currentSegmentLength) {\n currentSegmentLength = segmentLength;\n segment = seg;\n index = i;\n }\n }\n\n if (direction === 1 && seg.segment[0] > timeInSeconds) {\n break;\n }\n }\n\n if (segment) {\n this.lastSmallestSegment[name] = {\n index: index,\n segment: segment\n };\n }\n\n return segment;\n }\n\n private getChapterChevron(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-chevron\");\n }\n}\n\nexport default PreviewBar;\n","import Config from \"../config\";\nimport { SegmentUUID, SponsorTime } from \"../types\";\nimport { getSkippingText } from \"../utils/categoryUtils\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { isMobileControlsOpen } from \"../utils/mobileUtils\";\n\nexport interface SkipButtonControlBarProps {\n skip: (segment: SponsorTime) => void;\n selectSegment: (UUID: SegmentUUID) => void;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n}\n\nexport class SkipButtonControlBar {\n\n container: HTMLElement;\n skipIcon: HTMLImageElement;\n textContainer: HTMLElement;\n chapterText: HTMLElement;\n segment: SponsorTime;\n\n showKeybindHint = true;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n\n enabled = false;\n\n timeout: NodeJS.Timeout;\n duration = 0;\n\n skip: (segment: SponsorTime) => void;\n\n // Used if on mobile page\n hideButton: () => void;\n showButton: () => void;\n\n // Used by mobile only for swiping away\n left = 0;\n swipeStart = 0;\n\n constructor(props: SkipButtonControlBarProps) {\n this.skip = props.skip;\n this.onMobileYouTube = props.onMobileYouTube;\n this.onYTTV = props.onYTTV;\n\n this.container = document.createElement(\"div\");\n this.container.classList.add(\"skipButtonControlBarContainer\");\n this.container.classList.add(\"sbhidden\");\n if (this.onMobileYouTube) this.container.classList.add(\"mobile\");\n\n this.skipIcon = document.createElement(\"img\");\n this.skipIcon.src = chrome.runtime.getURL(\"icons/skipIcon.svg\");\n this.skipIcon.classList.add(\"ytp-button\");\n this.skipIcon.id = \"sbSkipIconControlBarImage\";\n if (this.onYTTV) {\n this.skipIcon.style.width = \"24px\";\n this.skipIcon.style.height = \"24px\";\n }\n\n this.textContainer = document.createElement(\"div\");\n\n this.container.appendChild(this.skipIcon);\n this.container.appendChild(this.textContainer);\n this.container.addEventListener(\"click\", () => this.toggleSkip());\n this.container.addEventListener(\"mouseenter\", () => {\n this.stopTimer();\n\n if (this.segment) {\n props.selectSegment(this.segment.UUID);\n }\n });\n this.container.addEventListener(\"mouseleave\", () => {\n this.startTimer();\n\n props.selectSegment(null);\n });\n if (this.onMobileYouTube) {\n this.container.addEventListener(\"touchstart\", (e) => this.handleTouchStart(e));\n this.container.addEventListener(\"touchmove\", (e) => this.handleTouchMove(e));\n this.container.addEventListener(\"touchend\", () => this.handleTouchEnd());\n }\n }\n\n getElement(): HTMLElement {\n return this.container;\n }\n\n attachToPage(): void {\n const mountingContainer = this.getMountingContainer();\n this.chapterText = document.querySelector(\".ytp-chapter-container\");\n\n if (mountingContainer && !mountingContainer.contains(this.container)) {\n if (this.onMobileYouTube || this.onYTTV) {\n mountingContainer.appendChild(this.container);\n } else {\n mountingContainer.insertBefore(this.container, this.chapterText);\n }\n\n if (!this.onMobileYouTube) {\n AnimationUtils.setupAutoHideAnimation(this.skipIcon, mountingContainer, false, false);\n } else {\n const { hide, show } = AnimationUtils.setupCustomHideAnimation(this.skipIcon, mountingContainer, false, false);\n this.hideButton = hide;\n this.showButton = show;\n }\n }\n }\n\n private getMountingContainer(): HTMLElement {\n if (!this.onMobileYouTube && !this.onYTTV) {\n return document.querySelector(\".ytp-left-controls\");\n } else if (this.onYTTV) {\n return document.querySelector(\".ypcs-control-buttons-left\");\n } else {\n return document.getElementById(\"player-container-id\");\n }\n }\n\n enable(segment: SponsorTime, duration?: number): void {\n if (duration) this.duration = duration;\n this.segment = segment;\n this.enabled = true;\n\n this.refreshText();\n this.container?.classList?.remove(\"textDisabled\");\n this.textContainer?.classList?.remove(\"sbhidden\");\n AnimationUtils.disableAutoHideAnimation(this.skipIcon);\n\n this.startTimer();\n }\n\n refreshText(): void {\n if (this.segment) {\n this.chapterText?.classList?.add(\"sbhidden\");\n this.container.classList.remove(\"sbhidden\");\n this.textContainer.innerText = this.getTitle();\n this.skipIcon.setAttribute(\"title\", this.getTitle());\n }\n }\n\n setShowKeybindHint(show: boolean): void {\n this.showKeybindHint = show;\n\n this.refreshText();\n }\n\n stopTimer(): void {\n if (this.timeout) clearTimeout(this.timeout);\n }\n\n startTimer(): void {\n this.stopTimer();\n this.timeout = setTimeout(() => this.disableText(), Math.max(Config.config.skipNoticeDuration, this.duration) * 1000);\n }\n\n disable(): void {\n this.container.classList.add(\"sbhidden\");\n\n this.chapterText?.classList?.remove(\"sbhidden\");\n this.getChapterPrefix()?.classList?.remove(\"sbhidden\");\n\n this.enabled = false;\n }\n\n isEnabled(): boolean {\n return this.enabled;\n }\n\n toggleSkip(): void {\n if (this.segment && this.enabled) {\n this.skip(this.segment);\n this.disableText();\n }\n }\n\n disableText(): void {\n if (Config.config.hideSkipButtonPlayerControls) {\n this.disable();\n return;\n }\n\n this.container.classList.add(\"textDisabled\");\n this.textContainer?.classList?.add(\"sbhidden\");\n this.chapterText?.classList?.remove(\"sbhidden\");\n\n this.getChapterPrefix()?.classList?.add(\"sbhidden\");\n\n AnimationUtils.enableAutoHideAnimation(this.skipIcon);\n if (this.onMobileYouTube) {\n this.hideButton();\n }\n }\n\n updateMobileControls(): void {\n if (this.enabled) {\n if (isMobileControlsOpen()) {\n this.showButton();\n } else {\n this.hideButton();\n }\n }\n }\n\n private getTitle(): string {\n return getSkippingText([this.segment], false) + (this.showKeybindHint ? \" (\" + keybindToString(Config.config.skipToHighlightKeybind) + \")\" : \"\");\n }\n\n private getChapterPrefix(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-prefix\");\n }\n\n // Swiping away on mobile\n private handleTouchStart(event: TouchEvent): void {\n this.swipeStart = event.touches[0].clientX;\n }\n\n // Swiping away on mobile\n private handleTouchMove(event: TouchEvent): void {\n const distanceMoved = this.swipeStart - event.touches[0].clientX;\n this.left = Math.min(-distanceMoved, 0);\n\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private handleTouchEnd(): void {\n if (this.left < -this.container.offsetWidth / 2) {\n this.disableText();\n\n // Don't let animation play\n this.skipIcon.style.display = \"none\";\n setTimeout(() => this.skipIcon.style.removeProperty(\"display\"), 200);\n }\n\n this.left = 0;\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private updateLeftStyle() {\n this.container.style.left = this.left + \"px\";\n }\n}\n","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport CategoryPillComponent, { CategoryPillState } from \"../components/CategoryPillComponent\";\nimport Config from \"../config\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\nimport { Tooltip } from \"./Tooltip\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../../maze-utils/src/elements\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\n\nconst id = \"categoryPill\";\n\nexport class CategoryPill {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n lastState: CategoryPillState;\n\n mutationObserver?: MutationObserver;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n \n constructor() {\n this.ref = React.createRef();\n\n addCleanupListener(() => {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n });\n }\n\n async attachToPage(onMobileYouTube: boolean, onInvidious: boolean,\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise): Promise {\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.vote = vote;\n\n this.attachToPageInternal();\n }\n\n private async attachToPageInternal(): Promise {\n let referenceNode =\n await waitFor(() => getYouTubeTitleNode());\n\n // Experimental YouTube layout with description on right\n const isOnDescriptionOnRightLayout = document.querySelector(\"#title #description\");\n if (isOnDescriptionOnRightLayout) {\n referenceNode = referenceNode.parentElement;\n }\n\n if (referenceNode && !referenceNode.contains(this.container)) {\n if (!this.container) {\n this.container = document.createElement('span');\n this.container.id = id;\n this.container.style.display = \"relative\";\n\n this.root = createRoot(this.container);\n this.ref = React.createRef();\n this.root.render();\n\n if (this.onMobileYouTube) {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n \n this.mutationObserver = new MutationObserver((changes) => {\n if (changes.some((change) => change.removedNodes.length > 0)) {\n this.attachToPageInternal();\n }\n });\n \n this.mutationObserver.observe(referenceNode, { \n childList: true,\n subtree: true\n });\n }\n }\n\n if (this.lastState) {\n waitFor(() => this.ref.current).then(() => {\n this.ref.current?.setState(this.lastState);\n });\n }\n\n // Use a parent because YouTube does weird things to the top level object\n // react would have to rerender if container was the top level\n const parent = document.createElement(\"span\");\n parent.id = \"categoryPillParent\";\n parent.appendChild(this.container);\n\n referenceNode.prepend(parent);\n if (!isOnDescriptionOnRightLayout) {\n referenceNode.style.display = \"flex\";\n }\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n open: show ? this.ref.current?.state.open : false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n }\n\n async setSegment(segment: SponsorTime): Promise {\n await waitFor(() => this.ref.current);\n\n if (this.ref.current?.state?.segment !== segment || !this.ref.current?.state?.show) {\n const newState = {\n segment,\n show: true,\n open: false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n\n if (!Config.config.categoryPillUpdate) {\n Config.config.categoryPillUpdate = true;\n\n const watchDiv = await waitFor(() => document.querySelector(\"#info.ytd-watch-flexy\") as HTMLElement);\n if (watchDiv) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"categoryPillNewFeature\"),\n link: \"https://blog.ajay.app/full-video-sponsorblock\",\n referenceNode: watchDiv,\n prependElement: watchDiv.firstChild as HTMLElement,\n bottomOffset: \"-10px\",\n opacity: 0.95,\n timeout: 50000\n });\n }\n }\n }\n\n if (this.onMobileYouTube && !document.contains(this.container)) {\n this.attachToPageInternal();\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport ChapterVoteComponent, { ChapterVoteState } from \"../components/ChapterVoteComponent\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nexport class ChapterVote {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n unsavedState: ChapterVoteState;\n\n mutationObserver?: MutationObserver;\n \n constructor(vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise) {\n this.ref = React.createRef();\n\n this.container = document.createElement('span');\n this.container.id = \"chapterVote\";\n this.container.style.height = \"100%\";\n\n if (document.location.host === \"tv.youtube.com\") {\n this.container.style.lineHeight = \"initial\";\n }\n\n this.root = createRoot(this.container);\n this.root.render();\n }\n\n getContainer(): HTMLElement {\n return this.container;\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n ...(!show ? { segment: null } : {})\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n\n async setSegment(segment: SponsorTime): Promise {\n if (this.ref.current?.state?.segment !== segment) {\n const newState = {\n segment,\n show: true\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nexport interface RectangleTooltipProps {\n text: string; \n link?: string;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n leftOffset?: string;\n timeout?: number;\n htmlId?: string;\n maxHeight?: string;\n maxWidth?: string;\n backgroundColor?: string;\n fontSize?: string;\n buttonFunction?: () => void;\n}\n\nexport class RectangleTooltip {\n text: string; \n container: HTMLDivElement;\n root: Root;\n timer: NodeJS.Timeout;\n \n constructor(props: RectangleTooltipProps) {\n props.bottomOffset ??= \"0px\";\n props.leftOffset ??= \"0px\";\n props.maxHeight ??= \"100px\";\n props.maxWidth ??= \"300px\";\n props.backgroundColor ??= \"rgba(28, 28, 28, 0.7)\";\n this.text = props.text;\n props.fontSize ??= \"10px\";\n\n this.container = document.createElement('div');\n props.htmlId ??= \"sponsorRectangleTooltip\" + props.text;\n this.container.id = props.htmlId;\n this.container.style.display = \"relative\";\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n \n \n \n {this.text + (props.link ? \". \" : \"\")}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null}\n \n
\n \n
\n )\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nimport { SponsorTime, ContentContainer, NoticeVisibilityMode } from \"../types\";\nimport Config from \"../config\";\nimport { SkipNoticeAction } from \"../utils/noticeUtils\";\n\nclass SkipNotice {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n skipNoticeRef: React.MutableRefObject;\n root: Root;\n\n constructor(segments: SponsorTime[], autoSkip = false, contentContainer: ContentContainer, componentDidMount: () => void, unskipTime: number = null, startReskip = false, upcomingNoticeShown: boolean, voteNotice = false) {\n this.skipNoticeRef = React.createRef();\n\n this.segments = segments;\n this.autoSkip = autoSkip;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n \n const amountOfPreviousNotices = document.getElementsByClassName(\"sponsorSkipNotice\").length;\n //this is the suffix added at the end of every id\n let idSuffix = \"\";\n for (const segment of this.segments) {\n idSuffix += segment.UUID;\n }\n idSuffix += amountOfPreviousNotices;\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={!voteNotice && (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAll \n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAutoSkip && autoSkip))}\n fadeIn={!upcomingNoticeShown && !voteNotice}\n unskipTime={unskipTime}\n componentDidMount={componentDidMount} />\n );\n }\n\n setShowKeybindHint(value: boolean): void {\n this.skipNoticeRef?.current?.setState({\n showKeybindHint: value\n });\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n\n const skipNotices = this.contentContainer().skipNotices;\n skipNotices.splice(skipNotices.indexOf(this), 1);\n }\n\n toggleSkip(): void {\n this.skipNoticeRef?.current?.prepAction(SkipNoticeAction.Unskip0);\n }\n\n unmutedListener(time: number): void {\n this.skipNoticeRef?.current?.unmutedListener(time);\n }\n\n async waitForSkipNoticeRef(): Promise {\n const waitForRef = () => new Promise((resolve) => {\n const observer = new MutationObserver(() => {\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n observer.observe(document.getElementsByClassName(\"sponsorSkipNoticeContainer\")[0], { childList: true, subtree: true});\n\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n return this.skipNoticeRef?.current || await waitForRef();\n }\n}\n\nexport default SkipNotice;","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SubmissionNoticeComponent from \"../components/SubmissionNoticeComponent\";\nimport { ContentContainer } from \"../types\";\n\nclass SubmissionNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: () => unknown;\n\n callback: () => Promise;\n\n noticeRef: React.MutableRefObject;\n\n noticeElement: HTMLDivElement;\n\n root: Root;\n\n constructor(contentContainer: ContentContainer, callback: () => Promise) {\n this.noticeRef = React.createRef();\n\n this.contentContainer = contentContainer;\n this.callback = callback;\n\n const referenceNode = utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.id = \"submissionNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close(false)} />\n );\n }\n\n update(): void {\n this.noticeRef.current.forceUpdate();\n }\n\n close(callRef = true): void {\n if (callRef) this.noticeRef.current.cancel();\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n\n submit(): void {\n this.noticeRef.current?.submit?.();\n }\n\n scrollToBottom(): void {\n this.noticeRef.current?.scrollToBottom?.();\n }\n}\n\nexport default SubmissionNotice;","import { GenericTooltip, TooltipProps } from \"../../maze-utils/src/components/Tooltip\";\n\nexport class Tooltip extends GenericTooltip {\n constructor(props: TooltipProps) {\n super(props, \"icons/IconSponsorBlocker256px.png\")\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ContentContainer, SponsorTime } from \"../types\";\n\nimport Utils from \"../utils\";\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nconst utils = new Utils();\n\nclass UpcomingNotice {\n segments: SponsorTime[];\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n upcomingNoticeRef: React.MutableRefObject;\n root: Root;\n\n closed = false;\n\n constructor(segments: SponsorTime[], contentContainer: ContentContainer, timeLeft: number, autoSkip: boolean) {\n this.upcomingNoticeRef = React.createRef();\n\n this.segments = segments;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={true}\n fadeIn={true}\n maxCountdownTime={timeLeft} />\n );\n }\n\n close(): void {\n this.root.unmount();\n this.noticeElement.remove();\n\n this.closed = true;\n }\n\n sameNotice(segments: SponsorTime[]): boolean {\n if (segments.length !== this.segments.length) return false;\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i].UUID !== this.segments[i].UUID) return false;\n }\n\n return true;\n }\n}\n\nexport default UpcomingNotice;","import * as React from \"react\";\n\nconst pencilSvg = ({\n fill = \"#ffffff\"\n }): JSX.Element => (\n \n \n \n );\n\nexport default pencilSvg;\n","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import * as React from \"react\";\n\nconst thumbsDownSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n \n
\n
\n \n );\n\nexport default thumbsDownSvg;\n","import * as React from \"react\";\n\nconst thumbsUpSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n
\n
\n \n );\n\nexport default thumbsUpSvg;\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","export function partition(array: T[], filter: (element: T) => boolean): [T[], T[]] {\n const pass = [], fail = [];\n array.forEach((element) => (filter(element) ? pass : fail).push(element));\n \n return [pass, fail];\n}","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function runCompatibilityChecks() {\n if (Config.config.showZoomToFillError2 && document.URL.includes(\"watch?v=\")) {\n setTimeout(() => {\n const zoomToFill = document.querySelector(\".zoomtofillBtn\");\n \n if (zoomToFill) {\n alert(chrome.i18n.getMessage(\"zoomToFillUnsupported\"));\n }\n\n Config.config.showZoomToFillError2 = false;\n }, 10000);\n }\n}\n\nexport function isVorapisInstalled() {\n return document.querySelector(`.v3`);\n}","import { TextBox } from \"../render/GenericNotice\";\nimport { Category } from \"../types\";\n\nexport function getGuidelineInfo(category: Category): TextBox[] {\n switch (category) {\n case \"sponsor\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"selfpromo\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"exclusive_access\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }];\n case \"interaction\":\n return [{\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"intro\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"outro\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"preview\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"hook\":\n return [{\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"filler\":\n return [{\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"music_offtopic\":\n return [{\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"poi_highlight\":\n return [{\n icon: \"icons/star.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n case \"chapter\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n default:\n return [{\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n }\n}\n\nexport const defaultPreviewTime = 2;","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","/* Gets percieved luminance of a color */\nfunction getLuminance(color: string): number {\n const {r, g, b} = hexToRgb(color);\n return Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\n}\n\n/* Converts hex color to rgb color */\nconst hexChars = \"0123456789abcdef\";\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n if (hex.length == 4)\n hex = \"#\" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\n return /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n ? {\n r: hexChars.indexOf(hex[1]) * 16 + hexChars.indexOf(hex[2]),\n g: hexChars.indexOf(hex[3]) * 16 + hexChars.indexOf(hex[4]),\n b: hexChars.indexOf(hex[5]) * 16 + hexChars.indexOf(hex[6]),\n }: null;\n}\n\n/**\n * List of all indexes that have the specified value\n * https://stackoverflow.com/a/54954694/1985387\n */\nfunction indexesOf(array: T[], value: T): number[] {\n return array.map((v, i) => v === value ? i : -1).filter(i => i !== -1);\n}\n\nexport const GenericUtils = {\n getLuminance,\n indexesOf\n}\n","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","export function isMobileControlsOpen(): boolean {\n const overlay = document.getElementById(\"player-control-overlay\");\n\n if (overlay) {\n return !!overlay?.classList?.contains(\"fadein\");\n }\n\n return false;\n}","import Config from \"../config\";\nimport { SponsorTime } from \"../types\";\n\nexport enum SkipNoticeAction {\n None,\n Upvote,\n Downvote,\n CategoryVote,\n CopyDownvote,\n Unskip0,\n Unskip1\n}\n\nexport function downvoteButtonColor(segments: SponsorTime[], actionState: SkipNoticeAction, downvoteType: SkipNoticeAction): string {\n // Also used for \"Copy and Downvote\"\n if (segments?.length > 1) {\n return (actionState === downvoteType) ? Config.config.colorPalette.red : Config.config.colorPalette.white;\n } else {\n // You dont have segment selectors so the lockbutton needs to be colored and cannot be selected.\n return Config.config.isVip && segments?.[0].locked === 1 ? Config.config.colorPalette.locked : Config.config.colorPalette.white;\n }\n}","export function cleanPage() {\n // For live-updates\n if (document.readyState === \"complete\") {\n for (const element of document.querySelectorAll(\"#categoryPillParent, .playerButton, .sponsorThumbnailLabel, #submissionNoticeContainer, .sponsorSkipNoticeContainer, #sponsorBlockPopupContainer, .skipButtonControlBarContainer, #previewbar, .sponsorBlockChapterBar\")) {\n element.remove();\n }\n }\n}","import { ActionType, Category, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { getSkipProfileBool } from \"./skipProfiles\";\n\nexport function getControls(): HTMLElement {\n const controlsSelectors = [\n // YouTube\n \".ytp-right-controls\",\n // Mobile YouTube\n \".player-controls-top\",\n // Invidious/videojs video element's controls element\n \".vjs-control-bar\",\n // Piped shaka player\n \".shaka-bottom-controls\",\n // Vorapis v3\n \".html5-player-chrome\",\n // tv.youtube.com\n \".ypcs-control-buttons-right\"\n ];\n\n for (const controlsSelector of controlsSelectors) {\n const controls = Array.from(document.querySelectorAll(controlsSelector)).filter(el => !isInPreviewPlayer(el));\n\n if (controls.length > 0) {\n return controls[controls.length - 1];\n }\n }\n\n return null;\n}\n\nexport function isInPreviewPlayer(element: Element): boolean {\n return !!element.closest(\"#inline-preview-player\");\n}\n\nexport function isVisible(element: HTMLElement): boolean {\n return element && element.offsetWidth > 0 && element.offsetHeight > 0;\n}\n\nexport function getHashParams(): Record {\n const windowHash = window.location.hash.slice(1);\n if (windowHash) {\n const params: Record = windowHash.split('&').reduce((acc, param) => {\n const [key, value] = param.split('=');\n const decoded = decodeURIComponent(value);\n try {\n acc[key] = decoded?.match(/{|\\[/) ? JSON.parse(decoded) : value;\n } catch (e) {\n console.error(`Failed to parse hash parameter ${key}: ${value}`);\n }\n\n return acc;\n }, {});\n\n return params;\n }\n\n return {};\n}\n\nexport function hasAutogeneratedChapters(): boolean {\n return !!document.querySelector(\"ytd-engagement-panel-section-list-renderer ytd-macro-markers-list-renderer #menu\");\n}\n\nexport function getExistingChapters(currentVideoID: VideoID, duration: number): SponsorTime[] {\n const chaptersBox = document.querySelector(\"ytd-macro-markers-list-renderer\");\n const title = chaptersBox?.closest(\"ytd-engagement-panel-section-list-renderer\")?.querySelector(\"#title-text.ytd-engagement-panel-title-header-renderer\");\n if (title?.textContent?.includes(\"Key moment\")) return [];\n\n const autogenerated = hasAutogeneratedChapters();\n if (!getSkipProfileBool(\"showAutogeneratedChapters\") && autogenerated) return [];\n\n const chapters: SponsorTime[] = [];\n // .ytp-timed-markers-container indicates that key-moments are present, which should not be divided\n if (chaptersBox) {\n let lastSegment: SponsorTime = null;\n const links = chaptersBox.querySelectorAll(\"ytd-macro-markers-list-item-renderer > a\");\n for (const link of links) {\n const timeElement = link.querySelector(\"#time\") as HTMLElement;\n const description = link.querySelector(\"#details h4\") as HTMLElement;\n if (timeElement && description?.innerText?.length > 0 && link.getAttribute(\"href\")?.includes(currentVideoID)) {\n const time = getFormattedTimeToSeconds(timeElement.innerText.replace(/\\./g, \":\"));\n if (time === null) return [];\n\n if (lastSegment) {\n lastSegment.segment[1] = time;\n chapters.push(lastSegment);\n }\n\n lastSegment = {\n segment: [time, null],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: description.innerText,\n source: autogenerated ? SponsorSourceType.Autogenerated : SponsorSourceType.YouTube,\n UUID: null\n };\n }\n }\n\n if (lastSegment) {\n lastSegment.segment[1] = duration;\n chapters.push(lastSegment);\n }\n }\n\n return chapters;\n}\n\nexport function isPlayingPlaylist() {\n return !!document.URL.includes(\"&list=\");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { DataCache } from \"../../maze-utils/src/cache\";\nimport { getHash, HashedValue } from \"../../maze-utils/src/hash\";\nimport Config, { } from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { ActionTypes, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getHashParams } from \"./pageUtils\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { extensionUserAgent } from \"../../maze-utils/src\";\nimport { logRequest, serializeOrStringify } from \"../../maze-utils/src/background-request-proxy\";\n\nconst segmentDataCache = new DataCache(() => {\n return {\n segments: null,\n status: 200\n };\n}, 5);\n\nconst pendingList: Record> = {};\n\nexport interface SegmentResponse {\n segments: SponsorTime[] | null;\n status: number | Error | string;\n}\n\nexport async function getSegmentsForVideo(videoID: VideoID, ignoreCache: boolean): Promise {\n if (!ignoreCache) {\n const cachedData = segmentDataCache.getFromCache(videoID);\n if (cachedData) {\n segmentDataCache.cacheUsed(videoID);\n return cachedData;\n }\n }\n\n if (pendingList[videoID]) {\n return await pendingList[videoID];\n }\n\n const pendingData = fetchSegmentsForVideo(videoID);\n pendingList[videoID] = pendingData;\n\n let result: Awaited;\n try {\n result = await pendingData;\n } catch (e) {\n console.error(\"[SB] Caught error while fetching segments\", e);\n return {\n segments: null,\n status: serializeOrStringify(e),\n }\n } finally {\n delete pendingList[videoID];\n }\n\n return result;\n}\n\nasync function fetchSegmentsForVideo(videoID: VideoID): Promise {\n const extraRequestData: Record = {};\n const hashParams = getHashParams();\n if (hashParams.requiredSegment) extraRequestData.requiredSegment = hashParams.requiredSegment;\n\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 5) as VideoID & HashedValue;\n const hasDownvotedSegments = !!Config.local.downvotedSegments[hashPrefix.slice(0, 4)];\n const response = await asyncRequestToServer('GET', \"/api/skipSegments/\" + hashPrefix, {\n categories: CompileConfig.categoryList,\n actionTypes: ActionTypes,\n trimUUIDs: hasDownvotedSegments ? null : 5,\n ...extraRequestData\n }, {\n \"X-CLIENT-NAME\": extensionUserAgent(),\n });\n\n if (response.ok) {\n const receivedSegments: SponsorTime[] = JSON.parse(response.responseText)\n ?.filter((video) => video.videoID === videoID)\n ?.map((video) => video.segments)?.[0]\n ?.map((segment) => ({\n ...segment,\n source: SponsorSourceType.Server\n }))\n ?.sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (receivedSegments && receivedSegments.length) {\n const result = {\n segments: receivedSegments,\n status: response.status\n };\n\n segmentDataCache.setupCache(videoID).segments = result.segments;\n return result;\n } else {\n // Setup with null data\n segmentDataCache.setupCache(videoID);\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"skip segments\");\n }\n\n return {\n segments: null,\n status: response.status\n };\n}","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","import { getCurrentPageTitle } from \"../../maze-utils/src/elements\";\nimport { getChannelIDInfo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { CategorySelection, CategorySkipOption, SponsorSourceType, SponsorTime } from \"../types\";\nimport { getSkipProfile, getSkipProfileBool } from \"./skipProfiles\";\nimport { VideoLabelsCacheData } from \"./videoLabels\";\n\nexport interface Permission {\n canSubmit: boolean;\n}\n\nexport enum SkipRuleAttribute {\n StartTime = \"time.start\",\n EndTime = \"time.end\",\n Duration = \"time.duration\",\n StartTimePercent = \"time.startPercent\",\n EndTimePercent = \"time.endPercent\",\n DurationPercent = \"time.durationPercent\",\n Category = \"category\",\n ActionType = \"actionType\",\n Description = \"chapter.name\",\n Source = \"chapter.source\",\n ChannelID = \"channel.id\",\n ChannelName = \"channel.name\",\n VideoDuration = \"video.duration\",\n Title = \"video.title\"\n}\n\nexport enum SkipRuleOperator {\n Less = \"<\",\n LessOrEqual = \"<=\",\n Greater = \">\",\n GreaterOrEqual = \">=\",\n Equal = \"==\",\n NotEqual = \"!=\",\n Contains = \"*=\",\n NotContains = \"!*=\",\n Regex = \"~=\",\n RegexIgnoreCase = \"~i=\",\n NotRegex = \"!~=\",\n NotRegexIgnoreCase = \"!~i=\"\n}\n\nexport interface AdvancedSkipRule {\n attribute: SkipRuleAttribute;\n operator: SkipRuleOperator;\n value: string | number;\n}\n\nexport interface AdvancedSkipRuleSet {\n rules: AdvancedSkipRule[];\n skipOption: CategorySkipOption;\n comment: string;\n}\n\nexport function getCategorySelection(segment: SponsorTime | VideoLabelsCacheData): CategorySelection {\n // First check skip rules\n for (const ruleSet of Config.local.skipRules) {\n if (ruleSet.rules.every((rule) => isSkipRulePassing(segment, rule))) {\n return { name: segment.category, option: ruleSet.skipOption } as CategorySelection;\n }\n }\n\n // Action type filters\n if (\"actionType\" in segment && (segment as SponsorTime).actionType === \"mute\" && !getSkipProfileBool(\"muteSegments\")) {\n return { name: segment.category, option: CategorySkipOption.Disabled } as CategorySelection;\n }\n\n // Then check skip profile\n const profile = getSkipProfile();\n if (profile) {\n const profileSelection = profile.categorySelections.find(selection => selection.name === segment.category);\n if (profileSelection) {\n return profileSelection;\n }\n }\n\n // Then fallback to default\n for (const selection of Config.config.categorySelections) {\n if (selection.name === segment.category) {\n return selection;\n }\n }\n return { name: segment.category, option: CategorySkipOption.Disabled} as CategorySelection;\n}\n\nfunction getSkipRuleValue(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): string | number | undefined {\n switch (rule.attribute) {\n case SkipRuleAttribute.StartTime:\n return (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.EndTime:\n return (segment as SponsorTime).segment?.[1];\n case SkipRuleAttribute.Duration:\n return (segment as SponsorTime).segment?.[1] - (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.StartTimePercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n if (startTime === undefined) return undefined;\n\n return startTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.EndTimePercent: {\n const endTime = (segment as SponsorTime).segment?.[1];\n if (endTime === undefined) return undefined;\n\n return endTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.DurationPercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n const endTime = (segment as SponsorTime).segment?.[1];\n if (startTime === undefined || endTime === undefined) return undefined;\n\n return (endTime - startTime) / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.Category:\n return segment.category;\n case SkipRuleAttribute.ActionType:\n return (segment as SponsorTime).actionType;\n case SkipRuleAttribute.Description:\n return (segment as SponsorTime).description || \"\";\n case SkipRuleAttribute.Source:\n switch ((segment as SponsorTime).source) {\n case SponsorSourceType.Local:\n return \"local\";\n case SponsorSourceType.YouTube:\n return \"youtube\";\n case SponsorSourceType.Autogenerated:\n return \"autogenerated\";\n case SponsorSourceType.Server:\n return \"server\";\n default:\n return undefined;\n }\n case SkipRuleAttribute.ChannelID:\n return getChannelIDInfo().id;\n case SkipRuleAttribute.ChannelName:\n return getChannelIDInfo().author;\n case SkipRuleAttribute.VideoDuration:\n return getVideoDuration();\n case SkipRuleAttribute.Title:\n return getCurrentPageTitle() || \"\";\n default:\n return undefined;\n }\n}\n\nfunction isSkipRulePassing(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): boolean {\n const value = getSkipRuleValue(segment, rule);\n \n switch (rule.operator) {\n case SkipRuleOperator.Less:\n return typeof value === \"number\" && value < (rule.value as number);\n case SkipRuleOperator.LessOrEqual:\n return typeof value === \"number\" && value <= (rule.value as number);\n case SkipRuleOperator.Greater:\n return typeof value === \"number\" && value > (rule.value as number);\n case SkipRuleOperator.GreaterOrEqual:\n return typeof value === \"number\" && value >= (rule.value as number);\n case SkipRuleOperator.Equal:\n return value === rule.value;\n case SkipRuleOperator.NotEqual:\n return value !== rule.value;\n case SkipRuleOperator.Contains:\n return String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.NotContains:\n return !String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.Regex:\n return new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.RegexIgnoreCase:\n return new RegExp(rule.value as string, \"i\").test(String(value));\n case SkipRuleOperator.NotRegex:\n return !new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.NotRegexIgnoreCase:\n return !new RegExp(rule.value as string, \"i\").test(String(value));\n default:\n return false;\n }\n}\n\nexport function getCategoryDefaultSelection(category: string): CategorySelection {\n for (const selection of Config.config.categorySelections) {\n if (selection.name === category) {\n return selection;\n }\n }\n return { name: category, option: CategorySkipOption.Disabled} as CategorySelection;\n}","import { extractVideoID, isOnInvidious } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { getHasStartSegment, getVideoLabel } from \"./videoLabels\";\nimport { getThumbnailSelector, setThumbnailListener } from \"../../maze-utils/src/thumbnailManagement\";\nimport { VideoID } from \"../types\";\nimport { getSegmentsForVideo } from \"./segmentData\";\nimport { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport async function handleThumbnails(thumbnails: HTMLImageElement[]): Promise {\n await Promise.all(thumbnails.map((t) => {\n labelThumbnail(t);\n setupThumbnailHover(t);\n }));\n}\n\nexport async function labelThumbnail(thumbnail: HTMLImageElement): Promise {\n if (!Config.config?.fullVideoSegments || !Config.config?.fullVideoLabelsOnThumbnails) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n \n const videoID = await extractVideoIDFromElement(thumbnail);\n if (!videoID) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const category = await getVideoLabel(videoID);\n if (!category) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const { overlay, text } = createOrGetThumbnail(thumbnail);\n\n overlay.style.setProperty('--category-color', `var(--sb-category-preview-${category}, var(--sb-category-${category}))`);\n overlay.style.setProperty('--category-text-color', `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`);\n text.innerText = chrome.i18n.getMessage(`category_${category}`);\n overlay.classList.add(\"sponsorThumbnailLabelVisible\");\n\n return overlay;\n}\n\nexport async function setupThumbnailHover(thumbnail: HTMLImageElement): Promise {\n // Cache would be reset every load due to no SPA\n if (isOnInvidious()) return;\n\n const mainElement = thumbnail.closest(\"#dismissible\") as HTMLElement;\n if (mainElement) {\n mainElement.removeEventListener(\"mouseenter\", thumbnailHoverListener);\n mainElement.addEventListener(\"mouseenter\", thumbnailHoverListener);\n }\n}\n\nfunction thumbnailHoverListener(e: MouseEvent) {\n if (!chrome.runtime?.id) return;\n\n const thumbnail = (e.target as HTMLElement).querySelector(getThumbnailSelector()) as HTMLImageElement;\n if (!thumbnail) return;\n\n // Pre-fetch data for this video\n let fetched = false;\n const preFetch = async () => {\n fetched = true;\n const videoID = await extractVideoIDFromElement(thumbnail);\n if (videoID && await getHasStartSegment(videoID)) {\n void getSegmentsForVideo(videoID, false);\n }\n };\n const timeout = setTimeout(preFetch, 100);\n const onMouseDown = () => {\n clearTimeout(timeout);\n if (!fetched) {\n preFetch();\n }\n };\n\n e.target.addEventListener(\"mousedown\", onMouseDown, { once: true });\n e.target.addEventListener(\"mouseleave\", () => {\n clearTimeout(timeout);\n e.target.removeEventListener(\"mousedown\", onMouseDown);\n }, { once: true });\n}\n\nfunction getLink(thumbnail: HTMLImageElement): HTMLAnchorElement | null {\n if (isOnInvidious()) {\n return thumbnail.parentElement as HTMLAnchorElement | null;\n } else if (!onMobile()) {\n const link = thumbnail.querySelector(\"a#thumbnail, a.reel-item-endpoint, a.yt-lockup-metadata-view-model__title, a.yt-lockup-metadata-view-model__title-link, a.yt-lockup-view-model__content-image, a.yt-lockup-metadata-view-model-wiz__title\") as HTMLAnchorElement;\n if (link) {\n return link;\n } else if (thumbnail.nodeName === \"YTD-HERO-PLAYLIST-THUMBNAIL-RENDERER\"\n || thumbnail.nodeName === \"YT-THUMBNAIL-VIEW-MODEL\"\n ) {\n return thumbnail.closest(\"a\") as HTMLAnchorElement;\n } else {\n return null;\n }\n } else {\n // Big thumbnails, compact thumbnails, shorts, channel feature, playlist header\n return thumbnail.querySelector(\"a.media-item-thumbnail-container, a.compact-media-item-image, a.reel-item-endpoint, :scope > a, .amsterdam-playlist-thumbnail-wrapper > a\") as HTMLAnchorElement;\n }\n}\n\nasync function extractVideoIDFromElement(thumbnail: HTMLImageElement): Promise {\n const link = getLink(thumbnail);\n if (!link || link.nodeName !== \"A\" || !link.href) return null; // no link found\n\n return await extractVideoID(link);\n}\n\nfunction getOldThumbnailLabel(thumbnail: HTMLImageElement): HTMLElement | null {\n return thumbnail.querySelector(\".sponsorThumbnailLabel\") as HTMLElement | null;\n} \n\nfunction hideThumbnailLabel(thumbnail: HTMLImageElement): void {\n const oldLabel = getOldThumbnailLabel(thumbnail);\n if (oldLabel) {\n oldLabel.classList.remove(\"sponsorThumbnailLabelVisible\");\n }\n}\n\nfunction createOrGetThumbnail(thumbnail: HTMLImageElement): { overlay: HTMLElement; text: HTMLElement } {\n const oldElement = getOldThumbnailLabel(thumbnail);\n if (oldElement) {\n return {\n overlay: oldElement as HTMLElement,\n text: oldElement.querySelector(\"span\") as HTMLElement\n };\n }\n\n const overlay = document.createElement(\"div\") as HTMLElement;\n overlay.classList.add(\"sponsorThumbnailLabel\");\n // Disable hover autoplay\n overlay.addEventListener(\"pointerenter\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerleave\", { bubbles: true }));\n });\n overlay.addEventListener(\"pointerleave\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerenter\", { bubbles: true }));\n });\n\n const icon = createSBIconElement();\n const text = document.createElement(\"span\");\n overlay.appendChild(icon);\n overlay.appendChild(text);\n thumbnail.appendChild(overlay);\n\n return {\n overlay,\n text\n };\n}\n\nfunction createSBIconElement(): SVGSVGElement {\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"viewBox\", \"0 0 565.15 568\");\n const use = document.createElementNS(\"http://www.w3.org/2000/svg\", \"use\");\n use.setAttribute(\"href\", \"#SponsorBlockIcon\");\n svg.appendChild(use);\n return svg;\n}\n\n\n// Inserts the icon svg definition, so it can be used elsewhere\nfunction insertSBIconDefinition() {\n const container = document.createElement(\"span\");\n\n // svg from /public/icons/PlayerStartIconSponsorBlocker.svg, with useless stuff removed\n container.innerHTML = `\n\n \n \n \n \n \n \n`;\n document.body.appendChild(container.children[0]);\n}\n\nexport function setupThumbnailListener(): void {\n setThumbnailListener(handleThumbnails, () => {\n insertSBIconDefinition();\n }, () => Config.isReady());\n}","\nexport function getStartTimeFromUrl(url: string): number {\n const urlParams = new URLSearchParams(url);\n const time = urlParams?.get('t') || urlParams?.get('time_continue');\n\n return urlTimeToSeconds(time);\n}\n\nexport function urlTimeToSeconds(time: string): number {\n if (!time) {\n return 0;\n }\n\n const re = /(?:(\\d{1,3})h)?(?:(\\d{1,2})m)?(\\d+)s?/;\n const match = re.exec(time);\n\n if (match) {\n const hours = parseInt(match[1] ?? '0', 10);\n const minutes = parseInt(match[2] ?? '0', 10);\n const seconds = parseInt(match[3] ?? '0', 10);\n\n return hours * 3600 + minutes * 60 + seconds;\n } else if (/\\d+/.test(time)) {\n return parseInt(time, 10);\n } else {\n return 0;\n }\n}","import { Category, CategorySkipOption, VideoID } from \"../types\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { logWarn } from \"./logger\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { getCategorySelection } from \"./skipRule\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface VideoLabelsCacheData {\n category: Category;\n hasStartSegment: boolean;\n}\n\nexport interface LabelCacheEntry {\n timestamp: number;\n videos: Record;\n}\n\nconst labelCache: Record = {};\nconst cacheLimit = 1000;\n\nasync function getLabelHashBlock(hashPrefix: string): Promise {\n // Check cache\n const cachedEntry = labelCache[hashPrefix];\n if (cachedEntry) {\n return cachedEntry;\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"GET\", `/api/videoLabels/${hashPrefix}?hasStartSegment=true`);\n } catch (e) {\n console.error(\"[SB] Caught error while fetching video labels\", e)\n return null;\n }\n if (response.status !== 200) {\n logRequest(response, \"SB\", \"video labels\");\n // No video labels or server down\n labelCache[hashPrefix] = {\n timestamp: Date.now(),\n videos: {},\n };\n return null;\n }\n\n try {\n const data = JSON.parse(response.responseText);\n\n const newEntry: LabelCacheEntry = {\n timestamp: Date.now(),\n videos: Object.fromEntries(data.map(video => [video.videoID, {\n category: video.segments[0]?.category,\n hasStartSegment: video.hasStartSegment\n }])),\n };\n labelCache[hashPrefix] = newEntry;\n\n if (Object.keys(labelCache).length > cacheLimit) {\n // Remove oldest entry\n const oldestEntry = Object.entries(labelCache).reduce((a, b) => a[1].timestamp < b[1].timestamp ? a : b);\n delete labelCache[oldestEntry[0]];\n }\n\n return newEntry;\n } catch (e) {\n logWarn(`Error parsing video labels: ${e}`);\n\n return null;\n }\n}\n\nexport async function getVideoLabel(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n const category = result.videos[videoID]?.category;\n if (category && getCategorySelection(result.videos[videoID]).option !== CategorySkipOption.Disabled) {\n return category;\n } else {\n return null;\n }\n }\n\n return null;\n}\n\nexport async function getHasStartSegment(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n return result?.videos[videoID]?.hasStartSegment ?? false;\n }\n\n return null;\n}\n","import { objectToURI } from \"../../maze-utils/src\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport Config from \"../config\";\nimport GenericNotice, { NoticeOptions } from \"../render/GenericNotice\";\nimport { ContentContainer } from \"../types\";\nimport { asyncRequestToServer } from \"./requests\";\n\nexport interface ChatConfig {\n displayName: string;\n composerInitialValue?: string;\n customDescription?: string;\n}\n\nexport async function openWarningDialog(contentContainer: ContentContainer): Promise {\n let userInfo: FetchResponse;\n try {\n userInfo = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config.userID),\n values: [\"warningReason\"]\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to fetch user's active warnings\", e)\n return;\n }\n\n if (userInfo.ok) {\n const warningReason = JSON.parse(userInfo.responseText)?.warningReason;\n let userName = \"\";\n try {\n const userNameData = await asyncRequestToServer(\"GET\", \"/api/getUsername?userID=\" + Config.config.userID);\n userName = userNameData.ok ? JSON.parse(userNameData.responseText).userName : \"\";\n } catch (e) {\n console.warn(\"[SB] Caught non-fatal error while trying to resolve user's username\", e);\n }\n const publicUserID = await getHash(Config.config.userID);\n\n let notice: GenericNotice = null;\n const options: NoticeOptions = {\n title: chrome.i18n.getMessage(\"deArrowMessageRecieved\"),\n textBoxes: [{\n text: chrome.i18n.getMessage(\"warningChatInfo\"),\n icon: null\n }, ...warningReason.split(\"\\n\").map((reason) => ({\n text: reason,\n icon: null\n }))],\n buttons: [{\n name: chrome.i18n.getMessage(\"questionButton\"),\n listener: () => openChat({\n displayName: `${userName ? userName : ``}${userName !== publicUserID ? ` | ${publicUserID}` : ``}`\n })\n },\n {\n name: chrome.i18n.getMessage(\"warningConfirmButton\"),\n listener: async () => {\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"POST\", \"/api/warnUser\", {\n userID: Config.config.userID,\n enabled: false\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to acknowledge user's active warning\", e);\n alert(formatJSErrorMessage(e));\n }\n\n if (result.ok) {\n notice?.close();\n } else {\n logRequest(result, \"SB\", \"warning acknowledgement\");\n alert(getLongErrorMessage(result.status, result.responseText));\n }\n }\n }],\n timed: false\n };\n\n notice = new GenericNotice(contentContainer, \"warningNotice\", options);\n } else {\n logRequest(userInfo, \"SB\", \"user's active warnings\");\n }\n}\n\nexport function openChat(config: ChatConfig): void {\n window.open(\"https://chat.sponsor.ajay.app/#\" + objectToURI(\"\", config, false));\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(6069);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","logoUrl","bottomOffset","topOffset","leftOffset","rightOffset","innerBottomMargin","displayTriangle","topTriangle","extraClass","showLogo","showGotIt","positionRealtive","containerAbsolute","center","elements","buttonsAtBottom","textBoxes","textBoxMaxHeight","position","prependElement","referenceNode","timeout","timer","close","backgroundColor","root","bottom","right","margin","undefined","className","marginBottom","maxHeight","overflowY","getURL","getTextElements","textDecoration","rel","i18n","getMessage","linkOnClick","marginLeft","cursor","onAuxClick","getButtons","float","secondButtonText","secondButtonOnClick","result","line","padding","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","fetchConfig","all","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","getYouTubeTitleNode","titleNode","formattedText","innerText","elem","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CategoryPillComponent","React","mainRef","segment","open","getColor","getTextColor","toggle","showTextByDefault","getTitleText","toggleOpen","onMouseEnter","openTooltip","onMouseLeave","closeTooltip","prideTheme","category","vote","fill","colorPalette","white","downvoteButtonColor","SkipNoticeAction","Downvote","showTooltipOnClick","stopAnimation","UUID","formatJSErrorMessage","logRequest","getLongErrorMessage","tooltip","tooltipMount","Tooltip","firstElementChild","shortDescription","ChapterVoteComponent","draggable","chapterNode","actionType","ActionType","Chapter","outerBounding","buttonBounding","CountdownMode","bounds","NoticeComponent","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","showInSecondSlot","startCountdown","noticeStyle","userSelect","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","limitWidth","hideLogo","logoFill","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","icon","textParts","textPart","SelectorComponent","getOptions","option","onChange","label","utils","SkipButtonState","SkipNoticeComponent","noticeRef","categoryOptionRef","segments","autoSkip","contentContainer","voteNotice","getVoteText","upcomingNotice","getUpcomingText","getSkippingText","previousSkipNotices","selectedColor","red","unselectedColor","lockedColor","locked","isMuteSegment","Mute","getFullDurationCountdown","defaultSkipButtonState","startReskip","Redo","Undo","skipButtonStates","Start","defaultSkipButtonCallback","reskip","unskip","skipButtonCallbacks","messages","messageOnClick","countdownText","showSkipButton","editing","choosingCategory","actionState","None","showKeybindHint","voted","copied","getUnskippedModeInfo","transform","getSkipButton","noticeVisibilityMode","NoticeVisibilityMode","FadedForAll","FadedForAutoSkip","barTypes","getMessageBoxes","getBottomRow","prepAction","Upvote","openEditingOptions","CopyDownvote","dontShowNoticeAgain","CategoryVote","resetStateToStart","getCategoryOptions","getSubmissionChooser","buttonIndex","Poi","unskipTime","forceSeek","Unskip0","Unskip1","minWidth","getSkipButtonText","Skip","keybindToString","skipKeybind","getSubmissionChooserOpacity","getSubmissionChooserColor","performAction","getFormattedTime","isUpvote","isDownvote","isCopyDownvote","isVip","noAction","upvote","downvote","categoryVote","copyDownvote","unskipAction","sponsorVideoID","sponsorTimesSubmitting","generateUserID","SponsorSourceType","Local","segmentTimes","unsubmittedSegments","updatePreviewBar","resetSponsorSubmissionNotice","updateEditButtonsOnPlayer","categories","CompileConfig","categoryList","cat","categorySupport","getCategoryNameClass","lockedCategories","unskipSponsorTime","unskippedMode","reskipSponsorTime","reskippedMode","newState","skipButtonState","sponsorTime","round","playbackRate","afterVote","getSponsorIndexFromUUID","wikiLinkText","wikiLinks","clearConfigListener","setNoticeInfoMessageWithOnClick","addVoteButtonInfo","setNoticeInfoMessage","resetVoteButtonInfo","configListener","unmutedListener","forceType","getUndoText","getRedoText","getStartText","categoryNamesGrams","SponsorTimeEditComponent","timesBeforeChanging","fullVideoWarningShown","categoryNameWarningShown","lastEditTime","editTimeTimeout","actionTypeOptionRef","descriptionOptionRef","previousSkipType","sponsorTimeEdits","selectedCategory","DEFAULT_CATEGORY","selectedActionType","description","suggestedNames","chapterNameSelectorOpen","chapterNameSelectorHovering","configUpdateListener","configUpdate","checkToShowFullVideoWarning","checkToShowChapterWarning","textAlign","marginTop","borderColor","timeDisplay","timeDisplayStyle","Full","setTimeTo","setTimeToNow","onKeyDown","onKeyUp","handleOnChange","onWheel","changeTimesWhenScrolling","setTimeToEnd","toggleEditTime","categorySelectionChange","actionTypeSelectionChange","getActionTypeOptions","hidden","SponsorHideType","Hidden","Visible","saveEditTimes","onBlur","onContextMenu","descriptionUpdate","onFocus","deleteTime","previewTime","inspectTime","targetValue","before","getFormattedTimeToSeconds","after","difference","abs","showScrollToEditToolTip","allowScrollingToEdit","step","timeAsNumber","scrollToEditTimeUpdate","showToolTip","buttonFunction","htmlId","RectangleTooltip","fontSize","getVideoDuration","defaultBlockCategories","permission","showCategoryWithoutPermission","permissions","getCategoryLockedClass","chosenCategory","categorySelections","confirm","hash","hookUpdate","handleReplacingLostTimes","categoryChangeListener","getNextActionType","getRealCurrentTime","addedTime","getFormattedSponsorTimesEdits","timeSinceLastEdit","endTime","addingTime","ctrlPressed","shiftPressed","skipToEndTime","sponsorTimes","seekTime","defaultPreviewTime","skipTime","removingIncomplete","submissionNotice","cancel","fetchingSuggestions","fetchSuggestions","asyncRequestToServer","names","parse","SubmissionNoticeComponent","lastSegmentCount","videoObserver","currentSegmentCount","scrollToBottom","scrollElement","scrollTo","scrollHeight","sortButton","sortSegments","exportButton","exportSegments","getSponsorTimeMessages","submissionCountSinceCategories","submit","timeEditRefs","timeRef","guidelinesReminder","isCurrentTimeWrong","videoInfo","microformat","playerMicroformatRenderer","success","clipboard","writeText","exportTimes","dialogWidth","showCategoryGuidelines","getGuidelineInfo","update","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","categoryPillUpdate","showChapterInfoMessage","darkMode","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","downvotedSegments","alreadyInstalled","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","cleanPage","wait","getElementsByTagName","fileref","addCSS","setCategoryColorCSSVariables","runCompatibilityChecks","skipBuffer","endTimeSkipBuffer","sponsorDataFound","existingChaptersImported","importingChaptersWaitingForFocus","importingChaptersWaiting","loopedChapter","skipNotices","activeSkipKeybindElement","shownSegmentFailedToFetchWarning","selectedSegment","previewedSegment","lastKnownVideoTime","videoTime","preciseTime","fromPause","approximateDelay","lastTimeFromWaitingEvent","lastNextChapterKeybind","currentSkipSchedule","currentSkipInterval","currentVirtualTimeInterval","currentUpcomingSchedule","sponsorSkipped","videoMuted","controlsWithEventListeners","setupVideoModule","previewBar","isOnMobileYouTube","handleMobileControlsMutations","controlsContainer","getControls","createPreviewBar","getVideoID","getChannelIDInfo","channelAuthor","sponsorsLookup","updateVisibilityOfPlayerControlsButton","updateSponsorTimesSubmitting","tryShowingDeArrowPromotion","logWarn","checkPreviewbarState","getIsInline","videoOnReadyListener","durationChangeListener","setupVideoListenersFirstTime","switchingVideos","startedWaiting","lastPausedAtZero","lastVideoDataChange","rateChangeListener","updateVirtualTime","clearWaitingTime","startSponsorSchedule","playListener","firstPlay","miniPlayerUI","onVideoPage","getLastNonInlineVideoID","triggerVideoIDChange","triggerVideoElementChange","checkForMiniplayerPlaying","logDebug","startSkipScheduleCheckingForStartSponsors","updateAdFlag","lastCheckVideoTime","lastCheckTime","playingListener","playbackRateCheckInterval","lastPlaybackSpeed","seekingListener","updateActiveSegment","loop","stoppedPlayback","updateWaitingTime","cancelSponsorSchedule","pauseListener","waitingListener","emptyListener","metadataLoadedListener","setupVideoListeners","skipButtonControlBar","SkipButtonControlBar","skip","skipToTime","skippingSegments","openNotice","forceAutoSkip","selectSegment","isOnYTTV","attachToPage","categoryPill","CategoryPill","voteAsync","lastResponseStatus","disable","setVisibility","hideDeArrowPromotion","manifest_version","setupThumbnailListener","controls","playerButtons","hotkeyListener","hotkeyPropagationListener","loadedPreloadedSegment","popupInitialised","skipNoticeContentContainer","sponsorSubmissionNotice","manualSkipPercentCount","contentConfigUpdateListener","updateAll","contentLocalConfigUpdateListener","updateMobileControls","isMobileControlsOpen","isConnected","getPreviewBarAttachElement","progressElementOptions","isVisibleCheck","allElements","chapterVote","ChapterVote","importExistingChapters","includeIntersectingSegments","includeNonIntersectingSegments","getIsAdPlaying","checkIfNewVideoID","getVirtualTime","skipInfo","autoSkipSorter","skipOption","getCategorySelection","shouldAutoSkip","includedTimes","submittedArray","scheduledTimes","sponsorStartTimes","getStartTimes","sponsorStartTimesAfterCurrentTime","minSponsorTimeIndexes","GenericUtils","indexesOf","minSponsorTimeIndex","extraIndexes","endTimeIndex","getLatestEndTimeIndex","unsubmittedArray","unsubmittedSponsorStartTimes","unsubmittedSponsorStartTimesAfterCurrentTime","minUnsubmittedSponsorTimeIndex","previewEndTimeIndex","array","endIndex","getNextSkipIndex","currentSkip","scheduledTime","timeUntilSponsor","inMuteSegment","muted","incorrectVideoCheck","shouldSkip","skippingFunction","forceVideoTime","forcedSkipTime","forcedIncludeIntersectingSegments","forcedIncludeNonIntersectingSegments","extra","extraSkip","delayTime","forceStartIntervalTime","once","startIntervalTime","startVideoTime","startWaitingForReportedTimeToChange","reportedVideoTimeAtStart","intervalDuration","offsetDelayTime","maxPopupTime","timeUntilPopup","popupTime","createUpcomingNotice","virtualTime","includeOverlap","checkFunction","currentVideoID","recordedVideoID","isLoopedChapter","checkVideoIDChange","sendResponse","startOrEndTimingNewSegment","creatingSegment","isSegmentCreationInProgress","Disabled","currentTabSkipProfileID","getSkipProfileIDForTab","updating","closeInfoMenu","isYTTV","openSubmissionMenu","hasVideo","getSponsorTimeFromUUID","addHiddenSegment","isEnabled","every","importedSegments","importTimes","addedSegments","hasChaptersPermission","getCategoryDefaultSelection","KeyboardEvent","setCurrentTabSkipProfile","configID","rawCount","lastTime","lastPerformanceTime","frameTime","keepOldSubmissions","segmentData","getSegmentsForVideo","receivedSegments","oldSegments","otherSegment","other","hashPrefix","downvotedData","hashedUUID","segmentDownvoteData","uuid","hideTooShortSegments","waitForVideo","notifyPopupOfSegments","categoriesResponse","lockInfo","lockedCategoriesLookup","waitCondition","getExistingChapters","hasFocus","chapters","getSkipProfileBool","hasAutogeneratedChapters","startingSegmentTime","getStartTimeFromUrl","poiSegments","hashParams","getHashParams","requiredSegment","previewBarSegments","unsubmitted","showLarger","skippedDuration","durationID","paddingLeft","durationAfterSkips","showTimeWithoutSkips","getTimestampsDuration","updateCategoryPill","fullVideoSegment","setSegment","Autogenerated","checkingPreviewbarAgain","hideHiddenSponsors","latestEndTimeIndex","currentSegment","latestEndTime","minimum","shouldIncludeTime","possibleTimes","unpause","setCurrentTime","play","sendTelemetryAndCount","secondsSkipped","fullSkip","extension","inIncognitoContext","counted","isSubmittingSegment","isPlayingPlaylist","beep","Audio","volume","oldMetadata","mediaSession","setShowKeybindHint","toggleSkip","createSkipNotice","enable","skipNotice","upcomingNoticeShown","closed","newSkipNotice","timeLeft","sameNotice","skippedTime","createButton","baseID","imageName","isDraggable","existingElement","newButton","newButtonImage","prepend","setupListener","canSkipNonMusic","isOnYouTubeMusic","confirmMessage","getSegmentsMessage","clearSponsorTimes","info","popup","frame","borderRadius","stylusStyle","enhancerStyle","enhancerStyleVariables","enhancerCss","enhancerVariablesCss","elemHasChild","parentNodeOptions","hasChildCheck","openInfoMenu","createButtons","buttonsEnabled","submitButtonVisible","deleteButtonVisible","startSegment","cancelSegment","getIsLivePremiere","verifyCurrentTime","roundedTime","Number","EPSILON","existingSegment","getIncompleteSegment","existingTime","getFromConfig","segmentTime","pushed","checkForPreloadedSegment","openWarningDialog","sponsorIndex","Server","factor","Downvoted","notices","getElementsByClassName","closeAllSkipNotices","callRef","sendSubmitMessage","confirmShort","videoDuration","extensionUserAgent","newSegments","receivedNewSegments","sponsorTimesMessage","timeMessage","updateChapterText","handleKeybindVote","lastSkipNotice","skipNoticeRef","lastSegment","waitForSkipNoticeRef","isContentEditable","skipKey","skipToHighlightKey","closeSkipNoticeKey","startSponsorKey","submitKey","previewKey","openSubmissionMenuKey","nextChapterKey","previousChapterKey","upvoteKey","downvoteKey","unfilteredChapterGroups","nextChapter","previousChapter","wasAdPlaying","setIsAdPlaying","styleContainer","isVorapisInstalled","luminance","getLuminance","TOOLTIP_VISIBLE_CLASS","updateExistingChapters","lastSmallestSegment","hasYouTubeChapters","existingChapters","lastChapterUpdate","updatePageElements","createChapterMutationObservers","setupHoverText","categoryTooltip","chapterTooltip","categoryScrubTooltip","chapterScrubTooltip","tooltipTextWrapper","defaultTooltipSelector","originalTooltip","findNonEmptyElement","categoryTooltipContainer","titleTooltip","scrubTooltipTextWrapper","seekBar","mouseOnSeekBar","noYoutubeChapters","timeInSeconds","decimalToTime","normalSegments","chapterSegments","partition","mainSegment","getSmallestSegment","secondarySegment","hasAYouTubeChapterRemoved","setTooltipTitle","normalizeChapterName","shortCategoryName","getComputedStyle","getPropertyValue","customChaptersBar","originalChapterBar","YouTube","chapter","segmentDuration","duplicate","ariaDuration","progressBar","allProgressBars","newChapterBar","chapterChevron","getChapterChevron","chapterMargin","originalChapterBarBlocks","sortedSegments","bar","createBar","createChaptersBar","barSegment","fullCategoryName","timeToPercentage","timeToRightPercentage","chapterFilter","childElementCount","remakingBar","lastRenderedSegments","createChapterRenderGroups","filteredSegments","groups","chapterGroups","chapterGroupFilter","originalDuration","createFromScratch","cloneNode","originalSections","originalSection","newSection","firstTimeSetupChapterSection","setupChapterSection","updateChapterAllMutation","latestChapter","latestValidChapter","chaptersToAddBack","invalidChapter","priorityActionType","getActionTypePrioritized","lastChapterChecked","nextSegment","nextTime","intervalToDecimal","actionTypes","section","addMargin","sizePercent","intervalToPercentage","hoveredSection","attributeObserver","currentElement","updateChapterMutation","attributeFilter","childListObserver","firstUpdate","sections","sectionWidthDecimal","sectionWidthDecimalNoMargin","customChangedElement","fullSectionWidth","changedElement","changedData","findLeftAndScale","calculatedLeft","scale","transformScale","backgroundSize","backgroundPosition","currentWidth","lastWidth","leftPosition","scalePosition","scaleWidth","lastScalePosition","checkElement","currentSectionWidthNoMargin","getPartialChapterSectionStyle","currentSectionWidth","checkLeft","transformMatch","endPosition","submittingSegments","chaptersContainer","getChaptersContainer","activeSegments","setActiveSegments","chosenSegment","chapterButton","getChapterButton","chapterTitle","chapterVoteContainer","getContainer","oldVoteContainers","oldVoteContainer","titlePrefixDot","dest","sbChapterContainer","sbChapterTitleContent","timeToDecimal","decimalTimeConverter","decimal","isTime","totalPixels","pixelOffset","lastCheckedChapter","chapterElement","widthPixels","marginPixels","latestWidth","latestChapterDuration","percentageInCurrentChapter","sizeOfCurrentChapter","getMinimumSize","proposedIndex","startSearchIndex","direction","currentSegmentLength","seg","segmentLength","minSize","swipeStart","skipIcon","textContainer","stopTimer","startTimer","handleTouchStart","handleTouchMove","handleTouchEnd","mountingContainer","getMountingContainer","chapterText","hideButton","showButton","refreshText","getTitle","disableText","getChapterPrefix","distanceMoved","updateLeftStyle","mutationObserver","attachToPageInternal","isOnDescriptionOnRightLayout","change","removedNodes","lastState","watchDiv","unsavedState","findReferenceNode","noticeElement","maxWidth","MiniForAll","MiniForAutoSkip","waitForRef","GenericTooltip","upcomingNoticeRef","xmlns","viewBox","points","ActionTypes","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","endOverlaps","other1","other2","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","segmentUUID","segmentIDData","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","pass","fail","categoryName","messageId","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","inTest","chapterNames","exportTime","removeIf","matchers","matcher","lines","timeRegex","anyLineHasTime","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","hashparamSegments","hexChars","hex","sqrt","toISOString","overlay","downvoteType","isInPreviewPlayer","controlsSelectors","controlsSelector","windowHash","decoded","decodeURIComponent","chaptersBox","autogenerated","links","timeElement","address","testingServerAddress","sendRequestToCustomServer","segmentDataCache","pendingList","pendingData","extraRequestData","hasDownvotedSegments","trimUUIDs","fetchSegmentsForVideo","currentTabSkipProfile","getSkipProfileIDForTime","getSkipProfileIDForVideo","getSkipProfileIDForChannel","getSkipProfileID","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","MinimumDuration","SkipRuleAttribute","SkipRuleOperator","isSkipRulePassing","rule","attribute","StartTime","EndTime","Duration","StartTimePercent","EndTimePercent","DurationPercent","Category","Description","Source","ChannelID","ChannelName","VideoDuration","Title","getCurrentPageTitle","getSkipRuleValue","operator","Less","LessOrEqual","Greater","GreaterOrEqual","Equal","NotEqual","Contains","toLocaleLowerCase","NotContains","Regex","RegExp","RegexIgnoreCase","NotRegex","NotRegexIgnoreCase","ruleSet","rules","profileSelection","handleThumbnails","labelThumbnail","setupThumbnailHover","hideThumbnailLabel","extractVideoIDFromElement","getVideoLabel","oldElement","getOldThumbnailLabel","PointerEvent","svg","use","createSBIconElement","createOrGetThumbnail","mainElement","thumbnailHoverListener","fetched","preFetch","getHasStartSegment","getLink","extractVideoID","oldLabel","setThumbnailListener","insertSBIconDefinition","urlTimeToSeconds","urlParams","URLSearchParams","labelCache","getLabelHashBlock","cachedEntry","timestamp","videos","newEntry","fromEntries","hasStartSegment","oldestEntry","openChat","userInfo","publicUserID","warningReason","userName","userNameData","reason","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/edge/6.0.3/help.js.map b/edge/6.0.3/help.js.map new file mode 100644 index 00000000..ca9403e3 --- /dev/null +++ b/edge/6.0.3/help.js.map @@ -0,0 +1 @@ +{"version":3,"file":"help.js","mappings":"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","sources":["webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./src/config.ts","webpack:///./src/help.ts","webpack:///./src/types.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import { localizeHtmlPage } from \"../maze-utils/src/setup\";\nimport Config from \"./config\";\nimport { showDonationLink } from \"./utils/configUtils\";\n\nimport { waitFor } from \"../maze-utils/src\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\n\nif (document.readyState === \"complete\") {\n init();\n} else {\n document.addEventListener(\"DOMContentLoaded\", init);\n}\n\n// DeArrow promotion\nwaitFor(() => Config.isReady()).then(() => {\n if (Config.config.showNewFeaturePopups && Config.config.showUpsells) {\n isDeArrowInstalled().then((installed) => {\n if (!installed) {\n const deArrowPromotion = document.getElementById(\"dearrow-link\");\n deArrowPromotion.classList.remove(\"hidden\");\n\n deArrowPromotion.addEventListener(\"click\", () => Config.config.showDeArrowPromotion = false);\n\n const text = deArrowPromotion.querySelector(\"#dearrow-link-text\");\n text.textContent = `${chrome.i18n.getMessage(\"DeArrowPromotionMessage2\").split(\"?\")[0]}? ${chrome.i18n.getMessage(\"DeArrowPromotionMessage3\")}`;\n\n const closeButton = deArrowPromotion.querySelector(\".close-button\");\n closeButton.addEventListener(\"click\", (e) => {\n e.preventDefault();\n\n deArrowPromotion.classList.add(\"hidden\");\n Config.config.showDeArrowPromotion = false;\n Config.config.showDeArrowInSettings = false;\n });\n }\n });\n }\n});\n\nasync function init() {\n localizeHtmlPage();\n\n await waitFor(() => Config.config !== null);\n\n if (!Config.config.darkMode) {\n document.documentElement.setAttribute(\"data-theme\", \"light\");\n }\n\n if (!showDonationLink()) {\n document.getElementById(\"donate-component\").style.display = \"none\";\n }\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(3105);\n"],"names":["isSafari","navigator","vendor","formatKey","key","length","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","then","result","sync","configProxy","chrome","storage","onChanged","addListener","changes","areaName","newValue","callback","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","value","Date","now","add","delayUpdate","items","clear","map","v","reduce","acc","k","setTimeout","get","data","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","error","runtime","lastError","alert","i18n","getMessage","fetchConfig","Promise","all","resolve","undefined","window","location","href","includes","isFirefoxOrSafari","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","condition","timeout","check","predicate","reject","interval","intervalCheck","clearInterval","toString","Error","stack","setInterval","url","includeQuestionMark","counter","seperator","JSON","stringify","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","id","getManifest","version","getLocalizedMessage","text","valNewH","replace","match","v1","charset","cryptoFuncs","crypto","getRandomValues","values","Uint32Array","i","Math","floor","random","localizedTitle","document","title","body","querySelector","localizedMessage","innerHTML","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","supportInvidious","serverAddress","CompileConfig","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","prideTheme","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","name","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","navigationApiAvailable","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","filter","s","channelID","keys","some","push","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","init","localizeHtmlPage","waitFor","documentElement","setAttribute","getElementById","style","display","readyState","addEventListener","isDeArrowInstalled","installed","deArrowPromotion","classList","textContent","split","e","preventDefault","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","count","sendMessage","message","response","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/edge/6.0.3/options.js.LICENSE.txt b/edge/6.0.3/options.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/edge/6.0.3/options.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/edge/6.0.3/options.js.map b/edge/6.0.3/options.js.map new file mode 100644 index 00000000..9b985b31 --- /dev/null +++ b/edge/6.0.3/options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"options.js","mappings":"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","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/options/AdvancedSkipOptionsComponent.tsx","webpack:///./src/components/options/CategoryChooserComponent.tsx","webpack:///./src/components/options/CategorySkipOptionsComponent.tsx","webpack:///./src/components/options/KeybindComponent.tsx","webpack:///./src/components/options/KeybindDialogComponent.tsx","webpack:///./src/components/options/NumberInputOptionComponent.tsx","webpack:///./src/components/options/SelectOptionComponent.tsx","webpack:///./src/components/options/ToggleOptionComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListItem.tsx","webpack:///./src/components/options/UnsubmittedVideosComponent.tsx","webpack:///./src/config.ts","webpack:///./src/options.ts","webpack:///./src/render/AdvancedSkipOptions.tsx","webpack:///./src/render/CategoryChooser.tsx","webpack:///./src/render/UnsubmittedVideos.tsx","webpack:///./src/svg-icons/resetIcon.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport * as CompileConfig from \"../../../config.json\";\n\nimport Config from \"../../config\";\nimport { AdvancedSkipRuleSet, SkipRuleAttribute, SkipRuleOperator } from \"../../utils/skipRule\";\nimport { ActionType, ActionTypes, CategorySkipOption } from \"../../types\";\n\nlet configSaveTimeout: NodeJS.Timeout | null = null;\n\nexport function AdvancedSkipOptionsComponent() {\n const [optionsOpen, setOptionsOpen] = React.useState(false);\n const [config, setConfig] = React.useState(configToText(Config.local.skipRules));\n const [configValid, setConfigValid] = React.useState(true);\n\n return (\n
\n
{\n setOptionsOpen(!optionsOpen);\n }}>\n {chrome.i18n.getMessage(\"openAdvancedSkipOptions\")}\n
\n\n {\n optionsOpen &&\n
\n
\n \n {chrome.i18n.getMessage(\"advancedSkipSettingsHelp\")}\n \n\n \n {\" - \"}\n {chrome.i18n.getMessage(\"advancedSkipNotSaved\")}\n \n
\n\n \n\n \n \n
\n )\n}\n","import * as React from \"react\";\nimport { VideoID } from \"../types\";\nimport Config from \"../config\";\nimport { Message, MessageResponse } from \"../messageTypes\";\nimport { LoadingStatus } from \"./PopupComponent\";\n\ninterface SegmentSubmissionComponentProps {\n videoID: VideoID;\n status: LoadingStatus;\n\n sendMessage: (request: Message) => Promise;\n}\n\nexport const SegmentSubmissionComponent = (props: SegmentSubmissionComponentProps) => {\n const segments = Config.local.unsubmittedSegments[props.videoID];\n\n const [showSubmitButton, setShowSubmitButton] = React.useState(segments && segments.length > 0);\n const [showStartSegment, setShowStartSegment] = React.useState(!segments || segments[segments.length - 1].segment.length === 2);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"recordTimesDescription\")}\n

\n \n {chrome.i18n.getMessage(\"popupHint\")}\n \n
\n \n \n
\n \n {chrome.i18n.getMessage(\"submissionEditHint\")}\n \n
\n );\n};","import * as React from \"react\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { formatJSErrorMessage, getShortErrorMessage } from \"../../maze-utils/src/formating\";\nimport Config from \"../config\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport PencilIcon from \"../svg-icons/pencilIcon\";\nimport ClipboardIcon from \"../svg-icons/clipboardIcon\";\nimport CheckIcon from \"../svg-icons/checkIcon\";\nimport { showDonationLink } from \"../utils/configUtils\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport const YourWorkComponent = () => {\n const [isSettingUsername, setIsSettingUsername] = React.useState(false);\n const [username, setUsername] = React.useState(\"\");\n const [newUsername, setNewUsername] = React.useState(\"\");\n const [usernameSubmissionStatus, setUsernameSubmissionStatus] = React.useState(\"\");\n const [submissionCount, setSubmissionCount] = React.useState(\"\");\n const [viewCount, setViewCount] = React.useState(0);\n const [minutesSaved, setMinutesSaved] = React.useState(0);\n const [showDonateMessage, setShowDonateMessage] = React.useState(false);\n\n React.useEffect(() => {\n (async () => {\n const values = [\"userName\", \"viewCount\", \"minutesSaved\", \"vip\", \"permissions\", \"segmentCount\"];\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config!.userID!),\n values\n });\n } catch (e) {\n console.error(\"[SB] Caught error while fetching user info\", e);\n return\n }\n\n if (result.ok) {\n const userInfo = JSON.parse(result.responseText);\n setUsername(userInfo.userName);\n setSubmissionCount(Math.max(Config.config.sponsorTimesContributed ?? 0, userInfo.segmentCount).toLocaleString());\n setViewCount(userInfo.viewCount);\n setMinutesSaved(userInfo.minutesSaved);\n\n if (username === \"sponege\") {\n Config.config.prideTheme = true;\n }\n\n Config.config!.isVip = userInfo.vip;\n Config.config!.permissions = userInfo.permissions;\n\n setShowDonateMessage(Config.config.showDonationLink && Config.config.donateClicked <= 0 && Config.config.showPopupDonationCount < 5\n && viewCount < 50000 && !Config.config.isVip && Config.config.skipCount > 10 && showDonationLink());\n } else {\n logRequest(result, \"SB\", \"user info\");\n }\n })();\n }, []);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"yourWork\")}\n

\n
\n {/* Username */}\n
\n

\n {chrome.i18n.getMessage(\"Username\")}:\n {/* loading/errors */}\n \n {usernameSubmissionStatus}\n \n

\n
\n

{username}

\n \n \n
\n
\n {\n setNewUsername(e.target.value);\n }}/>\n \n
\n
\n \n
\n\n \n\n {showDonateMessage && {\n setShowDonateMessage(false);\n Config.config.showPopupDonationCount = 100;\n }} />}\n\n
\n );\n};\n\nfunction SubmissionCounts(props: { isSettingUsername: boolean; submissionCount: string }): JSX.Element {\n return <>\n
\n

\n {chrome.i18n.getMessage(\"Submissions\")}:\n

\n

{props.submissionCount}

\n
\n \n}\n\nfunction TimeSavedMessage({ viewCount, minutesSaved }: { viewCount: number; minutesSaved: number }): JSX.Element {\n return (\n <>\n {\n viewCount > 0 &&\n

\n {chrome.i18n.getMessage(\"savedPeopleFrom\")}\n \n {viewCount.toLocaleString()}{\" \"}\n \n {viewCount !== 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}\n
\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(minutesSaved)}{\" \"}\n {minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {chrome.i18n.getMessage(\"youHaveSavedTimeEnd\")}{\" \"}\n {\" )\"}\n \n

\n }\n

\n {chrome.i18n.getMessage(\"youHaveSkipped\")}\n \n {Config.config.skipCount}{\" \"}\n \n {Config.config.skipCount > 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}{\" \"}\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(Config.config.minutesSaved)}{\" \"}\n {Config.config.minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {\")\"}\n \n

\n \n );\n}\n\nfunction DonateMessage(props: { onClose: () => void }): JSX.Element {\n return (\n \n );\n}\n\n/**\n * Converts time in minutes to 2d 5h 25.1\n * If less than 1 hour, just returns minutes\n *\n * @param {float} minutes\n * @returns {string}\n */\nfunction getFormattedHours(minutes) {\n minutes = Math.round(minutes * 10) / 10;\n const years = Math.floor(minutes / 525600); // Assumes 365.0 days in a year\n const days = Math.floor(minutes / 1440) % 365;\n const hours = Math.floor(minutes / 60) % 24;\n return (years > 0 ? years + chrome.i18n.getMessage(\"yearAbbreviation\") + \" \" : \"\") + (days > 0 ? days + chrome.i18n.getMessage(\"dayAbbreviation\") + \" \" : \"\") + (hours > 0 ? hours + chrome.i18n.getMessage(\"hourAbbreviation\") + \" \" : \"\") + (minutes % 60).toFixed(1);\n}\n","import * as React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { PopupComponent } from \"./PopupComponent\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport Config from \"../config\";\n\n\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n await waitFor(() => Config.isReady());\n\n const root = createRoot(document.body);\n root.render();\n})","import { Message, MessageResponse } from \"../messageTypes\";\n\nexport function copyToClipboardPopup(text: string, sendMessage: (request: Message) => Promise): void {\n if (window === window.top) {\n window.navigator.clipboard.writeText(text);\n } else {\n sendMessage({\n message: \"copyToClipboard\",\n text\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\n\nexport interface CheckIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst CheckIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: CheckIconProps): JSX.Element => (\n \n \n \n);\n\nexport default CheckIcon;","import * as React from \"react\";\n\nexport interface ClipboardIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ClipboardIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: ClipboardIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ClipboardIcon;","import * as React from \"react\";\n\nexport interface PencilIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst PencilIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: PencilIconProps): JSX.Element => (\n \n \n \n);\n\nexport default PencilIcon;","import * as React from \"react\";\n\nexport interface AddIconProps {\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ResetIcon = ({\n className = \"\",\n style = {},\n onClick\n}: AddIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ResetIcon;","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4901);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","timeout","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","innerText","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CountdownMode","bounds","NoticeComponent","React","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","right","bottom","showInSecondSlot","startCountdown","noticeStyle","userSelect","className","extraClass","onMouseEnter","onMouseLeave","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","prideTheme","limitWidth","hideLogo","getURL","fill","logoFill","float","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","close","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","cursor","textDecoration","icon","getTextElements","textParts","textPart","rel","SelectOptionComponent","label","htmlFor","onChange","option","showResetButton","onReset","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","CompileConfig","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","downvotedSegments","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","LoadingStatus","loadRetryCount","loadSegments","updating","segmentsLoaded","setStatus","NoVideo","SegmentsFound","JSError","NoSegmentsFound","ConnectionError","StillLoading","setVideoID","Video","setCurrentTime","setChanelIDInfo","channelAuthor","setCurrentTabSkipProfile","currentTabSkipProfileID","setSegments","sponsorTimes","segment","SponsorSourceType","Server","actionType","ActionType","Full","setLoopedChapter","loopedChapter","active","currentWindow","setupComPort","port","connect","onDisconnect","msg","SkipProfileButton","menuOpen","setMenuOpen","channelSkipProfileSet","getSkipProfileIDForChannel","skipProfileSet","getSkipProfileID","role","tabIndex","setShowForceChannelCheckWarning","viewBox","SkipProfileMenu","open","PopupComponent","Loading","extensionEnabled","setExtensionEnabled","showForceChannelCheckWarning","showNoticeButton","setShowNoticeButton","segments","forwardClickEvents","getVideoStatusText","stopAnimation","SegmentListComponent","SegmentSubmissionComponent","YourWorkComponent","logs","copyToClipboardPopup","generateDebugDetails","origin","endsWith","skipProfileOptions","getSkipProfileIDForTime","getSkipProfileIDForTab","getSkipProfileIDForVideo","configID","setConfigID","selectedSkipProfileAction","setSelectedSkipProfileAction","allSkipProfiles","setAllSkipProfiles","getChannelIDInfo","isOnYTTV","position","hash","updateSkipProfileSetting","SkipProfileRadioButtons","setSelected","updateConfig","alreadySelected","highlighted","overridden","SkipOptionActionComponent","getVideoID","SegmentListTab","isSegment","Chapter","isChapter","SegmentListItem","tabFilter","voteMessage","setVoteMessage","hidden","setHidden","SponsorHideType","Visible","isLooped","setIsLooped","UUID","extraInfo","Downvoted","MinimumDuration","Hidden","onDoubleClick","skipSegment","selectSegment","backgroundColor","category","description","shortCategoryName","margin","getFormattedTime","Poi","vote","segmentIDData","asyncRequestToServer","logRequest","loopChapter","Skip","Mute","newState","innerChapters","InnerChapterList","chapters","chapter","messageDuration","formatJSErrorMessage","getShortErrorMessage","ImportSegments","importMenuVisible","setImportMenuVisible","textArea","exportTimes","referenceNode","minWidth","rows","setTab","setIsVip","hasSegments","hasChapters","setTabBasedOnConfig","preferChapters","Chapters","segmentsWithNesting","chapterStack","seg","lastChapter","showSubmitButton","setShowSubmitButton","showStartSegment","setShowStartSegment","textAlign","SubmissionCounts","isSettingUsername","submissionCount","TimeSavedMessage","viewCount","toLocaleString","getFormattedHours","DonateMessage","alignItems","justifyContent","paddingLeft","onClose","round","years","days","setIsSettingUsername","username","setUsername","newUsername","setNewUsername","usernameSubmissionStatus","setUsernameSubmissionStatus","setSubmissionCount","setViewCount","setMinutesSaved","showDonateMessage","setShowDonateMessage","publicUserID","userInfo","userName","segmentCount","vip","clipboard","writeText","placeholder","utils","contentContainer","noticeRef","findReferenceNode","noticeElement","prepend","root","update","textBoxes","maxHeight","getMessageBoxes","getButtons","xmlns","points","ActionTypes","backgroundScriptContainer","wait","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","enable","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","other","endOverlaps","other1","other2","getTimestampsDuration","getSponsorIndexFromUUID","getSponsorTimeFromUUID","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","extension","inIncognitoContext","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","uuid","autoSkip","categoryName","messageId","DEFAULT_CATEGORY","inTest","chapterNames","categoryList","names","exportTime","removeIf","matchers","matcher","YouTube","Autogenerated","videoDuration","lines","timeRegex","anyLineHasTime","line","getFormattedTimeToSeconds","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","Local","generateUserID","hashparamSegments","address","testingServerAddress","sendRequestToCustomServer","currentTabSkipProfile","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/firefox-beta/6.0.3/background.js.map b/firefox-beta/6.0.3/background.js.map new file mode 100644 index 00000000..6fb80340 --- /dev/null +++ b/firefox-beta/6.0.3/background.js.map @@ -0,0 +1 @@ +{"version":3,"file":"background.js","mappings":"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","sources":["webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/tab-updates.ts","webpack:///./src/background.ts","webpack:///./src/config.ts","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/requests.ts","webpack:///./node_modules/webext-polyfill-kinda/index.js","webpack:///./node_modules/webext-patterns/index.js","webpack:///./node_modules/webext-content-scripts/index.js","webpack:///./node_modules/content-scripts-register-polyfill/ponyfill.js","webpack:///./node_modules/content-scripts-register-polyfill/index.js","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage } from \"./config\";\n\nfunction onTabUpdatedListener(tabId: number) {\n chrome.tabs.sendMessage(tabId, {\n message: 'update',\n }, () => void chrome.runtime.lastError ); // Suppress error on Firefox\n}\n\nfunction onNavigationApiAvailableChange(changes: {[key: string]: chrome.storage.StorageChange}) {\n if (changes.navigationApiAvailable) {\n if (changes.navigationApiAvailable.newValue) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n } else {\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n }\n }\n}\n\nexport function setupTabUpdates(config: ProtoConfig) {\n // If Navigation API is not supported, then background has to inform content script about video change.\n // This happens on Safari, Firefox, and Chromium 101 (inclusive) and below.\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n void waitFor(() => config.local !== null).then(() => {\n if (config.local!.navigationApiAvailable) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n }\n });\n\n if (!config.configSyncListeners.includes(onNavigationApiAvailableChange)) {\n config.configSyncListeners.push(onNavigationApiAvailableChange);\n }\n}","import * as CompileConfig from \"../config.json\";\n\nimport Config from \"./config\";\nimport { Registration } from \"./types\";\nimport \"content-scripts-register-polyfill\";\nimport { sendRealRequestToCustomServer, serializeOrStringify, setupBackgroundRequestProxy } from \"../maze-utils/src/background-request-proxy\";\nimport { setupTabUpdates } from \"../maze-utils/src/tab-updates\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\n\nimport Utils from \"./utils\";\nimport { getExtensionIdsToImportFrom } from \"./utils/crossExtension\";\nimport { isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { injectUpdatedScripts } from \"../maze-utils/src/cleanup\";\nimport { logWarn } from \"./utils/logger\";\nimport { chromeP } from \"../maze-utils/src/browserApi\";\nimport { getHash } from \"../maze-utils/src/hash\";\nconst utils = new Utils({\n registerFirefoxContentScript,\n unregisterFirefoxContentScript\n});\n\nconst popupPort: Record = {};\n\n// Used only on Firefox, which does not support non persistent background pages.\nconst contentScriptRegistrations = {};\n\n// Register content script if needed\nutils.wait(() => Config.isReady()).then(function() {\n if (Config.config.supportInvidious) utils.setupExtraSiteContentScripts();\n});\n\nsetupBackgroundRequestProxy();\nsetupTabUpdates(Config);\n\nchrome.runtime.onMessage.addListener(function (request, sender, callback) {\n switch(request.message) {\n case \"openConfig\":\n chrome.tabs.create({url: chrome.runtime.getURL('options/options.html' + (request.hash ? '#' + request.hash : ''))});\n return false;\n case \"openHelp\":\n chrome.tabs.create({url: chrome.runtime.getURL('help/index.html')});\n return false;\n case \"openPage\":\n chrome.tabs.create({url: chrome.runtime.getURL(request.url)});\n return false;\n case \"submitVote\":\n submitVote(request.type, request.UUID, request.category, request.videoID).then(callback);\n\n //this allows the callback to be called later\n return true;\n case \"registerContentScript\":\n registerFirefoxContentScript(request);\n return false;\n case \"unregisterContentScript\":\n unregisterFirefoxContentScript(request.id)\n return false;\n case \"tabs\": {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n chrome.tabs.sendMessage(\n tabs[0].id,\n request.data,\n (response) => {\n callback(response);\n }\n );\n });\n return true;\n }\n case \"time\":\n case \"infoUpdated\":\n case \"videoChanged\":\n if (sender.tab) {\n try {\n popupPort[sender.tab.id]?.postMessage(request);\n } catch (e) {\n // This can happen if the popup is closed\n }\n }\n return false;\n default:\n return false;\n\t}\n});\n\nchrome.runtime.onMessageExternal.addListener((request, sender, callback) => {\n if (getExtensionIdsToImportFrom().includes(sender.id)) {\n if (request.message === \"requestConfig\") {\n callback({\n userID: Config.config.userID,\n allowExpirements: Config.config.allowExpirements,\n showDonationLink: Config.config.showDonationLink,\n showUpsells: Config.config.showUpsells,\n darkMode: Config.config.darkMode,\n })\n }\n }\n});\n\nchrome.runtime.onConnect.addListener((port) => {\n if (port.name === \"popup\") {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n popupPort[tabs[0].id] = port;\n });\n }\n});\n\n//add help page on install\nchrome.runtime.onInstalled.addListener(function () {\n // This let's the config sync to run fully before checking.\n // This is required on Firefox\n setTimeout(async () => {\n const userID = Config.config.userID;\n\n // If there is no userID, then it is the first install.\n if (!userID && !Config.local.alreadyInstalled){\n //open up the install page\n chrome.tabs.create({url: chrome.runtime.getURL(\"/help/index.html\")});\n\n //generate a userID\n const newUserID = generateUserID();\n //save this UUID\n Config.config.userID = newUserID;\n Config.local.alreadyInstalled = true;\n\n // Don't show update notification\n Config.config.categoryPillUpdate = true;\n }\n\n if (Config.config.supportInvidious) {\n if (!(await utils.containsInvidiousPermission())) {\n chrome.tabs.create({url: chrome.runtime.getURL(\"/permissions/index.html\")});\n }\n }\n\n getHash(Config.config!.userID!).then((userID) => {\n if (userID == \"60eed03c8644b7efa32df06977b3a4c11b62f63518e74a0e29baa1fd449cb54f\") {\n Config.config.prideTheme = true;\n }\n });\n }, 1500);\n\n if (!isFirefoxOrSafari()) {\n injectUpdatedScripts().catch(logWarn);\n\n waitFor(() => Config.isReady()).then(() => {\n if (Config.config.supportInvidious) {\n injectUpdatedScripts([\n utils.getExtraSiteRegistration()\n ])\n }\n }).catch(logWarn);\n }\n});\n\n/**\n * Only works on Firefox.\n * Firefox requires that it be applied after every extension restart.\n *\n * @param {JSON} options\n */\nasync function registerFirefoxContentScript(options: Registration) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n const existingRegistrations = await chromeP.scripting.getRegisteredContentScripts({\n ids: [options.id]\n }).catch(() => []);\n\n if (existingRegistrations && existingRegistrations.length > 0 \n && options.matches.every((match) => existingRegistrations[0].matches.includes(match))) {\n // No need to register another script, already registered\n return;\n }\n }\n\n await unregisterFirefoxContentScript(options.id);\n\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n await chromeP.scripting.registerContentScripts([{\n id: options.id,\n runAt: \"document_start\",\n matches: options.matches,\n allFrames: options.allFrames,\n js: options.js,\n css: options.css,\n persistAcrossSessions: true,\n }]);\n } else {\n chrome.contentScripts.register({\n allFrames: options.allFrames,\n js: options.js?.map?.(file => ({file})),\n css: options.css?.map?.(file => ({file})),\n matches: options.matches\n }).then((registration) => void (contentScriptRegistrations[options.id] = registration));\n }\n\n}\n\n/**\n * Only works on Firefox.\n * Firefox requires that this is handled by the background script\n */\nasync function unregisterFirefoxContentScript(id: string) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n try {\n await chromeP.scripting.unregisterContentScripts({\n ids: [id]\n });\n } catch (e) {\n // Not registered yet\n }\n } else {\n if (contentScriptRegistrations[id]) {\n contentScriptRegistrations[id].unregister();\n delete contentScriptRegistrations[id];\n }\n }\n}\n\nasync function submitVote(type: number, UUID: string, category: string, videoID: string) {\n let userID = Config.config.userID;\n\n if (userID == undefined || userID === \"undefined\") {\n //generate one\n userID = generateUserID();\n Config.config.userID = userID;\n }\n\n const typeSection = (type !== undefined) ? \"&type=\" + type : \"&category=\" + category;\n\n try {\n const response = await asyncRequestToServer(\"POST\", \"/api/voteOnSponsorTime?UUID=\" + UUID + \"&videoID=\" + videoID + \"&userID=\" + userID + typeSection);\n\n return {\n status: response.status,\n ok: response.ok,\n responseText: await response.text(),\n };\n } catch (e) {\n console.error(\"Error while voting:\", e);\n return {\n error: serializeOrStringify(e),\n };\n }\n}\n\n\nasync function asyncRequestToServer(type: string, address: string, data = {}) {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRealRequestToCustomServer(type, serverAddress + address, data));\n}\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","function NestedProxy(target) {\n\treturn new Proxy(target, {\n\t\tget(target, prop) {\n\t\t\tif (!target[prop]) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof target[prop] !== 'function') {\n\t\t\t\treturn new NestedProxy(target[prop]);\n\t\t\t}\n\n\t\t\treturn (...arguments_) =>\n\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\ttarget[prop](...arguments_, result => {\n\t\t\t\t\t\tif (chrome.runtime.lastError) {\n\t\t\t\t\t\t\treject(new Error(chrome.runtime.lastError.message));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t});\n}\n\nconst chromeP = globalThis.chrome && new NestedProxy(globalThis.chrome);\n\nexport default chromeP;\n","import escapeStringRegexp from 'escape-string-regexp';\n// Copied from https://github.com/mozilla/gecko-dev/blob/073cc24f53d0cf31403121d768812146e597cc9d/toolkit/components/extensions/schemas/manifest.json#L487-L491\nexport const patternValidationRegex = /^(https?|wss?|file|ftp|\\*):\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^file:\\/\\/\\/.*$|^resource:\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^about:/;\nconst isFirefox = typeof navigator === 'object' && navigator.userAgent.includes('Firefox/');\nexport const allStarsRegex = isFirefox\n ? /^(https?|wss?):[/][/][^/]+([/].*)?$/\n : /^https?:[/][/][^/]+([/].*)?$/;\nexport const allUrlsRegex = /^(https?|file|ftp):[/]+/;\nfunction getRawPatternRegex(matchPattern) {\n if (!patternValidationRegex.test(matchPattern)) {\n throw new Error(matchPattern + ' is an invalid pattern, it must match ' + String(patternValidationRegex));\n }\n let [, protocol, host, pathname] = matchPattern.split(/(^[^:]+:[/][/])([^/]+)?/);\n protocol = protocol\n .replace('*', isFirefox ? '(https?|wss?)' : 'https?') // Protocol wildcard\n .replace(/[/]/g, '[/]'); // Escape slashes\n host = (host !== null && host !== void 0 ? host : '') // Undefined for file:///\n .replace(/^[*][.]/, '([^/]+.)*') // Initial wildcard\n .replace(/^[*]$/, '[^/]+') // Only wildcard\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]$/g, '[^.]+'); // Last wildcard\n pathname = pathname\n .replace(/[/]/g, '[/]') // Escape slashes\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]/g, '.*'); // Any wildcard\n return '^' + protocol + host + '(' + pathname + ')?$';\n}\nexport function patternToRegex(...matchPatterns) {\n // No pattern, match nothing https://stackoverflow.com/q/14115522/288906\n if (matchPatterns.length === 0) {\n return /$./;\n }\n if (matchPatterns.includes('')) {\n return allUrlsRegex;\n }\n if (matchPatterns.includes('*://*/*')) {\n return allStarsRegex;\n }\n return new RegExp(matchPatterns.map(x => getRawPatternRegex(x)).join('|'));\n}\n// The parens are required by .split() to preserve the symbols\nconst globSymbols = /([?*]+)/;\nfunction splitReplace(part, index) {\n if (part === '') {\n // Shortcut for speed\n return '';\n }\n if (index % 2 === 0) {\n // Raw text, escape it\n return escapeStringRegexp(part);\n }\n // Else: Symbol\n if (part.includes('*')) { // Can be more than one and it swallows surrounding question marks\n return '.*';\n }\n return [...part].map(() => isFirefox ? '.' : '.?').join('');\n}\nfunction getRawGlobRegex(glob) {\n const regexString = glob\n .split(globSymbols)\n // eslint-disable-next-line unicorn/no-array-callback-reference -- tis ok 🤫\n .map(splitReplace)\n .join('');\n // Drop \"start with anything\" and \"end with anything\" sequences because they're the default for regex\n return ('^' + regexString + '$')\n .replace(/^[.][*]/, '')\n .replace(/[.][*]$/, '')\n .replace(/^[$]$/, '.+'); // Catch `*` and `*`\n}\nexport function globToRegex(...globs) {\n // No glob, match anything; `include_globs: []` is the default\n if (globs.length === 0) {\n return /.*/;\n }\n return new RegExp(globs.map(x => getRawGlobRegex(x)).join('|'));\n}\nexport function excludeDuplicatePatterns(matchPatterns) {\n if (matchPatterns.includes('')) {\n return [''];\n }\n if (matchPatterns.includes('*://*/*')) {\n return ['*://*/*'];\n }\n return matchPatterns.filter(possibleSubset => !matchPatterns.some(possibleSuperset => possibleSubset !== possibleSuperset && patternToRegex(possibleSuperset).test(possibleSubset)));\n}\n","import chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst gotScripting = Boolean(globalThis.chrome?.scripting);\nfunction castTarget(target) {\n return typeof target === 'object' ? target : {\n tabId: target,\n frameId: 0,\n };\n}\nfunction castAllFramesTarget(target) {\n if (typeof target === 'object') {\n return { ...target, allFrames: false };\n }\n return {\n tabId: target,\n frameId: undefined,\n allFrames: true,\n };\n}\nfunction castArray(possibleArray) {\n if (Array.isArray(possibleArray)) {\n return possibleArray;\n }\n return [possibleArray];\n}\nconst nativeFunction = /^function \\w+\\(\\) {[\\n\\s]+\\[native code][\\n\\s]+}/;\nexport async function executeFunction(target, function_, ...args) {\n if (nativeFunction.test(String(function_))) {\n throw new TypeError('Native functions need to be wrapped first, like `executeFunction(1, () => alert(1))`');\n }\n const { frameId, tabId } = castTarget(target);\n if (gotScripting) {\n const [injection] = await chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: [frameId],\n },\n func: function_,\n args,\n });\n return injection?.result;\n }\n const [result] = await chromeP.tabs.executeScript(tabId, {\n code: `(${function_.toString()})(...${JSON.stringify(args)})`,\n frameId,\n });\n return result;\n}\nfunction arrayOrUndefined(value) {\n return value === undefined ? undefined : [value];\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention -- It follows the native naming\nexport async function insertCSS({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const everyInsertion = Promise.all(files.map(async (content) => {\n if (typeof content === 'string') {\n content = { file: content };\n }\n if (gotScripting) {\n return chrome.scripting.insertCSS({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: 'file' in content ? [content.file] : undefined,\n css: 'code' in content ? content.code : undefined,\n });\n }\n return chromeP.tabs.insertCSS(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt: runAt ?? 'document_start', // CSS should prefer `document_start` when unspecified\n });\n }));\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(everyInsertion);\n }\n else {\n await everyInsertion;\n }\n}\nfunction assertNoCode(files) {\n if (files.some(content => 'code' in content)) {\n throw new Error('chrome.scripting does not support injecting strings of `code`');\n }\n}\nexport async function executeScript({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const normalizedFiles = files.map(file => typeof file === 'string' ? { file } : file);\n if (gotScripting) {\n assertNoCode(normalizedFiles);\n const injection = chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: normalizedFiles.map(({ file }) => file),\n });\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(injection);\n }\n else {\n await injection;\n }\n // Don't return `injection`; the \"return value\" of a file is generally not useful\n return;\n }\n // Don't use .map(), `code` injections can't be \"parallel\"\n const executions = [];\n for (const content of normalizedFiles) {\n // Files are executed in order, but `code` isn’t, so it must await the last script before injecting more\n if ('code' in content) {\n // eslint-disable-next-line no-await-in-loop -- On purpose, see above\n await executions.at(-1);\n }\n executions.push(chromeP.tabs.executeScript(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt,\n }));\n }\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(Promise.all(executions));\n }\n else {\n await Promise.all(executions);\n }\n}\nexport async function getTabsByUrl(matches, excludeMatches) {\n if (matches.length === 0) {\n return [];\n }\n const exclude = excludeMatches ? patternToRegex(...excludeMatches) : undefined;\n const tabs = await chromeP.tabs.query({ url: matches });\n return tabs\n .filter(tab => tab.id && tab.url && (exclude ? !exclude.test(tab.url) : true))\n .map(tab => tab.id);\n}\nexport async function injectContentScript(where, scripts, options = {}) {\n const targets = castArray(where);\n await Promise.all(targets.map(async (target) => injectContentScriptInSpecificTarget(castAllFramesTarget(target), scripts, options)));\n}\nasync function injectContentScriptInSpecificTarget({ frameId, tabId, allFrames }, scripts, options = {}) {\n const injections = castArray(scripts).flatMap(script => [\n insertCSS({\n tabId,\n frameId,\n allFrames,\n files: script.css ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n executeScript({\n tabId,\n frameId,\n allFrames,\n files: script.js ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n ]);\n await Promise.all(injections);\n}\n// Sourced from:\n// https://source.chromium.org/chromium/chromium/src/+/main:extensions/common/extension_urls.cc;drc=6b42116fe3b3d93a77750bdcc07948e98a728405;l=29\n// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts\nconst blockedPrefixes = [\n 'chrome.google.com/webstore',\n 'accounts-static.cdn.mozilla.net',\n 'accounts.firefox.com',\n 'addons.cdn.mozilla.net',\n 'addons.mozilla.org',\n 'api.accounts.firefox.com',\n 'content.cdn.mozilla.net',\n 'discovery.addons.mozilla.org',\n 'input.mozilla.org',\n 'install.mozilla.org',\n 'oauth.accounts.firefox.com',\n 'profile.accounts.firefox.com',\n 'support.mozilla.org',\n 'sync.services.mozilla.com',\n 'testpilot.firefox.com',\n];\nexport function isScriptableUrl(url) {\n if (!url.startsWith('http')) {\n return false;\n }\n const cleanUrl = url.replace(/^https?:\\/\\//, '');\n return blockedPrefixes.every(blocked => !cleanUrl.startsWith(blocked));\n}\nconst targetErrors = /^No frame with id \\d+ in tab \\d+.$|^No tab with id: \\d+.$|^The tab was closed.$|^The frame was removed.$/;\nasync function catchTargetInjectionErrors(promise) {\n try {\n await promise;\n }\n catch (error) {\n // @ts-expect-error Optional chaining is good enough\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!targetErrors.test(error?.message)) {\n throw error;\n }\n }\n}\n","import { injectContentScript } from 'webext-content-scripts';\nimport chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst noMatchesError = 'Type error for parameter contentScriptOptions (Error processing matches: Array requires at least 1 items; you have 0) for contentScripts.register.';\nconst noPermissionError = 'Permission denied to register a content script for ';\nconst gotNavigation = typeof chrome === 'object' && 'webNavigation' in chrome;\nasync function isOriginPermitted(url) {\n return chromeP.permissions.contains({\n origins: [new URL(url).origin + '/*'],\n });\n}\n// The callback is only used by webextension-polyfill\nexport default async function registerContentScript(contentScriptOptions, callback) {\n const { js = [], css = [], matchAboutBlank, matches = [], excludeMatches, runAt, } = contentScriptOptions;\n let { allFrames } = contentScriptOptions;\n if (gotNavigation) {\n allFrames = false;\n }\n else if (allFrames) {\n console.warn('`allFrames: true` requires the `webNavigation` permission to work correctly: https://github.com/fregante/content-scripts-register-polyfill#permissions');\n }\n if (matches.length === 0) {\n throw new Error(noMatchesError);\n }\n await Promise.all(matches.map(async (pattern) => {\n if (!await chromeP.permissions.contains({ origins: [pattern] })) {\n throw new Error(noPermissionError + pattern);\n }\n }));\n const matchesRegex = patternToRegex(...matches);\n const excludeMatchesRegex = patternToRegex(...excludeMatches !== null && excludeMatches !== void 0 ? excludeMatches : []);\n const inject = async (url, tabId, frameId = 0) => {\n if (!matchesRegex.test(url) // Manual `matches` glob matching\n || excludeMatchesRegex.test(url) // Manual `exclude_matches` glob matching\n || !await isOriginPermitted(url) // Without this, we might have temporary access via accessTab\n ) {\n return;\n }\n await injectContentScript({\n tabId,\n frameId,\n }, {\n css,\n js,\n matchAboutBlank,\n runAt,\n }, {\n ignoreTargetErrors: true,\n });\n };\n const tabListener = async (tabId, { status }, { url }) => {\n // Only status updates are relevant\n // No URL = no permission\n if (status === 'loading' && url) {\n void inject(url, tabId);\n }\n };\n const navListener = async ({ tabId, frameId, url, }) => {\n void inject(url, tabId, frameId);\n };\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.addListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.addListener(tabListener);\n }\n const registeredContentScript = {\n async unregister() {\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.removeListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.removeListener(tabListener);\n }\n },\n };\n if (typeof callback === 'function') {\n callback(registeredContentScript);\n }\n return registeredContentScript;\n}\n","/// \n// The .js extension is required to create ESM-compatible file\nimport register from './ponyfill.js';\nif (typeof chrome === 'object' && !chrome.contentScripts) {\n chrome.contentScripts = { register };\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(1398);\n"],"names":["sendRealRequestToCustomServer","type","url","data","headers","toLowerCase","objectToURI","fetch","method","redirect","body","JSON","stringify","isSerializable","value","window","structuredClone","serializeOrStringify","toString","String","chrome","runtime","onMessage","addListener","request","sender","callback","message","then","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","Array","from","Uint8Array","arrayBuffer","responseText","text","responseBinary","returnHeaders","entries","reduce","acc","key","status","ok","catch","error","console","getHash","times","e","Promise","resolve","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","cleanupListeners","getCleanupId","id","listener","push","source","started","performance","now","postMessage","addEventListener","extraScripts","ignoreNormalScipts","scripts","concat","getManifest","content_scripts","cs","tab","tabs","query","matches","css","length","scripting","insertCSS","target","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","match","replace","file","navigator","vendor","formatKey","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","Date","add","delayUpdate","items","clear","map","v","k","setTimeout","get","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","location","href","includes","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","isVisible","element","ignoreWidth","tagName","classList","contains","document","querySelectorAll","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","left","width","top","height","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","textContent","trim","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","node","possibleElements","disconnect","MutationObserver","observe","documentElement","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","Math","max","hours","floor","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","isNaN","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","digest","TextEncoder","encode","b","padStart","join","condition","timeout","check","interval","intervalCheck","clearInterval","Error","stack","setInterval","includeQuestionMark","counter","seperator","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","version","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","random","localizedTitle","title","localizedMessage","innerHTML","onTabUpdatedListener","onNavigationApiAvailableChange","navigationApiAvailable","onUpdated","removeListener","waitFor","utils","registerFirefoxContentScript","unregisterFirefoxContentScript","popupPort","contentScriptRegistrations","options","existingRegistrations","getRegisteredContentScripts","ids","every","registerContentScripts","runAt","allFrames","persistAcrossSessions","contentScripts","register","registration","unregisterContentScripts","unregister","wait","supportInvidious","setupExtraSiteContentScripts","setupBackgroundRequestProxy","setupTabUpdates","create","getURL","hash","UUID","category","videoID","userID","generateUserID","typeSection","address","serverAddress","testingServer","CompileConfig","testingServerAddress","asyncRequestToServer","submitVote","active","currentWindow","onMessageExternal","getExtensionIdsToImportFrom","allowExpirements","showDonationLink","showUpsells","darkMode","onConnect","port","name","onInstalled","alreadyInstalled","newUserID","categoryPillUpdate","containsInvidiousPermission","prideTheme","injectUpdatedScripts","logWarn","getExtraSiteRegistration","ConfigClass","ProtoConfig","resetToDefault","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","ytInfoPermissionGranted","showPopupDonationCount","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","hookUpdate","showChapterInfoMessage","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","s","channelID","keys","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","removeExtraSiteRegistration","applyInvidiousPermissions","enable","getMergedTimestamps","timestamps","deduped","forEach","range","startOverlaps","findIndex","other","endOverlaps","other1","splice","other2","min","slice","getTimestampsDuration","getSponsorIndexFromUUID","sponsorTimes","startsWith","getSponsorTimeFromUUID","domains","permissionRegex","findReferenceNode","referenceNode","findValidElementFromSelector","player","getElementById","firstChild","index","children","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","hidden","extension","inIncognitoContext","segmentIDData","formatJSErrorMessage","logRequest","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","segments","lastAccess","existingData","segment","uuid","Visible","indexOf","extensionImportList","safari","firefox","chromium","extensionIds","count","toISOString","log","sendRequestToCustomServer","globalThis","NestedProxy","arguments_","patternValidationRegex","isFirefox","allStarsRegex","allUrlsRegex","matchPatterns","RegExp","x","matchPattern","test","host","pathname","split","getRawPatternRegex","gotScripting","castArray","possibleArray","isArray","arrayOrUndefined","async","frameId","matchAboutBlank","ignoreTargetErrors","everyInsertion","content","frameIds","catchTargetInjectionErrors","normalizedFiles","assertNoCode","injection","executions","at","targetErrors","gotNavigation","contentScriptOptions","excludeMatches","pattern","matchesRegex","excludeMatchesRegex","inject","URL","origin","isOriginPermitted","where","targets","injections","flatMap","match_about_blank","run_at","injectContentScriptInSpecificTarget","castAllFramesTarget","injectContentScript","tabListener","navListener","webNavigation","onCommitted","registeredContentScript","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/firefox-beta/6.0.3/content.js.LICENSE.txt b/firefox-beta/6.0.3/content.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/firefox-beta/6.0.3/content.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/firefox-beta/6.0.3/content.js.map b/firefox-beta/6.0.3/content.js.map new file mode 100644 index 00000000..8cb63cc0 --- /dev/null +++ b/firefox-beta/6.0.3/content.js.map @@ -0,0 +1 @@ +{"version":3,"file":"content.js","mappings":"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","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/animationUtils.ts","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/components/Tooltip.tsx","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/CategoryPillComponent.tsx","webpack:///./src/components/ChapterVoteComponent.tsx","webpack:///./src/components/NoticeComponent.tsx","webpack:///./src/components/NoticeTextSectionComponent.tsx","webpack:///./src/components/SelectorComponent.tsx","webpack:///./src/components/SkipNoticeComponent.tsx","webpack:///./src/components/SponsorTimeEditComponent.tsx","webpack:///./src/components/SubmissionNoticeComponent.tsx","webpack:///./src/config.ts","webpack:///./src/content.ts","webpack:///./src/dearrowPromotion.ts","webpack:///./src/js-components/previewBar.ts","webpack:///./src/js-components/skipButtonControlBar.ts","webpack:///./src/render/CategoryPill.tsx","webpack:///./src/render/ChapterVote.tsx","webpack:///./src/render/GenericNotice.tsx","webpack:///./src/render/RectangleTooltip.tsx","webpack:///./src/render/SkipNotice.tsx","webpack:///./src/render/SubmissionNotice.tsx","webpack:///./src/render/Tooltip.tsx","webpack:///./src/render/UpcomingNotice.tsx","webpack:///./src/svg-icons/pencil_svg.tsx","webpack:///./src/svg-icons/sb_svg.tsx","webpack:///./src/svg-icons/thumbs_down_svg.tsx","webpack:///./src/svg-icons/thumbs_up_svg.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/arrayUtils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/compatibility.ts","webpack:///./src/utils/constants.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/genericUtils.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/mobileUtils.ts","webpack:///./src/utils/noticeUtils.ts","webpack:///./src/utils/pageCleaner.ts","webpack:///./src/utils/pageUtils.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/segmentData.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///./src/utils/thumbnails.ts","webpack:///./src/utils/urlParser.ts","webpack:///./src/utils/videoLabels.ts","webpack:///./src/utils/warnings.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n"," /**\n * Starts a spinning animation and returns a function to be called when it should be stopped\n * The callback will be called when the animation is finished \n * It waits until a full rotation is complete\n */\nfunction applyLoadingAnimation(element: HTMLElement, time: number, callback?: () => void): () => Promise {\n element.style.animation = `rotate ${time}s 0s infinite`;\n\n return async () => new Promise((resolve) => {\n // Make the animation finite\n element.style.animation = `rotate ${time}s`;\n\n // When the animation is over, hide the button\n const animationEndListener = () => {\n if (callback) callback();\n\n element.style.animation = \"none\";\n\n element.removeEventListener(\"animationend\", animationEndListener);\n\n resolve();\n };\n\n element.addEventListener(\"animationend\", animationEndListener);\n });\n}\n\nfunction setupCustomHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): { hide: () => void; show: () => void } {\n if (enabled) element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n element.classList.add(\"animationDone\");\n if (!rightSlide) element.classList.add(\"autoHideLeft\");\n\n let mouseEntered = false;\n\n return {\n hide: () => {\n mouseEntered = false;\n if (element.classList.contains(\"autoHiding\")) {\n element.classList.add(\"sbhidden\");\n }\n },\n show: () => {\n mouseEntered = true;\n element.classList.remove(\"animationDone\");\n\n // Wait for next event loop\n setTimeout(() => {\n if (mouseEntered) element.classList.remove(\"sbhidden\")\n }, 10);\n }\n };\n}\n\nfunction setupAutoHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): void {\n const { hide, show } = this.setupCustomHideAnimation(element, container, enabled, rightSlide);\n\n container.addEventListener(\"mouseleave\", () => hide());\n container.addEventListener(\"mouseenter\", () => show());\n}\n\nfunction enableAutoHideAnimation(element: Element): void {\n element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n}\n\nfunction disableAutoHideAnimation(element: Element): void {\n element.classList.remove(\"autoHiding\");\n element.classList.remove(\"sbhidden\");\n}\n\nexport const AnimationUtils = {\n applyLoadingAnimation,\n setupAutoHideAnimation,\n setupCustomHideAnimation,\n enableAutoHideAnimation,\n disableAutoHideAnimation\n};","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ButtonListener } from \"./component-types\";\nimport { isFirefoxOrSafari } from \"..\";\nimport { isSafari } from \"../config\";\n\nexport interface TooltipProps {\n text?: string;\n textBoxes?: string[];\n link?: string;\n linkOnClick?: () => void;\n secondButtonOnClick?: () => void;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n topOffset?: string;\n leftOffset?: string;\n rightOffset?: string;\n zIndex?: number;\n innerBottomMargin?: string;\n timeout?: number;\n opacity?: number;\n displayTriangle?: boolean;\n topTriangle?: boolean;\n extraClass?: string;\n showLogo?: boolean;\n showGotIt?: boolean;\n secondButtonText?: string;\n center?: boolean;\n positionRealtive?: boolean;\n containerAbsolute?: boolean;\n buttons?: ButtonListener[];\n elements?: JSX.Element[];\n buttonsAtBottom?: boolean;\n textBoxMaxHeight?: string;\n}\n\nexport class GenericTooltip {\n text?: string; \n container: HTMLDivElement;\n\n timer: NodeJS.Timeout;\n root: Root;\n \n constructor(props: TooltipProps, logoUrl: string) {\n props.bottomOffset ??= \"70px\";\n props.topOffset ??= \"inherit\";\n props.leftOffset ??= \"inherit\";\n props.rightOffset ??= \"inherit\";\n props.zIndex ??= 10000;\n props.innerBottomMargin ??= \"0px\";\n props.opacity ??= 0.7;\n props.displayTriangle ??= !props.topTriangle;\n props.topTriangle ??= false;\n props.extraClass ??= \"\";\n props.showLogo ??= true;\n props.showGotIt ??= true;\n props.positionRealtive ??= true;\n props.containerAbsolute ??= false;\n props.center ??= false;\n props.elements ??= [];\n props.buttonsAtBottom ??= false;\n props.textBoxes ??= [];\n props.textBoxMaxHeight ??= \"inherit\";\n this.text = props.text;\n\n this.container = document.createElement('div');\n this.container.id = \"sponsorTooltip\" + props.text;\n if (props.positionRealtive) this.container.style.position = \"relative\";\n if (props.containerAbsolute) this.container.style.position = \"absolute\";\n if (props.center) {\n if (isFirefoxOrSafari() && !isSafari()) {\n this.container.style.width = \"-moz-available\";\n } else {\n this.container.style.width = \"-webkit-fill-available\";\n }\n }\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n const backgroundColor = `rgba(28, 28, 28, ${props.opacity})`;\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n {props.showLogo ? \n \n \n : null}\n {this.text ? \n \n {this.getTextElements(this.text + (props.link ? \". \" : \"\"))}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : (props.linkOnClick ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null)}\n \n : null}\n\n {props.textBoxes ? props.textBoxes.map((text, index) => (\n
\n {text || String.fromCharCode(8203)} {/* Zero width space */}\n
\n )) : null}\n\n {props.elements}\n\n {!props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n
\n\n {props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n\n {props.showGotIt ?\n \n : null}\n\n {\n props.secondButtonText ?\n \n : null\n }\n
\n )\n }\n\n private getTextElements(text: string): JSX.Element[] {\n if (!text.includes(\"\\n\")) return [<>{text}];\n\n const result: JSX.Element[] = [];\n\n for (const line of text.split(\"\\n\")) {\n result.push(\n
\n {line}\n
\n );\n }\n\n return result;\n }\n\n getButtons(buttons: ButtonListener[] | undefined, buttonsAtBottom: boolean): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n const style: React.CSSProperties = {};\n if (buttonsAtBottom) {\n style.float = \"right\";\n }\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return [];\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport Config from \"../config\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface CategoryPillProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n showTextByDefault: boolean;\n showTooltipOnClick: boolean;\n}\n\nexport interface CategoryPillState {\n segment?: SponsorTime;\n show: boolean;\n open?: boolean;\n}\n\nclass CategoryPillComponent extends React.Component {\n mainRef: React.MutableRefObject;\n tooltip?: Tooltip;\n\n constructor(props: CategoryPillProps) {\n super(props);\n\n this.mainRef = React.createRef();\n\n this.state = {\n segment: null,\n show: false,\n open: false\n };\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {\n backgroundColor: this.getColor(),\n display: this.state.show ? \"flex\" : \"none\",\n color: this.getTextColor(),\n }\n\n // To be able to remove the margin from the parent\n this.mainRef?.current?.parentElement?.classList?.toggle(\"cbPillOpen\", this.state.show);\n\n return (\n this.toggleOpen(e)}\n onMouseEnter={() => this.openTooltip()}\n onMouseLeave={() => this.closeTooltip()}\n ref={this.mainRef}>\n \n \n \n \n\n {\n (this.props.showTextByDefault || this.state.open) &&\n \n {chrome.i18n.getMessage(\"category_\" + this.state.segment?.category)}\n \n }\n \n\n {this.state.open && (\n <>\n {/* Upvote Button */}\n
this.vote(e, 1)}>\n \n
\n\n {/* Downvote Button */}\n
this.vote(event, 0)}>\n \n
\n \n )}\n\n {/* Close Button */}\n {\n this.setState({ show: false });\n this.closeTooltip();\n }}>\n \n
\n );\n }\n\n private toggleOpen(event: React.MouseEvent): void {\n event.stopPropagation();\n\n if (this.state.show) {\n if (this.props.showTooltipOnClick) {\n if (this.state.open) {\n this.closeTooltip();\n } else {\n this.openTooltip();\n }\n }\n\n this.setState({ open: !this.state.open });\n }\n }\n\n private async vote(event: React.MouseEvent, type: number): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response) {\n console.error(\"[SB] Caught error while attempting to vote on a FV label\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status === 429) {\n this.setState({\n open: false,\n show: type === 1\n });\n\n this.closeTooltip();\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on FV label\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n\n private getColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-preview-${category}, var(--sb-category-${category}))`;\n }\n\n private getTextColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`;\n }\n\n private openTooltip(): void {\n if (this.tooltip) {\n this.tooltip.close();\n }\n\n const tooltipMount = document.querySelector(\"#above-the-fold, ytm-slim-owner-renderer\") as HTMLElement;\n if (tooltipMount) {\n this.tooltip = new Tooltip({\n text: this.getTitleText(),\n referenceNode: tooltipMount,\n bottomOffset: \"0px\",\n opacity: 0.95,\n displayTriangle: false,\n showLogo: false,\n showGotIt: false,\n prependElement: tooltipMount.firstElementChild as HTMLElement\n });\n }\n }\n\n private closeTooltip(): void {\n this.tooltip?.close?.();\n this.tooltip = null;\n }\n\n getTitleText(): string {\n const shortDescription = chrome.i18n.getMessage(`category_${this.state.segment?.category}_pill`);\n return (shortDescription ? shortDescription + \". \": \"\") + chrome.i18n.getMessage(\"categoryPillTitleText\");\n }\n}\n\nexport default CategoryPillComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport { ActionType, Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface ChapterVoteProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n size?: string;\n}\n\nexport interface ChapterVoteState {\n segment?: SponsorTime;\n show: boolean;\n size?: string;\n}\n\nclass ChapterVoteComponent extends React.Component {\n tooltip?: Tooltip;\n\n constructor(props: ChapterVoteProps) {\n super(props);\n\n this.state = {\n segment: null,\n show: false,\n size: props.size ?? \"22px\"\n };\n }\n\n render(): React.ReactElement {\n if (this.tooltip && !this.state.show) {\n this.tooltip.close();\n this.tooltip = null;\n }\n\n return (\n <>\n {/* Upvote Button */}\n \n\n {/* Downvote Button */}\n \n \n );\n }\n\n private async vote(event: React.MouseEvent, type: number, element?: HTMLElement): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(element ?? event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response){\n console.error(\"[SB] Caught error while attempting to vote on a chapter\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status == 429) {\n this.setState({\n show: type === 1\n });\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on chapter\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n}\n\nexport default ChapterVoteComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport SbSvg from \"../svg-icons/sb_svg\";\n\nenum CountdownMode {\n Timer,\n Paused,\n Stopped\n}\n\nexport interface NoticeProps {\n noticeTitle: string;\n\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n amountOfPreviousNotices?: number;\n showInSecondSlot?: boolean;\n timed?: boolean;\n idSuffix?: string;\n\n fadeIn?: boolean;\n fadeOut?: boolean;\n startFaded?: boolean;\n firstColumn?: React.ReactElement[] | React.ReactElement;\n firstRow?: React.ReactElement;\n bottomRow?: React.ReactElement[];\n\n smaller?: boolean;\n limitWidth?: boolean;\n extraClass?: string;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n logoFill?: string;\n\n // Callback for when this is closed\n closeListener: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n zIndex?: number;\n style?: React.CSSProperties;\n biggerCloseButton?: boolean;\n children?: React.ReactNode;\n}\n\ninterface MouseDownInfo {\n x: number;\n y: number;\n right: number;\n bottom: number;\n}\n\nexport interface NoticeState {\n maxCountdownTime: () => number;\n\n countdownTime: number;\n countdownMode: CountdownMode;\n\n mouseHovering: boolean;\n\n startFaded: boolean;\n\n mouseDownInfo: MouseDownInfo | null;\n mouseMoved: boolean;\n right: number;\n bottom: number;\n}\n\n// Limits for dragging notice around\nconst bounds = [10, 100, 10, 10];\n\nclass NoticeComponent extends React.Component {\n countdownInterval: NodeJS.Timeout;\n\n idSuffix: string;\n\n amountOfPreviousNotices: number;\n\n parentRef: React.RefObject;\n\n handleMouseMoveBinded: (e: MouseEvent) => void = this.handleMouseMove.bind(this);\n\n constructor(props: NoticeProps) {\n super(props);\n\n this.parentRef = React.createRef();\n\n const maxCountdownTime = () => {\n if (this.props.maxCountdownTime) return this.props.maxCountdownTime();\n else return Config.config.skipNoticeDuration;\n };\n \n //the id for the setInterval running the countdown\n this.countdownInterval = null;\n\n this.amountOfPreviousNotices = props.amountOfPreviousNotices || 0;\n\n this.idSuffix = props.idSuffix || \"\";\n\n // Setup state\n this.state = {\n maxCountdownTime,\n\n //the countdown until this notice closes\n countdownTime: maxCountdownTime(),\n countdownMode: CountdownMode.Timer,\n mouseHovering: false,\n\n startFaded: this.props.startFaded ?? false,\n\n mouseDownInfo: null,\n mouseMoved: false,\n right: bounds[0],\n bottom: props.showInSecondSlot ? 290 : bounds[1]\n }\n }\n\n componentDidMount(): void {\n this.startCountdown();\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = {\n zIndex: this.props.zIndex || (1000 + this.amountOfPreviousNotices),\n right: this.state.right,\n bottom: this.state.bottom,\n userSelect: this.state.mouseDownInfo && this.state.mouseMoved ? \"none\" : \"auto\",\n ...(this.props.style ?? {})\n }\n\n return (\n
this.onMouseEnter(e) }\n onMouseLeave={() => {\n this.timerMouseLeave();\n }}\n onMouseDown={(e) => {\n document.addEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: {\n x: e.clientX,\n y: e.clientY,\n right: this.state.right,\n bottom: this.state.bottom\n },\n mouseMoved: false\n });\n }}\n onMouseUp={() => {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: null\n });\n }}\n ref={this.parentRef}\n style={noticeStyle} >\n
\n \n \n\n {/* First row */}\n \n {/* Left column */}\n \n\n {this.props.firstRow}\n\n {/* Right column */}\n {!this.props.hideRightInfo &&\n \n }\n \n\n {this.props.children}\n\n {!this.props.smaller && this.props.bottomRow ? \n this.props.bottomRow\n : null}\n\n \n
\n {/* Logo */}\n {!this.props.hideLogo &&\n (\n !Config.config.prideTheme ?\n \n :\n \n )\n }\n\n \n \n {this.props.noticeTitle}\n \n\n {this.props.firstColumn}\n \n \n {/* Time left */}\n {this.props.timed ? ( \n this.toggleManualPause()}\n className=\"sponsorSkipObject sponsorSkipNoticeTimeLeft\">\n\n {this.getCountdownElements()}\n\n \n ) : \"\"}\n \n\n {/* Close button */}\n this.close()}>\n \n
\n
\n\n {/* Add as a hidden table to keep the height constant */}\n {this.props.smaller && this.props.bottomRow ? \n \n \n {this.props.bottomRow}\n \n
\n : null}\n
\n );\n }\n\n getCountdownElements(): React.ReactElement[] {\n return [(\n \n {chrome.i18n.getMessage(\"NoticeTimeAfterSkip\").replace(\"{seconds}\", Math.ceil(this.state.countdownTime).toString())}\n \n ),(\n {chrome.i18n.getMessage(\"paused\")}\n ),(\n {chrome.i18n.getMessage(\"manualPaused\")}\n )];\n }\n\n onMouseEnter(event: React.MouseEvent): void {\n if (this.props.onMouseEnter) this.props.onMouseEnter(event);\n\n this.fadedMouseEnter();\n this.timerMouseEnter();\n }\n\n fadedMouseEnter(): void {\n if (this.state.startFaded) {\n this.setState({\n startFaded: false\n });\n }\n }\n\n timerMouseEnter(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.pauseCountdown();\n\n this.setState({\n mouseHovering: true\n });\n }\n\n timerMouseLeave(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.startCountdown();\n\n this.setState({\n mouseHovering: false\n });\n }\n\n toggleManualPause(): void {\n this.setState({\n countdownMode: this.state.countdownMode === CountdownMode.Stopped ? CountdownMode.Timer : CountdownMode.Stopped\n }, () => {\n if (this.state.countdownMode === CountdownMode.Stopped || this.state.mouseHovering) {\n this.pauseCountdown();\n } else {\n this.startCountdown();\n }\n });\n }\n\n //called every second to lower the countdown before hiding the notice\n countdown(): void {\n if (!this.props.timed) return;\n\n const countdownTime = Math.min(this.state.countdownTime - 1, this.state.maxCountdownTime());\n\n if (countdownTime <= 0) {\n //remove this from setInterval\n clearInterval(this.countdownInterval);\n\n //time to close this notice\n this.close();\n\n return;\n }\n\n if (countdownTime == 3 && this.props.fadeOut) {\n //start fade out animation\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice?.style.removeProperty(\"animation\");\n notice?.classList.add(\"sponsorSkipNoticeFadeOut\");\n }\n\n this.setState({\n countdownTime\n })\n }\n \n removeFadeAnimation(): void {\n //remove the fade out class if it exists\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice.classList.remove(\"sponsorSkipNoticeFadeOut\");\n notice.style.animation = \"none\";\n }\n\n pauseCountdown(): void {\n if (!this.props.timed || this.props.dontPauseCountdown) return;\n\n //remove setInterval\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n this.countdownInterval = null;\n\n //reset countdown and inform the user\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: this.state.countdownMode === CountdownMode.Timer ? CountdownMode.Paused : this.state.countdownMode\n });\n \n this.removeFadeAnimation();\n }\n\n startCountdown(): void {\n if (!this.props.timed) return;\n\n //if it has already started, don't start it again\n if (this.countdownInterval !== null) return;\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.setupInterval();\n }\n\n setupInterval(): void {\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n\n this.countdownInterval = setInterval(this.countdown.bind(this), 1000);\n }\n\n resetCountdown(): void {\n if (!this.props.timed) return;\n\n this.setupInterval();\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.removeFadeAnimation();\n }\n \n /**\n * @param silent If true, the close listener will not be called\n */\n close(silent?: boolean): void {\n //remove setInterval\n if (this.countdownInterval !== null) clearInterval(this.countdownInterval);\n\n if (!silent) this.props.closeListener();\n }\n\n addNoticeInfoMessage(message: string, message2 = \"\"): void {\n //TODO: Replace\n\n const previousInfoMessage = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix);\n if (previousInfoMessage != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage);\n }\n\n const previousInfoMessage2 = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix + \"2\");\n if (previousInfoMessage2 != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage2);\n }\n \n //add info\n const thanksForVotingText = document.createElement(\"p\");\n thanksForVotingText.id = \"sponsorTimesInfoMessage\" + this.idSuffix;\n thanksForVotingText.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText.innerText = message;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n \n if (message2 !== undefined) {\n const thanksForVotingText2 = document.createElement(\"p\");\n thanksForVotingText2.id = \"sponsorTimesInfoMessage\" + this.idSuffix + \"2\";\n thanksForVotingText2.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText2.innerText = message2;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText2, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n }\n }\n\n getElement(): React.RefObject {\n return this.parentRef;\n }\n\n componentWillUnmount(): void {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n\n // For dragging around notice\n handleMouseMove(e: MouseEvent): void {\n if (this.state.mouseDownInfo && e.buttons === 1) {\n const [mouseX, mouseY] = [e.clientX, e.clientY];\n\n const deltaX = mouseX - this.state.mouseDownInfo.x;\n const deltaY = mouseY - this.state.mouseDownInfo.y;\n\n if (deltaX > 0 || deltaY > 0) this.setState({ mouseMoved: true });\n\n const element = this.parentRef.current;\n const parent = element.parentElement.parentElement;\n this.setState({\n right: Math.min(parent.clientWidth - element.clientWidth - bounds[2], Math.max(bounds[0], this.state.mouseDownInfo.right - deltaX)),\n bottom: Math.min(parent.clientHeight - element.clientHeight - bounds[3], Math.max(bounds[1], this.state.mouseDownInfo.bottom - deltaY))\n });\n } else {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n }\n}\n\nexport default NoticeComponent;\n","import * as React from \"react\";\n\nexport interface NoticeTextSelectionProps {\n icon?: string;\n text: string;\n idSuffix: string;\n onClick?: (event: React.MouseEvent) => unknown;\n children?: React.ReactNode;\n}\n\nexport interface NoticeTextSelectionState {\n\n}\n\nclass NoticeTextSelectionComponent extends React.Component {\n\n constructor(props: NoticeTextSelectionProps) {\n super(props);\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {};\n if (this.props.onClick) {\n style.cursor = \"pointer\";\n style.textDecoration = \"underline\"\n }\n\n return (\n \n \n \n {this.props.icon ? \n \n : null}\n\n \n {this.getTextElements(this.props.text)}\n \n \n \n );\n }\n\n private getTextElements(text: string): Array {\n const elements: Array = [];\n const textParts = text.split(/(?=\\s+)/);\n for (const textPart of textParts) {\n if (textPart.match(/^\\s*http/)) {\n elements.push(\n \n {textPart}\n \n );\n } else {\n elements.push(textPart);\n }\n\n }\n\n return elements;\n }\n}\n\nexport default NoticeTextSelectionComponent;","import * as React from \"react\";\n\nexport interface SelectorOption {\n label: string;\n}\n\nexport interface SelectorProps { \n id: string;\n options: SelectorOption[];\n onChange: (value: string) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport interface SelectorState {\n\n}\n\nclass SelectorComponent extends React.Component {\n\n constructor(props: SelectorProps) {\n super(props);\n\n // Setup state\n this.state = {\n \n }\n }\n\n render(): React.ReactElement {\n return (\n
0 ? \"inherit\" : \"none\"}}\n className=\"sbSelector\">\n
\n {this.getOptions()}\n
\n
\n );\n }\n\n getOptions(): React.ReactElement[] {\n const result: React.ReactElement[] = [];\n for (const option of this.props.options) {\n result.push(\n
{\n e.stopPropagation();\n this.props.onChange(option.label);\n }}\n key={option.label}>\n {option.label}\n
\n );\n }\n\n return result;\n }\n}\n\nexport default SelectorComponent;","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\"\nimport { Category, ContentContainer, SponsorTime, NoticeVisibilityMode, ActionType, SponsorSourceType, SegmentUUID } from \"../types\";\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport Utils from \"../utils\";\nconst utils = new Utils();\nimport { getSkippingText, getUpcomingText, getVoteText } from \"../utils/categoryUtils\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport PencilSvg from \"../svg-icons/pencil_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { getFormattedTime } from \"../../maze-utils/src/formating\";\nimport { getCurrentTime, getVideo } from \"../../maze-utils/src/video\";\n\nenum SkipButtonState {\n Undo, // Unskip\n Redo, // Reskip\n Start // Skip\n}\n\nexport interface SkipNoticeProps {\n segments: SponsorTime[];\n\n autoSkip: boolean;\n startReskip?: boolean;\n upcomingNotice?: boolean;\n voteNotice?: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n closeListener: () => void;\n showKeybindHint?: boolean;\n smaller: boolean;\n fadeIn: boolean;\n maxCountdownTime?: number;\n\n componentDidMount?: () => void;\n\n unskipTime?: number;\n}\n\nexport interface SkipNoticeState {\n noticeTitle?: string;\n\n messages?: string[];\n messageOnClick?: (event: React.MouseEvent) => unknown;\n\n countdownTime?: number;\n maxCountdownTime?: () => number;\n countdownText?: string;\n\n skipButtonStates?: SkipButtonState[];\n skipButtonCallbacks?: Array<(buttonIndex: number, index: number, forceSeek: boolean) => void>;\n showSkipButton?: boolean[];\n\n editing?: boolean;\n choosingCategory?: boolean;\n thanksForVotingText?: string; //null until the voting buttons should be hidden\n\n actionState?: SkipNoticeAction;\n\n showKeybindHint?: boolean;\n\n smaller?: boolean;\n\n voted?: SkipNoticeAction[];\n copied?: SkipNoticeAction[];\n\n}\n\nclass SkipNoticeComponent extends React.Component {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n amountOfPreviousNotices: number;\n showInSecondSlot: boolean;\n\n idSuffix: string;\n\n noticeRef: React.MutableRefObject;\n categoryOptionRef: React.RefObject;\n\n selectedColor: string;\n unselectedColor: string;\n lockedColor: string;\n\n // Used to update on config change\n configListener: () => void;\n\n constructor(props: SkipNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n this.categoryOptionRef = React.createRef();\n\n this.segments = props.segments;\n this.autoSkip = props.autoSkip;\n this.contentContainer = props.contentContainer;\n\n const noticeTitle = this.props.voteNotice ? getVoteText(this.segments) : !this.props.upcomingNotice ? getSkippingText(this.segments, this.props.autoSkip) : getUpcomingText(this.segments);\n\n const previousSkipNotices = document.querySelectorAll(\".sponsorSkipNoticeParent:not(.sponsorSkipUpcomingNotice)\");\n this.amountOfPreviousNotices = previousSkipNotices.length;\n // If there is at least one already in the first slot\n this.showInSecondSlot = previousSkipNotices.length > 0 && [...previousSkipNotices].some(notice => !notice.classList.contains(\"secondSkipNotice\"));\n\n // Sort segments\n if (this.segments.length > 1) {\n this.segments.sort((a, b) => a.segment[0] - b.segment[0]);\n }\n\n // This is the suffix added at the end of every id\n for (const segment of this.segments) {\n this.idSuffix += segment.UUID;\n }\n this.idSuffix += this.amountOfPreviousNotices;\n\n this.selectedColor = Config.config.colorPalette.red;\n this.unselectedColor = Config.config.colorPalette.white;\n this.lockedColor = Config.config.colorPalette.locked;\n\n const isMuteSegment = this.segments[0].actionType === ActionType.Mute;\n const maxCountdownTime = props.maxCountdownTime ? () => props.maxCountdownTime : (isMuteSegment ? this.getFullDurationCountdown(0) : () => Config.config.skipNoticeDuration);\n\n const defaultSkipButtonState = this.props.startReskip ? SkipButtonState.Redo : SkipButtonState.Undo;\n const skipButtonStates = [defaultSkipButtonState, isMuteSegment ? SkipButtonState.Start : defaultSkipButtonState];\n\n const defaultSkipButtonCallback = this.props.startReskip ? this.reskip.bind(this) : this.unskip.bind(this);\n const skipButtonCallbacks = [defaultSkipButtonCallback, isMuteSegment ? this.reskip.bind(this) : defaultSkipButtonCallback];\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n messageOnClick: null,\n\n //the countdown until this notice closes\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n countdownText: null,\n\n skipButtonStates,\n skipButtonCallbacks,\n showSkipButton: [true, true],\n\n editing: false,\n choosingCategory: false,\n thanksForVotingText: null,\n\n actionState: SkipNoticeAction.None,\n\n showKeybindHint: this.props.showKeybindHint ?? true,\n\n smaller: this.props.smaller ?? false,\n\n // Keep track of what segment the user interacted with.\n voted: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n copied: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n }\n\n if (!this.autoSkip) {\n // Assume manual skip is only skipping 1 submission\n Object.assign(this.state, this.getUnskippedModeInfo(null, 0, SkipButtonState.Start));\n }\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = { }\n if (this.contentContainer().onMobileYouTube) {\n noticeStyle.bottom = \"4em\";\n noticeStyle.transform = \"scale(0.8) translate(10%, 10%)\";\n }\n\n const firstColumn = this.getSkipButton(0);\n\n return (\n = NoticeVisibilityMode.FadedForAll\n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.FadedForAutoSkip && this.autoSkip)}\n timed={true}\n maxCountdownTime={this.state.maxCountdownTime}\n style={noticeStyle}\n biggerCloseButton={this.contentContainer().onMobileYouTube}\n ref={this.noticeRef}\n closeListener={() => this.closeListener()}\n smaller={this.state.smaller}\n logoFill={Config.config.barTypes[this.segments[0].category].color}\n limitWidth={true}\n firstColumn={firstColumn}\n dontPauseCountdown={!!this.props.upcomingNotice}\n bottomRow={[...this.getMessageBoxes(), ...this.getBottomRow() ]}\n extraClass={this.props.upcomingNotice ? \"sponsorSkipUpcomingNotice\" : \"\"}\n onMouseEnter={() => this.onMouseEnter() } >\n \n );\n }\n\n componentDidMount(): void {\n if (this.props.componentDidMount) {\n this.props.componentDidMount();\n }\n }\n\n getBottomRow(): JSX.Element[] {\n return [\n /* Bottom Row */\n (\n\n {/* Vote Button Container */}\n {!this.state.thanksForVotingText ?\n \n\n {/* Upvote Button */}\n
this.prepAction(SkipNoticeAction.Upvote)}>\n \n
\n\n {/* Report Button */}\n
this.prepAction(SkipNoticeAction.Downvote)}>\n \n
\n\n {/* Copy and Downvote Button */}\n {\n !this.props.voteNotice &&\n
this.openEditingOptions()}>\n \n
\n }\n \n\n :\n\n \n\n {/* Submitted string */}\n \n {this.state.thanksForVotingText}\n \n\n {/* Continue Voting Button */}\n \n \n }\n\n {/* Unskip/Skip Button */}\n {!this.props.voteNotice && (!this.props.smaller || this.segments[0].actionType === ActionType.Mute)\n ? this.getSkipButton(1) : null}\n\n {/* Never show button */}\n {!this.autoSkip || this.props.startReskip || this.props.voteNotice ? \"\" :\n \n \n \n }\n ),\n\n /* Edit Segments Row */\n (this.state.editing && !this.state.thanksForVotingText && !(this.state.choosingCategory || this.state.actionState === SkipNoticeAction.CopyDownvote) &&\n \n \n\n {/* Copy Segment */}\n \n\n {/* Category vote */}\n \n \n \n ),\n\n /* Category Chooser Row */\n (this.state.choosingCategory && !this.state.thanksForVotingText &&\n \n \n {/* Category Selector */}\n \n\n {/* Submit Button */}\n {this.segments.length === 1 &&\n \n }\n \n \n ),\n\n /* Segment Chooser Row */\n (this.state.actionState !== SkipNoticeAction.None && this.segments.length > 1 && !this.state.thanksForVotingText &&\n \n \n {this.getSubmissionChooser()}\n \n \n )\n ];\n }\n\n getSkipButton(buttonIndex: number): JSX.Element {\n if (this.state.showSkipButton[buttonIndex] && (this.segments.length > 1\n || this.segments[0].actionType !== ActionType.Poi\n || this.props.unskipTime)) {\n\n const forceSeek = buttonIndex === 1 && this.segments[0].actionType === ActionType.Mute;\n\n const style: React.CSSProperties = {\n marginLeft: \"4px\",\n color: ([SkipNoticeAction.Unskip0, SkipNoticeAction.Unskip1].includes(this.state.actionState))\n ? this.selectedColor : this.unselectedColor\n };\n if (this.contentContainer().onMobileYouTube) {\n style.padding = \"20px\";\n style.minWidth = \"100px\";\n }\n\n const showSkipButton = (buttonIndex !== 0 || this.props.smaller || !this.props.voteNotice || this.segments[0].actionType === ActionType.Mute) && !this.props.upcomingNotice;\n\n return (\n \n \n \n );\n }\n return null;\n }\n\n getSubmissionChooser(): JSX.Element[] {\n const elements: JSX.Element[] = [];\n for (let i = 0; i < this.segments.length; i++) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getSubmissionChooserOpacity(index: number): number {\n const isUpvote = this.state.actionState === SkipNoticeAction.Upvote;\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldBeGray: boolean = (isUpvote && this.state.voted[index] == SkipNoticeAction.Upvote) ||\n (isDownvote && this.state.voted[index] == SkipNoticeAction.Downvote) ||\n (isCopyDownvote && this.state.copied[index] == SkipNoticeAction.CopyDownvote);\n\n return shouldBeGray ? 0.35 : 1;\n }\n\n getSubmissionChooserColor(index: number): string {\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldWarnUser = Config.config.isVip && (isDownvote || isCopyDownvote)\n && this.segments[index].locked === 1;\n\n return shouldWarnUser ? this.lockedColor : this.unselectedColor;\n }\n\n onMouseEnter(): void {\n if (this.state.smaller && !this.props.upcomingNotice) {\n this.setState({\n smaller: false\n });\n }\n }\n\n getMessageBoxes(): JSX.Element[] {\n if (this.state.messages.length === 0) {\n // Add a spacer if there is no text\n return [\n \n \n ];\n }\n\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n \n \n \n \n )\n }\n\n return elements;\n }\n\n prepAction(action: SkipNoticeAction): void {\n if (this.segments.length === 1) {\n this.performAction(0, action);\n } else {\n if (this.state.smaller) {\n this.setState({\n smaller: false\n });\n\n this.noticeRef.current.fadedMouseEnter();\n this.noticeRef.current.resetCountdown();\n }\n\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.resetStateToStart();\n break;\n case SkipNoticeAction.Upvote:\n this.resetStateToStart(SkipNoticeAction.Upvote);\n break;\n case SkipNoticeAction.Downvote:\n this.resetStateToStart(SkipNoticeAction.Downvote);\n break;\n case SkipNoticeAction.CategoryVote:\n this.resetStateToStart(SkipNoticeAction.CategoryVote, true, true);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.resetStateToStart(SkipNoticeAction.CopyDownvote, true);\n break;\n case SkipNoticeAction.Unskip0:\n this.resetStateToStart(SkipNoticeAction.Unskip0);\n break;\n case SkipNoticeAction.Unskip1:\n this.resetStateToStart(SkipNoticeAction.Unskip1);\n break;\n }\n }\n }\n\n /**\n * Performs the action from the current state\n *\n * @param index\n */\n performAction(index: number, action?: SkipNoticeAction): void {\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.noAction(index);\n break;\n case SkipNoticeAction.Upvote:\n this.upvote(index);\n break;\n case SkipNoticeAction.Downvote:\n this.downvote(index);\n break;\n case SkipNoticeAction.CategoryVote:\n this.categoryVote(index);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.copyDownvote(index);\n break;\n case SkipNoticeAction.Unskip0:\n this.unskipAction(0, index, false);\n break;\n case SkipNoticeAction.Unskip1:\n this.unskipAction(1, index, true);\n break;\n default:\n this.resetStateToStart();\n break;\n }\n }\n\n noAction(index: number): void {\n const voted = this.state.voted;\n voted[index] = SkipNoticeAction.None;\n\n this.setState({\n voted\n });\n }\n\n upvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n this.contentContainer().vote(1, this.segments[index].UUID, undefined, this);\n }\n\n downvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n }\n\n categoryVote(index: number): void {\n this.contentContainer().vote(undefined, this.segments[index].UUID, this.categoryOptionRef.current.value as Category, this)\n }\n\n copyDownvote(index: number): void {\n const sponsorVideoID = this.props.contentContainer().sponsorVideoID;\n const sponsorTimesSubmitting : SponsorTime = {\n segment: this.segments[index].segment,\n UUID: generateUserID() as SegmentUUID,\n category: this.segments[index].category,\n actionType: this.segments[index].actionType,\n source: SponsorSourceType.Local\n };\n\n const segmentTimes = Config.local.unsubmittedSegments[sponsorVideoID] || [];\n segmentTimes.push(sponsorTimesSubmitting);\n Config.local.unsubmittedSegments[sponsorVideoID] = segmentTimes;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().sponsorTimesSubmitting.push(sponsorTimesSubmitting);\n this.props.contentContainer().updatePreviewBar();\n this.props.contentContainer().resetSponsorSubmissionNotice();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n\n const copied = this.state.copied;\n copied[index] = SkipNoticeAction.CopyDownvote;\n\n this.setState({\n copied\n });\n }\n\n unskipAction(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.state.skipButtonCallbacks[buttonIndex](buttonIndex, index, forceSeek);\n }\n\n openEditingOptions(): void {\n this.resetStateToStart(undefined, true);\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [];\n\n const categories = (CompileConfig.categoryList.filter((cat => CompileConfig.categorySupport[cat].includes(ActionType.Skip)))) as Category[];\n for (const category of categories) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getCategoryNameClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\"\n }\n\n unskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().unskipSponsorTime(this.segments[index], this.props.unskipTime, forceSeek, this.props.voteNotice);\n\n this.unskippedMode(buttonIndex, index, this.segments[0].actionType === ActionType.Poi ? SkipButtonState.Undo : SkipButtonState.Redo);\n }\n\n reskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().reskipSponsorTime(this.segments[index], forceSeek);\n this.reskippedMode(buttonIndex);\n }\n\n reskippedMode(buttonIndex: number): void {\n const skipButtonStates = this.state.skipButtonStates;\n skipButtonStates[buttonIndex] = SkipButtonState.Undo;\n\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n skipButtonCallbacks[buttonIndex] = this.unskip.bind(this);\n\n const newState: SkipNoticeState = {\n skipButtonStates,\n skipButtonCallbacks,\n\n maxCountdownTime: () => Config.config.skipNoticeDuration,\n countdownTime: Config.config.skipNoticeDuration\n };\n\n //reset countdown\n this.setState(newState, () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n /** Sets up notice to be not skipped yet */\n unskippedMode(buttonIndex: number, index: number, skipButtonState: SkipButtonState): void {\n //setup new callback and reset countdown\n this.setState(this.getUnskippedModeInfo(buttonIndex, index, skipButtonState), () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n getUnskippedModeInfo(buttonIndex: number, index: number, skipButtonState: SkipButtonState): SkipNoticeState {\n const changeCountdown = !this.props.voteNotice && this.segments[index].actionType !== ActionType.Poi;\n\n const maxCountdownTime = changeCountdown ?\n this.getFullDurationCountdown(index) : this.state.maxCountdownTime;\n\n const skipButtonStates = this.state.skipButtonStates;\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n if (buttonIndex === null) {\n for (let i = 0; i < skipButtonStates.length; i++) {\n skipButtonStates[i] = skipButtonState;\n skipButtonCallbacks[i] = this.reskip.bind(this);\n }\n } else {\n skipButtonStates[buttonIndex] = skipButtonState;\n skipButtonCallbacks[buttonIndex] = this.reskip.bind(this);\n\n if (buttonIndex === 1) {\n // Trigger both to move at once\n skipButtonStates[0] = SkipButtonState.Redo;\n skipButtonCallbacks[0] = this.reskip.bind(this);\n }\n }\n\n return {\n skipButtonStates,\n skipButtonCallbacks,\n // change max duration to however much of the sponsor is left\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n showSkipButton: buttonIndex === 1 ? [true, true] : this.state.showSkipButton\n } as SkipNoticeState;\n }\n\n getFullDurationCountdown(index: number): () => number {\n return () => {\n const sponsorTime = this.segments[index];\n const duration = Math.round((sponsorTime.segment[1] - (getCurrentTime() ?? 0)) * (1 / (getVideo()?.playbackRate ?? 1)));\n\n return Math.max(duration, Config.config.skipNoticeDuration);\n };\n }\n\n afterVote(segment: SponsorTime, type: number, category: Category): void {\n const index = utils.getSponsorIndexFromUUID(this.segments, segment.UUID);\n const wikiLinkText = CompileConfig.wikiLinks[segment.category];\n\n const voted = this.state.voted;\n switch (type) {\n case 0:\n this.clearConfigListener();\n this.setNoticeInfoMessageWithOnClick(() => window.open(wikiLinkText), chrome.i18n.getMessage(\"OpenCategoryWikiPage\"));\n\n voted[index] = SkipNoticeAction.Downvote;\n break;\n case 1:\n voted[index] = SkipNoticeAction.Upvote;\n break;\n case 20:\n voted[index] = SkipNoticeAction.None;\n break;\n }\n\n this.setState({\n voted\n });\n\n this.addVoteButtonInfo(chrome.i18n.getMessage(\"voted\"));\n\n if (segment && category) {\n // This is the segment inside the skip notice\n this.segments[index].category = category;\n }\n }\n\n setNoticeInfoMessageWithOnClick(onClick: (event: React.MouseEvent) => unknown, ...messages: string[]): void {\n this.setState({\n messages,\n messageOnClick: (event) => onClick(event)\n });\n }\n\n setNoticeInfoMessage(...messages: string[]): void {\n this.setState({\n messages\n });\n }\n\n addVoteButtonInfo(message: string): void {\n this.setState({\n thanksForVotingText: message\n });\n }\n\n resetVoteButtonInfo(): void {\n this.setState({\n thanksForVotingText: null\n });\n }\n\n closeListener(): void {\n this.clearConfigListener();\n\n this.props.closeListener();\n }\n\n clearConfigListener(): void {\n if (this.configListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configListener), 1);\n this.configListener = null;\n }\n }\n\n unmutedListener(time: number): void {\n if (this.props.segments.length === 1\n && this.props.segments[0].actionType === ActionType.Mute\n && time >= this.props.segments[0].segment[1]) {\n this.setState({\n showSkipButton: [false, true]\n });\n }\n }\n\n resetStateToStart(actionState: SkipNoticeAction = SkipNoticeAction.None, editing = false, choosingCategory = false): void {\n this.setState({\n actionState: actionState,\n editing: editing,\n choosingCategory: choosingCategory,\n thanksForVotingText: null,\n messages: []\n });\n }\n\n private getSkipButtonText(buttonIndex: number, forceType?: ActionType): string {\n switch (this.state.skipButtonStates[buttonIndex]) {\n case SkipButtonState.Undo:\n return this.getUndoText(forceType);\n case SkipButtonState.Redo:\n return this.getRedoText(forceType);\n case SkipButtonState.Start:\n return this.getStartText(forceType);\n }\n }\n\n private getUndoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"unmute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"unskip\");\n }\n }\n }\n\n private getRedoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"reskip\");\n }\n }\n }\n\n private getStartText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"skip\");\n }\n }\n }\n}\n\nexport default SkipNoticeComponent;\n","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\";\nimport { ActionType, Category, ChannelIDStatus, ContentContainer, SponsorHideType, SponsorTime } from \"../types\";\nimport SubmissionNoticeComponent from \"./SubmissionNoticeComponent\";\nimport { RectangleTooltip } from \"../render/RectangleTooltip\";\nimport SelectorComponent, { SelectorOption } from \"./SelectorComponent\";\nimport { DEFAULT_CATEGORY } from \"../utils/categoryUtils\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport { defaultPreviewTime } from \"../utils/constants\";\nimport { getVideo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface SponsorTimeEditProps {\n index: number;\n\n idSuffix: string;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n submissionNotice: SubmissionNoticeComponent;\n categoryList?: Category[];\n categoryChangeListener?: (index: number, category: Category) => void;\n children?: React.ReactNode;\n}\n\nexport interface SponsorTimeEditState {\n editing: boolean;\n sponsorTimeEdits: [string, string];\n selectedCategory: Category;\n selectedActionType: ActionType;\n description: string;\n suggestedNames: SelectorOption[];\n chapterNameSelectorOpen: boolean;\n chapterNameSelectorHovering: boolean;\n}\n\nconst categoryNamesGrams: string[] = [].concat(...CompileConfig.categoryList.filter((name) => ![\"chapter\", \"intro\"].includes(name))\n .map((name) => chrome.i18n.getMessage(\"category_\" + name).split(/\\/|\\s|-/)));\n\nclass SponsorTimeEditComponent extends React.Component {\n\n idSuffix: string;\n\n categoryOptionRef: React.RefObject;\n actionTypeOptionRef: React.RefObject;\n descriptionOptionRef: React.RefObject;\n\n configUpdateListener: () => void;\n\n previousSkipType: ActionType;\n // Used when selecting POI or Full\n timesBeforeChanging: number[] = [];\n fullVideoWarningShown = false;\n categoryNameWarningShown = false;\n\n // For description auto-complete\n fetchingSuggestions: boolean;\n\n constructor(props: SponsorTimeEditProps) {\n super(props);\n\n this.categoryOptionRef = React.createRef();\n this.actionTypeOptionRef = React.createRef();\n this.descriptionOptionRef = React.createRef();\n\n this.idSuffix = this.props.idSuffix;\n this.previousSkipType = ActionType.Skip;\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.state = {\n editing: false,\n sponsorTimeEdits: [null, null],\n selectedCategory: sponsorTime.category ?? DEFAULT_CATEGORY as Category,\n selectedActionType: sponsorTime.actionType,\n description: sponsorTime.description || \"\",\n suggestedNames: [],\n chapterNameSelectorOpen: false,\n chapterNameSelectorHovering: false\n };\n }\n\n componentDidMount(): void {\n // Prevent inputs from triggering key events\n document.getElementById(\"sponsorTimeEditContainer\" + this.idSuffix).addEventListener('keydown', (e) => {\n e.stopPropagation();\n });\n\n // Prevent scrolling while changing times\n document.getElementById(\"sponsorTimesContainer\" + this.idSuffix).addEventListener('wheel', (e) => {\n if (this.state.editing) {\n e.preventDefault();\n }\n }, {passive: false});\n\n // Add as a config listener\n if (!this.configUpdateListener) {\n this.configUpdateListener = () => this.configUpdate();\n Config.configSyncListeners.push(this.configUpdate.bind(this));\n }\n\n this.checkToShowFullVideoWarning();\n }\n\n componentWillUnmount(): void {\n if (this.configUpdateListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configUpdate.bind(this)), 1);\n }\n }\n\n render(): React.ReactElement {\n this.checkToShowFullVideoWarning();\n this.checkToShowChapterWarning();\n\n const style: React.CSSProperties = {\n textAlign: \"center\"\n };\n\n if (this.props.index != 0) {\n style.marginTop = \"15px\";\n }\n\n const borderColor = this.state.selectedCategory ? Config.config.barTypes[this.state.selectedCategory]?.color : null;\n\n // Create time display\n let timeDisplay: JSX.Element;\n const timeDisplayStyle: React.CSSProperties = {};\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segment = sponsorTime.segment;\n if (this.state.selectedActionType === ActionType.Full) timeDisplayStyle.display = \"none\";\n if (this.state.editing) {\n timeDisplay = (\n
\n\n {this.state.selectedActionType !== ActionType.Poi ? (\n this.setTimeTo(0, 0)}>\n {chrome.i18n.getMessage(\"bracketStart\")}\n \n ): \"\"}\n\n this.setTimeToNow(0)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(0, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(0, e, sponsorTime)}>\n \n\n {this.state.selectedActionType !== ActionType.Poi ? (\n \n \n {\" \" + chrome.i18n.getMessage(\"to\") + \" \"}\n \n\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(1, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(1, e, sponsorTime)}>\n \n\n this.setTimeToNow(1)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n\n this.setTimeToEnd()}>\n {chrome.i18n.getMessage(\"bracketEnd\")}\n \n \n ): \"\"}\n
\n );\n } else {\n timeDisplay = (\n \n
\n {getFormattedTime(segment[0], true) +\n ((!isNaN(segment[1]) && this.state.selectedActionType !== ActionType.Poi)\n ? \" \" + chrome.i18n.getMessage(\"to\") + \" \" + getFormattedTime(segment[1], true) : \"\")}\n
\n );\n }\n\n return (\n
\n \n {timeDisplay}\n\n {/* Category */}\n
\n \n\n {/* open in new tab */}\n \n \n \n
\n\n {/* Action Type */}\n {CompileConfig.categorySupport[sponsorTime.category] && \n (CompileConfig.categorySupport[sponsorTime.category]?.length > 1 \n || CompileConfig.categorySupport[sponsorTime.category]?.[0] === ActionType.Full) ? (\n
\n \n {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.4);\n stopAnimation();\n \n if (sponsorTime.hidden === SponsorHideType.Hidden) {\n sponsorTime.hidden = SponsorHideType.Visible;\n } else {\n sponsorTime.hidden = SponsorHideType.Hidden;\n }\n\n this.saveEditTimes();\n }}/>\n
\n ): \"\"}\n\n {/* Chapter Name */}\n {this.state.selectedActionType=== ActionType.Chapter ? (\n
this.setState({chapterNameSelectorOpen: false})}>\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onContextMenu={(e) => e.stopPropagation()}\n onChange={(e) => this.descriptionUpdate(e.target.value)}\n onFocus={() => this.setState({chapterNameSelectorOpen: true})}>\n \n {this.state.description \n && (this.state.chapterNameSelectorOpen || this.state.chapterNameSelectorHovering) &&\n this.setState({chapterNameSelectorHovering: true})}\n onMouseLeave={() => this.setState({chapterNameSelectorHovering: false})}\n onChange={(v) => this.descriptionUpdate(v)}\n />\n }\n
\n ): \"\"}\n\n {/* Editing Tools */}\n\n
\n \n {chrome.i18n.getMessage(\"delete\")}\n \n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) \n && this.state.selectedActionType !== ActionType.Chapter ? (\n this.previewTime(e.ctrlKey, e.shiftKey)}>\n {chrome.i18n.getMessage(\"preview\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {chrome.i18n.getMessage(\"inspect\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) ? (\n this.previewTime(e.ctrlKey, e.shiftKey, true)}>\n {chrome.i18n.getMessage(\"End\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {this.state.editing ? chrome.i18n.getMessage(\"save\") : chrome.i18n.getMessage(\"edit\")}\n \n ): \"\"}\n
\n\n
\n );\n }\n\n handleOnChange(index: number, e: React.ChangeEvent, sponsorTime: SponsorTime, targetValue: string): void {\n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n \n // check if change is small engough to show tooltip\n const before = getFormattedTimeToSeconds(sponsorTimeEdits[index]);\n const after = getFormattedTimeToSeconds(targetValue);\n const difference = Math.abs(before - after);\n if (0 < difference && difference < 0.5) this.showScrollToEditToolTip();\n\n sponsorTimeEdits[index] = targetValue;\n if (index === 0 && sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = targetValue;\n\n this.setState({sponsorTimeEdits}, () => this.saveEditTimes());\n }\n\n changeTimesWhenScrolling(index: number, e: React.WheelEvent, sponsorTime: SponsorTime): void {\n if (!Config.config.allowScrollingToEdit) return;\n let step = 0;\n // shift + ctrl = 1\n // ctrl = 0.1\n // default = 0.01\n // shift = 0.001\n if (e.shiftKey) {\n step = (e.ctrlKey) ? 1 : 0.001;\n } else {\n step = (e.ctrlKey) ? 0.1 : 0.01;\n }\n \n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n let timeAsNumber = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[index]);\n if (timeAsNumber !== null && e.deltaY != 0) {\n if (e.deltaY < 0) {\n timeAsNumber += step;\n } else if (timeAsNumber >= step) {\n timeAsNumber -= step;\n } else {\n timeAsNumber = 0;\n }\n \n sponsorTimeEdits[index] = getFormattedTime(timeAsNumber, true);\n if (sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = sponsorTimeEdits[0];\n\n this.setState({sponsorTimeEdits});\n this.saveEditTimes();\n }\n }\n\n showScrollToEditToolTip(): void {\n if (!Config.config.scrollToEditTimeUpdate && document.getElementById(\"sponsorRectangleTooltip\" + \"sponsorTimesContainer\" + this.idSuffix) === null) {\n this.showToolTip(chrome.i18n.getMessage(\"SponsorTimeEditScrollNewFeature\"), \"scrollToEdit\", () => { Config.config.scrollToEditTimeUpdate = true });\n }\n }\n\n showToolTip(text: string, id: string, buttonFunction?: () => void): boolean {\n const element = document.getElementById(\"sponsorTimesContainer\" + this.idSuffix);\n if (element) {\n const htmlId = `sponsorRectangleTooltip${id + this.idSuffix}`;\n if (!document.getElementById(htmlId)) {\n new RectangleTooltip({\n text,\n referenceNode: element.parentElement,\n prependElement: element,\n timeout: 15,\n bottomOffset: 0 + \"px\",\n leftOffset: -318 + \"px\",\n backgroundColor: \"rgba(28, 28, 28, 1.0)\",\n htmlId,\n buttonFunction,\n fontSize: \"14px\",\n maxHeight: \"200px\"\n });\n }\n\n return true;\n } else {\n return false;\n }\n }\n\n checkToShowFullVideoWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segmentDuration = sponsorTime.segment[1] - sponsorTime.segment[0];\n const videoPercentage = segmentDuration / getVideoDuration();\n\n if (videoPercentage > 0.6 && !this.fullVideoWarningShown \n && (sponsorTime.category === \"sponsor\" || sponsorTime.category === \"selfpromo\" || sponsorTime.category === \"chooseACategory\")) {\n if (this.showToolTip(chrome.i18n.getMessage(\"fullVideoTooltipWarning\"), \"fullVideoWarning\")) {\n this.fullVideoWarningShown = true;\n }\n }\n }\n\n checkToShowChapterWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n if (sponsorTime.actionType === ActionType.Chapter && sponsorTime.description\n && !this.categoryNameWarningShown\n && categoryNamesGrams.some(\n (category) => sponsorTime.description.toLowerCase().includes(category.toLowerCase()))) {\n if (this.showToolTip(chrome.i18n.getMessage(\"chapterNameTooltipWarning\"), \"chapterWarning\")) {\n this.categoryNameWarningShown = true;\n }\n }\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [(\n \n )];\n\n for (const category of (this.props.categoryList ?? CompileConfig.categoryList)) {\n // If permission not loaded, treat it like we have permission except chapter\n const defaultBlockCategories = [\"chapter\"];\n const permission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[category as Category]);\n if ((defaultBlockCategories.includes(category) \n || (permission !== undefined && !Config.config.showCategoryWithoutPermission)) && !permission) continue;\n\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n getCategoryLockedClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\";\n }\n\n categorySelectionChange(event: React.ChangeEvent): void {\n const chosenCategory = event.target.value as Category;\n this.setState({\n selectedCategory: chosenCategory\n });\n\n // See if show more categories was pressed\n if (chosenCategory !== DEFAULT_CATEGORY && !Config.config.categorySelections.some((category) => category.name === chosenCategory)) {\n event.target.value = DEFAULT_CATEGORY;\n \n // Alert that they have to enable this category first\n if (confirm(chrome.i18n.getMessage(\"enableThisCategoryFirst\")\n .replace(\"{0}\", chrome.i18n.getMessage(\"category_\" + chosenCategory)))) {\n // Open options page\n chrome.runtime.sendMessage({message: \"openConfig\", hash: \"behavior\"});\n }\n \n return;\n }\n\n // Hook update\n if (!Config.config.hookUpdate && chosenCategory === \"preview\") {\n Config.config.hookUpdate = true;\n\n const target = event.target.closest(\".sponsorSkipNotice tbody\");\n if (target) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"hookNewFeature\"),\n referenceNode: target.parentElement,\n prependElement: target as HTMLElement,\n bottomOffset: \"30px\",\n opacity: 0.9,\n timeout: 100\n });\n }\n }\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.handleReplacingLostTimes(chosenCategory, sponsorTime.actionType, sponsorTime);\n this.saveEditTimes();\n\n if (this.props.categoryChangeListener) {\n this.props.categoryChangeListener(this.props.index, chosenCategory);\n }\n }\n\n actionTypeSelectionChange(event: React.ChangeEvent): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n selectedActionType: event.target.value as ActionType\n });\n\n this.handleReplacingLostTimes(sponsorTime.category, event.target.value as ActionType, sponsorTime);\n this.saveEditTimes();\n }\n\n private handleReplacingLostTimes(category: Category, actionType: ActionType, segment: SponsorTime): void {\n if (CompileConfig.categorySupport[category]?.includes(ActionType.Poi)) {\n if (this.previousSkipType !== ActionType.Poi) {\n this.timesBeforeChanging = [null, segment.segment[1]];\n }\n\n this.setTimeTo(1, null);\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n if (this.props.contentContainer().sponsorTimesSubmitting\n .some((segment, i) => segment.category === category && i !== this.props.index)) {\n alert(chrome.i18n.getMessage(\"poiOnlyOneSegment\"));\n }\n\n this.previousSkipType = ActionType.Poi;\n } else if (CompileConfig.categorySupport[category]?.length === 1 \n && CompileConfig.categorySupport[category]?.[0] === ActionType.Full) {\n if (this.previousSkipType !== ActionType.Full) {\n this.timesBeforeChanging = [...segment.segment];\n }\n\n this.previousSkipType = ActionType.Full;\n } else if ((category === \"chooseACategory\" || ((CompileConfig.categorySupport[category]?.includes(ActionType.Skip)\n || CompileConfig.categorySupport[category]?.includes(ActionType.Chapter))\n && ![ActionType.Poi, ActionType.Full].includes(this.getNextActionType(category, actionType))))\n && this.previousSkipType !== ActionType.Skip) {\n if (this.timesBeforeChanging[0]) {\n this.setTimeTo(0, this.timesBeforeChanging[0]);\n }\n if (this.timesBeforeChanging[1]) {\n this.setTimeTo(1, this.timesBeforeChanging[1]);\n }\n\n this.previousSkipType = ActionType.Skip;\n }\n }\n\n getActionTypeOptions(sponsorTime: SponsorTime): React.ReactElement[] {\n const elements = [];\n\n for (const actionType of CompileConfig.categorySupport[sponsorTime.category]) {\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n setTimeToNow(index: number): void {\n this.setTimeTo(index, this.props.contentContainer().getRealCurrentTime());\n }\n\n setTimeToEnd(): void {\n this.setTimeTo(1, getVideoDuration());\n }\n\n /**\n * @param index \n * @param time If null, will set time to the first index's time\n */\n setTimeTo(index: number, time: number): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n if (time === null) time = sponsorTime.segment[0];\n\n const addedTime = sponsorTime.segment.length === 1;\n sponsorTime.segment[index] = time;\n if (sponsorTime.actionType === ActionType.Poi) sponsorTime.segment[1] = time;\n\n if (addedTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n this.setState({\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n }, () => this.saveEditTimes());\n }\n\n toggleEditTime(): void {\n if (this.state.editing) {\n \n this.setState({\n editing: false\n });\n\n this.saveEditTimes(); \n } else {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n editing: true,\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n });\n }\n }\n\n /** Returns an array in the sponsorTimeEdits form (formatted time string) from a normal seconds sponsor time */\n getFormattedSponsorTimesEdits(sponsorTime: SponsorTime): [string, string] {\n return [getFormattedTime(sponsorTime.segment[0], true),\n getFormattedTime(sponsorTime.segment[1], true)];\n }\n\n lastEditTime = 0;\n editTimeTimeout: NodeJS.Timeout | null = null;\n saveEditTimes(): void {\n // Rate limit edits\n const timeSinceLastEdit = Date.now() - this.lastEditTime;\n const rateLimitTime = 200;\n if (timeSinceLastEdit < rateLimitTime) {\n if (!this.editTimeTimeout) {\n this.editTimeTimeout = setTimeout(() => {\n this.saveEditTimes();\n }, rateLimitTime - timeSinceLastEdit)\n }\n\n return;\n }\n\n this.lastEditTime = Date.now();\n this.editTimeTimeout = null;\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n const category = this.categoryOptionRef.current.value as Category\n\n if (this.state.editing) {\n const startTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[0]);\n const endTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[1]);\n\n // Change segment time only if the format was correct\n if (startTime !== null && endTime !== null) {\n const addingTime = sponsorTimesSubmitting[this.props.index].segment.length === 1;\n sponsorTimesSubmitting[this.props.index].segment = [startTime, endTime];\n\n if (addingTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n } else if (startTime !== null) {\n // Only start time is valid, still an incomplete segment\n sponsorTimesSubmitting[this.props.index].segment[0] = startTime;\n }\n } else if (this.state.sponsorTimeEdits[1] === null && category === \"outro\" && !sponsorTimesSubmitting[this.props.index].segment[1]) {\n sponsorTimesSubmitting[this.props.index].segment[1] = getVideoDuration();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n sponsorTimesSubmitting[this.props.index].category = category;\n\n const actionType = this.getNextActionType(category, this.actionTypeOptionRef?.current?.value as ActionType);\n sponsorTimesSubmitting[this.props.index].actionType = actionType;\n this.setState({\n selectedActionType: actionType\n });\n\n const description = actionType === ActionType.Chapter ? this.descriptionOptionRef?.current?.value : \"\";\n sponsorTimesSubmitting[this.props.index].description = description;\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n\n if (sponsorTimesSubmitting[this.props.index].actionType === ActionType.Full \n && (sponsorTimesSubmitting[this.props.index].segment[0] !== 0 || sponsorTimesSubmitting[this.props.index].segment[1] !== 0)) {\n this.setTimeTo(0, 0);\n this.setTimeTo(1, 0);\n }\n }\n\n private getNextActionType(category: Category, actionType: ActionType): ActionType {\n return actionType && CompileConfig.categorySupport[category]?.includes(actionType) ? actionType\n : CompileConfig.categorySupport[category]?.[0] ?? ActionType.Skip\n }\n\n previewTime(ctrlPressed = false, shiftPressed = false, skipToEndTime = false): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n let seekTime = defaultPreviewTime;\n if (ctrlPressed) seekTime = 0.5;\n if (shiftPressed) seekTime = 0.25;\n\n const startTime = sponsorTimes[index].segment[0];\n const endTime = sponsorTimes[index].segment[1];\n\n // If segment starts at 0:00, start playback at the end of the segment\n const skipTime = (startTime === 0 || skipToEndTime) ? endTime : (startTime - (seekTime * getVideo().playbackRate));\n\n this.props.contentContainer().previewTime(skipTime, !skipToEndTime);\n }\n\n inspectTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n\n const skipTime = sponsorTimes[index].segment[0];\n\n this.props.contentContainer().previewTime(skipTime + 0.0001, false);\n }\n\n deleteTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n const removingIncomplete = sponsorTimes[index].segment.length < 2;\n\n sponsorTimes.splice(index, 1);\n \n //save this\n if (sponsorTimes.length > 0) {\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimes;\n } else {\n delete Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n \n //if they are all removed\n if (sponsorTimes.length == 0) {\n this.props.submissionNotice.cancel();\n } else {\n //update display\n this.props.submissionNotice.forceUpdate();\n }\n\n //if it is not a complete segment, or all are removed\n if (sponsorTimes.length === 0 || removingIncomplete) {\n //update video player\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n }\n\n descriptionUpdate(description: string): void {\n this.setState({\n description\n }, () => {\n this.saveEditTimes();\n });\n\n if (!this.fetchingSuggestions) {\n this.fetchSuggestions(description);\n }\n }\n\n async fetchSuggestions(description: string): Promise {\n if (this.props.contentContainer().channelIDInfo.status !== ChannelIDStatus.Found) return;\n\n this.fetchingSuggestions = true;\n try {\n const result = await asyncRequestToServer(\"GET\", \"/api/chapterNames\", {\n description,\n channelID: this.props.contentContainer().channelIDInfo.id\n });\n if (result.ok) {\n const names = JSON.parse(result.responseText) as {description: string}[];\n this.setState({\n suggestedNames: names.map(n => ({\n label: n.description\n }))\n });\n } else if (result.status !== 404) {\n logRequest(result, \"SB\", \"chapter suggestion\")\n }\n } catch (e) {\n console.warn(\"[SB] Caught error while fetching chapter suggestions\", e);\n } finally {\n this.fetchingSuggestions = false;\n }\n }\n\n configUpdate(): void {\n this.forceUpdate();\n }\n}\n\nexport default SponsorTimeEditComponent;\n","import * as React from \"react\";\nimport Config from \"../config\"\nimport GenericNotice from \"../render/GenericNotice\";\nimport { Category, ContentContainer } from \"../types\";\nimport * as CompileConfig from \"../../config.json\";\n\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport SponsorTimeEditComponent from \"./SponsorTimeEditComponent\";\nimport { getGuidelineInfo } from \"../utils/constants\";\nimport { exportTimes } from \"../utils/exporter\";\nimport { getVideo, isCurrentTimeWrong } from \"../../maze-utils/src/video\";\n\nexport interface SubmissionNoticeProps { \n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => Promise;\n\n closeListener: () => void;\n}\n\nexport interface SubmissionNoticeState {\n noticeTitle: string;\n messages: string[];\n idSuffix: string;\n}\n\nclass SubmissionNoticeComponent extends React.Component {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => unknown;\n\n noticeRef: React.MutableRefObject;\n timeEditRefs: React.RefObject[];\n\n videoObserver: MutationObserver;\n\n guidelinesReminder: GenericNotice;\n\n lastSegmentCount: number;\n\n constructor(props: SubmissionNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n\n this.contentContainer = props.contentContainer;\n this.callback = props.callback;\n \n const noticeTitle = chrome.i18n.getMessage(\"confirmNoticeTitle\");\n\n this.lastSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n idSuffix: \"SubmissionNotice\"\n };\n }\n\n componentDidMount(): void {\n // Catch and rerender when the video size changes\n //TODO: Use ResizeObserver when it is supported in TypeScript\n this.videoObserver = new MutationObserver(() => {\n this.forceUpdate();\n });\n\n this.videoObserver.observe(getVideo(), {\n attributes: true\n });\n\n // Prevent zooming while changing times\n document.getElementById(\"sponsorSkipNoticeMiddleRow\" + this.state.idSuffix).addEventListener('wheel', function (event) {\n if (event.ctrlKey) {\n event.preventDefault();\n }\n }, {passive: false});\n }\n\n componentWillUnmount(): void {\n if (this.videoObserver) {\n this.videoObserver.disconnect();\n }\n }\n\n componentDidUpdate() {\n const currentSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n if (currentSegmentCount > this.lastSegmentCount) {\n this.lastSegmentCount = currentSegmentCount;\n\n this.scrollToBottom();\n }\n }\n\n scrollToBottom() {\n const scrollElement = this.noticeRef.current.getElement().current.querySelector(\"#sponsorSkipNoticeMiddleRowSubmissionNotice\");\n scrollElement.scrollTo({\n top: scrollElement.scrollHeight + 1000\n });\n }\n\n render(): React.ReactElement {\n const sortButton = \n this.sortSegments()}\n title={chrome.i18n.getMessage(\"sortSegments\")}\n key=\"sortButton\"\n src={chrome.runtime.getURL(\"icons/sort.svg\")}>\n ;\n const exportButton = \n this.exportSegments()}\n title={chrome.i18n.getMessage(\"exportSegments\")}\n key=\"exportButton\"\n src={chrome.runtime.getURL(\"icons/export.svg\")}>\n ;\n return (\n \n\n {/* Text Boxes */}\n {this.getMessageBoxes()}\n\n {/* Sponsor Time List */}\n e.stopPropagation()}>\n \n {this.getSponsorTimeMessages()}\n \n \n\n {/* Last Row */}\n \n\n \n\n {/* Guidelines button */}\n \n\n {/* Submit Button */}\n \n \n \n\n \n );\n }\n\n getSponsorTimeMessages(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n this.timeEditRefs = [];\n\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n const timeRef = React.createRef();\n\n elements.push(\n \n \n );\n\n this.timeEditRefs.push(timeRef);\n }\n\n return elements;\n }\n\n getMessageBoxes(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n );\n }\n\n return elements;\n }\n\n cancel(): void {\n this.guidelinesReminder?.close();\n this.noticeRef.current.close(true);\n\n this.contentContainer().resetSponsorSubmissionNotice(false);\n\n this.props.closeListener();\n }\n\n submit(): void {\n if (isCurrentTimeWrong()) {\n alert(chrome.i18n.getMessage(\"submissionFailedServerSideAds\"));\n return;\n }\n\n // save all items\n for (const ref of this.timeEditRefs) {\n ref.current.saveEditTimes();\n }\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"chooseACategory\") {\n alert(chrome.i18n.getMessage(\"youMustSelectACategory\"));\n return;\n }\n }\n\n // Check if any non music categories are being used on a music video\n if (this.contentContainer().videoInfo?.microformat?.playerMicroformatRenderer?.category === \"Music\") {\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"sponsor\") {\n if (!confirm(chrome.i18n.getMessage(\"nonMusicCategoryOnMusic\"))) return;\n\n break;\n }\n }\n }\n\n this.props.callback().then((success) => {\n if (success) {\n this.cancel();\n }\n });\n }\n\n sortSegments(): void {\n let sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n sponsorTimesSubmitting = sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.forceUpdate();\n }\n\n exportSegments() {\n const sponsorTimesSubmitting = this.props.contentContainer()\n .sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n window.navigator.clipboard.writeText(exportTimes(sponsorTimesSubmitting));\n\n new GenericNotice(null, \"exportCopied\", {\n title: chrome.i18n.getMessage(`CopiedExclamation`),\n timed: true,\n maxCountdownTime: () => 0.6,\n referenceNode: document.querySelector(\".noticeLeftIcon\"),\n dontPauseCountdown: true,\n style: {\n top: 0,\n bottom: 0,\n minWidth: 0,\n right: \"30px\",\n margin: \"auto\"\n },\n hideLogo: true,\n hideRightInfo: true,\n extraClass: \"exportCopiedNotice\"\n });\n }\n\n categoryChangeListener(index: number, category: Category): void {\n const dialogWidth = this.noticeRef?.current?.getElement()?.current?.offsetWidth;\n if (category !== \"chooseACategory\" && Config.config.showCategoryGuidelines\n && getVideo().offsetWidth > dialogWidth * 2) {\n const options = {\n title: chrome.i18n.getMessage(`category_${category}`),\n textBoxes: getGuidelineInfo(category),\n buttons: [{\n name: chrome.i18n.getMessage(\"FullDetails\"),\n listener: () => window.open(CompileConfig.wikiLinks[category])\n },\n {\n name: chrome.i18n.getMessage(\"Hide\"),\n listener: () => {\n Config.config.showCategoryGuidelines = false;\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }],\n timed: false,\n style: {\n right: `${dialogWidth + 10}px`,\n },\n extraClass: \"sb-guidelines-notice\"\n };\n\n if (options.textBoxes) {\n if (this.guidelinesReminder) {\n this.guidelinesReminder.update(options);\n } else {\n this.guidelinesReminder = new GenericNotice(null, \"GuidelinesReminder\", options);\n }\n } else {\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }\n }\n}\n\nexport default SubmissionNoticeComponent;\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import Config from \"./config\";\nimport {\n ActionType,\n Category,\n CategorySkipOption,\n ChannelIDStatus,\n ContentContainer,\n ScheduledTime,\n SegmentUUID,\n SkipToTimeParams,\n SponsorHideType,\n SponsorSourceType,\n SponsorTime,\n ToggleSkippable,\n VideoID,\n VideoInfo,\n} from \"./types\";\nimport Utils from \"./utils\";\nimport PreviewBar, { PreviewBarSegment } from \"./js-components/previewBar\";\nimport SkipNotice from \"./render/SkipNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport UpcomingNotice from \"./render/UpcomingNotice\";\nimport SubmissionNotice from \"./render/SubmissionNotice\";\nimport { Message, MessageResponse, VoteResponse } from \"./messageTypes\";\nimport { SkipButtonControlBar } from \"./js-components/skipButtonControlBar\";\nimport { getStartTimeFromUrl } from \"./utils/urlParser\";\nimport { getControls, getExistingChapters, getHashParams, hasAutogeneratedChapters, isPlayingPlaylist, isVisible } from \"./utils/pageUtils\";\nimport { CategoryPill } from \"./render/CategoryPill\";\nimport { AnimationUtils } from \"../maze-utils/src/animationUtils\";\nimport { GenericUtils } from \"./utils/genericUtils\";\nimport { logDebug, logWarn } from \"./utils/logger\";\nimport { importTimes } from \"./utils/exporter\";\nimport { ChapterVote } from \"./render/ChapterVote\";\nimport { openWarningDialog } from \"./utils/warnings\";\nimport { extensionUserAgent, isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { formatJSErrorMessage, getFormattedTime, getLongErrorMessage } from \"../maze-utils/src/formating\";\nimport { getChannelIDInfo, getVideo, getIsAdPlaying, getIsLivePremiere, setIsAdPlaying, checkVideoIDChange, getVideoID, getYouTubeVideoID, setupVideoModule, checkIfNewVideoID, isOnInvidious, isOnMobileYouTube, isOnYouTubeMusic, isOnYTTV, getLastNonInlineVideoID, triggerVideoIDChange, triggerVideoElementChange, getIsInline, getCurrentTime, setCurrentTime, getVideoDuration, verifyCurrentTime, waitForVideo } from \"../maze-utils/src/video\";\nimport { Keybind, StorageChangesObject, isSafari, keybindEquals, keybindToString } from \"../maze-utils/src/config\";\nimport { findValidElement } from \"../maze-utils/src/dom\"\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\nimport { updateAll } from \"../maze-utils/src/thumbnailManagement\";\nimport { setupThumbnailListener } from \"./utils/thumbnails\";\nimport * as documentScript from \"../dist/js/document.js\";\nimport { isVorapisInstalled, runCompatibilityChecks } from \"./utils/compatibility\";\nimport { cleanPage } from \"./utils/pageCleaner\";\nimport { addCleanupListener } from \"../maze-utils/src/cleanup\";\nimport { hideDeArrowPromotion, tryShowingDeArrowPromotion } from \"./dearrowPromotion\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { isMobileControlsOpen } from \"./utils/mobileUtils\";\nimport { defaultPreviewTime } from \"./utils/constants\";\nimport { onVideoPage } from \"../maze-utils/src/pageInfo\";\nimport { getSegmentsForVideo } from \"./utils/segmentData\";\nimport { getCategoryDefaultSelection, getCategorySelection } from \"./utils/skipRule\";\nimport { getSkipProfileBool, getSkipProfileIDForTab, hideTooShortSegments, setCurrentTabSkipProfile } from \"./utils/skipProfiles\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\n\ncleanPage();\n\nconst utils = new Utils();\n\nutils.wait(() => Config.isReady(), 5000, 10).then(() => {\n // Hack to get the CSS loaded on permission-based sites (Invidious)\n addCSS();\n setCategoryColorCSSVariables();\n\n runCompatibilityChecks();\n});\n\nconst skipBuffer = 0.003;\n// If this close to the end, skip to the end\nconst endTimeSkipBuffer = 0.5;\n\n//was sponsor data found when doing SponsorsLookup\nlet sponsorDataFound = false;\n//the actual sponsorTimes if loaded and UUIDs associated with them\nlet sponsorTimes: SponsorTime[] = [];\nlet existingChaptersImported = false;\nlet importingChaptersWaitingForFocus = false;\nlet importingChaptersWaiting = false;\nlet loopedChapter :SponsorTime = null;\n// List of open skip notices\nconst skipNotices: SkipNotice[] = [];\nlet upcomingNotice: UpcomingNotice | null = null;\nlet activeSkipKeybindElement: ToggleSkippable = null;\nlet shownSegmentFailedToFetchWarning = false;\nlet selectedSegment: SegmentUUID | null = null;\nlet previewedSegment = false;\n\n// JSON video info\nlet videoInfo: VideoInfo = null;\n// Locked Categories in this tab, like: [\"sponsor\",\"intro\",\"outro\"]\nlet lockedCategories: Category[] = [];\n// Used to calculate a more precise \"virtual\" video time\nconst lastKnownVideoTime: { videoTime: number; preciseTime: number; fromPause: boolean; approximateDelay: number } = {\n videoTime: null,\n preciseTime: null,\n fromPause: false,\n approximateDelay: null,\n};\n// It resumes with a slightly later time on chromium\nlet lastTimeFromWaitingEvent: number = null;\nconst lastNextChapterKeybind = {\n time: 0,\n date: 0\n};\n\n// Skips are scheduled to ensure precision.\n// Skips are rescheduled every seeking event.\n// Skips are canceled every seeking event\nlet currentSkipSchedule: NodeJS.Timeout = null;\nlet currentSkipInterval: NodeJS.Timeout = null;\nlet currentVirtualTimeInterval: NodeJS.Timeout = null;\nlet currentUpcomingSchedule: NodeJS.Timeout = null;\n\n/** Has the sponsor been skipped */\nlet sponsorSkipped: boolean[] = [];\n\nlet videoMuted = false; // Has it been attempted to be muted\nconst controlsWithEventListeners: HTMLElement[] = [];\n\nsetupVideoModule({\n videoIDChange,\n channelIDChange,\n videoElementChange,\n playerInit: () => {\n previewBar = null; // remove old previewbar\n createPreviewBar();\n },\n updatePlayerBar: () => {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n },\n resetValues,\n documentScript: chrome.runtime.getManifest().manifest_version === 2 ? documentScript : undefined\n}, () => Config);\nsetupThumbnailListener();\n\n// Is the video currently being switched\nlet switchingVideos = null;\n\n// Used by the play and playing listeners to make sure two aren't\n// called at the same time\nlet lastCheckTime = 0;\nlet lastCheckVideoTime = -1;\n\n// To determine if a video resolution change is happening\nlet firstPlay = true;\n\nlet previewBar: PreviewBar = null;\n// Skip to highlight button\nlet skipButtonControlBar: SkipButtonControlBar = null;\n// For full video sponsors/selfpromo\nlet categoryPill: CategoryPill = null;\n\n/** Element containing the player controls on the YouTube player. */\nlet controls: HTMLElement | null = null;\n\n/** Contains buttons created by `createButton()`. */\nconst playerButtons: Record = {};\n\naddHotkeyListener();\n\n/** Segments created by the user which have not yet been submitted. */\nlet sponsorTimesSubmitting: SponsorTime[] = [];\nlet loadedPreloadedSegment = false;\n\n//becomes true when isInfoFound is called\n//this is used to close the popup on YouTube when the other popup opens\nlet popupInitialised = false;\n\nlet submissionNotice: SubmissionNotice = null;\n\nlet lastResponseStatus: number | Error | string;\n\n// Contains all of the functions and variables needed by the skip notice\nconst skipNoticeContentContainer: ContentContainer = () => ({\n vote,\n dontShowNoticeAgain,\n unskipSponsorTime,\n sponsorTimes,\n sponsorTimesSubmitting,\n skipNotices,\n sponsorVideoID: getVideoID(),\n reskipSponsorTime,\n updatePreviewBar,\n onMobileYouTube: isOnMobileYouTube(),\n sponsorSubmissionNotice: submissionNotice,\n resetSponsorSubmissionNotice,\n updateEditButtonsOnPlayer,\n previewTime,\n videoInfo,\n getRealCurrentTime: getRealCurrentTime,\n lockedCategories,\n channelIDInfo: getChannelIDInfo()\n});\n\n// value determining when to count segment as skipped and send telemetry to server (percent based)\nconst manualSkipPercentCount = 0.5;\n\n//get messages from the background script and the popup\nchrome.runtime.onMessage.addListener(messageListener);\n\nfunction messageListener(request: Message, sender: unknown, sendResponse: (response: MessageResponse) => void): void | boolean {\n //messages from popup script\n switch(request.message){\n case \"update\":\n checkVideoIDChange();\n break;\n case \"sponsorStart\":\n startOrEndTimingNewSegment()\n\n sendResponse({\n creatingSegment: isSegmentCreationInProgress(),\n });\n\n break;\n case \"isInfoFound\":\n //send the sponsor times along with if it's found\n sendResponse({\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n\n if (!request.updating && popupInitialised && document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //the popup should be closed now that another is opening\n closeInfoMenu();\n }\n\n popupInitialised = true;\n break;\n case \"getChannelID\":\n sendResponse({\n channelID: getChannelIDInfo().id,\n isYTTV: (document.location.host === \"tv.youtube.com\")\n });\n\n break;\n case \"submitTimes\":\n openSubmissionMenu();\n break;\n case \"refreshSegments\":\n // update video on refresh if videoID invalid\n if (!getVideoID()) {\n checkVideoIDChange();\n }\n // if popup rescieves no response, or the videoID is invalid,\n // it will assume the page is not a video page and stop the refresh animation\n sendResponse({ hasVideo: getVideoID() != null });\n // fetch segments\n if (getVideoID()) {\n sponsorsLookup(false, true);\n }\n\n break;\n case \"unskip\":\n unskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), null, true);\n break;\n case \"reskip\":\n reskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), true);\n break;\n case \"selectSegment\":\n selectSegment(request.UUID);\n break;\n case \"submitVote\":\n vote(request.type, request.UUID).then((response) => sendResponse(response));\n return true;\n case \"hideSegment\":\n utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID).hidden = request.type;\n utils.addHiddenSegment(getVideoID(), request.UUID, request.type);\n updatePreviewBar();\n\n if (skipButtonControlBar?.isEnabled()\n && sponsorTimesSubmitting.every((s) => s.hidden !== SponsorHideType.Visible || s.actionType !== ActionType.Poi)) {\n skipButtonControlBar.disable();\n }\n break;\n case \"closePopup\":\n closeInfoMenu();\n break;\n case \"copyToClipboard\":\n navigator.clipboard.writeText(request.text);\n break;\n case \"loopChapter\":\n if (!request.UUID){\n loopedChapter = null;\n break;\n }\n loopedChapter = {...utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID)};\n loopedChapter.segment = [loopedChapter.segment[1], loopedChapter.segment[0]];\n break;\n case \"importSegments\": {\n const importedSegments = importTimes(request.data, getVideoDuration());\n let addedSegments = false;\n for (const segment of importedSegments) {\n if (!sponsorTimesSubmitting.some(\n (s) => Math.abs(s.segment[0] - segment.segment[0]) < 1\n && Math.abs(s.segment[1] - segment.segment[1]) < 1\n && s.description === segment.description)) {\n const hasChaptersPermission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[\"chapter\"]);\n if (segment.category === \"chapter\" && (!getCategoryDefaultSelection(\"chapter\") || !hasChaptersPermission)) {\n segment.category = \"chooseACategory\" as Category;\n segment.actionType = ActionType.Skip;\n segment.description = \"\";\n }\n\n sponsorTimesSubmitting.push(segment);\n addedSegments = true;\n }\n }\n\n if (addedSegments) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n openSubmissionMenu();\n }\n\n sendResponse({\n importedSegments\n });\n break;\n }\n case \"keydown\":\n (document.body || document).dispatchEvent(new KeyboardEvent('keydown', {\n key: request.key,\n keyCode: request.keyCode,\n code: request.code,\n which: request.which,\n shiftKey: request.shiftKey,\n ctrlKey: request.ctrlKey,\n altKey: request.altKey,\n metaKey: request.metaKey\n }));\n break;\n case \"getLogs\":\n sendResponse({\n debug: window[\"SBLogs\"].debug,\n warn: window[\"SBLogs\"].warn\n });\n break;\n case \"setCurrentTabSkipProfile\":\n setCurrentTabSkipProfile(request.configID);\n channelIDChange();\n break;\n }\n\n sendResponse({});\n}\n\n/**\n * Called when the config is updated\n */\nfunction contentConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"hideVideoPlayerControls\":\n case \"hideInfoButtonPlayerControls\":\n case \"hideDeleteButtonPlayerControls\":\n updateVisibilityOfPlayerControlsButton()\n break;\n case \"categorySelections\":\n channelIDChange();\n break;\n case \"barTypes\":\n setCategoryColorCSSVariables();\n break;\n case \"fullVideoSegments\":\n case \"fullVideoLabelsOnThumbnails\":\n updateAll();\n break;\n }\n }\n}\nfunction contentLocalConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"channelSkipProfileIDs\":\n case \"skipProfiles\":\n case \"skipProfileTemp\":\n channelIDChange();\n break;\n }\n }\n}\n\nif (!window.location.href.includes(\"youtube.com/live_chat\")) {\n if (!Config.configSyncListeners.includes(contentConfigUpdateListener)) {\n Config.configSyncListeners.push(contentConfigUpdateListener);\n }\n\n if (!Config.configLocalListeners.includes(contentLocalConfigUpdateListener)) {\n Config.configLocalListeners.push(contentLocalConfigUpdateListener);\n }\n}\n\nfunction resetValues() {\n lastCheckTime = 0;\n lastCheckVideoTime = -1;\n previewedSegment = false;\n firstPlay = true;\n\n sponsorTimes = [];\n existingChaptersImported = false;\n sponsorSkipped = [];\n loopedChapter = null;\n lastResponseStatus = 0;\n shownSegmentFailedToFetchWarning = false;\n\n videoInfo = null;\n lockedCategories = [];\n\n //empty the preview bar\n if (previewBar !== null) {\n previewBar.clear();\n }\n\n //reset sponsor data found check\n sponsorDataFound = false;\n\n // When first loading a video, it is not switching videos\n // Hover play also doesn't need this check\n if (switchingVideos === null || !onVideoPage()) {\n switchingVideos = false;\n } else {\n switchingVideos = true;\n logDebug(\"Setting switching videos to true (reset data)\");\n }\n\n skipButtonControlBar?.disable();\n categoryPill?.setVisibility(false);\n\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop()?.close();\n }\n\n if (upcomingNotice) {\n upcomingNotice.close();\n upcomingNotice = null;\n }\n\n hideDeArrowPromotion();\n}\n\nfunction videoIDChange(): void {\n //setup the preview bar\n if (previewBar === null) {\n if (isOnMobileYouTube()) {\n // Mobile YouTube workaround\n const observer = new MutationObserver(handleMobileControlsMutations);\n let controlsContainer = null;\n\n utils.wait(() => {\n controlsContainer = document.getElementById(\"player-control-container\")\n return controlsContainer !== null\n }).then(() => {\n observer.observe(document.getElementById(\"player-control-container\"), {\n attributes: true,\n childList: true,\n subtree: true\n });\n }).catch();\n } else {\n utils.wait(getControls).then(createPreviewBar);\n }\n }\n\n // Notify the popup about the video change\n chrome.runtime.sendMessage({\n message: \"videoChanged\",\n videoID: getVideoID(),\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author\n });\n\n sponsorsLookup();\n\n // Make sure all player buttons are properly added\n updateVisibilityOfPlayerControlsButton();\n\n // Clear unsubmitted segments from the previous video\n sponsorTimesSubmitting = [];\n updateSponsorTimesSubmitting();\n\n tryShowingDeArrowPromotion().catch(logWarn);\n\n checkPreviewbarState();\n\n if (getIsInline()) {\n // Hover preview progress bar can take some time to appear\n // and if the miniplayer is also active then it would \n // attach to the wrong one\n setTimeout(checkPreviewbarState, 500);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 3000);\n }\n}\n\nfunction handleMobileControlsMutations(): void {\n // Don't update while scrubbing\n if (!chrome.runtime?.id \n || document.querySelector(\".YtProgressBarProgressBarPlayheadDotInDragging\")) return;\n\n updateVisibilityOfPlayerControlsButton();\n\n skipButtonControlBar?.updateMobileControls();\n\n if (previewBar !== null) {\n if (!previewBar.parent.contains(previewBar.container) && isMobileControlsOpen()) {\n previewBar.createElement();\n updatePreviewBar();\n\n return;\n } else if (!previewBar.parent.isConnected) {\n // The parent does not exist anymore, remove that old preview bar\n previewBar.remove();\n previewBar = null;\n }\n }\n\n // Create the preview bar if needed (the function hasn't returned yet)\n createPreviewBar();\n}\n\nfunction getPreviewBarAttachElement(): HTMLElement | null {\n const progressElementOptions = [{\n // For newer mobile YouTube (Sept 2024)\n selector: \".ytChapteredProgressBarHost, .ytProgressBarLineHost, .YtProgressBarLineHost, .YtChapteredProgressBarHost\",\n isVisibleCheck: true\n }, {\n // For newer mobile YouTube (May 2024)\n selector: \".YtmProgressBarProgressBarLine\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube hover play\n // Priority is given to the hover play progress bar over the main progress bar\n // for miniplayer + hover preview case\n // Second is new hover play selector\n selector: \"#video-preview .ytp-progress-bar, #video-preview .YtProgressBarLineHost\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".ytp-progress-bar\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".no-model.cue-range-marker\",\n isVisibleCheck: true\n }, {\n // For Invidious/VideoJS\n selector: \".vjs-progress-holder\",\n isVisibleCheck: false\n }, {\n // For Youtube Music and YTKids\n // there are two sliders, one for volume and one for progress - both called #progressContainer\n selector: \"#progress-bar>#sliderContainer>div>#sliderBar>#progressContainer\",\n }, {\n // For piped\n selector: \".shaka-ad-markers\",\n isVisibleCheck: false\n }, {\n // For Vorapis v3\n selector: \".ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\"\n }, {\n // For YTTV\n selector: \".yssi-slider > div.ytu-ss-timeline-container\",\n isVisibleCheck: false\n }\n ];\n\n for (const option of progressElementOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.isVisibleCheck ? findValidElement(allElements) : allElements[0];\n\n if (el) {\n return el;\n }\n }\n\n return null;\n}\n\n/**\n * Creates a preview bar on the video\n */\nfunction createPreviewBar(): void {\n if (previewBar !== null) return;\n\n const el = getPreviewBarAttachElement();\n\n if (el) {\n const chapterVote = new ChapterVote(voteAsync);\n previewBar = new PreviewBar(el, isOnMobileYouTube(), isOnInvidious(), isOnYTTV(), chapterVote, () => importExistingChapters(true));\n\n updatePreviewBar();\n }\n}\n\n/**\n * Triggered every time the video duration changes.\n * This happens when the resolution changes or at random time to clear memory.\n */\nfunction durationChangeListener(): void {\n updateAdFlag();\n updatePreviewBar();\n}\n\n/**\n * Triggered once the video is ready.\n * This is mainly to attach to embedded players who don't have a video element visible.\n */\nfunction videoOnReadyListener(): void {\n createPreviewBar();\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton()\n}\n\nfunction cancelSponsorSchedule(): void {\n logDebug(\"Pausing skipping\");\n\n if (currentSkipSchedule !== null) {\n clearTimeout(currentSkipSchedule);\n currentSkipSchedule = null;\n }\n\n if (currentSkipInterval !== null) {\n clearInterval(currentSkipInterval);\n currentSkipInterval = null;\n }\n\n if (currentUpcomingSchedule !== null) {\n clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = null;\n }\n}\n\n/**\n * @param currentTime Optional if you don't want to use the actual current time\n */\nasync function startSponsorSchedule(includeIntersectingSegments = false, currentTime?: number, includeNonIntersectingSegments = true): Promise {\n cancelSponsorSchedule();\n\n // Don't skip if advert playing and reset last checked time\n if (getIsAdPlaying()) {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n logDebug(\"[SB] Ad playing, pausing skipping\");\n\n return;\n }\n\n // Give up if video changed, and trigger a videoID change if so\n if (await checkIfNewVideoID()) {\n return;\n }\n\n logDebug(`Considering to start skipping: ${!getVideo()}, ${getVideo()?.paused}`);\n if (!getVideo()) return;\n if (currentTime === undefined || currentTime === null) {\n currentTime = getVirtualTime();\n }\n clearWaitingTime();\n\n updateActiveSegment(currentTime);\n\n if ((getVideo().paused && getCurrentTime() !== 0) // Allow autoplay disabled videos to skip before playing\n || (getCurrentTime() >= getVideoDuration() - 0.01 && getVideoDuration() > 1)) return;\n const skipInfo = getNextSkipIndex(currentTime, includeIntersectingSegments, includeNonIntersectingSegments);\n\n const currentSkip = skipInfo.array[skipInfo.index];\n const skipTime: number[] = [currentSkip?.scheduledTime, skipInfo.array[skipInfo.endIndex]?.segment[1]];\n const timeUntilSponsor = skipTime?.[0] - currentTime;\n const videoID = getVideoID();\n\n if (videoMuted && !inMuteSegment(currentTime, skipInfo.index !== -1\n && timeUntilSponsor < skipBuffer && shouldAutoSkip(currentSkip))) {\n getVideo().muted = false;\n videoMuted = false;\n\n for (const notice of skipNotices) {\n // So that the notice can hide buttons\n notice.unmutedListener(currentTime);\n }\n }\n\n logDebug(`Ready to start skipping: ${skipInfo.index} at ${currentTime}`);\n if (skipInfo.index === -1) return;\n\n if (Config.config.disableSkipping || (getChannelIDInfo().status === ChannelIDStatus.Fetching && Config.config.forceChannelCheck)){\n return;\n }\n\n if (incorrectVideoCheck()) return;\n\n // Find all indexes in between the start and end\n let skippingSegments = [skipInfo.array[skipInfo.index]];\n if (skipInfo.index !== skipInfo.endIndex) {\n skippingSegments = [];\n\n for (const segment of skipInfo.array) {\n if (shouldAutoSkip(segment) &&\n segment.segment[0] >= skipTime[0] && segment.segment[1] <= skipTime[1]\n && segment.segment[0] === segment.scheduledTime) { // Don't include artificial scheduled segments (end times for mutes)\n skippingSegments.push(segment);\n }\n }\n }\n\n logDebug(`Next step in starting skipping: ${!shouldSkip(currentSkip)}, ${!sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)}`);\n\n const skippingFunction = (forceVideoTime?: number) => {\n let forcedSkipTime: number = null;\n let forcedIncludeIntersectingSegments = false;\n let forcedIncludeNonIntersectingSegments = true;\n\n if (incorrectVideoCheck(videoID, currentSkip)) return;\n forceVideoTime ||= Math.max(getCurrentTime(), getVirtualTime());\n\n if ((shouldSkip(currentSkip)\n || sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment\n && segment.actionType !== ActionType.Chapter\n && segment.hidden === SponsorHideType.Visible))) {\n if (forceVideoTime >= skipTime[0] - skipBuffer && (forceVideoTime < skipTime[1] || skipTime[1] < skipTime[0])) {\n skipToTime({\n v: getVideo(),\n skipTime,\n skippingSegments,\n openNotice: skipInfo.openNotice\n });\n\n // These are segments that start at the exact same time but need separate notices\n for (const extra of skipInfo.extraIndexes) {\n const extraSkip = skipInfo.array[extra];\n if (shouldSkip(extraSkip)) {\n skipToTime({\n v: getVideo(),\n skipTime: [extraSkip.scheduledTime, extraSkip.segment[1]],\n skippingSegments: [extraSkip],\n openNotice: skipInfo.openNotice\n });\n }\n }\n\n if (getCategorySelection(currentSkip)?.option === CategorySkipOption.ManualSkip\n || currentSkip.actionType === ActionType.Mute) {\n forcedSkipTime = skipTime[0] + 0.001;\n } else {\n forcedSkipTime = skipTime[1];\n forcedIncludeNonIntersectingSegments = false;\n\n // Only if not at the end of the video\n if (Math.abs(skipTime[1] - getVideoDuration()) > endTimeSkipBuffer) {\n forcedIncludeIntersectingSegments = true;\n }\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n\n // Don't pretend to be earlier than we are, could result in loops\n if (forcedSkipTime !== null && forceVideoTime > forcedSkipTime && skipTime[1] > skipTime[0]) {\n forcedSkipTime = forceVideoTime;\n }\n\n startSponsorSchedule(forcedIncludeIntersectingSegments, forcedSkipTime, forcedIncludeNonIntersectingSegments);\n };\n\n if (timeUntilSponsor < skipBuffer) {\n skippingFunction(currentTime);\n } else {\n let delayTime = timeUntilSponsor * 1000 * (1 / getVideo().playbackRate);\n if (delayTime < (isFirefoxOrSafari() && !isSafari() ? 750 : 300)\n && shouldAutoSkip(skippingSegments[0])) {\n let forceStartIntervalTime: number | null = null;\n if (isFirefoxOrSafari() && !isSafari() && delayTime > 300) {\n forceStartIntervalTime = await waitForNextTimeChange();\n }\n\n // Use interval instead of timeout near the end to combat imprecise video time\n const startIntervalTime = forceStartIntervalTime || performance.now();\n const startVideoTime = Math.max(currentTime, getVirtualTime());\n delayTime = (skipTime?.[0] - startVideoTime) * 1000 * (1 / getVideo().playbackRate);\n\n let startWaitingForReportedTimeToChange = true;\n const reportedVideoTimeAtStart = getCurrentTime();\n logDebug(`Starting setInterval skipping ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n if (currentSkipInterval !== null) clearInterval(currentSkipInterval);\n currentSkipInterval = setInterval(() => {\n // Estimate delay, but only take the current time right after a change\n // Current time remains the same for many \"frames\" on Firefox\n if (isFirefoxOrSafari() && !lastKnownVideoTime.fromPause && startWaitingForReportedTimeToChange\n && reportedVideoTimeAtStart !== getCurrentTime()) {\n startWaitingForReportedTimeToChange = false;\n const delay = getVirtualTime() - getCurrentTime();\n if (delay > 0) lastKnownVideoTime.approximateDelay = delay;\n }\n\n const intervalDuration = performance.now() - startIntervalTime;\n if (intervalDuration + skipBuffer * 1000 >= delayTime || getVirtualTime() + skipBuffer >= skipTime[0]) {\n clearInterval(currentSkipInterval);\n if (!isFirefoxOrSafari() && !getVideo().muted && !inMuteSegment(getCurrentTime(), true)) {\n // Workaround for more accurate skipping on Chromium\n getVideo().muted = true;\n getVideo().muted = false;\n }\n\n skippingFunction(Math.max(getVirtualTime(), startVideoTime + getVideo().playbackRate * Math.max(delayTime, intervalDuration) / 1000));\n }\n }, 0);\n } else {\n logDebug(`Starting timeout to skip ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n const offset = (isFirefoxOrSafari() && !isSafari() ? 600 : 150);\n // Schedule for right before to be more precise than normal timeout\n const offsetDelayTime = Math.max(0, delayTime - offset);\n currentSkipSchedule = setTimeout(skippingFunction, offsetDelayTime);\n\n // Show the notice only if the segment hasn't already started\n if (Config.config.showUpcomingNotice && getCurrentTime() < skippingSegments[0].segment[0] \n && !sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)\n && [ActionType.Skip, ActionType.Mute].includes(skippingSegments[0].actionType)\n && getCategorySelection(skippingSegments[0])?.option > CategorySkipOption.ShowOverlay\n && !getVideo()?.paused) {\n const maxPopupTime = 3000;\n const timeUntilPopup = Math.max(0, offsetDelayTime - maxPopupTime);\n const popupTime = offsetDelayTime - timeUntilPopup;\n const autoSkip = shouldAutoSkip(skippingSegments[0]);\n\n if (currentUpcomingSchedule) clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = setTimeout(createUpcomingNotice, timeUntilPopup, [skippingSegments[0]], popupTime, autoSkip);\n }\n }\n }\n}\n\n/**\n * Used on Firefox only, waits for the next animation frame until\n * the video time has changed\n */\nfunction waitForNextTimeChange(): Promise {\n return new Promise((resolve) => {\n getVideo().addEventListener(\"timeupdate\", () => resolve(performance.now()), { once: true });\n });\n}\n\nfunction getVirtualTime(): number {\n const virtualTime = lastTimeFromWaitingEvent ?? (lastKnownVideoTime.videoTime !== null ?\n (performance.now() - lastKnownVideoTime.preciseTime) * (getVideo()?.playbackRate || 1) / 1000 + lastKnownVideoTime.videoTime : null);\n\n if (Config.config.useVirtualTime && !isSafari() && virtualTime\n && virtualTime > getCurrentTime() && virtualTime - getCurrentTime() < 0.8 && getCurrentTime() !== 0) {\n return Math.max(virtualTime, getCurrentTime());\n } else {\n return getCurrentTime();\n }\n}\n\nfunction inMuteSegment(currentTime: number, includeOverlap: boolean): boolean {\n const checkFunction = (segment) => segment.actionType === ActionType.Mute\n && segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime\n && (segment.segment[1] > currentTime || (includeOverlap && segment.segment[1] + 0.02 > currentTime));\n return sponsorTimes?.some(checkFunction) || sponsorTimesSubmitting.some(checkFunction);\n}\n\n/**\n * This makes sure the videoID is still correct and if the sponsorTime is included\n */\nfunction incorrectVideoCheck(videoID?: string, sponsorTime?: SponsorTime): boolean {\n if (!onVideoPage()) return false;\n\n const currentVideoID = getYouTubeVideoID();\n const recordedVideoID = videoID || getVideoID();\n if (currentVideoID !== recordedVideoID || (sponsorTime\n && (!sponsorTimes || !sponsorTimes?.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1]))\n && !sponsorTimesSubmitting.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1])\n && (!isLoopedChapter(sponsorTime)))) {\n // Something has really gone wrong\n console.error(\"[SponsorBlock] The videoID recorded when trying to skip is different than what it should be.\");\n console.error(\"[SponsorBlock] VideoID recorded: \" + recordedVideoID + \". Actual VideoID: \" + currentVideoID);\n console.error(\"[SponsorBlock] SponsorTime\", sponsorTime, \"sponsorTimes\", sponsorTimes, \"sponsorTimesSubmitting\", sponsorTimesSubmitting);\n\n // Video ID change occured\n checkVideoIDChange();\n\n return true;\n } else {\n return false;\n }\n}\n\nlet playbackRateCheckInterval: NodeJS.Timeout | null = null;\nlet lastPlaybackSpeed = 1;\nlet setupVideoListenersFirstTime = true;\nfunction setupVideoListeners(video: HTMLVideoElement) {\n if (!video) return; // Maybe video became invisible\n\n //wait until it is loaded\n video.addEventListener('loadstart', videoOnReadyListener)\n video.addEventListener('durationchange', durationChangeListener);\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('loadstart', videoOnReadyListener);\n video.removeEventListener('durationchange', durationChangeListener);\n });\n }\n\n if (!Config.config.disableSkipping) {\n switchingVideos = false;\n\n let startedWaiting = false;\n let lastPausedAtZero = true;\n let lastVideoDataChange = 0;\n\n const rateChangeListener = () => {\n updateVirtualTime();\n clearWaitingTime();\n\n startSponsorSchedule();\n };\n video.addEventListener('ratechange', rateChangeListener);\n // Used by videospeed extension (https://github.com/igrigorik/videospeed/pull/740)\n video.addEventListener('videoSpeed_ratechange', rateChangeListener);\n\n const playListener = () => {\n // Prevent video resolution changes from causing skips\n if (!firstPlay && Date.now() - lastVideoDataChange < 200 && video.currentTime === 0) return;\n\n firstPlay = false;\n updateVirtualTime();\n checkForMiniplayerPlaying();\n\n if (switchingVideos || lastPausedAtZero) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n lastPausedAtZero = false;\n\n // Check if an ad is playing\n updateAdFlag();\n\n // Make sure it doesn't get double called with the playing event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n };\n video.addEventListener('play', playListener);\n\n const playingListener = () => {\n updateVirtualTime();\n lastPausedAtZero = false;\n\n if (startedWaiting) {\n startedWaiting = false;\n logDebug(`[SB] Playing event after buffering: ${Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)}`);\n }\n\n if (switchingVideos) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n // Make sure it doesn't get double called with the play event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n lastPlaybackSpeed = video.playbackRate;\n\n // Video speed controller compatibility\n // That extension makes rate change events not propagate\n if (document.body.classList.contains(\"vsc-initialized\")) {\n playbackRateCheckInterval = setInterval(() => {\n if ((!getVideoID() || video.paused) && playbackRateCheckInterval) {\n // Video is gone, stop checking\n clearInterval(playbackRateCheckInterval);\n return;\n }\n \n if (video.playbackRate !== lastPlaybackSpeed) {\n lastPlaybackSpeed = video.playbackRate;\n \n rateChangeListener();\n }\n }, 2000);\n }\n };\n video.addEventListener('playing', playingListener);\n \n const seekingListener = () => {\n lastKnownVideoTime.fromPause = false;\n\n if (!video.paused){\n // Reset lastCheckVideoTime\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n updateVirtualTime();\n clearWaitingTime();\n\n // Sometimes looped videos loop back to almost zero, but not quite\n if (video.loop && video.currentTime < 0.2 && getCurrentTime() < 0.2) {\n startSponsorSchedule(false, 0);\n } else {\n startSponsorSchedule();\n }\n } else {\n updateActiveSegment(getCurrentTime());\n\n if (getCurrentTime() === 0) {\n lastPausedAtZero = true;\n }\n }\n };\n video.addEventListener('seeking', seekingListener);\n \n const stoppedPlayback = () => {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n\n lastKnownVideoTime.videoTime = null;\n lastKnownVideoTime.preciseTime = null;\n updateWaitingTime(video);\n\n cancelSponsorSchedule();\n };\n const pauseListener = () => {\n lastKnownVideoTime.fromPause = true;\n\n stoppedPlayback();\n };\n video.addEventListener('pause', pauseListener);\n const waitingListener = () => {\n logDebug(\"[SB] Not skipping due to buffering\");\n startedWaiting = true;\n\n stoppedPlayback();\n };\n video.addEventListener('waiting', waitingListener);\n\n // When video data is changed\n const emptyListener = () => {\n lastVideoDataChange = Date.now();\n\n if (firstPlay && video.currentTime === 0) {\n playListener();\n }\n }\n video.addEventListener('emptied', emptyListener);\n\n // For when autoplay is off to skip before starting playback\n const metadataLoadedListener = () => {\n if (firstPlay && getCurrentTime() === 0) {\n playListener();\n }\n }\n video.addEventListener('loadedmetadata', metadataLoadedListener)\n\n startSponsorSchedule();\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('play', playListener);\n video.removeEventListener('playing', playingListener);\n video.removeEventListener('seeking', seekingListener);\n video.removeEventListener('ratechange', rateChangeListener);\n video.removeEventListener('videoSpeed_ratechange', rateChangeListener);\n video.removeEventListener('pause', pauseListener);\n video.removeEventListener('waiting', waitingListener);\n video.removeEventListener('empty', emptyListener);\n video.removeEventListener('loadedmetadata', metadataLoadedListener);\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n });\n }\n }\n\n setupVideoListenersFirstTime = false;\n}\n\nfunction updateVirtualTime() {\n if (currentVirtualTimeInterval) clearInterval(currentVirtualTimeInterval);\n\n lastKnownVideoTime.videoTime = getCurrentTime();\n lastKnownVideoTime.preciseTime = performance.now();\n\n // If on Firefox, wait for the second time change (time remains fixed for many \"frames\" for privacy reasons)\n if (isFirefoxOrSafari()) {\n let count = 0;\n let rawCount = 0;\n let lastTime = lastKnownVideoTime.videoTime;\n let lastPerformanceTime = performance.now();\n\n currentVirtualTimeInterval = setInterval(() => {\n const frameTime = performance.now() - lastPerformanceTime;\n if (lastTime !== getCurrentTime()) {\n rawCount++;\n\n // If there is lag, give it another shot at finding a good change time\n if (frameTime < 20 || rawCount > 30) {\n count++;\n }\n lastTime = getCurrentTime();\n }\n\n if (count > 1) {\n const delay = lastKnownVideoTime.fromPause && lastKnownVideoTime.approximateDelay ?\n lastKnownVideoTime.approximateDelay : 0;\n\n lastKnownVideoTime.videoTime = getCurrentTime() + delay;\n lastKnownVideoTime.preciseTime = performance.now();\n\n clearInterval(currentVirtualTimeInterval);\n currentVirtualTimeInterval = null;\n }\n\n lastPerformanceTime = performance.now();\n }, 1);\n }\n}\n\nfunction updateWaitingTime(video: HTMLVideoElement): void {\n lastTimeFromWaitingEvent = video.currentTime;\n}\n\nfunction clearWaitingTime(): void {\n lastTimeFromWaitingEvent = null;\n}\n\nfunction setupSkipButtonControlBar() {\n if (!skipButtonControlBar) {\n skipButtonControlBar = new SkipButtonControlBar({\n skip: (segment) => skipToTime({\n v: getVideo(),\n skipTime: segment.segment,\n skippingSegments: [segment],\n openNotice: true,\n forceAutoSkip: true\n }),\n selectSegment,\n onMobileYouTube: isOnMobileYouTube(),\n onYTTV: isOnYTTV(),\n });\n }\n\n skipButtonControlBar.attachToPage();\n}\n\nfunction setupCategoryPill() {\n if (!categoryPill) {\n categoryPill = new CategoryPill();\n }\n\n categoryPill.attachToPage(isOnMobileYouTube(), isOnInvidious(), voteAsync);\n}\n\nasync function sponsorsLookup(keepOldSubmissions = true, ignoreCache = false) {\n const videoID = getVideoID();\n if (!videoID) {\n console.error(\"[SponsorBlock] Attempted to fetch segments with a null/undefined videoID.\");\n return;\n }\n\n const segmentData = await getSegmentsForVideo(videoID, ignoreCache);\n\n // Make sure an old pending request doesn't get used.\n if (videoID !== getVideoID()) return;\n\n // store last response status\n lastResponseStatus = segmentData.status;\n if (segmentData.status === 200) {\n const receivedSegments = segmentData.segments;\n\n if (receivedSegments && receivedSegments.length) {\n sponsorDataFound = receivedSegments.findIndex((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled) !== -1;\n\n // Check if any old submissions should be kept\n if (sponsorTimes !== null && keepOldSubmissions) {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].source === SponsorSourceType.Local) {\n // This is a user submission, keep it\n receivedSegments.push(sponsorTimes[i]);\n }\n }\n }\n\n const oldSegments = sponsorTimes || [];\n sponsorTimes = receivedSegments;\n existingChaptersImported = false;\n\n if (keepOldSubmissions) {\n for (const segment of oldSegments) {\n const otherSegment = sponsorTimes.find((other) => segment.UUID === other.UUID);\n if (otherSegment) {\n // If they downvoted it, or changed the category, keep it\n otherSegment.hidden = segment.hidden;\n otherSegment.category = segment.category;\n }\n }\n }\n\n // See if some segments should be hidden\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const downvotedData = Config.local.downvotedSegments[hashPrefix];\n if (downvotedData) {\n for (const segment of sponsorTimes) {\n const hashedUUID = await getHash(segment.UUID, 1);\n const segmentDownvoteData = downvotedData.segments.find((downvote) => downvote.uuid === hashedUUID);\n if (segmentDownvoteData) {\n segment.hidden = segmentDownvoteData.hidden;\n }\n }\n }\n\n hideTooShortSegments(sponsorTimes);\n\n if (!getVideo()) {\n //there is still no video here\n await waitForVideo();\n }\n\n startSkipScheduleCheckingForStartSponsors();\n\n if (!isNaN(getVideoDuration())) {\n updatePreviewBar();\n }\n }\n }\n\n notifyPopupOfSegments();\n importExistingChapters(true);\n\n if (Config.config.isVip) {\n lockedCategoriesLookup();\n }\n}\n\nfunction notifyPopupOfSegments(): void {\n // notify popup of segment changes\n chrome.runtime.sendMessage({\n message: \"infoUpdated\",\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n}\n\nfunction importExistingChapters(wait: boolean) {\n if (!existingChaptersImported && !importingChaptersWaiting && onVideoPage() && !isOnMobileYouTube()) {\n const waitCondition = () => getVideoDuration() && getExistingChapters(getVideoID(), getVideoDuration());\n\n if (wait && !document.hasFocus() && !importingChaptersWaitingForFocus && !waitCondition()) {\n importingChaptersWaitingForFocus = true;\n const listener = () => {\n importExistingChapters(wait);\n window.removeEventListener(\"focus\", listener);\n };\n window.addEventListener(\"focus\", listener);\n } else {\n importingChaptersWaiting = true;\n waitFor(waitCondition,\n wait ? 15000 : 0, 400, (c) => c?.length > 0).then((chapters) => {\n importingChaptersWaiting = false;\n\n if (!existingChaptersImported && chapters?.length > 0) {\n sponsorTimes = (sponsorTimes ?? []).concat(...chapters).sort((a, b) => a.segment[0] - b.segment[0]);\n existingChaptersImported = true;\n updatePreviewBar();\n }\n }).catch(() => { importingChaptersWaiting = false; });\n\n if (!getSkipProfileBool(\"showAutogeneratedChapters\")) {\n waitFor(() => hasAutogeneratedChapters(), wait ? 15000 : 0, 400).then(() => {\n updateActiveSegment(getCurrentTime());\n }).catch(() => { }); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n }\n }\n}\n\nfunction handleExistingChaptersChannelChange() {\n if (existingChaptersImported && hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\")) {\n sponsorTimes = sponsorTimes.filter((segment) => segment.source !== SponsorSourceType.Autogenerated);\n }\n}\n\nasync function lockedCategoriesLookup(): Promise {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n try {\n const response = await asyncRequestToServer(\"GET\", \"/api/lockCategories/\" + hashPrefix);\n\n if (response.ok) {\n const categoriesResponse = JSON.parse(response.responseText).filter((lockInfo) => lockInfo.videoID === getVideoID())[0]?.categories;\n if (Array.isArray(categoriesResponse)) {\n lockedCategories = categoriesResponse;\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"locked categories\")\n }\n } catch (e) {\n console.warn(`[SB] Caught error while looking up category locks for hashprefix ${hashPrefix}`, e)\n }\n}\n\n/**\n * Only should be used when it is okay to skip a sponsor when in the middle of it\n *\n * Ex. When segments are first loaded\n */\nfunction startSkipScheduleCheckingForStartSponsors() {\n\t// switchingVideos is ignored in Safari due to event fire order. See #1142\n if ((!switchingVideos || isSafari()) && sponsorTimes) {\n // See if there are any starting sponsors\n let startingSegmentTime = getStartTimeFromUrl(document.URL) || -1;\n let found = false;\n for (const time of sponsorTimes) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n if (!found) {\n for (const time of sponsorTimesSubmitting) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n }\n\n // For highlight category\n const poiSegments = sponsorTimes\n .filter((time) => time.segment[1] > getCurrentTime()\n && time.actionType === ActionType.Poi\n && time.hidden === SponsorHideType.Visible\n && getCategorySelection(time).option !== CategorySkipOption.Disabled)\n .sort((a, b) => b.segment[0] - a.segment[0]);\n for (const time of poiSegments) {\n const skipOption = getCategorySelection(time)?.option;\n if (skipOption !== CategorySkipOption.ShowOverlay) {\n skipToTime({\n v: getVideo(),\n skipTime: time.segment,\n skippingSegments: [time],\n openNotice: true,\n unskipTime: getCurrentTime()\n });\n if (skipOption === CategorySkipOption.AutoSkip) break;\n }\n }\n\n if (startingSegmentTime !== -1) {\n startSponsorSchedule(undefined, startingSegmentTime);\n } else {\n startSponsorSchedule();\n }\n }\n}\n\nfunction selectSegment(UUID: SegmentUUID): void {\n selectedSegment = UUID;\n updatePreviewBar();\n}\n\nfunction updatePreviewBar(): void {\n if (previewBar === null) return;\n\n if (getIsAdPlaying()) {\n previewBar.clear();\n return;\n }\n\n if (getVideo() === null) return;\n\n const hashParams = getHashParams();\n const requiredSegment = hashParams?.requiredSegment as SegmentUUID || undefined;\n const previewBarSegments: PreviewBarSegment[] = [];\n if (sponsorTimes) {\n sponsorTimes.forEach((segment) => {\n if (segment.hidden !== SponsorHideType.Visible || getCategorySelection(segment).option === CategorySkipOption.Disabled) return;\n\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: false,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source,\n requiredSegment: requiredSegment && (segment.UUID === requiredSegment || segment.UUID?.startsWith(requiredSegment) || requiredSegment.startsWith(segment.UUID)),\n selectedSegment: selectedSegment && segment.UUID === selectedSegment\n });\n });\n }\n\n sponsorTimesSubmitting.forEach((segment) => {\n if (segment.hidden === SponsorHideType.Visible\n && (segment.actionType !== ActionType.Chapter || segment.segment.length > 1)) {\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: true,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source\n });\n }\n });\n\n previewBar.set(previewBarSegments.filter((segment) => segment.actionType !== ActionType.Full), getVideoDuration())\n if (getVideo()) updateActiveSegment(getCurrentTime());\n\n if (Config.config.showTimeWithSkips) {\n const skippedDuration = utils.getTimestampsDuration(previewBarSegments\n .filter(({actionType}) => ![ActionType.Mute, ActionType.Chapter].includes(actionType))\n .map(({segment}) => segment));\n\n showTimeWithoutSkips(skippedDuration);\n }\n}\n\nfunction updateCategoryPill() {\n const fullVideoSegment = sponsorTimes.filter((time) => time.actionType === ActionType.Full)[0];\n if (fullVideoSegment && getSkipProfileBool(\"fullVideoSegments\")) {\n categoryPill?.setSegment(fullVideoSegment);\n } else {\n categoryPill?.setVisibility(false);\n }\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nasync function channelIDChange() {\n // check if the start of segments were missed\n if (Config.config.forceChannelCheck && sponsorTimes?.length > 0) startSkipScheduleCheckingForStartSponsors();\n\n hideTooShortSegments(sponsorTimes);\n handleExistingChaptersChannelChange();\n updatePreviewBar();\n updateCategoryPill();\n notifyPopupOfSegments();\n}\n\nfunction videoElementChange(newVideo: boolean, video: HTMLVideoElement): void {\n waitFor(() => Config.isReady()).then(() => {\n if (newVideo) {\n setupVideoListeners(video);\n setupSkipButtonControlBar();\n setupCategoryPill();\n }\n \n updatePreviewBar();\n checkPreviewbarState();\n \n // Incase the page is still transitioning, check again in a few seconds\n setTimeout(checkPreviewbarState, 100);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 5000);\n })\n}\n\nlet checkingPreviewbarAgain = false;\nfunction checkPreviewbarState(): void {\n if (!getPreviewBarAttachElement() && !checkingPreviewbarAgain && getVideo() && getVideoID()) {\n checkingPreviewbarAgain = true;\n setTimeout(() => {\n checkingPreviewbarAgain = false;\n checkPreviewbarState();\n }, 500);\n\n return;\n }\n\n if (previewBar && !getPreviewBarAttachElement()?.contains(previewBar.container)) {\n previewBar.remove();\n previewBar = null;\n }\n\n createPreviewBar();\n}\n\n/**\n * Returns info about the next upcoming sponsor skip\n */\nfunction getNextSkipIndex(currentTime: number, includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean):\n {array: ScheduledTime[]; index: number; endIndex: number; extraIndexes: number[]; openNotice: boolean} {\n\n const autoSkipSorter = (segment: ScheduledTime) => {\n const skipOption = getCategorySelection(segment)?.option;\n if (segment.hidden !== SponsorHideType.Visible) {\n // Hidden segments sometimes end up here if another segment is at the same time, use them last\n return 3;\n } else if ((skipOption === CategorySkipOption.AutoSkip || shouldAutoSkip(segment))\n && (segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter)) {\n return 0;\n } else if (skipOption !== CategorySkipOption.ShowOverlay) {\n return 1;\n } else {\n return 2;\n }\n }\n\n const { includedTimes: submittedArray, scheduledTimes: sponsorStartTimes } =\n getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: sponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, true);\n\n // This is an array in-case multiple segments have the exact same start time\n const minSponsorTimeIndexes = GenericUtils.indexesOf(sponsorStartTimes, Math.min(...sponsorStartTimesAfterCurrentTime));\n // Find auto skipping segments if possible, sort by duration otherwise\n const minSponsorTimeIndex = minSponsorTimeIndexes.sort(\n (a, b) => ((autoSkipSorter(submittedArray[a]) - autoSkipSorter(submittedArray[b]))\n || (submittedArray[a].segment[1] - submittedArray[a].segment[0]) - (submittedArray[b].segment[1] - submittedArray[b].segment[0])))[0] ?? -1;\n // Store extra indexes for the non-auto skipping segments if others occur at the exact same start time\n const extraIndexes = minSponsorTimeIndexes.filter((i) => i !== minSponsorTimeIndex && autoSkipSorter(submittedArray[i]) !== 0);\n\n const endTimeIndex = getLatestEndTimeIndex(submittedArray, minSponsorTimeIndex);\n\n const { includedTimes: unsubmittedArray, scheduledTimes: unsubmittedSponsorStartTimes } =\n getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: unsubmittedSponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, false);\n\n const minUnsubmittedSponsorTimeIndex = unsubmittedSponsorStartTimes.indexOf(Math.min(...unsubmittedSponsorStartTimesAfterCurrentTime));\n const previewEndTimeIndex = getLatestEndTimeIndex(unsubmittedArray, minUnsubmittedSponsorTimeIndex);\n\n if ((minUnsubmittedSponsorTimeIndex === -1 && minSponsorTimeIndex !== -1) ||\n sponsorStartTimes[minSponsorTimeIndex] < unsubmittedSponsorStartTimes[minUnsubmittedSponsorTimeIndex]) {\n return {\n array: submittedArray,\n index: minSponsorTimeIndex,\n endIndex: endTimeIndex,\n extraIndexes, // Segments at same time that need separate notices\n openNotice: true\n };\n } else {\n return {\n array: unsubmittedArray,\n index: minUnsubmittedSponsorTimeIndex,\n endIndex: previewEndTimeIndex,\n extraIndexes: [], // No manual things for unsubmitted\n openNotice: false\n };\n }\n}\n\n/**\n * This returns index if the skip option is not AutoSkip\n *\n * Finds the last endTime that occurs in a segment that the given\n * segment skips into that is part of an AutoSkip category.\n *\n * Used to find where a segment should truely skip to if there are intersecting submissions due to\n * them having different categories.\n *\n * @param sponsorTimes\n * @param index Index of the given sponsor\n * @param hideHiddenSponsors\n */\nfunction getLatestEndTimeIndex(sponsorTimes: SponsorTime[], index: number, hideHiddenSponsors = true): number {\n // Only combine segments for AutoSkip\n if (index == -1 ||\n !shouldAutoSkip(sponsorTimes[index])\n || sponsorTimes[index].actionType !== ActionType.Skip) {\n return index;\n }\n\n let latestEndTimeIndex = -1;\n // Default to looped chapter if its end would have been skipped\n if (loopedChapter\n && (loopedChapter.segment[0] > sponsorTimes[index].segment[0]\n && loopedChapter.segment[0] <= sponsorTimes[index]?.segment[1])){\n latestEndTimeIndex = sponsorTimes.length - 1;\n } else {\n // or the normal end time otherwise \n latestEndTimeIndex = index;\n }\n\n for (let i = 0; i < sponsorTimes?.length; i++) {\n const currentSegment = sponsorTimes[i].segment;\n const latestEndTime = sponsorTimes[latestEndTimeIndex].segment[1];\n\n if (currentSegment[0] - skipBuffer <= latestEndTime && currentSegment[1] > latestEndTime\n && (!hideHiddenSponsors || sponsorTimes[i].hidden === SponsorHideType.Visible)\n && shouldAutoSkip(sponsorTimes[i])\n && sponsorTimes[i].actionType === ActionType.Skip) {\n // Overlapping segment\n latestEndTimeIndex = i;\n }\n }\n\n // Keep going if required\n if (latestEndTimeIndex !== index) {\n latestEndTimeIndex = getLatestEndTimeIndex(sponsorTimes, latestEndTimeIndex, hideHiddenSponsors);\n }\n\n return latestEndTimeIndex;\n}\n\n/**\n * Gets just the start times from a sponsor times array.\n * Optionally specify a minimum\n *\n * @param sponsorTimes\n * @param minimum\n * @param hideHiddenSponsors\n * @param includeIntersectingSegments If true, it will include segments that start before\n * the current time, but end after\n */\nfunction getStartTimes(sponsorTimes: SponsorTime[], includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean,\n minimum?: number, hideHiddenSponsors = false): {includedTimes: ScheduledTime[]; scheduledTimes: number[]} {\n if (!sponsorTimes) return {includedTimes: [], scheduledTimes: []};\n\n const includedTimes: ScheduledTime[] = [];\n const scheduledTimes: number[] = [];\n\n const shouldIncludeTime = (segment: ScheduledTime ) => (minimum === undefined\n || ((includeNonIntersectingSegments && segment.scheduledTime >= minimum)\n || (includeIntersectingSegments && segment.scheduledTime < minimum\n && ((segment.segment[1] > minimum && shouldSkip(segment)) // Only include intersecting skippable segments\n || isLoopedChapter(segment)))))\n && (!hideHiddenSponsors || segment.hidden === SponsorHideType.Visible)\n && segment.segment.length === 2\n && segment.actionType !== ActionType.Poi\n && segment.actionType !== ActionType.Full;\n\n const possibleTimes = sponsorTimes.map((sponsorTime) => ({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[0]\n }));\n\n // Schedule at the end time to know when to unmute and remove title from seek bar\n sponsorTimes.forEach(sponsorTime => {\n if (!possibleTimes.some((time) => sponsorTime.segment[1] === time.scheduledTime && shouldIncludeTime(time))\n && (minimum === undefined || sponsorTime.segment[1] > minimum)) {\n possibleTimes.push({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[1]\n });\n }\n });\n\n if (loopedChapter){\n possibleTimes.push({\n ...loopedChapter,\n scheduledTime: loopedChapter.segment[0]})\n }\n\n for (let i = 0; i < possibleTimes.length; i++) {\n if (shouldIncludeTime(possibleTimes[i])) {\n scheduledTimes.push(possibleTimes[i].scheduledTime);\n includedTimes.push(possibleTimes[i]);\n }\n }\n\n return { includedTimes, scheduledTimes };\n}\n\n/**\n * Skip to exact time in a video and autoskips\n *\n * @param time\n */\nfunction previewTime(time: number, unpause = true) {\n previewedSegment = true;\n setCurrentTime(time);\n\n // Unpause the video if needed\n if (unpause && getVideo().paused){\n getVideo().play();\n }\n}\n\n//send telemetry and count skip\nfunction sendTelemetryAndCount(skippingSegments: SponsorTime[], secondsSkipped: number, fullSkip: boolean) {\n for (const segment of skippingSegments) {\n if (!previewedSegment && sponsorTimesSubmitting.some((s) => s.segment === segment.segment)) {\n // Count that as a previewed segment\n previewedSegment = true;\n }\n }\n\n if (!Config.config.trackViewCount || (!Config.config.trackViewCountInPrivate && chrome.extension.inIncognitoContext)) return;\n\n let counted = false;\n for (const segment of skippingSegments) {\n const index = sponsorTimes?.findIndex((s) => s.segment === segment.segment);\n if (index !== -1 && !sponsorSkipped[index]) {\n sponsorSkipped[index] = true;\n if (!counted) {\n Config.config.minutesSaved = Config.config.minutesSaved + secondsSkipped / 60;\n if (segment.actionType !== ActionType.Chapter) {\n Config.config.skipCount = Config.config.skipCount + 1;\n }\n counted = true;\n }\n\n if (fullSkip) asyncRequestToServer(\"POST\", \"/api/viewedVideoSponsorTime?UUID=\" + segment.UUID + \"&videoID=\" + getVideoID())\n .then(r => {\n if (!r.ok) logRequest(r, \"SB\", \"segment skip log\");\n })\n .catch(e => console.warn(\"[SB] Caught error while attempting to log segment skip\", e));\n }\n }\n}\n\n//skip from the start time to the end time for a certain index sponsor time\nfunction skipToTime({v, skipTime, skippingSegments, openNotice, forceAutoSkip, unskipTime}: SkipToTimeParams): void {\n if (Config.config.disableSkipping) return;\n\n // There will only be one submission if it is manual skip\n const autoSkip: boolean = forceAutoSkip || shouldAutoSkip(skippingSegments[0]);\n const isSubmittingSegment = sponsorTimesSubmitting.some((time) => time.segment === skippingSegments[0].segment);\n\n if ((autoSkip || isSubmittingSegment)\n && getCurrentTime() !== skipTime[1]) {\n switch(skippingSegments[0].actionType) {\n case ActionType.Poi:\n case ActionType.Chapter:\n case ActionType.Skip: {\n // Fix for looped videos not working when skipping to the end #426\n // for some reason you also can't skip to 1 second before the end\n if (v.loop && getVideoDuration() > 1 && skipTime[1] >= getVideoDuration() - 1) {\n setCurrentTime(0);\n } else if (getVideoDuration() > 1 && skipTime[1] >= getVideoDuration()\n && (navigator.vendor === \"Apple Computer, Inc.\" || isPlayingPlaylist())) {\n // MacOS will loop otherwise #1027\n // Sometimes playlists loop too #1804\n setCurrentTime(getVideoDuration() - 0.001);\n } else if (getVideoDuration() > 1 && Math.abs(skipTime[1] - getVideoDuration()) < endTimeSkipBuffer\n && isFirefoxOrSafari() && !isSafari()) {\n setCurrentTime(getVideoDuration());\n } else {\n if (inMuteSegment(skipTime[1], true)) {\n // Make sure not to mute if skipping into a mute segment\n v.muted = true;\n videoMuted = true;\n }\n\n setCurrentTime(skipTime[1]);\n }\n\n break;\n }\n case ActionType.Mute: {\n if (!v.muted) {\n v.muted = true;\n videoMuted = true;\n }\n break;\n }\n }\n }\n\n if (autoSkip && Config.config.audioNotificationOnSkip\n && !isSubmittingSegment && !getVideo()?.muted) {\n const beep = new Audio(chrome.runtime.getURL(\"icons/beep.oga\"));\n beep.volume = getVideo().volume * 0.1;\n const oldMetadata = navigator.mediaSession.metadata\n beep.play();\n beep.addEventListener(\"ended\", () => {\n navigator.mediaSession.metadata = null;\n setTimeout(() => {\n navigator.mediaSession.metadata = oldMetadata;\n beep.remove();\n });\n })\n }\n\n if (!autoSkip\n && skippingSegments.length === 1\n && skippingSegments[0].actionType === ActionType.Poi) {\n waitFor(() => skipButtonControlBar).then(() => {\n skipButtonControlBar.enable(skippingSegments[0]);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) skipButtonControlBar.setShowKeybindHint(false);\n \n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = skipButtonControlBar;\n })\n } else {\n if (openNotice) {\n //send out the message saying that a sponsor message was skipped\n if (!Config.config.dontShowNotice || !autoSkip) {\n createSkipNotice(skippingSegments, autoSkip, unskipTime, false);\n } else if (autoSkip) {\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = {\n setShowKeybindHint: () => {}, //eslint-disable-line @typescript-eslint/no-empty-function\n toggleSkip: () => {\n unskipSponsorTime(skippingSegments[0], unskipTime);\n\n createSkipNotice(skippingSegments, autoSkip, unskipTime, true);\n }\n };\n }\n }\n }\n\n //send telemetry that a this sponsor was skipped\n if (autoSkip || isSubmittingSegment) sendTelemetryAndCount(skippingSegments, skipTime[1] - skipTime[0], true);\n}\n\nfunction createSkipNotice(skippingSegments: SponsorTime[], autoSkip: boolean, unskipTime: number, startReskip: boolean, voteNotice = false) {\n for (const skipNotice of skipNotices) {\n if (skippingSegments.length === skipNotice.segments.length\n && skippingSegments.every((segment) => skipNotice.segments.some((s) => s.UUID === segment.UUID))) {\n // Skip notice already exists\n return;\n }\n }\n\n const upcomingNoticeShown = !!upcomingNotice && !upcomingNotice.closed;\n\n const newSkipNotice = new SkipNotice(skippingSegments, autoSkip, skipNoticeContentContainer, () => {\n upcomingNotice?.close();\n upcomingNotice = null;\n }, unskipTime, startReskip, upcomingNoticeShown, voteNotice);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) newSkipNotice.setShowKeybindHint(false);\n skipNotices.push(newSkipNotice);\n\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = newSkipNotice;\n}\n\nfunction createUpcomingNotice(skippingSegments: SponsorTime[], timeLeft: number, autoSkip: boolean): void {\n if (upcomingNotice \n && !upcomingNotice.closed\n && upcomingNotice.sameNotice(skippingSegments)) {\n return;\n }\n\n upcomingNotice?.close();\n upcomingNotice = new UpcomingNotice(skippingSegments, skipNoticeContentContainer, timeLeft / 1000, autoSkip);\n}\n\nfunction unskipSponsorTime(segment: SponsorTime, unskipTime: number = null, forceSeek = false, voteNotice = false) {\n if (segment.actionType === ActionType.Mute) {\n getVideo().muted = false;\n videoMuted = false;\n }\n\n if (forceSeek || segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter || voteNotice) {\n //add a tiny bit of time to make sure it is not skipped again\n setCurrentTime(unskipTime ?? segment.segment[0] + 0.001);\n }\n\n}\n\nfunction reskipSponsorTime(segment: SponsorTime, forceSeek = false) {\n if (segment.actionType === ActionType.Mute && !forceSeek) {\n getVideo().muted = true;\n videoMuted = true;\n } else {\n const skippedTime = Math.max(segment.segment[1] - getCurrentTime(), 0);\n const segmentDuration = segment.segment[1] - segment.segment[0];\n const fullSkip = skippedTime / segmentDuration > manualSkipPercentCount;\n\n setCurrentTime(segment.segment[1]);\n sendTelemetryAndCount([segment], segment.actionType !== ActionType.Chapter ? skippedTime : 0, fullSkip);\n startSponsorSchedule(true, segment.segment[1], false);\n }\n}\n\nfunction createButton(baseID: string, title: string, callback: () => void, imageName: string, isDraggable = false): HTMLElement {\n const existingElement = document.getElementById(baseID + \"Button\");\n if (existingElement !== null) return existingElement;\n\n // Button HTML\n const newButton = document.createElement(\"button\");\n newButton.draggable = isDraggable;\n newButton.id = baseID + \"Button\";\n newButton.classList.add(\"playerButton\");\n newButton.classList.add(\"ytp-button\");\n if (Config.config.prideTheme) newButton.classList.add(\"prideTheme\");\n if (isOnYTTV()) {\n // Some style needs to be set here, but the numbers don't matter \n newButton.setAttribute(\"style\", \"width: 40px; height: 40px\");\n }\n newButton.setAttribute(\"title\", chrome.i18n.getMessage(title));\n newButton.addEventListener(\"click\", () => {\n callback();\n });\n\n // Image HTML\n const newButtonImage = document.createElement(\"img\");\n newButton.draggable = isDraggable;\n newButtonImage.id = baseID + \"Image\";\n newButtonImage.className = \"playerButtonImage\";\n newButtonImage.src = chrome.runtime.getURL(\"icons/\" + imageName);\n\n // Append image to button\n newButton.appendChild(newButtonImage);\n\n // Add the button to player\n if (controls) controls.prepend(newButton);\n\n // Store the elements to prevent unnecessary querying\n playerButtons[baseID] = {\n button: newButton,\n image: newButtonImage,\n setupListener: false\n };\n\n return newButton;\n}\n\nfunction shouldAutoSkip(segment: SponsorTime): boolean {\n const canSkipNonMusic = !Config.config.skipNonMusicOnlyOnYoutubeMusic || isOnYouTubeMusic();\n if (segment.category === \"music_offtopic\" && !canSkipNonMusic) {\n return false;\n }\n\n return (!getSkipProfileBool(\"manualSkipOnFullVideo\") || !sponsorTimes?.some((s) => s.category === segment.category && s.actionType === ActionType.Full))\n && (getCategorySelection(segment)?.option === CategorySkipOption.AutoSkip ||\n (getSkipProfileBool(\"autoSkipOnMusicVideos\") && canSkipNonMusic && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || sponsorTimesSubmitting.some((s) => s.segment === segment.segment))\n || isLoopedChapter(segment);\n}\n\nfunction shouldSkip(segment: SponsorTime): boolean {\n return segment.hidden === SponsorHideType.Visible && (segment.actionType !== ActionType.Full\n && getCategorySelection(segment)?.option > CategorySkipOption.ShowOverlay)\n || (getSkipProfileBool(\"autoSkipOnMusicVideos\") && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || isLoopedChapter(segment);\n}\n\nfunction isLoopedChapter(segment: SponsorTime): boolean{\n return !!segment && !!loopedChapter && segment.segment[1] != undefined\n && segment.segment[0] === loopedChapter.segment[0] && segment.segment[1] === loopedChapter.segment[1];\n}\n\n/** Creates any missing buttons on the YouTube player if possible. */\nasync function createButtons(): Promise {\n controls = await utils.wait(getControls).catch();\n\n // Add button if does not already exist in html\n createButton(\"startSegment\", \"sponsorStart\", () => startOrEndTimingNewSegment(), \"PlayerStartIconSponsorBlocker.svg\");\n createButton(\"cancelSegment\", \"sponsorCancel\", () => cancelCreatingSegment(), \"PlayerCancelSegmentIconSponsorBlocker.svg\");\n createButton(\"delete\", \"clearTimes\", () => clearSponsorTimes(), \"PlayerDeleteIconSponsorBlocker.svg\");\n createButton(\"submit\", \"OpenSubmissionMenu\", () => openSubmissionMenu(), \"PlayerUploadIconSponsorBlocker.svg\");\n createButton(\"info\", \"openPopup\", () => openInfoMenu(), \"PlayerInfoIconSponsorBlocker.svg\");\n\n const controlsContainer = getControls();\n if (Config.config.autoHideInfoButton && !isOnInvidious() && controlsContainer\n && playerButtons[\"info\"]?.button && !controlsWithEventListeners.includes(controlsContainer)) {\n controlsWithEventListeners.push(controlsContainer);\n\n AnimationUtils.setupAutoHideAnimation(playerButtons[\"info\"].button, controlsContainer);\n }\n}\n\n/** Creates any missing buttons on the player and updates their visiblity. */\nasync function updateVisibilityOfPlayerControlsButton(): Promise {\n // Not on a proper video yet\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n await createButtons();\n\n updateEditButtonsOnPlayer();\n\n // Don't show the info button on embeds\n if (Config.config.hideInfoButtonPlayerControls || document.URL.includes(\"/embed/\") || isOnInvidious() || isOnYTTV()\n || document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n playerButtons.info.button.style.display = \"none\";\n } else {\n playerButtons.info.button.style.removeProperty(\"display\");\n }\n}\n\n/** Updates the visibility of buttons on the player related to creating segments. */\nfunction updateEditButtonsOnPlayer(): void {\n // Don't try to update the buttons if we aren't on a YouTube video page\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n const buttonsEnabled = !(Config.config.hideVideoPlayerControls || isOnInvidious());\n\n let creatingSegment = false;\n let submitButtonVisible = false;\n let deleteButtonVisible = false;\n\n // Only check if buttons should be visible if they're enabled\n if (buttonsEnabled) {\n creatingSegment = isSegmentCreationInProgress();\n\n // Show only if there are any segments to submit\n submitButtonVisible = sponsorTimesSubmitting.length > 0;\n\n // Show only if there are any segments to delete\n deleteButtonVisible = sponsorTimesSubmitting.length > 1 || (sponsorTimesSubmitting.length > 0 && !creatingSegment);\n }\n\n // Update the elements\n playerButtons.startSegment.button.style.display = buttonsEnabled ? \"unset\" : \"none\";\n playerButtons.cancelSegment.button.style.display = buttonsEnabled && creatingSegment ? \"unset\" : \"none\";\n\n if (buttonsEnabled) {\n if (creatingSegment) {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStopIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorEnd\"));\n } else {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStartIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorStart\"));\n }\n }\n\n playerButtons.submit.button.style.display = submitButtonVisible && !Config.config.hideUploadButtonPlayerControls ? \"unset\" : \"none\";\n playerButtons.delete.button.style.display = deleteButtonVisible && !Config.config.hideDeleteButtonPlayerControls ? \"unset\" : \"none\";\n}\n\n/**\n * Used for submitting. This will use the HTML displayed number when required as the video's\n * current time is out of date while scrubbing or at the end of the getVideo(). This is not needed\n * for sponsor skipping as the video is not playing during these times.\n */\nfunction getRealCurrentTime(): number {\n // Used to check if replay button\n const playButtonSVGData = document.querySelector(\".ytp-play-button\")?.querySelector(\".ytp-svg-fill\")?.getAttribute(\"d\");\n const replaceSVGData = \"M 18,11 V 7 l -5,5 5,5 v -4 c 3.3,0 6,2.7 6,6 0,3.3 -2.7,6 -6,6 -3.3,0 -6,-2.7 -6,-6 h -2 c 0,4.4 3.6,8 8,8 4.4,0 8,-3.6 8,-8 0,-4.4 -3.6,-8 -8,-8 z\";\n\n if (playButtonSVGData === replaceSVGData) {\n // At the end of the video\n return getVideoDuration();\n } else {\n return getCurrentTime();\n }\n}\n\nfunction startOrEndTimingNewSegment() {\n if (isOnYTTV() && getIsLivePremiere()) {\n alert(chrome.i18n.getMessage(\"yttvLiveContentWarning\"));\n return;\n }\n\n verifyCurrentTime(getRealCurrentTime());\n const roundedTime = Math.round((getRealCurrentTime() + Number.EPSILON) * 1000) / 1000;\n if (!isSegmentCreationInProgress()) {\n sponsorTimesSubmitting.push({\n segment: [roundedTime],\n UUID: generateUserID() as SegmentUUID,\n category: Config.config.defaultCategory,\n actionType: ActionType.Skip,\n source: SponsorSourceType.Local\n });\n } else {\n // Finish creating the new segment\n const existingSegment = getIncompleteSegment();\n const existingTime = existingSegment.segment[0];\n const currentTime = roundedTime;\n\n // Swap timestamps if the user put the segment end before the start\n existingSegment.segment = [Math.min(existingTime, currentTime), Math.max(existingTime, currentTime)];\n }\n\n // Save the newly created segment\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Make sure they know if someone has already submitted something it while they were watching\n sponsorsLookup(true, true);\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n\n importExistingChapters(false);\n\n if (lastResponseStatus !== 200 && lastResponseStatus !== 404\n && !shownSegmentFailedToFetchWarning && Config.config.showSegmentFailedToFetchWarning) {\n alert(chrome.i18n.getMessage(\"segmentFetchFailureWarning\"));\n\n shownSegmentFailedToFetchWarning = true;\n }\n}\n\nfunction getIncompleteSegment(): SponsorTime {\n return sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1];\n}\n\n/** Is the latest submitting segment incomplete */\nfunction isSegmentCreationInProgress(): boolean {\n const segment = getIncompleteSegment();\n return segment && segment?.segment?.length !== 2;\n}\n\nfunction cancelCreatingSegment() {\n if (isSegmentCreationInProgress()) {\n if (sponsorTimesSubmitting.length > 1) { // If there's more than one segment: remove last\n sponsorTimesSubmitting.pop();\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n } else { // Otherwise delete the video entry & close submission menu\n resetSponsorSubmissionNotice();\n sponsorTimesSubmitting = [];\n delete Config.local.unsubmittedSegments[getVideoID()];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n}\n\nfunction updateSponsorTimesSubmitting(getFromConfig = true) {\n const segmentTimes = Config.local.unsubmittedSegments[getVideoID()];\n\n //see if this data should be saved in the sponsorTimesSubmitting variable\n if (getFromConfig && segmentTimes != undefined) {\n sponsorTimesSubmitting = [];\n\n for (const segmentTime of segmentTimes) {\n sponsorTimesSubmitting.push({\n segment: segmentTime.segment,\n UUID: segmentTime.UUID,\n category: segmentTime.category,\n actionType: segmentTime.actionType,\n description: segmentTime.description,\n hidden: segmentTime.hidden,\n source: segmentTime.source\n });\n }\n\n if (sponsorTimesSubmitting.length > 0) {\n // Assume they already previewed a segment\n previewedSegment = true;\n\n importExistingChapters(true);\n }\n }\n\n updatePreviewBar();\n\n // Restart skipping schedule\n if (getVideo() !== null) startSponsorSchedule();\n\n if (submissionNotice !== null) {\n submissionNotice.update();\n }\n\n checkForPreloadedSegment();\n}\n\nfunction openInfoMenu() {\n if (document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //it's already added\n return;\n }\n\n popupInitialised = false;\n\n //hide info button\n if (playerButtons.info) playerButtons.info.button.style.display = \"none\";\n\n const popup = document.createElement(\"div\");\n popup.id = \"sponsorBlockPopupContainer\";\n\n const frame = document.createElement(\"iframe\");\n frame.width = \"374\";\n frame.height = \"500\";\n frame.style.borderRadius = \"12px\";\n frame.addEventListener(\"load\", async () => {\n frame.contentWindow.postMessage(\"\", \"*\");\n\n // To support userstyles applying to the popup\n const stylusStyle = document.querySelector(\".stylus\");\n if (stylusStyle) {\n frame.contentWindow.postMessage({\n type: \"style\",\n css: stylusStyle.textContent\n }, \"*\");\n }\n\n const enhancerStyle = document.getElementById(\"efyt-theme\");\n if (enhancerStyle) {\n const enhancerStyleVariables = document.getElementById(\"efyt-theme-variables\");\n if (enhancerStyleVariables) {\n const enhancerCss = await fetch(enhancerStyle.getAttribute(\"href\")).then((response) => response.text());\n const enhancerVariablesCss = await fetch(enhancerStyleVariables.getAttribute(\"href\")).then((response) => response.text());\n\n if (enhancerCss && enhancerVariablesCss) {\n frame.contentWindow.postMessage({\n type: \"style\",\n // Image needs needs to reference the full url now\n css: enhancerCss.replace(\"./images/youtube-deep-dark/IconSponsorBlocker256px.png\",\n \"https://raw.githubusercontent.com/RaitaroH/YouTube-DeepDark/master/YT_Images/IconSponsorBlocker256px.png\")\n + enhancerVariablesCss\n }, \"*\");\n }\n }\n }\n });\n frame.src = chrome.runtime.getURL(\"popup.html\");\n popup.appendChild(frame);\n\n const elemHasChild = (elements: NodeListOf): Element => {\n let parentNode: Element;\n for (const node of elements) {\n if (node.firstElementChild !== null) {\n parentNode = node;\n }\n }\n return parentNode\n }\n\n const parentNodeOptions = [{\n // YouTube\n selector: \"#secondary-inner\",\n hasChildCheck: true\n }, {\n // old youtube theme\n selector: \"#watch7-sidebar-contents\",\n }];\n for (const option of parentNodeOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.hasChildCheck ? elemHasChild(allElements) : allElements[0];\n\n if (el) {\n if (option.hasChildCheck) el.insertBefore(popup, el.firstChild);\n break;\n }\n }\n}\n\nfunction closeInfoMenu() {\n const popup = document.getElementById(\"sponsorBlockPopupContainer\");\n if (popup === null) return;\n\n popup.remove();\n\n // Show info button if it's not an embed\n if (!document.URL.includes(\"/embed/\") && playerButtons.info) {\n playerButtons.info.button.style.display = \"unset\";\n }\n}\n\nfunction clearSponsorTimes() {\n const currentVideoID = getVideoID();\n\n const sponsorTimes = Config.local.unsubmittedSegments[currentVideoID];\n\n if (sponsorTimes != undefined && sponsorTimes.length > 0) {\n const confirmMessage = chrome.i18n.getMessage(\"clearThis\") + getSegmentsMessage(sponsorTimes)\n + \"\\n\" + chrome.i18n.getMessage(\"confirmMSG\")\n if(!confirm(confirmMessage)) return;\n\n resetSponsorSubmissionNotice();\n\n //clear the sponsor times\n delete Config.local.unsubmittedSegments[currentVideoID];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n //clear sponsor times submitting\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateEditButtonsOnPlayer();\n }\n}\n\n//if skipNotice is null, it will not affect the UI\nasync function vote(type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent): Promise {\n if (skipNotice !== null && skipNotice !== undefined) {\n //add loading info\n skipNotice.addVoteButtonInfo(chrome.i18n.getMessage(\"Loading\"))\n skipNotice.setNoticeInfoMessage();\n }\n\n const response = await voteAsync(type, UUID, category);\n if (response != undefined) {\n //see if it was a success or failure\n if (skipNotice != null) {\n if (\"error\" in response) {\n skipNotice.setNoticeInfoMessage(formatJSErrorMessage(response.error))\n skipNotice.resetVoteButtonInfo();\n } else if (response.ok || response.status === 429) {\n //success (treat rate limits as a success)\n skipNotice.afterVote(utils.getSponsorTimeFromUUID(sponsorTimes, UUID), type, category);\n } else {\n logRequest({headers: null, ...response}, \"SB\", \"vote on segment\");\n if (response.status === 403 && response.responseText.startsWith(\"Vote rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n skipNotice.setNoticeInfoMessage(getLongErrorMessage(response.status, response.responseText))\n }\n\n skipNotice.resetVoteButtonInfo();\n }\n }\n }\n\n return response;\n}\n\nasync function voteAsync(type: number, UUID: SegmentUUID, category?: Category): Promise {\n const sponsorIndex = utils.getSponsorIndexFromUUID(sponsorTimes, UUID);\n\n // Don't vote for preview sponsors\n if (sponsorIndex == -1 || sponsorTimes[sponsorIndex].source !== SponsorSourceType.Server) return Promise.resolve(undefined);\n\n // See if the local time saved count and skip count should be saved\n if (type === 0 && sponsorSkipped[sponsorIndex] || type === 1 && !sponsorSkipped[sponsorIndex]) {\n let factor = 1;\n if (type == 0) {\n factor = -1;\n\n sponsorSkipped[sponsorIndex] = false;\n }\n\n // Count this as a skip\n Config.config.minutesSaved = Config.config.minutesSaved + factor * (sponsorTimes[sponsorIndex].segment[1] - sponsorTimes[sponsorIndex].segment[0]) / 60;\n\n Config.config.skipCount = Config.config.skipCount + factor;\n }\n\n return new Promise((resolve) => {\n chrome.runtime.sendMessage({\n message: \"submitVote\",\n type: type,\n UUID: UUID,\n category: category,\n videoID: getVideoID()\n }, (response) => {\n if (response.ok === true) {\n // Change the sponsor locally\n const segment = utils.getSponsorTimeFromUUID(sponsorTimes, UUID);\n if (segment) {\n if (type === 0) {\n segment.hidden = SponsorHideType.Downvoted;\n } else if (category) {\n segment.category = category;\n } else if (type === 1) {\n segment.hidden = SponsorHideType.Visible;\n }\n\n if (!category && !Config.config.isVip) {\n utils.addHiddenSegment(getVideoID(), segment.UUID, segment.hidden);\n }\n\n updatePreviewBar();\n }\n }\n\n resolve(response);\n });\n });\n}\n\n//Closes all notices that tell the user that a sponsor was just skipped\nfunction closeAllSkipNotices(){\n const notices = document.getElementsByClassName(\"sponsorSkipNotice\");\n for (let i = 0; i < notices.length; i++) {\n notices[i].remove();\n }\n}\n\nfunction dontShowNoticeAgain() {\n Config.config.dontShowNotice = true;\n closeAllSkipNotices();\n}\n\n/**\n * Helper method for the submission notice to clear itself when it closes\n */\nfunction resetSponsorSubmissionNotice(callRef = true) {\n submissionNotice?.close(callRef);\n submissionNotice = null;\n}\n\nfunction closeSubmissionMenu() {\n submissionNotice?.close();\n submissionNotice = null;\n}\n\nfunction openSubmissionMenu() {\n if (submissionNotice !== null){\n closeSubmissionMenu();\n return;\n }\n\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n submissionNotice = new SubmissionNotice(skipNoticeContentContainer, sendSubmitMessage);\n }\n}\n\nfunction previewRecentSegment() {\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n previewTime(sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment[0] - defaultPreviewTime);\n \n if (submissionNotice) {\n submissionNotice.scrollToBottom();\n }\n }\n}\n\nfunction submitSegments() {\n if (sponsorTimesSubmitting !== undefined\n && sponsorTimesSubmitting.length > 0\n && submissionNotice !== null) {\n submissionNotice.submit();\n }\n\n}\n\n//send the message to the background js\n//called after all the checks have been made that it's okay to do so\nasync function sendSubmitMessage(): Promise {\n // check if all segments are full video\n const onlyFullVideo = sponsorTimesSubmitting.every((segment) => segment.actionType === ActionType.Full);\n // Block if submitting on a running livestream or premiere\n if (!onlyFullVideo && (getIsLivePremiere() || isVisible(document.querySelector(\".ytp-live-badge\")))) {\n alert(chrome.i18n.getMessage(\"liveOrPremiere\"));\n return false;\n }\n\n if (!previewedSegment \n && !sponsorTimesSubmitting.every((segment) => \n [ActionType.Full, ActionType.Chapter, ActionType.Poi].includes(segment.actionType) \n || segment.segment[1] >= getVideoDuration()\n || segment.segment[0] === 0)) {\n alert(`${chrome.i18n.getMessage(\"previewSegmentRequired\")} ${keybindToString(Config.config.previewKeybind)}`);\n return false;\n }\n\n // Add loading animation\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadIconSponsorBlocker.svg\");\n const stopAnimation = AnimationUtils.applyLoadingAnimation(playerButtons.submit.button, 1, () => updateEditButtonsOnPlayer());\n\n //check if a sponsor exceeds the duration of the video\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n if (sponsorTimesSubmitting[i].segment[1] > getVideoDuration()) {\n sponsorTimesSubmitting[i].segment[1] = getVideoDuration();\n }\n }\n\n //update sponsorTimes\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Check to see if any of the submissions are below the minimum duration set\n if (Config.config.minDuration > 0) {\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n const duration = sponsorTimesSubmitting[i].segment[1] - sponsorTimesSubmitting[i].segment[0];\n if (duration > 0 && duration < Config.config.minDuration) {\n const confirmShort = chrome.i18n.getMessage(\"shortCheck\") + \"\\n\\n\" +\n getSegmentsMessage(sponsorTimesSubmitting);\n\n if(!confirm(confirmShort)) return false;\n }\n }\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"POST\", \"/api/skipSegments\", {\n videoID: getVideoID(),\n userID: Config.config.userID,\n segments: sponsorTimesSubmitting,\n videoDuration: getVideoDuration(),\n userAgent: extensionUserAgent(),\n });\n } catch (e) {\n console.error(\"[SB] Caught error while attempting to submit segments\", e);\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n alert(formatJSErrorMessage(e));\n return false;\n }\n\n if (response.status === 200) {\n stopAnimation();\n\n // Remove segments from storage since they've already been submitted\n delete Config.local.unsubmittedSegments[getVideoID()];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n const newSegments = sponsorTimesSubmitting;\n try {\n const receivedNewSegments = JSON.parse(response.responseText);\n if (receivedNewSegments?.length === newSegments.length) {\n for (let i = 0; i < receivedNewSegments.length; i++) {\n newSegments[i].UUID = receivedNewSegments[i].UUID;\n newSegments[i].source = SponsorSourceType.Server;\n }\n }\n } catch(e) {} // eslint-disable-line no-empty\n\n // Add submissions to current sponsors list\n sponsorTimes = (sponsorTimes || []).concat(newSegments).sort((a, b) => a.segment[0] - b.segment[0]);\n\n // Increase contribution count\n Config.config.sponsorTimesContributed = Config.config.sponsorTimesContributed + sponsorTimesSubmitting.length;\n\n // New count just used to see if a warning \"Read The Guidelines!!\" message needs to be shown\n // One per time submitting\n Config.config.submissionCountSinceCategories = Config.config.submissionCountSinceCategories + 1;\n\n // Empty the submitting times\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateCategoryPill();\n\n return true;\n } else {\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n\n if (response.status === 403 && response.responseText.startsWith(\"Submission rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n logRequest(response, \"SB\", \"segment submission\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n\n return false;\n}\n\n//get the message that visually displays the video times\nfunction getSegmentsMessage(sponsorTimes: SponsorTime[]): string {\n let sponsorTimesMessage = \"\";\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n for (let s = 0; s < sponsorTimes[i].segment.length; s++) {\n let timeMessage = getFormattedTime(sponsorTimes[i].segment[s]);\n //if this is an end time\n if (s == 1) {\n timeMessage = \" \" + chrome.i18n.getMessage(\"to\") + \" \" + timeMessage;\n } else if (i > 0) {\n //add commas if necessary\n timeMessage = \", \" + timeMessage;\n }\n\n sponsorTimesMessage += timeMessage;\n }\n }\n\n return sponsorTimesMessage;\n}\n\nfunction updateActiveSegment(currentTime: number): void {\n if (!chrome.runtime?.id) return;\n\n previewBar?.updateChapterText(sponsorTimes, sponsorTimesSubmitting, currentTime);\n\n chrome.runtime.sendMessage({\n message: \"time\",\n time: currentTime\n });\n}\n\nfunction nextChapter(): void {\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) return;\n\n lastNextChapterKeybind.time = getCurrentTime();\n lastNextChapterKeybind.date = Date.now();\n\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime());\n if (nextChapter !== -1) {\n setCurrentTime(chapters[nextChapter].segment[0]);\n } else {\n setCurrentTime(getVideoDuration());\n }\n}\n\nfunction previousChapter(): void {\n if (Date.now() - lastNextChapterKeybind.date < 3000) {\n setCurrentTime(lastNextChapterKeybind.time);\n lastNextChapterKeybind.date = 0;\n return;\n }\n\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) {\n setCurrentTime(0);\n return;\n }\n\n // subtract 5 seconds to allow skipping back to the previous chapter if close to start of\n // the current one\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime() - Math.min(5, time.segment[1] - time.segment[0]));\n const previousChapter = nextChapter !== -1 ? (nextChapter - 1) : (chapters.length - 1);\n if (previousChapter !== -1) {\n setCurrentTime(chapters[previousChapter].segment[0]);\n } else {\n setCurrentTime(0);\n }\n}\n\nasync function handleKeybindVote(type: number): Promise{\n let lastSkipNotice = skipNotices[0]?.skipNoticeRef.current;\n lastSkipNotice?.onMouseEnter();\n\n if (!lastSkipNotice) {\n const lastSegment = [...sponsorTimes].reverse()?.find((s) => s.source == SponsorSourceType.Server && (s.segment[0] <= getCurrentTime() && getCurrentTime() - (s.segment[1] || s.segment[0]) <= Config.config.skipNoticeDuration));\n if (!lastSegment) return;\n\n createSkipNotice([lastSegment], shouldAutoSkip(lastSegment), lastSegment?.segment[0] + 0.001,false, true);\n lastSkipNotice = await skipNotices[0].waitForSkipNoticeRef();\n lastSkipNotice?.reskippedMode(0);\n }\n\n vote(type,lastSkipNotice?.segments[0]?.UUID, undefined, lastSkipNotice);\n return;\n}\n\nfunction addHotkeyListener(): void {\n document.addEventListener(\"keydown\", hotkeyListener, true);\n document.addEventListener(\"keyup\", hotkeyPropagationListener, true);\n\n addCleanupListener(() => {\n document.body.removeEventListener(\"keydown\", hotkeyListener, true);\n document.body.removeEventListener(\"keyup\", hotkeyPropagationListener, true);\n });\n}\n\nfunction hotkeyListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const skipKey = Config.config.skipKeybind;\n const skipToHighlightKey = Config.config.skipToHighlightKeybind;\n const closeSkipNoticeKey = Config.config.closeSkipNoticeKeybind;\n const startSponsorKey = Config.config.startSponsorKeybind;\n const submitKey = Config.config.actuallySubmitKeybind;\n const previewKey = Config.config.previewKeybind;\n const openSubmissionMenuKey = Config.config.submitKeybind;\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n const upvoteKey = Config.config.upvoteKeybind;\n const downvoteKey = Config.config.downvoteKeybind;\n\n if (keybindEquals(key, skipKey)) {\n if (activeSkipKeybindElement && !(activeSkipKeybindElement instanceof SkipButtonControlBar)) {\n activeSkipKeybindElement.toggleSkip.call(activeSkipKeybindElement);\n }\n\n return;\n } else if (keybindEquals(key, skipToHighlightKey)) {\n if (skipButtonControlBar) {\n skipButtonControlBar.toggleSkip.call(skipButtonControlBar);\n }\n\n return;\n } else if (keybindEquals(key, closeSkipNoticeKey)) {\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop().close();\n }\n \n upcomingNotice?.close();\n upcomingNotice = null;\n return;\n } else if (keybindEquals(key, startSponsorKey)) {\n startOrEndTimingNewSegment();\n return;\n } else if (keybindEquals(key, submitKey)) {\n submitSegments();\n return;\n } else if (keybindEquals(key, openSubmissionMenuKey)) {\n e.preventDefault();\n\n openSubmissionMenu();\n return;\n } else if (keybindEquals(key, previewKey)) {\n previewRecentSegment();\n return;\n } else if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n nextChapter();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n previousChapter();\n return;\n } else if (keybindEquals(key, upvoteKey)) {\n handleKeybindVote(1);\n return;\n } else if (keybindEquals(key, downvoteKey)) {\n handleKeybindVote(0);\n return;\n }\n}\n\nfunction hotkeyPropagationListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n\n if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n }\n}\n\n/**\n * Adds the CSS to the page if needed. Required on optional sites with Chrome.\n */\nfunction addCSS() {\n if (!isFirefoxOrSafari() && Config.config.invidiousInstances.includes(new URL(document.URL).hostname)) {\n const onLoad = () => {\n const head = document.getElementsByTagName(\"head\")[0];\n\n for (const file of utils.css) {\n const fileref = document.createElement(\"link\");\n\n fileref.rel = \"stylesheet\";\n fileref.type = \"text/css\";\n fileref.href = chrome.runtime.getURL(file);\n\n head.appendChild(fileref);\n }\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n document.addEventListener(\"DOMContentLoaded\", onLoad);\n }\n }\n}\n\n/**\n * Update the isAdPlaying flag and hide preview bar/controls if ad is playing\n */\nfunction updateAdFlag(): void {\n const wasAdPlaying = getIsAdPlaying();\n setIsAdPlaying(document.getElementsByClassName('ad-showing').length > 0);\n if(wasAdPlaying != getIsAdPlaying()) {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n }\n}\n\nfunction showTimeWithoutSkips(skippedDuration: number): void {\n if (isNaN(skippedDuration) || skippedDuration < 0) {\n skippedDuration = 0;\n }\n\n // YouTube player time display\n const selector =\n isOnInvidious() ? \".vjs-duration\" :\n isOnYTTV() ? \".ypl-full-controls .ypmcs-control .time-info-bar\" :\n isOnMobileYouTube() ? \".ytwPlayerTimeDisplayContent\" :\n \".ytp-time-display.notranslate .ytp-time-wrapper .ytp-time-contents\";\n const display = document.querySelector(selector);\n if (!display) return;\n\n const durationID = \"sponsorBlockDurationAfterSkips\";\n let duration = document.getElementById(durationID);\n\n // Create span if needed\n if (duration === null) {\n duration = document.createElement('span');\n duration.id = durationID;\n\n if (isOnMobileYouTube()) {\n duration.style.paddingLeft = \"4px\";\n display.insertBefore(duration, display.lastChild);\n } else {\n display.appendChild(duration);\n }\n }\n\n const durationAfterSkips = getFormattedTime(getVideoDuration() - skippedDuration);\n\n duration.innerText = (durationAfterSkips == null || skippedDuration <= 0) ? \"\" : \" (\" + durationAfterSkips + \")\";\n}\n\nfunction checkForPreloadedSegment() {\n if (loadedPreloadedSegment) return;\n\n loadedPreloadedSegment = true;\n const hashParams = getHashParams();\n\n let pushed = false;\n const segments = hashParams.segments;\n if (Array.isArray(segments)) {\n for (const segment of segments) {\n if (Array.isArray(segment.segment)) {\n if (!sponsorTimesSubmitting.some((s) => s.segment[0] === segment.segment[0] && s.segment[1] === s.segment[1])) {\n sponsorTimesSubmitting.push({\n segment: segment.segment,\n UUID: generateUserID() as SegmentUUID,\n category: segment.category ? segment.category : Config.config.defaultCategory,\n actionType: segment.actionType ? segment.actionType : ActionType.Skip,\n description: segment.description ?? \"\",\n source: SponsorSourceType.Local\n });\n\n pushed = true;\n }\n }\n }\n }\n\n if (pushed) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n}\n\n// Generate and inject a stylesheet that creates CSS variables with configured category colors\nfunction setCategoryColorCSSVariables() {\n let styleContainer = document.getElementById(\"sbCategoryColorStyle\");\n if (!styleContainer) {\n styleContainer = document.createElement(\"style\");\n styleContainer.id = \"sbCategoryColorStyle\";\n if (isVorapisInstalled()) {\n // Vorapi deletes styles\n styleContainer.className = 'stylus';\n }\n\n const head = (document.head || document.documentElement);\n head.appendChild(styleContainer)\n }\n\n let css = \":root {\"\n for (const [category, config] of Object.entries(Config.config.barTypes)) {\n css += `--sb-category-${category}: ${config.color};`;\n css += `--darkreader-bg--sb-category-${category}: ${config.color};`;\n\n const luminance = GenericUtils.getLuminance(config.color);\n css += `--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n css += `--darkreader-text--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n }\n css += \"}\";\n\n styleContainer.innerText = css;\n}\n\n/**\n * If mini player starts playing, then videoID change might have to be called\n */\nfunction checkForMiniplayerPlaying() {\n const miniPlayerUI = document.querySelector(\".miniplayer\") as HTMLElement;\n if (!onVideoPage() && isVisible(miniPlayerUI)) {\n const videoID = getLastNonInlineVideoID();\n if (videoID) {\n triggerVideoIDChange(videoID);\n\n // treat as if video element has changed\n const video = miniPlayerUI.querySelector(\"video\") as HTMLVideoElement;\n if (video && getVideo() !== video) {\n triggerVideoElementChange(video);\n }\n }\n }\n}\n","import { waitFor } from \"../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../maze-utils/src/elements\";\nimport { getHash } from \"../maze-utils/src/hash\";\nimport { getVideoID, isOnInvidious, isOnMobileYouTube } from \"../maze-utils/src/video\";\nimport Config from \"./config\";\nimport { Tooltip } from \"./render/Tooltip\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\nimport { isVisible } from \"./utils/pageUtils\";\nimport { asyncRequestToServer } from \"./utils/requests\";\n\nlet tooltip: Tooltip = null;\nconst showDeArrowPromotion = false;\nexport async function tryShowingDeArrowPromotion() {\n if (showDeArrowPromotion\n && Config.config.showDeArrowPromotion\n && !isOnMobileYouTube()\n && !isOnInvidious()\n && document.URL.includes(\"watch\")\n && Config.config.showUpsells \n && Config.config.showNewFeaturePopups\n && (Config.config.skipCount > 30 || !Config.config.trackViewCount)) {\n\n if (!await isDeArrowInstalled()) {\n try {\n const element = await waitFor(() => getYouTubeTitleNode(), 5000, 500, (e) => isVisible(e)) as HTMLElement;\n if (element && element.innerText && badTitle(element.innerText)) {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n const deArrowData = await asyncRequestToServer(\"GET\", \"/api/branding/\" + hashPrefix);\n if (!deArrowData.ok) return;\n\n const deArrowDataJson = JSON.parse(deArrowData.responseText);\n const title = deArrowDataJson?.[getVideoID()]?.titles?.[0];\n if (title && title.title && (title.locked || title.votes > 0)) {\n Config.config.showDeArrowPromotion = false;\n\n tooltip = new Tooltip({\n text: chrome.i18n.getMessage(\"DeArrowTitleReplacementSuggestion\") + \"\\n\\n\" + title.title,\n linkOnClick: () => {\n window.open(\"https://dearrow.ajay.app\");\n Config.config.shownDeArrowPromotion = true;\n },\n secondButtonText: chrome.i18n.getMessage(\"hideNewFeatureUpdates\"),\n referenceNode: element,\n prependElement: element.firstElementChild as HTMLElement,\n timeout: 15000,\n positionRealtive: false,\n containerAbsolute: true,\n bottomOffset: \"inherit\",\n topOffset: \"55px\",\n leftOffset: \"0\",\n rightOffset: \"0\",\n topTriangle: true,\n center: true,\n opacity: 1\n });\n }\n }\n } catch { } // eslint-disable-line no-empty\n } else {\n Config.config.showDeArrowPromotion = false;\n }\n }\n}\n\n/**\n * Two upper case words (at least 2 letters long)\n */\nfunction badTitle(title: string): boolean {\n return !!title.match(/\\p{Lu}{2,} \\p{Lu}{2,}[.!? ]/u);\n}\n\nexport function hideDeArrowPromotion(): void {\n if (tooltip) tooltip.close();\n}\n","/*\nBased on code from\nhttps://github.com/videosegments/videosegments/commits/f1e111bdfe231947800c6efdd51f62a4e7fef4d4/segmentsbar/segmentsbar.js\n*/\n\nimport Config from \"../config\";\nimport { ChapterVote } from \"../render/ChapterVote\";\nimport { ActionType, Category, CategorySkipOption, SegmentContainer, SponsorHideType, SponsorSourceType, SponsorTime } from \"../types\";\nimport { partition } from \"../utils/arrayUtils\";\nimport { DEFAULT_CATEGORY, shortCategoryName } from \"../utils/categoryUtils\";\nimport { normalizeChapterName } from \"../utils/exporter\";\nimport { findNonEmptyElement, findValidElement } from \"../../maze-utils/src/dom\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\nimport { hasAutogeneratedChapters, isVisible } from \"../utils/pageUtils\";\nimport { isVorapisInstalled } from \"../utils/compatibility\";\nimport { isOnYTTV } from \"../../maze-utils/src/video\";\nimport { getCategorySelection } from \"../utils/skipRule\";\nimport { getSkipProfileBool } from \"../utils/skipProfiles\";\n\nconst TOOLTIP_VISIBLE_CLASS = 'sponsorCategoryTooltipVisible';\nconst MIN_CHAPTER_SIZE = 0.003;\n\nexport interface PreviewBarSegment {\n segment: [number, number];\n category: Category;\n actionType: ActionType;\n unsubmitted: boolean;\n showLarger: boolean;\n description: string;\n source: SponsorSourceType;\n requiredSegment?: boolean;\n selectedSegment?: boolean;\n}\n\ninterface ChapterGroup extends SegmentContainer {\n originalDuration: number;\n actionType: ActionType;\n}\n\nclass PreviewBar {\n container: HTMLUListElement;\n categoryTooltip?: HTMLDivElement;\n categoryTooltipContainer?: HTMLElement;\n chapterTooltip?: HTMLDivElement;\n\n // ScrubTooltips for YTTV only\n categoryScrubTooltip?: HTMLDivElement;\n categoryScrubTooltipContainer?: HTMLElement;\n chapterScrubTooltip?: HTMLDivElement;\n\n lastSmallestSegment: Record = {};\n\n parent: HTMLElement;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n onYTTV: boolean;\n progressBar: HTMLElement;\n\n segments: PreviewBarSegment[] = [];\n hasYouTubeChapters = false;\n existingChapters: PreviewBarSegment[] = [];\n videoDuration = 0;\n updateExistingChapters: () => void;\n lastChapterUpdate = 0;\n\n // For chapter bar\n hoveredSection: HTMLElement;\n customChaptersBar: HTMLElement;\n chaptersBarSegments: PreviewBarSegment[];\n chapterVote: ChapterVote;\n originalChapterBar: HTMLElement;\n originalChapterBarBlocks: NodeListOf;\n chapterMargin: number;\n lastRenderedSegments: PreviewBarSegment[];\n unfilteredChapterGroups: ChapterGroup[];\n chapterGroups: ChapterGroup[];\n\n constructor(parent: HTMLElement, onMobileYouTube: boolean, onInvidious: boolean, onYTTV: boolean, chapterVote: ChapterVote, updateExistingChapters: () => void, test=false) {\n if (test) return;\n this.container = document.createElement('ul');\n this.container.id = 'previewbar';\n\n if (onYTTV) {\n this.container.classList.add(\"sponsorblock-yttv-container\");\n }\n\n this.parent = parent;\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.onYTTV = onYTTV;\n this.chapterVote = chapterVote;\n this.updateExistingChapters = updateExistingChapters;\n\n this.updatePageElements();\n this.createElement(parent);\n this.createChapterMutationObservers();\n\n this.setupHoverText();\n }\n\n setupHoverText(): void {\n if (this.onMobileYouTube || this.onInvidious) return;\n\n // delete old ones\n document.querySelectorAll(`.sponsorCategoryTooltip`)\n .forEach((e) => e.remove());\n\n // Create label placeholder\n this.categoryTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.categoryTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.categoryTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n this.chapterTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.chapterTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.chapterTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n\n if (isOnYTTV()) {\n this.categoryScrubTooltip = document.createElement(\"div\");\n this.categoryScrubTooltip.className = \"sponsorCategoryTooltip\";\n this.chapterScrubTooltip = document.createElement(\"div\");\n this.chapterScrubTooltip.className = \"sponsorCategoryTooltip\";\n }\n\n // global chapter tooltip or duration tooltip\n // YT, Vorapis, unknown, YTTV\n const tooltipTextWrapper = document.querySelector(\".ytp-tooltip-text-wrapper, .ytp-progress-tooltip-text-container, .yssi-slider .ys-seek-details .time-info-bar\") ?? document.querySelector(\"#progress-bar-container.ytk-player > #hover-time-info\");\n const defaultTooltipSelector = \".ytp-tooltip-title:not(.sponsorCategoryTooltip), .ytp-tooltip-title:not(.sponsorCategoryTooltip) span, .ytp-progress-tooltip-text:not(.sponsorCategoryTooltip), .current-time:not(.sponsorCategoryTooltip)\";\n const originalTooltip = findNonEmptyElement([\n defaultTooltipSelector,\n \".ytp-tooltip-progress-bar-pill-title\"\n ]) ?? document.querySelector(defaultTooltipSelector);\n if (!tooltipTextWrapper || !tooltipTextWrapper.parentElement) return;\n\n // Grab the tooltip from the text wrapper as the tooltip doesn't have its classes on init\n this.categoryTooltipContainer = tooltipTextWrapper.parentElement;\n // YT, Vorapis, YTTV\n const titleTooltip = tooltipTextWrapper.querySelector(\".ytp-tooltip-title, .ytp-progress-tooltip-text, .current-time\") as HTMLElement;\n if (!this.categoryTooltipContainer || !titleTooltip) return;\n\n tooltipTextWrapper.insertBefore(this.categoryTooltip, titleTooltip.nextSibling);\n tooltipTextWrapper.insertBefore(this.chapterTooltip, titleTooltip.nextSibling);\n\n if (isOnYTTV()) {\n const scrubTooltipTextWrapper = document.querySelector(\".yssi-slider .ysl-filmstrip-lens .time-info-bar\")\n if (!this.categoryTooltipContainer) return;\n \n scrubTooltipTextWrapper.appendChild(this.categoryScrubTooltip);\n scrubTooltipTextWrapper.appendChild(this.chapterScrubTooltip);\n }\n\n const seekBar = (document.querySelector(\".ytp-progress-bar-container, .ypcs-scrub-slider-slot.ytu-player-controls\"));\n if (!seekBar) return;\n\n let mouseOnSeekBar = false;\n\n seekBar.addEventListener(\"mouseenter\", () => {\n mouseOnSeekBar = true;\n });\n\n seekBar.addEventListener(\"mouseleave\", () => {\n mouseOnSeekBar = false;\n });\n\n seekBar.addEventListener(\"mousemove\", (e: MouseEvent) => {\n if (!mouseOnSeekBar || !this.categoryTooltip || !this.categoryTooltipContainer || !chrome.runtime?.id) return;\n\n let noYoutubeChapters = !!tooltipTextWrapper.querySelector(\".ytp-tooltip-text.ytp-tooltip-text-no-title, .ytp-progress-tooltip-timestamp\");\n const timeInSeconds = this.decimalToTime((e.clientX - seekBar.getBoundingClientRect().x) / seekBar.clientWidth);\n\n // Find the segment at that location, using the shortest if multiple found\n const [normalSegments, chapterSegments] =\n partition(this.segments,\n (segment) => segment.actionType !== ActionType.Chapter);\n let mainSegment = this.getSmallestSegment(timeInSeconds, normalSegments, \"normal\");\n let secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments, \"chapter\");\n if (mainSegment === null && secondarySegment !== null) {\n mainSegment = secondarySegment;\n secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments.filter((s) => s !== secondarySegment));\n }\n\n const hasAYouTubeChapterRemoved = this.hasYouTubeChapters\n || (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters());\n if (hasAYouTubeChapterRemoved) {\n // Hide original tooltip if some chapter has been filtered out\n originalTooltip.style.display = \"none\";\n noYoutubeChapters = true;\n }\n\n if (mainSegment === null && secondarySegment === null) {\n if (!hasAYouTubeChapterRemoved) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n originalTooltip.style.removeProperty(\"display\");\n }\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n } else {\n this.categoryTooltipContainer.classList.add(TOOLTIP_VISIBLE_CLASS);\n const hasTwoTooltips = mainSegment !== null && secondarySegment !== null;\n if (hasTwoTooltips) {\n this.categoryTooltipContainer.classList.add(\"sponsorTwoTooltips\");\n } else {\n this.categoryTooltipContainer.classList.remove(\"sponsorTwoTooltips\");\n }\n\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n if (isVorapisInstalled()) {\n const tooltipParent = tooltipTextWrapper.parentElement!;\n tooltipParent.classList.add(\"with-text\");\n }\n\n if (normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.categoryTooltip.textContent)\n || normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.chapterTooltip.textContent)\n || !originalTooltip.textContent) {\n if (originalTooltip.style.display !== \"none\") originalTooltip.style.display = \"none\";\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = true;\n } else if (originalTooltip.style.display === \"none\") {\n originalTooltip.style.removeProperty(\"display\");\n this.categoryTooltipContainer.classList.add(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = false;\n }\n\n // To prevent offset issue\n this.categoryTooltip.style.right = titleTooltip.style.right;\n this.chapterTooltip.style.right = titleTooltip.style.right;\n this.categoryTooltip.style.textAlign = titleTooltip.style.textAlign;\n this.chapterTooltip.style.textAlign = titleTooltip.style.textAlign;\n }\n\n // Used to prevent overlapping\n this.categoryTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n this.chapterTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n });\n }\n\n private setTooltipTitle(segment: PreviewBarSegment, tooltip: HTMLElement): void {\n if (segment) {\n const name = segment.description || shortCategoryName(segment.category);\n if (segment.unsubmitted) {\n tooltip.textContent = chrome.i18n.getMessage(\"unsubmitted\") + \" \" + name;\n } else {\n tooltip.textContent = name;\n }\n\n tooltip.style.removeProperty(\"display\");\n\n // For July 2025 test layout\n if (document.querySelector(\".ytp-delhi-modern\")) {\n tooltip.style.display = \"inline-block\";\n\n // Class gets added back, so grab the top value for when the class is removed\n tooltip.style.removeProperty(\"top\");\n tooltip.classList.remove(\"ytp-tooltip-text-no-title\");\n\n if (tooltip === this.chapterTooltip) {\n tooltip.style.top = `calc(${window.getComputedStyle(tooltip).getPropertyValue(\"top\")} + 5px)`;\n } else {\n tooltip.style.top = window.getComputedStyle(tooltip).getPropertyValue(\"top\");\n }\n }\n } else {\n tooltip.style.display = \"none\";\n }\n }\n\n createElement(parent?: HTMLElement): void {\n if (parent) this.parent = parent;\n\n if (this.onMobileYouTube) {\n this.container.style.transform = \"none\";\n } else if (!this.onInvidious) {\n this.container.classList.add(\"sbNotInvidious\");\n }\n\n // On the seek bar\n if (this.onYTTV) {\n // order of sibling elements matters on YTTV\n this.parent.insertBefore(this.container, this.parent.firstChild.nextSibling.nextSibling);\n } else {\n this.parent.prepend(this.container);\n }\n }\n\n clear(): void {\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild);\n }\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar?.style?.removeProperty(\"display\");\n this.chapterVote?.setVisibility(false);\n\n document.querySelectorAll(`.sponsorBlockChapterBar`).forEach((e) => {\n if (e !== this.customChaptersBar) {\n e.remove();\n }\n });\n }\n\n set(segments: PreviewBarSegment[], videoDuration: number): void {\n this.segments = segments ?? [];\n this.videoDuration = videoDuration ?? 0;\n this.hasYouTubeChapters = segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source));\n\n // Remove unnecessary original chapters if submitted replacements exist\n for (const chapter of this.segments.filter((s) => s.actionType === ActionType.Chapter && s.source === SponsorSourceType.Server)) {\n const segmentDuration = chapter.segment[1] - chapter.segment[0];\n \n const duplicate = this.segments.find((s) => s.actionType === ActionType.Chapter \n && [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source) \n && Math.abs(s.segment[0] - chapter.segment[0]) < Math.min(3, segmentDuration / 3)\n && Math.abs(s.segment[1] - chapter.segment[1]) < Math.min(3, segmentDuration / 3));\n \n if (duplicate) {\n const index = this.segments.indexOf(duplicate);\n this.segments.splice(index, 1);\n }\n }\n\n this.updatePageElements();\n // Sometimes video duration is inaccurate, pull from accessibility info\n const ariaDuration = parseInt(this.progressBar?.getAttribute('aria-valuemax')) ?? 0;\n const multipleActiveVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v)).length > 1;\n if (!multipleActiveVideos && ariaDuration && Math.abs(ariaDuration - this.videoDuration) > 3) {\n this.videoDuration = ariaDuration;\n }\n\n this.update();\n }\n\n private updatePageElements(): void {\n // YT, Vorapis v3\n const allProgressBars = document.querySelectorAll(\".ytp-progress-bar, .ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\") as NodeListOf;\n this.progressBar = findValidElement(allProgressBars) ?? allProgressBars?.[0];\n\n if (this.progressBar) {\n const newChapterBar = this.progressBar.querySelector(\".ytp-chapters-container:not(.sponsorBlockChapterBar)\") as HTMLElement;\n if (this.originalChapterBar !== newChapterBar) {\n // Make sure changes are undone on old bar\n this.originalChapterBar?.style?.removeProperty(\"display\");\n\n this.originalChapterBar = newChapterBar;\n }\n }\n }\n\n private update(): void {\n this.clear();\n const chapterChevron = this.getChapterChevron();\n\n if (!this.segments) {\n chapterChevron?.style?.removeProperty(\"display\");\n }\n\n this.chapterMargin = 2;\n if (this.originalChapterBar) {\n this.originalChapterBarBlocks = this.originalChapterBar.querySelectorAll(\":scope > div\") as NodeListOf\n this.existingChapters = this.segments.filter((s) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source)).sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (this.existingChapters?.length > 0) {\n const margin = parseFloat(this.originalChapterBarBlocks?.[0]?.style?.marginRight?.replace(\"px\", \"\"));\n if (margin) this.chapterMargin = margin;\n }\n }\n\n const sortedSegments = this.segments.sort(({ segment: a }, { segment: b }) => {\n // Sort longer segments before short segments to make shorter segments render later\n return (b[1] - b[0]) - (a[1] - a[0]);\n });\n for (const segment of sortedSegments) {\n if (segment.actionType === ActionType.Chapter) continue;\n const bar = this.createBar(segment);\n\n this.container.appendChild(bar);\n }\n\n this.createChaptersBar(this.segments.sort((a, b) => a.segment[0] - b.segment[0]));\n\n if (chapterChevron) {\n if (this.segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))) {\n chapterChevron.style.removeProperty(\"display\");\n } else if (this.segments) {\n chapterChevron.style.display = \"none\";\n }\n }\n }\n\n createBar(barSegment: PreviewBarSegment): HTMLLIElement {\n const { category, unsubmitted, segment, showLarger } = barSegment;\n\n const bar = document.createElement('li');\n bar.classList.add('previewbar');\n if (barSegment.requiredSegment) bar.classList.add(\"requiredSegment\");\n if (barSegment.selectedSegment) bar.classList.add(\"selectedSegment\");\n bar.innerHTML = showLarger ? '  ' : ' ';\n\n const fullCategoryName = (unsubmitted ? 'preview-' : '') + category;\n bar.setAttribute('sponsorblock-category', fullCategoryName);\n\n // Handled by setCategoryColorCSSVariables() of content.ts\n bar.style.backgroundColor = `var(--sb-category-${fullCategoryName})`;\n if (!this.onMobileYouTube) bar.style.opacity = Config.config.barTypes[fullCategoryName]?.opacity;\n\n bar.style.position = \"absolute\";\n const duration = Math.min(segment[1], this.videoDuration) - segment[0];\n const startTime = segment[1] ? Math.min(this.videoDuration, segment[0]) : segment[0];\n const endTime = Math.min(this.videoDuration, segment[1]);\n bar.style.left = this.timeToPercentage(startTime);\n\n if (duration > 0) {\n bar.style.right = this.timeToRightPercentage(endTime);\n }\n if (this.chapterFilter(barSegment) && segment[1] < this.videoDuration) {\n bar.style.marginRight = `${this.chapterMargin}px`;\n }\n\n if (this.onYTTV) {\n bar.classList.add(\"previewbar-yttv\");\n }\n\n return bar;\n }\n\n createChaptersBar(segments: PreviewBarSegment[]): void {\n if (!this.progressBar || !this.originalChapterBar || this.originalChapterBar.childElementCount <= 0) {\n if (this.originalChapterBar) this.originalChapterBar.style.removeProperty(\"display\");\n\n // Make sure other video types lose their chapter bar\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n this.customChaptersBar = null;\n return;\n }\n\n const remakingBar = segments !== this.lastRenderedSegments;\n if (remakingBar) {\n this.lastRenderedSegments = segments;\n\n // Merge overlapping chapters\n this.unfilteredChapterGroups = this.createChapterRenderGroups(segments);\n }\n \n if ((segments.every((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))\n || (!Config.config.renderSegmentsAsChapters\n && segments.every((segment) => segment.actionType !== ActionType.Chapter\n || [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))))\n && !(hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\"))) {\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n const filteredSegments = segments?.filter((segment) => this.chapterFilter(segment));\n if (filteredSegments) {\n let groups = this.unfilteredChapterGroups;\n if (filteredSegments.length !== segments.length) {\n groups = this.createChapterRenderGroups(filteredSegments);\n }\n this.chapterGroups = groups.filter((segment) => this.chapterGroupFilter(segment));\n\n if (groups.length !== this.chapterGroups.length) {\n // Fix missing sections due to filtered segments\n for (let i = 1; i < this.chapterGroups.length; i++) {\n if (this.chapterGroups[i].segment[0] !== this.chapterGroups[i - 1].segment[1]) {\n this.chapterGroups[i - 1].segment[1] = this.chapterGroups[i].segment[0]\n }\n }\n }\n } else {\n this.chapterGroups = this.unfilteredChapterGroups;\n }\n\n if (this.chapterGroups.length === 0 && !getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Add placeholder chapter group for whole video\n this.chapterGroups = [{\n segment: [0, this.videoDuration],\n originalDuration: 0,\n actionType: null\n }];\n }\n\n if (!this.chapterGroups || this.chapterGroups.length <= 0) {\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n // Create it from cloning\n let createFromScratch = false;\n if (!this.customChaptersBar || !this.progressBar.contains(this.customChaptersBar)) {\n // Clear anything remaining\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n\n createFromScratch = true;\n this.customChaptersBar = this.originalChapterBar.cloneNode(true) as HTMLElement;\n this.customChaptersBar.classList.add(\"sponsorBlockChapterBar\");\n }\n\n this.customChaptersBar.style.display = \"none\";\n const originalSections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\");\n const originalSection = originalSections[0];\n\n // For switching to a video with less chapters\n if (originalSections.length > this.chapterGroups.length) {\n for (let i = originalSections.length - 1; i >= this.chapterGroups.length; i--) {\n this.customChaptersBar.removeChild(originalSections[i]);\n }\n }\n\n // Modify it to have sections for each segment\n for (let i = 0; i < this.chapterGroups.length; i++) {\n const chapter = this.chapterGroups[i].segment;\n let newSection = originalSections[i] as HTMLElement;\n if (!newSection) {\n newSection = originalSection.cloneNode(true) as HTMLElement;\n\n this.firstTimeSetupChapterSection(newSection);\n this.customChaptersBar.appendChild(newSection);\n } else if (createFromScratch) {\n this.firstTimeSetupChapterSection(newSection);\n }\n\n this.setupChapterSection(newSection, chapter[0], chapter[1], i !== this.chapterGroups.length - 1);\n }\n\n // Hide old bar\n this.originalChapterBar.style.display = \"none\";\n this.customChaptersBar.style.removeProperty(\"display\");\n\n if (createFromScratch) {\n if (this.container?.parentElement === this.progressBar) {\n this.progressBar.insertBefore(this.customChaptersBar, this.container.nextSibling);\n } else {\n this.progressBar.prepend(this.customChaptersBar);\n }\n }\n\n if (remakingBar) {\n this.updateChapterAllMutation(this.originalChapterBar, this.progressBar, true);\n }\n }\n\n createChapterRenderGroups(segments: PreviewBarSegment[]): ChapterGroup[] {\n const result: ChapterGroup[] = [];\n\n segments?.forEach((segment, index) => {\n const latestChapter = result[result.length - 1];\n if (latestChapter && latestChapter.segment[1] > segment.segment[0]) {\n const segmentDuration = segment.segment[1] - segment.segment[0];\n if (segment.segment[0] < latestChapter.segment[0]\n || segmentDuration < latestChapter.originalDuration) {\n // Remove latest if it starts too late\n let latestValidChapter = latestChapter;\n const chaptersToAddBack: ChapterGroup[] = []\n while (latestValidChapter?.segment[0] >= segment.segment[0]) {\n const invalidChapter = result.pop();\n if (invalidChapter.segment[1] > segment.segment[1]) {\n if (invalidChapter.segment[0] === segment.segment[0]) {\n invalidChapter.segment[0] = segment.segment[1];\n }\n\n chaptersToAddBack.push(invalidChapter);\n }\n latestValidChapter = result[result.length - 1];\n }\n\n const priorityActionType = this.getActionTypePrioritized([segment.actionType, latestChapter?.actionType]);\n\n // Split the latest chapter if smaller\n result.push({\n segment: [segment.segment[0], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: priorityActionType\n });\n if (latestValidChapter?.segment[1] > segment.segment[1]) {\n result.push({\n segment: [segment.segment[1], latestValidChapter.segment[1]],\n originalDuration: latestValidChapter.originalDuration,\n actionType: latestValidChapter.actionType\n });\n }\n\n chaptersToAddBack.reverse();\n let lastChapterChecked: number[] = segment.segment;\n for (const chapter of chaptersToAddBack) {\n if (chapter.segment[0] < lastChapterChecked[1]) {\n chapter.segment[0] = lastChapterChecked[1];\n }\n\n lastChapterChecked = chapter.segment;\n }\n result.push(...chaptersToAddBack);\n if (latestValidChapter) latestValidChapter.segment[1] = segment.segment[0];\n } else {\n // Start at end of old one otherwise\n result.push({\n segment: [latestChapter.segment[1], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: segment.actionType\n });\n }\n } else {\n // Add empty buffer before segment if needed\n const lastTime = latestChapter?.segment[1] || 0;\n if (segment.segment[0] > lastTime) {\n result.push({\n segment: [lastTime, segment.segment[0]],\n originalDuration: 0,\n actionType: null\n });\n }\n\n // Normal case\n const endTime = Math.min(segment.segment[1], this.videoDuration);\n result.push({\n segment: [segment.segment[0], endTime],\n originalDuration: endTime - segment.segment[0],\n actionType: segment.actionType\n });\n }\n\n // Add empty buffer after segment if needed\n if (index === segments.length - 1) {\n const nextSegment = segments[index + 1];\n const nextTime = nextSegment ? nextSegment.segment[0] : this.videoDuration;\n const lastTime = result[result.length - 1]?.segment[1] || segment.segment[1];\n if (this.intervalToDecimal(lastTime, nextTime) > MIN_CHAPTER_SIZE) {\n result.push({\n segment: [lastTime, nextTime],\n originalDuration: 0,\n actionType: null\n });\n }\n }\n });\n\n return result;\n }\n\n private getActionTypePrioritized(actionTypes: ActionType[]): ActionType {\n if (actionTypes.includes(ActionType.Skip)) {\n return ActionType.Skip;\n } else if (actionTypes.includes(ActionType.Mute)) {\n return ActionType.Mute;\n } else {\n return actionTypes.find(a => a) ?? actionTypes[0];\n }\n }\n\n private setupChapterSection(section: HTMLElement, startTime: number, endTime: number, addMargin: boolean): void {\n const sizePercent = this.intervalToPercentage(startTime, endTime);\n if (addMargin) {\n section.style.marginRight = `${this.chapterMargin}px`;\n section.style.width = `calc(${sizePercent} - ${this.chapterMargin}px)`;\n } else {\n section.style.marginRight = \"0\";\n section.style.width = sizePercent;\n }\n\n section.setAttribute(\"decimal-width\", String(this.intervalToDecimal(startTime, endTime)));\n }\n\n private firstTimeSetupChapterSection(section: HTMLElement): void {\n section.addEventListener(\"mouseenter\", () => {\n this.hoveredSection?.classList.remove(\"ytp-exp-chapter-hover-effect\");\n section.classList.add(\"ytp-exp-chapter-hover-effect\");\n this.hoveredSection = section;\n });\n }\n\n private createChapterMutationObservers(): void {\n if (!this.progressBar || !this.originalChapterBar) return;\n\n const attributeObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n const currentElement = mutation.target as HTMLElement;\n if (mutation.type === \"attributes\"\n && currentElement.parentElement?.classList.contains(\"ytp-progress-list\")) {\n changes[currentElement.classList[0]] = mutation.target as HTMLElement;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n attributeObserver.observe(this.originalChapterBar, {\n subtree: true,\n attributes: true,\n attributeFilter: [\"style\", \"class\"]\n });\n\n const childListObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n if (mutation.type === \"childList\") {\n this.update();\n break;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n // Only direct children, no subtree\n childListObserver.observe(this.originalChapterBar, {\n childList: true\n });\n\n addCleanupListener(() => {\n attributeObserver.disconnect();\n childListObserver.disconnect();\n });\n }\n\n private updateChapterAllMutation(originalChapterBar: HTMLElement, progressBar: HTMLElement, firstUpdate = false): void {\n const elements = originalChapterBar.querySelectorAll(\".ytp-progress-list > *\");\n const changes: Record = {};\n for (const element of elements) {\n changes[element.classList[0]] = element as HTMLElement;\n }\n\n this.updateChapterMutation(changes, progressBar, firstUpdate);\n }\n\n private updateChapterMutation(changes: Record, progressBar: HTMLElement, firstUpdate = false): void {\n // Go through each newly generated chapter bar and update the width based on changes array\n if (this.customChaptersBar) {\n // Width reached so far in decimal percent\n let cursor = 0;\n\n const sections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\") as NodeListOf;\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i];\n\n const sectionWidthDecimal = parseFloat(section.getAttribute(\"decimal-width\"));\n const sectionWidthDecimalNoMargin = sectionWidthDecimal - this.chapterMargin / progressBar.clientWidth;\n\n for (const className in changes) {\n const selector = `.${className}`\n const customChangedElement = section.querySelector(selector) as HTMLElement;\n if (customChangedElement) {\n const fullSectionWidth = i === sections.length - 1 ? sectionWidthDecimal : sectionWidthDecimalNoMargin;\n const changedElement = changes[className];\n const changedData = this.findLeftAndScale(selector, changedElement, progressBar);\n\n const left = (changedData.left) / progressBar.clientWidth;\n const calculatedLeft = Math.max(0, Math.min(1, (left - cursor) / fullSectionWidth));\n if (!isNaN(left) && !isNaN(calculatedLeft)) {\n customChangedElement.style.left = `${calculatedLeft * 100}%`;\n customChangedElement.style.removeProperty(\"display\");\n }\n\n if (changedData.scale !== null) {\n const transformScale = (changedData.scale) / progressBar.clientWidth;\n\n const scale = Math.max(0, Math.min(1 - calculatedLeft, (transformScale - cursor) / fullSectionWidth - calculatedLeft));\n customChangedElement.style.transform =\n `scaleX(${scale})`;\n if (customChangedElement.style.backgroundSize) {\n const backgroundSize = Math.max(changedData.scale / scale, fullSectionWidth * progressBar.clientWidth);\n customChangedElement.style.backgroundSize = `${backgroundSize}px`;\n\n if (changedData.scale < (cursor + fullSectionWidth) * progressBar.clientWidth) {\n customChangedElement.style.backgroundPosition = `-${backgroundSize - fullSectionWidth * progressBar.clientWidth}px`;\n } else {\n // Passed this section\n customChangedElement.style.backgroundPosition = `-${cursor * progressBar.clientWidth}px`;\n }\n }\n\n if (firstUpdate) {\n customChangedElement.style.transition = \"none\";\n setTimeout(() => customChangedElement.style.removeProperty(\"transition\"), 50);\n }\n }\n\n if (customChangedElement.className !== changedElement.className) {\n customChangedElement.className = changedElement.className;\n }\n }\n }\n\n cursor += sectionWidthDecimal;\n }\n\n if (sections.length !== 0 && sections.length !== this.existingChapters?.length\n && Date.now() - this.lastChapterUpdate > 3000) {\n this.lastChapterUpdate = Date.now();\n this.updateExistingChapters();\n }\n }\n }\n\n private findLeftAndScale(selector: string, currentElement: HTMLElement, progressBar: HTMLElement):\n { left: number; scale: number } {\n const sections = currentElement.parentElement.parentElement.parentElement.children;\n let currentWidth = 0;\n let lastWidth = 0;\n\n let left = 0;\n let leftPosition = 0;\n\n let scale = null;\n let scalePosition = 0;\n let scaleWidth = 0;\n let lastScalePosition = 0;\n\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i] as HTMLElement;\n const checkElement = section.querySelector(selector) as HTMLElement;\n const currentSectionWidthNoMargin = this.getPartialChapterSectionStyle(section, \"width\") ?? progressBar.clientWidth;\n const currentSectionWidth = currentSectionWidthNoMargin\n + this.getPartialChapterSectionStyle(section, \"marginRight\");\n\n // First check for left\n const checkLeft = parseFloat(checkElement.style.left.replace(\"px\", \"\"));\n if (checkLeft !== 0) {\n left = checkLeft;\n leftPosition = currentWidth;\n }\n\n // Then check for scale\n const transformMatch = checkElement.style.transform.match(/scaleX\\(([0-9.]+?)\\)/);\n if (transformMatch) {\n const transformScale = parseFloat(transformMatch[1]);\n const endPosition = transformScale + checkLeft / currentSectionWidthNoMargin;\n\n if (lastScalePosition > 0.99999 && endPosition === 0) {\n // Last one was an end section that was fully filled\n scalePosition = currentWidth - lastWidth;\n break;\n }\n\n lastScalePosition = endPosition;\n\n scale = transformScale;\n scaleWidth = currentSectionWidthNoMargin;\n\n if ((i === sections.length - 1 || endPosition < 0.99999) && endPosition > 0) {\n // reached the end of this section for sure\n // if the scale is always zero, then it will go through all sections but still return 0\n\n scalePosition = currentWidth;\n if (checkLeft !== 0) {\n scalePosition += left;\n }\n break;\n }\n }\n\n lastWidth = currentSectionWidth;\n currentWidth += lastWidth;\n }\n\n return {\n left: left + leftPosition,\n scale: scale !== null ? scale * scaleWidth + scalePosition : null\n };\n }\n\n private getPartialChapterSectionStyle(element: HTMLElement, param: string): number {\n const data = element.style[param];\n if (data?.includes(\"%\")) {\n return this.customChaptersBar.clientWidth * (parseFloat(data.replace(\"%\", \"\")) / 100);\n } else {\n return parseInt(element.style[param].match(/\\d+/g)?.[0]) || 0;\n }\n }\n\n updateChapterText(segments: SponsorTime[], submittingSegments: SponsorTime[], currentTime: number): SponsorTime[] {\n if (!Config.config.showSegmentNameInChapterBar\n || Config.config.disableSkipping\n || ((!segments || segments.length <= 0) && submittingSegments?.length <= 0 \n && (getSkipProfileBool(\"showAutogeneratedChapters\") || !hasAutogeneratedChapters()))) {\n const chaptersContainer = this.getChaptersContainer();\n if (chaptersContainer) {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n \n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n }\n\n return [];\n }\n\n segments ??= [];\n if (submittingSegments?.length > 0) segments = segments.concat(submittingSegments);\n const activeSegments = segments.filter((segment) => {\n return segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime && segment.segment[1] > currentTime\n && segment.category !== DEFAULT_CATEGORY\n && getCategorySelection(segment).option !== CategorySkipOption.Disabled\n });\n\n this.setActiveSegments(activeSegments);\n return activeSegments;\n }\n\n /**\n * Adds the text to the chapters slot if not filled by default\n */\n private setActiveSegments(segments: SponsorTime[]): void {\n const chaptersContainer = this.getChaptersContainer();\n\n if (chaptersContainer) {\n if (segments.length > 0) {\n chaptersContainer.classList.add(\"sponsorblock-chapter-visible\");\n\n const chosenSegment = segments.sort((a, b) => {\n if (a.actionType === ActionType.Chapter && b.actionType !== ActionType.Chapter) {\n return -1;\n } else if (a.actionType !== ActionType.Chapter && b.actionType === ActionType.Chapter) {\n return 1;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source === SponsorSourceType.Server && b.source !== SponsorSourceType.Server) {\n return -0.5;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source !== SponsorSourceType.Server && b.source === SponsorSourceType.Server) {\n return 0.5;\n } else {\n return (b.segment[0] - a.segment[0]) * 4;\n }\n })[0];\n\n const chapterButton = this.getChapterButton(chaptersContainer);\n if (chapterButton) {\n chapterButton.classList.remove(\"ytp-chapter-container-disabled\");\n chapterButton.disabled = false;\n }\n\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n chapterTitle.style.display = \"none\";\n\n const chapterCustomText = (chapterTitle.parentElement.querySelector(\".sponsorChapterText\") || (() => {\n const elem = document.createElement(\"div\");\n chapterTitle.parentElement.insertBefore(elem, chapterTitle);\n elem.classList.add(\"sponsorChapterText\");\n if (document.location.host === \"tv.youtube.com\") {\n elem.style.lineHeight = \"initial\";\n }\n return elem;\n })()) as HTMLDivElement;\n chapterCustomText.innerText = chosenSegment.description || shortCategoryName(chosenSegment.category);\n\n if (chosenSegment.actionType !== ActionType.Chapter) {\n chapterTitle.classList.add(\"sponsorBlock-segment-title\");\n } else {\n chapterTitle.classList.remove(\"sponsorBlock-segment-title\");\n }\n\n if (chosenSegment.source === SponsorSourceType.Server) {\n const chapterVoteContainer = this.chapterVote.getContainer();\n if (document.location.host === \"tv.youtube.com\") {\n if (!chaptersContainer.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n chaptersContainer.appendChild(chapterVoteContainer);\n }\n } else if (!chapterButton.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n\n chapterButton.insertBefore(chapterVoteContainer, this.getChapterChevron());\n }\n\n this.chapterVote.setVisibility(true);\n this.chapterVote.setSegment(chosenSegment);\n } else {\n this.chapterVote.setVisibility(false);\n }\n } else if (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Keep original hidden\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.display = \"none\";\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n\n const titlePrefixDot = chaptersContainer.querySelector(\".ytp-chapter-title-prefix\") as HTMLElement;\n if (titlePrefixDot) titlePrefixDot.style.display = \"none\";\n \n this.chapterVote.setVisibility(false);\n } else {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n \n this.chapterVote.setVisibility(false);\n }\n }\n }\n\n private getChaptersContainer(): HTMLElement {\n if (document.location.host === \"tv.youtube.com\") {\n if (!document.querySelector(\".ytp-chapter-container\")) {\n const dest = document.querySelector(\".ypcs-control-buttons-left\");\n if (!dest) return null;\n const sbChapterContainer = document.createElement(\"div\");\n sbChapterContainer.className = \"ytp-chapter-container\";\n const sbChapterTitleContent = document.createElement(\"div\");\n sbChapterTitleContent.className = \"ytp-chapter-title-content\";\n sbChapterContainer.appendChild(sbChapterTitleContent);\n dest.appendChild(sbChapterContainer);\n }\n }\n return document.querySelector(\".ytp-chapter-container\") as HTMLElement;\n }\n\n private getChapterButton(chaptersContainer: HTMLElement): HTMLButtonElement {\n return (chaptersContainer ?? this.getChaptersContainer())\n ?.querySelector(\"button.ytp-chapter-title\") as HTMLButtonElement;\n }\n\n remove(): void {\n this.container.remove();\n\n if (this.categoryTooltip) {\n this.categoryTooltip.remove();\n this.categoryTooltip = undefined;\n }\n\n if (this.categoryTooltipContainer) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n this.categoryTooltipContainer = undefined;\n }\n }\n\n private chapterFilter(segment: PreviewBarSegment): boolean {\n return (Config.config.renderSegmentsAsChapters || segment.actionType === ActionType.Chapter)\n && segment.actionType !== ActionType.Poi\n && this.chapterGroupFilter(segment);\n }\n\n private chapterGroupFilter(segment: SegmentContainer): boolean {\n return segment.segment.length === 2 && this.intervalToDecimal(segment.segment[0], segment.segment[1]) > MIN_CHAPTER_SIZE;\n }\n\n intervalToPercentage(startTime: number, endTime: number) {\n return `${this.intervalToDecimal(startTime, endTime) * 100}%`;\n }\n\n intervalToDecimal(startTime: number, endTime: number) {\n return (this.timeToDecimal(endTime) - this.timeToDecimal(startTime));\n }\n\n timeToPercentage(time: number): string {\n return `${this.timeToDecimal(time) * 100}%`\n }\n\n timeToRightPercentage(time: number): string {\n return `${(1 - this.timeToDecimal(time)) * 100}%`\n }\n\n timeToDecimal(time: number): number {\n return this.decimalTimeConverter(time, true);\n }\n\n decimalToTime(decimal: number): number {\n return this.decimalTimeConverter(decimal, false);\n }\n\n /**\n * Decimal to time or time to decimal\n */\n decimalTimeConverter(value: number, isTime: boolean): number {\n if (this.originalChapterBarBlocks?.length > 1 && this.existingChapters.length === this.originalChapterBarBlocks?.length) {\n // Parent element to still work when display: none\n const totalPixels = this.originalChapterBar.parentElement.clientWidth;\n let pixelOffset = 0;\n let lastCheckedChapter = -1;\n for (let i = 0; i < this.originalChapterBarBlocks.length; i++) {\n const chapterElement = this.originalChapterBarBlocks[i];\n const widthPixels = parseFloat(chapterElement.style.width.replace(\"px\", \"\"));\n\n const marginPixels = chapterElement.style.marginRight ? parseFloat(chapterElement.style.marginRight.replace(\"px\", \"\")) : 0;\n if ((isTime && value >= this.existingChapters[i].segment[1])\n || (!isTime && value >= (pixelOffset + widthPixels + marginPixels) / totalPixels)) {\n pixelOffset += widthPixels + marginPixels;\n lastCheckedChapter = i;\n } else {\n break;\n }\n }\n\n // The next chapter is the one we are currently inside of\n const latestChapter = this.existingChapters[lastCheckedChapter + 1];\n if (latestChapter) {\n const latestWidth = parseFloat(this.originalChapterBarBlocks[lastCheckedChapter + 1].style.width.replace(\"px\", \"\"));\n const latestChapterDuration = latestChapter.segment[1] - latestChapter.segment[0];\n\n if (isTime) {\n const percentageInCurrentChapter = (value - latestChapter.segment[0]) / latestChapterDuration;\n const sizeOfCurrentChapter = latestWidth / totalPixels;\n return Math.min(1, ((pixelOffset / totalPixels) + (percentageInCurrentChapter * sizeOfCurrentChapter)));\n } else {\n const percentageInCurrentChapter = (value * totalPixels - pixelOffset) / latestWidth;\n return Math.max(0, latestChapter.segment[0] + (percentageInCurrentChapter * latestChapterDuration));\n }\n }\n }\n\n if (isTime) {\n return Math.min(1, value / this.videoDuration);\n } else {\n return Math.max(0, value * this.videoDuration);\n }\n }\n\n /*\n * Approximate size on preview bar for smallest element (due to  )\n */\n getMinimumSize(showLarger = false): number {\n return this.videoDuration * (showLarger ? 0.006 : 0.003);\n }\n\n // Name parameter used for cache\n private getSmallestSegment(timeInSeconds: number, segments: PreviewBarSegment[], name?: string): PreviewBarSegment | null {\n const proposedIndex = name ? this.lastSmallestSegment[name]?.index : null;\n const startSearchIndex = proposedIndex && segments[proposedIndex] === this.lastSmallestSegment[name].segment ? proposedIndex : 0;\n const direction = startSearchIndex > 0 && timeInSeconds < this.lastSmallestSegment[name].segment.segment[0] ? -1 : 1;\n\n let segment: PreviewBarSegment | null = null;\n let index = -1;\n let currentSegmentLength = Infinity;\n\n for (let i = startSearchIndex; i < segments.length && i >= 0; i += direction) {\n const seg = segments[i];\n const segmentLength = seg.segment[1] - seg.segment[0];\n const minSize = this.getMinimumSize(seg.showLarger);\n\n const startTime = segmentLength !== 0 ? seg.segment[0] : Math.floor(seg.segment[0]);\n const endTime = segmentLength > minSize ? seg.segment[1] : Math.ceil(seg.segment[0] + minSize);\n if (startTime <= timeInSeconds && endTime >= timeInSeconds) {\n if (segmentLength < currentSegmentLength) {\n currentSegmentLength = segmentLength;\n segment = seg;\n index = i;\n }\n }\n\n if (direction === 1 && seg.segment[0] > timeInSeconds) {\n break;\n }\n }\n\n if (segment) {\n this.lastSmallestSegment[name] = {\n index: index,\n segment: segment\n };\n }\n\n return segment;\n }\n\n private getChapterChevron(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-chevron\");\n }\n}\n\nexport default PreviewBar;\n","import Config from \"../config\";\nimport { SegmentUUID, SponsorTime } from \"../types\";\nimport { getSkippingText } from \"../utils/categoryUtils\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { isMobileControlsOpen } from \"../utils/mobileUtils\";\n\nexport interface SkipButtonControlBarProps {\n skip: (segment: SponsorTime) => void;\n selectSegment: (UUID: SegmentUUID) => void;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n}\n\nexport class SkipButtonControlBar {\n\n container: HTMLElement;\n skipIcon: HTMLImageElement;\n textContainer: HTMLElement;\n chapterText: HTMLElement;\n segment: SponsorTime;\n\n showKeybindHint = true;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n\n enabled = false;\n\n timeout: NodeJS.Timeout;\n duration = 0;\n\n skip: (segment: SponsorTime) => void;\n\n // Used if on mobile page\n hideButton: () => void;\n showButton: () => void;\n\n // Used by mobile only for swiping away\n left = 0;\n swipeStart = 0;\n\n constructor(props: SkipButtonControlBarProps) {\n this.skip = props.skip;\n this.onMobileYouTube = props.onMobileYouTube;\n this.onYTTV = props.onYTTV;\n\n this.container = document.createElement(\"div\");\n this.container.classList.add(\"skipButtonControlBarContainer\");\n this.container.classList.add(\"sbhidden\");\n if (this.onMobileYouTube) this.container.classList.add(\"mobile\");\n\n this.skipIcon = document.createElement(\"img\");\n this.skipIcon.src = chrome.runtime.getURL(\"icons/skipIcon.svg\");\n this.skipIcon.classList.add(\"ytp-button\");\n this.skipIcon.id = \"sbSkipIconControlBarImage\";\n if (this.onYTTV) {\n this.skipIcon.style.width = \"24px\";\n this.skipIcon.style.height = \"24px\";\n }\n\n this.textContainer = document.createElement(\"div\");\n\n this.container.appendChild(this.skipIcon);\n this.container.appendChild(this.textContainer);\n this.container.addEventListener(\"click\", () => this.toggleSkip());\n this.container.addEventListener(\"mouseenter\", () => {\n this.stopTimer();\n\n if (this.segment) {\n props.selectSegment(this.segment.UUID);\n }\n });\n this.container.addEventListener(\"mouseleave\", () => {\n this.startTimer();\n\n props.selectSegment(null);\n });\n if (this.onMobileYouTube) {\n this.container.addEventListener(\"touchstart\", (e) => this.handleTouchStart(e));\n this.container.addEventListener(\"touchmove\", (e) => this.handleTouchMove(e));\n this.container.addEventListener(\"touchend\", () => this.handleTouchEnd());\n }\n }\n\n getElement(): HTMLElement {\n return this.container;\n }\n\n attachToPage(): void {\n const mountingContainer = this.getMountingContainer();\n this.chapterText = document.querySelector(\".ytp-chapter-container\");\n\n if (mountingContainer && !mountingContainer.contains(this.container)) {\n if (this.onMobileYouTube || this.onYTTV) {\n mountingContainer.appendChild(this.container);\n } else {\n mountingContainer.insertBefore(this.container, this.chapterText);\n }\n\n if (!this.onMobileYouTube) {\n AnimationUtils.setupAutoHideAnimation(this.skipIcon, mountingContainer, false, false);\n } else {\n const { hide, show } = AnimationUtils.setupCustomHideAnimation(this.skipIcon, mountingContainer, false, false);\n this.hideButton = hide;\n this.showButton = show;\n }\n }\n }\n\n private getMountingContainer(): HTMLElement {\n if (!this.onMobileYouTube && !this.onYTTV) {\n return document.querySelector(\".ytp-left-controls\");\n } else if (this.onYTTV) {\n return document.querySelector(\".ypcs-control-buttons-left\");\n } else {\n return document.getElementById(\"player-container-id\");\n }\n }\n\n enable(segment: SponsorTime, duration?: number): void {\n if (duration) this.duration = duration;\n this.segment = segment;\n this.enabled = true;\n\n this.refreshText();\n this.container?.classList?.remove(\"textDisabled\");\n this.textContainer?.classList?.remove(\"sbhidden\");\n AnimationUtils.disableAutoHideAnimation(this.skipIcon);\n\n this.startTimer();\n }\n\n refreshText(): void {\n if (this.segment) {\n this.chapterText?.classList?.add(\"sbhidden\");\n this.container.classList.remove(\"sbhidden\");\n this.textContainer.innerText = this.getTitle();\n this.skipIcon.setAttribute(\"title\", this.getTitle());\n }\n }\n\n setShowKeybindHint(show: boolean): void {\n this.showKeybindHint = show;\n\n this.refreshText();\n }\n\n stopTimer(): void {\n if (this.timeout) clearTimeout(this.timeout);\n }\n\n startTimer(): void {\n this.stopTimer();\n this.timeout = setTimeout(() => this.disableText(), Math.max(Config.config.skipNoticeDuration, this.duration) * 1000);\n }\n\n disable(): void {\n this.container.classList.add(\"sbhidden\");\n\n this.chapterText?.classList?.remove(\"sbhidden\");\n this.getChapterPrefix()?.classList?.remove(\"sbhidden\");\n\n this.enabled = false;\n }\n\n isEnabled(): boolean {\n return this.enabled;\n }\n\n toggleSkip(): void {\n if (this.segment && this.enabled) {\n this.skip(this.segment);\n this.disableText();\n }\n }\n\n disableText(): void {\n if (Config.config.hideSkipButtonPlayerControls) {\n this.disable();\n return;\n }\n\n this.container.classList.add(\"textDisabled\");\n this.textContainer?.classList?.add(\"sbhidden\");\n this.chapterText?.classList?.remove(\"sbhidden\");\n\n this.getChapterPrefix()?.classList?.add(\"sbhidden\");\n\n AnimationUtils.enableAutoHideAnimation(this.skipIcon);\n if (this.onMobileYouTube) {\n this.hideButton();\n }\n }\n\n updateMobileControls(): void {\n if (this.enabled) {\n if (isMobileControlsOpen()) {\n this.showButton();\n } else {\n this.hideButton();\n }\n }\n }\n\n private getTitle(): string {\n return getSkippingText([this.segment], false) + (this.showKeybindHint ? \" (\" + keybindToString(Config.config.skipToHighlightKeybind) + \")\" : \"\");\n }\n\n private getChapterPrefix(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-prefix\");\n }\n\n // Swiping away on mobile\n private handleTouchStart(event: TouchEvent): void {\n this.swipeStart = event.touches[0].clientX;\n }\n\n // Swiping away on mobile\n private handleTouchMove(event: TouchEvent): void {\n const distanceMoved = this.swipeStart - event.touches[0].clientX;\n this.left = Math.min(-distanceMoved, 0);\n\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private handleTouchEnd(): void {\n if (this.left < -this.container.offsetWidth / 2) {\n this.disableText();\n\n // Don't let animation play\n this.skipIcon.style.display = \"none\";\n setTimeout(() => this.skipIcon.style.removeProperty(\"display\"), 200);\n }\n\n this.left = 0;\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private updateLeftStyle() {\n this.container.style.left = this.left + \"px\";\n }\n}\n","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport CategoryPillComponent, { CategoryPillState } from \"../components/CategoryPillComponent\";\nimport Config from \"../config\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\nimport { Tooltip } from \"./Tooltip\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../../maze-utils/src/elements\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\n\nconst id = \"categoryPill\";\n\nexport class CategoryPill {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n lastState: CategoryPillState;\n\n mutationObserver?: MutationObserver;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n \n constructor() {\n this.ref = React.createRef();\n\n addCleanupListener(() => {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n });\n }\n\n async attachToPage(onMobileYouTube: boolean, onInvidious: boolean,\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise): Promise {\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.vote = vote;\n\n this.attachToPageInternal();\n }\n\n private async attachToPageInternal(): Promise {\n let referenceNode =\n await waitFor(() => getYouTubeTitleNode());\n\n // Experimental YouTube layout with description on right\n const isOnDescriptionOnRightLayout = document.querySelector(\"#title #description\");\n if (isOnDescriptionOnRightLayout) {\n referenceNode = referenceNode.parentElement;\n }\n\n if (referenceNode && !referenceNode.contains(this.container)) {\n if (!this.container) {\n this.container = document.createElement('span');\n this.container.id = id;\n this.container.style.display = \"relative\";\n\n this.root = createRoot(this.container);\n this.ref = React.createRef();\n this.root.render();\n\n if (this.onMobileYouTube) {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n \n this.mutationObserver = new MutationObserver((changes) => {\n if (changes.some((change) => change.removedNodes.length > 0)) {\n this.attachToPageInternal();\n }\n });\n \n this.mutationObserver.observe(referenceNode, { \n childList: true,\n subtree: true\n });\n }\n }\n\n if (this.lastState) {\n waitFor(() => this.ref.current).then(() => {\n this.ref.current?.setState(this.lastState);\n });\n }\n\n // Use a parent because YouTube does weird things to the top level object\n // react would have to rerender if container was the top level\n const parent = document.createElement(\"span\");\n parent.id = \"categoryPillParent\";\n parent.appendChild(this.container);\n\n referenceNode.prepend(parent);\n if (!isOnDescriptionOnRightLayout) {\n referenceNode.style.display = \"flex\";\n }\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n open: show ? this.ref.current?.state.open : false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n }\n\n async setSegment(segment: SponsorTime): Promise {\n await waitFor(() => this.ref.current);\n\n if (this.ref.current?.state?.segment !== segment || !this.ref.current?.state?.show) {\n const newState = {\n segment,\n show: true,\n open: false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n\n if (!Config.config.categoryPillUpdate) {\n Config.config.categoryPillUpdate = true;\n\n const watchDiv = await waitFor(() => document.querySelector(\"#info.ytd-watch-flexy\") as HTMLElement);\n if (watchDiv) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"categoryPillNewFeature\"),\n link: \"https://blog.ajay.app/full-video-sponsorblock\",\n referenceNode: watchDiv,\n prependElement: watchDiv.firstChild as HTMLElement,\n bottomOffset: \"-10px\",\n opacity: 0.95,\n timeout: 50000\n });\n }\n }\n }\n\n if (this.onMobileYouTube && !document.contains(this.container)) {\n this.attachToPageInternal();\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport ChapterVoteComponent, { ChapterVoteState } from \"../components/ChapterVoteComponent\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nexport class ChapterVote {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n unsavedState: ChapterVoteState;\n\n mutationObserver?: MutationObserver;\n \n constructor(vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise) {\n this.ref = React.createRef();\n\n this.container = document.createElement('span');\n this.container.id = \"chapterVote\";\n this.container.style.height = \"100%\";\n\n if (document.location.host === \"tv.youtube.com\") {\n this.container.style.lineHeight = \"initial\";\n }\n\n this.root = createRoot(this.container);\n this.root.render();\n }\n\n getContainer(): HTMLElement {\n return this.container;\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n ...(!show ? { segment: null } : {})\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n\n async setSegment(segment: SponsorTime): Promise {\n if (this.ref.current?.state?.segment !== segment) {\n const newState = {\n segment,\n show: true\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nexport interface RectangleTooltipProps {\n text: string; \n link?: string;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n leftOffset?: string;\n timeout?: number;\n htmlId?: string;\n maxHeight?: string;\n maxWidth?: string;\n backgroundColor?: string;\n fontSize?: string;\n buttonFunction?: () => void;\n}\n\nexport class RectangleTooltip {\n text: string; \n container: HTMLDivElement;\n root: Root;\n timer: NodeJS.Timeout;\n \n constructor(props: RectangleTooltipProps) {\n props.bottomOffset ??= \"0px\";\n props.leftOffset ??= \"0px\";\n props.maxHeight ??= \"100px\";\n props.maxWidth ??= \"300px\";\n props.backgroundColor ??= \"rgba(28, 28, 28, 0.7)\";\n this.text = props.text;\n props.fontSize ??= \"10px\";\n\n this.container = document.createElement('div');\n props.htmlId ??= \"sponsorRectangleTooltip\" + props.text;\n this.container.id = props.htmlId;\n this.container.style.display = \"relative\";\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n \n \n \n {this.text + (props.link ? \". \" : \"\")}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null}\n \n
\n \n
\n )\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nimport { SponsorTime, ContentContainer, NoticeVisibilityMode } from \"../types\";\nimport Config from \"../config\";\nimport { SkipNoticeAction } from \"../utils/noticeUtils\";\n\nclass SkipNotice {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n skipNoticeRef: React.MutableRefObject;\n root: Root;\n\n constructor(segments: SponsorTime[], autoSkip = false, contentContainer: ContentContainer, componentDidMount: () => void, unskipTime: number = null, startReskip = false, upcomingNoticeShown: boolean, voteNotice = false) {\n this.skipNoticeRef = React.createRef();\n\n this.segments = segments;\n this.autoSkip = autoSkip;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n \n const amountOfPreviousNotices = document.getElementsByClassName(\"sponsorSkipNotice\").length;\n //this is the suffix added at the end of every id\n let idSuffix = \"\";\n for (const segment of this.segments) {\n idSuffix += segment.UUID;\n }\n idSuffix += amountOfPreviousNotices;\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={!voteNotice && (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAll \n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAutoSkip && autoSkip))}\n fadeIn={!upcomingNoticeShown && !voteNotice}\n unskipTime={unskipTime}\n componentDidMount={componentDidMount} />\n );\n }\n\n setShowKeybindHint(value: boolean): void {\n this.skipNoticeRef?.current?.setState({\n showKeybindHint: value\n });\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n\n const skipNotices = this.contentContainer().skipNotices;\n skipNotices.splice(skipNotices.indexOf(this), 1);\n }\n\n toggleSkip(): void {\n this.skipNoticeRef?.current?.prepAction(SkipNoticeAction.Unskip0);\n }\n\n unmutedListener(time: number): void {\n this.skipNoticeRef?.current?.unmutedListener(time);\n }\n\n async waitForSkipNoticeRef(): Promise {\n const waitForRef = () => new Promise((resolve) => {\n const observer = new MutationObserver(() => {\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n observer.observe(document.getElementsByClassName(\"sponsorSkipNoticeContainer\")[0], { childList: true, subtree: true});\n\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n return this.skipNoticeRef?.current || await waitForRef();\n }\n}\n\nexport default SkipNotice;","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SubmissionNoticeComponent from \"../components/SubmissionNoticeComponent\";\nimport { ContentContainer } from \"../types\";\n\nclass SubmissionNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: () => unknown;\n\n callback: () => Promise;\n\n noticeRef: React.MutableRefObject;\n\n noticeElement: HTMLDivElement;\n\n root: Root;\n\n constructor(contentContainer: ContentContainer, callback: () => Promise) {\n this.noticeRef = React.createRef();\n\n this.contentContainer = contentContainer;\n this.callback = callback;\n\n const referenceNode = utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.id = \"submissionNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close(false)} />\n );\n }\n\n update(): void {\n this.noticeRef.current.forceUpdate();\n }\n\n close(callRef = true): void {\n if (callRef) this.noticeRef.current.cancel();\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n\n submit(): void {\n this.noticeRef.current?.submit?.();\n }\n\n scrollToBottom(): void {\n this.noticeRef.current?.scrollToBottom?.();\n }\n}\n\nexport default SubmissionNotice;","import { GenericTooltip, TooltipProps } from \"../../maze-utils/src/components/Tooltip\";\n\nexport class Tooltip extends GenericTooltip {\n constructor(props: TooltipProps) {\n super(props, \"icons/IconSponsorBlocker256px.png\")\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ContentContainer, SponsorTime } from \"../types\";\n\nimport Utils from \"../utils\";\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nconst utils = new Utils();\n\nclass UpcomingNotice {\n segments: SponsorTime[];\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n upcomingNoticeRef: React.MutableRefObject;\n root: Root;\n\n closed = false;\n\n constructor(segments: SponsorTime[], contentContainer: ContentContainer, timeLeft: number, autoSkip: boolean) {\n this.upcomingNoticeRef = React.createRef();\n\n this.segments = segments;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={true}\n fadeIn={true}\n maxCountdownTime={timeLeft} />\n );\n }\n\n close(): void {\n this.root.unmount();\n this.noticeElement.remove();\n\n this.closed = true;\n }\n\n sameNotice(segments: SponsorTime[]): boolean {\n if (segments.length !== this.segments.length) return false;\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i].UUID !== this.segments[i].UUID) return false;\n }\n\n return true;\n }\n}\n\nexport default UpcomingNotice;","import * as React from \"react\";\n\nconst pencilSvg = ({\n fill = \"#ffffff\"\n }): JSX.Element => (\n \n \n \n );\n\nexport default pencilSvg;\n","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import * as React from \"react\";\n\nconst thumbsDownSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n \n
\n
\n \n );\n\nexport default thumbsDownSvg;\n","import * as React from \"react\";\n\nconst thumbsUpSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n
\n
\n \n );\n\nexport default thumbsUpSvg;\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","export function partition(array: T[], filter: (element: T) => boolean): [T[], T[]] {\n const pass = [], fail = [];\n array.forEach((element) => (filter(element) ? pass : fail).push(element));\n \n return [pass, fail];\n}","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function runCompatibilityChecks() {\n if (Config.config.showZoomToFillError2 && document.URL.includes(\"watch?v=\")) {\n setTimeout(() => {\n const zoomToFill = document.querySelector(\".zoomtofillBtn\");\n \n if (zoomToFill) {\n alert(chrome.i18n.getMessage(\"zoomToFillUnsupported\"));\n }\n\n Config.config.showZoomToFillError2 = false;\n }, 10000);\n }\n}\n\nexport function isVorapisInstalled() {\n return document.querySelector(`.v3`);\n}","import { TextBox } from \"../render/GenericNotice\";\nimport { Category } from \"../types\";\n\nexport function getGuidelineInfo(category: Category): TextBox[] {\n switch (category) {\n case \"sponsor\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"selfpromo\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"exclusive_access\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }];\n case \"interaction\":\n return [{\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"intro\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"outro\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"preview\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"hook\":\n return [{\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"filler\":\n return [{\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"music_offtopic\":\n return [{\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"poi_highlight\":\n return [{\n icon: \"icons/star.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n case \"chapter\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n default:\n return [{\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n }\n}\n\nexport const defaultPreviewTime = 2;","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","/* Gets percieved luminance of a color */\nfunction getLuminance(color: string): number {\n const {r, g, b} = hexToRgb(color);\n return Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\n}\n\n/* Converts hex color to rgb color */\nconst hexChars = \"0123456789abcdef\";\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n if (hex.length == 4)\n hex = \"#\" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\n return /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n ? {\n r: hexChars.indexOf(hex[1]) * 16 + hexChars.indexOf(hex[2]),\n g: hexChars.indexOf(hex[3]) * 16 + hexChars.indexOf(hex[4]),\n b: hexChars.indexOf(hex[5]) * 16 + hexChars.indexOf(hex[6]),\n }: null;\n}\n\n/**\n * List of all indexes that have the specified value\n * https://stackoverflow.com/a/54954694/1985387\n */\nfunction indexesOf(array: T[], value: T): number[] {\n return array.map((v, i) => v === value ? i : -1).filter(i => i !== -1);\n}\n\nexport const GenericUtils = {\n getLuminance,\n indexesOf\n}\n","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","export function isMobileControlsOpen(): boolean {\n const overlay = document.getElementById(\"player-control-overlay\");\n\n if (overlay) {\n return !!overlay?.classList?.contains(\"fadein\");\n }\n\n return false;\n}","import Config from \"../config\";\nimport { SponsorTime } from \"../types\";\n\nexport enum SkipNoticeAction {\n None,\n Upvote,\n Downvote,\n CategoryVote,\n CopyDownvote,\n Unskip0,\n Unskip1\n}\n\nexport function downvoteButtonColor(segments: SponsorTime[], actionState: SkipNoticeAction, downvoteType: SkipNoticeAction): string {\n // Also used for \"Copy and Downvote\"\n if (segments?.length > 1) {\n return (actionState === downvoteType) ? Config.config.colorPalette.red : Config.config.colorPalette.white;\n } else {\n // You dont have segment selectors so the lockbutton needs to be colored and cannot be selected.\n return Config.config.isVip && segments?.[0].locked === 1 ? Config.config.colorPalette.locked : Config.config.colorPalette.white;\n }\n}","export function cleanPage() {\n // For live-updates\n if (document.readyState === \"complete\") {\n for (const element of document.querySelectorAll(\"#categoryPillParent, .playerButton, .sponsorThumbnailLabel, #submissionNoticeContainer, .sponsorSkipNoticeContainer, #sponsorBlockPopupContainer, .skipButtonControlBarContainer, #previewbar, .sponsorBlockChapterBar\")) {\n element.remove();\n }\n }\n}","import { ActionType, Category, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { getSkipProfileBool } from \"./skipProfiles\";\n\nexport function getControls(): HTMLElement {\n const controlsSelectors = [\n // YouTube\n \".ytp-right-controls\",\n // Mobile YouTube\n \".player-controls-top\",\n // Invidious/videojs video element's controls element\n \".vjs-control-bar\",\n // Piped shaka player\n \".shaka-bottom-controls\",\n // Vorapis v3\n \".html5-player-chrome\",\n // tv.youtube.com\n \".ypcs-control-buttons-right\"\n ];\n\n for (const controlsSelector of controlsSelectors) {\n const controls = Array.from(document.querySelectorAll(controlsSelector)).filter(el => !isInPreviewPlayer(el));\n\n if (controls.length > 0) {\n return controls[controls.length - 1];\n }\n }\n\n return null;\n}\n\nexport function isInPreviewPlayer(element: Element): boolean {\n return !!element.closest(\"#inline-preview-player\");\n}\n\nexport function isVisible(element: HTMLElement): boolean {\n return element && element.offsetWidth > 0 && element.offsetHeight > 0;\n}\n\nexport function getHashParams(): Record {\n const windowHash = window.location.hash.slice(1);\n if (windowHash) {\n const params: Record = windowHash.split('&').reduce((acc, param) => {\n const [key, value] = param.split('=');\n const decoded = decodeURIComponent(value);\n try {\n acc[key] = decoded?.match(/{|\\[/) ? JSON.parse(decoded) : value;\n } catch (e) {\n console.error(`Failed to parse hash parameter ${key}: ${value}`);\n }\n\n return acc;\n }, {});\n\n return params;\n }\n\n return {};\n}\n\nexport function hasAutogeneratedChapters(): boolean {\n return !!document.querySelector(\"ytd-engagement-panel-section-list-renderer ytd-macro-markers-list-renderer #menu\");\n}\n\nexport function getExistingChapters(currentVideoID: VideoID, duration: number): SponsorTime[] {\n const chaptersBox = document.querySelector(\"ytd-macro-markers-list-renderer\");\n const title = chaptersBox?.closest(\"ytd-engagement-panel-section-list-renderer\")?.querySelector(\"#title-text.ytd-engagement-panel-title-header-renderer\");\n if (title?.textContent?.includes(\"Key moment\")) return [];\n\n const autogenerated = hasAutogeneratedChapters();\n if (!getSkipProfileBool(\"showAutogeneratedChapters\") && autogenerated) return [];\n\n const chapters: SponsorTime[] = [];\n // .ytp-timed-markers-container indicates that key-moments are present, which should not be divided\n if (chaptersBox) {\n let lastSegment: SponsorTime = null;\n const links = chaptersBox.querySelectorAll(\"ytd-macro-markers-list-item-renderer > a\");\n for (const link of links) {\n const timeElement = link.querySelector(\"#time\") as HTMLElement;\n const description = link.querySelector(\"#details h4\") as HTMLElement;\n if (timeElement && description?.innerText?.length > 0 && link.getAttribute(\"href\")?.includes(currentVideoID)) {\n const time = getFormattedTimeToSeconds(timeElement.innerText.replace(/\\./g, \":\"));\n if (time === null) return [];\n\n if (lastSegment) {\n lastSegment.segment[1] = time;\n chapters.push(lastSegment);\n }\n\n lastSegment = {\n segment: [time, null],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: description.innerText,\n source: autogenerated ? SponsorSourceType.Autogenerated : SponsorSourceType.YouTube,\n UUID: null\n };\n }\n }\n\n if (lastSegment) {\n lastSegment.segment[1] = duration;\n chapters.push(lastSegment);\n }\n }\n\n return chapters;\n}\n\nexport function isPlayingPlaylist() {\n return !!document.URL.includes(\"&list=\");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { DataCache } from \"../../maze-utils/src/cache\";\nimport { getHash, HashedValue } from \"../../maze-utils/src/hash\";\nimport Config, { } from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { ActionTypes, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getHashParams } from \"./pageUtils\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { extensionUserAgent } from \"../../maze-utils/src\";\nimport { logRequest, serializeOrStringify } from \"../../maze-utils/src/background-request-proxy\";\n\nconst segmentDataCache = new DataCache(() => {\n return {\n segments: null,\n status: 200\n };\n}, 5);\n\nconst pendingList: Record> = {};\n\nexport interface SegmentResponse {\n segments: SponsorTime[] | null;\n status: number | Error | string;\n}\n\nexport async function getSegmentsForVideo(videoID: VideoID, ignoreCache: boolean): Promise {\n if (!ignoreCache) {\n const cachedData = segmentDataCache.getFromCache(videoID);\n if (cachedData) {\n segmentDataCache.cacheUsed(videoID);\n return cachedData;\n }\n }\n\n if (pendingList[videoID]) {\n return await pendingList[videoID];\n }\n\n const pendingData = fetchSegmentsForVideo(videoID);\n pendingList[videoID] = pendingData;\n\n let result: Awaited;\n try {\n result = await pendingData;\n } catch (e) {\n console.error(\"[SB] Caught error while fetching segments\", e);\n return {\n segments: null,\n status: serializeOrStringify(e),\n }\n } finally {\n delete pendingList[videoID];\n }\n\n return result;\n}\n\nasync function fetchSegmentsForVideo(videoID: VideoID): Promise {\n const extraRequestData: Record = {};\n const hashParams = getHashParams();\n if (hashParams.requiredSegment) extraRequestData.requiredSegment = hashParams.requiredSegment;\n\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 5) as VideoID & HashedValue;\n const hasDownvotedSegments = !!Config.local.downvotedSegments[hashPrefix.slice(0, 4)];\n const response = await asyncRequestToServer('GET', \"/api/skipSegments/\" + hashPrefix, {\n categories: CompileConfig.categoryList,\n actionTypes: ActionTypes,\n trimUUIDs: hasDownvotedSegments ? null : 5,\n ...extraRequestData\n }, {\n \"X-CLIENT-NAME\": extensionUserAgent(),\n });\n\n if (response.ok) {\n const receivedSegments: SponsorTime[] = JSON.parse(response.responseText)\n ?.filter((video) => video.videoID === videoID)\n ?.map((video) => video.segments)?.[0]\n ?.map((segment) => ({\n ...segment,\n source: SponsorSourceType.Server\n }))\n ?.sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (receivedSegments && receivedSegments.length) {\n const result = {\n segments: receivedSegments,\n status: response.status\n };\n\n segmentDataCache.setupCache(videoID).segments = result.segments;\n return result;\n } else {\n // Setup with null data\n segmentDataCache.setupCache(videoID);\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"skip segments\");\n }\n\n return {\n segments: null,\n status: response.status\n };\n}","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","import { getCurrentPageTitle } from \"../../maze-utils/src/elements\";\nimport { getChannelIDInfo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { CategorySelection, CategorySkipOption, SponsorSourceType, SponsorTime } from \"../types\";\nimport { getSkipProfile, getSkipProfileBool } from \"./skipProfiles\";\nimport { VideoLabelsCacheData } from \"./videoLabels\";\n\nexport interface Permission {\n canSubmit: boolean;\n}\n\nexport enum SkipRuleAttribute {\n StartTime = \"time.start\",\n EndTime = \"time.end\",\n Duration = \"time.duration\",\n StartTimePercent = \"time.startPercent\",\n EndTimePercent = \"time.endPercent\",\n DurationPercent = \"time.durationPercent\",\n Category = \"category\",\n ActionType = \"actionType\",\n Description = \"chapter.name\",\n Source = \"chapter.source\",\n ChannelID = \"channel.id\",\n ChannelName = \"channel.name\",\n VideoDuration = \"video.duration\",\n Title = \"video.title\"\n}\n\nexport enum SkipRuleOperator {\n Less = \"<\",\n LessOrEqual = \"<=\",\n Greater = \">\",\n GreaterOrEqual = \">=\",\n Equal = \"==\",\n NotEqual = \"!=\",\n Contains = \"*=\",\n NotContains = \"!*=\",\n Regex = \"~=\",\n RegexIgnoreCase = \"~i=\",\n NotRegex = \"!~=\",\n NotRegexIgnoreCase = \"!~i=\"\n}\n\nexport interface AdvancedSkipRule {\n attribute: SkipRuleAttribute;\n operator: SkipRuleOperator;\n value: string | number;\n}\n\nexport interface AdvancedSkipRuleSet {\n rules: AdvancedSkipRule[];\n skipOption: CategorySkipOption;\n comment: string;\n}\n\nexport function getCategorySelection(segment: SponsorTime | VideoLabelsCacheData): CategorySelection {\n // First check skip rules\n for (const ruleSet of Config.local.skipRules) {\n if (ruleSet.rules.every((rule) => isSkipRulePassing(segment, rule))) {\n return { name: segment.category, option: ruleSet.skipOption } as CategorySelection;\n }\n }\n\n // Action type filters\n if (\"actionType\" in segment && (segment as SponsorTime).actionType === \"mute\" && !getSkipProfileBool(\"muteSegments\")) {\n return { name: segment.category, option: CategorySkipOption.Disabled } as CategorySelection;\n }\n\n // Then check skip profile\n const profile = getSkipProfile();\n if (profile) {\n const profileSelection = profile.categorySelections.find(selection => selection.name === segment.category);\n if (profileSelection) {\n return profileSelection;\n }\n }\n\n // Then fallback to default\n for (const selection of Config.config.categorySelections) {\n if (selection.name === segment.category) {\n return selection;\n }\n }\n return { name: segment.category, option: CategorySkipOption.Disabled} as CategorySelection;\n}\n\nfunction getSkipRuleValue(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): string | number | undefined {\n switch (rule.attribute) {\n case SkipRuleAttribute.StartTime:\n return (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.EndTime:\n return (segment as SponsorTime).segment?.[1];\n case SkipRuleAttribute.Duration:\n return (segment as SponsorTime).segment?.[1] - (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.StartTimePercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n if (startTime === undefined) return undefined;\n\n return startTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.EndTimePercent: {\n const endTime = (segment as SponsorTime).segment?.[1];\n if (endTime === undefined) return undefined;\n\n return endTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.DurationPercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n const endTime = (segment as SponsorTime).segment?.[1];\n if (startTime === undefined || endTime === undefined) return undefined;\n\n return (endTime - startTime) / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.Category:\n return segment.category;\n case SkipRuleAttribute.ActionType:\n return (segment as SponsorTime).actionType;\n case SkipRuleAttribute.Description:\n return (segment as SponsorTime).description || \"\";\n case SkipRuleAttribute.Source:\n switch ((segment as SponsorTime).source) {\n case SponsorSourceType.Local:\n return \"local\";\n case SponsorSourceType.YouTube:\n return \"youtube\";\n case SponsorSourceType.Autogenerated:\n return \"autogenerated\";\n case SponsorSourceType.Server:\n return \"server\";\n default:\n return undefined;\n }\n case SkipRuleAttribute.ChannelID:\n return getChannelIDInfo().id;\n case SkipRuleAttribute.ChannelName:\n return getChannelIDInfo().author;\n case SkipRuleAttribute.VideoDuration:\n return getVideoDuration();\n case SkipRuleAttribute.Title:\n return getCurrentPageTitle() || \"\";\n default:\n return undefined;\n }\n}\n\nfunction isSkipRulePassing(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): boolean {\n const value = getSkipRuleValue(segment, rule);\n \n switch (rule.operator) {\n case SkipRuleOperator.Less:\n return typeof value === \"number\" && value < (rule.value as number);\n case SkipRuleOperator.LessOrEqual:\n return typeof value === \"number\" && value <= (rule.value as number);\n case SkipRuleOperator.Greater:\n return typeof value === \"number\" && value > (rule.value as number);\n case SkipRuleOperator.GreaterOrEqual:\n return typeof value === \"number\" && value >= (rule.value as number);\n case SkipRuleOperator.Equal:\n return value === rule.value;\n case SkipRuleOperator.NotEqual:\n return value !== rule.value;\n case SkipRuleOperator.Contains:\n return String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.NotContains:\n return !String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.Regex:\n return new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.RegexIgnoreCase:\n return new RegExp(rule.value as string, \"i\").test(String(value));\n case SkipRuleOperator.NotRegex:\n return !new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.NotRegexIgnoreCase:\n return !new RegExp(rule.value as string, \"i\").test(String(value));\n default:\n return false;\n }\n}\n\nexport function getCategoryDefaultSelection(category: string): CategorySelection {\n for (const selection of Config.config.categorySelections) {\n if (selection.name === category) {\n return selection;\n }\n }\n return { name: category, option: CategorySkipOption.Disabled} as CategorySelection;\n}","import { extractVideoID, isOnInvidious } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { getHasStartSegment, getVideoLabel } from \"./videoLabels\";\nimport { getThumbnailSelector, setThumbnailListener } from \"../../maze-utils/src/thumbnailManagement\";\nimport { VideoID } from \"../types\";\nimport { getSegmentsForVideo } from \"./segmentData\";\nimport { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport async function handleThumbnails(thumbnails: HTMLImageElement[]): Promise {\n await Promise.all(thumbnails.map((t) => {\n labelThumbnail(t);\n setupThumbnailHover(t);\n }));\n}\n\nexport async function labelThumbnail(thumbnail: HTMLImageElement): Promise {\n if (!Config.config?.fullVideoSegments || !Config.config?.fullVideoLabelsOnThumbnails) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n \n const videoID = await extractVideoIDFromElement(thumbnail);\n if (!videoID) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const category = await getVideoLabel(videoID);\n if (!category) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const { overlay, text } = createOrGetThumbnail(thumbnail);\n\n overlay.style.setProperty('--category-color', `var(--sb-category-preview-${category}, var(--sb-category-${category}))`);\n overlay.style.setProperty('--category-text-color', `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`);\n text.innerText = chrome.i18n.getMessage(`category_${category}`);\n overlay.classList.add(\"sponsorThumbnailLabelVisible\");\n\n return overlay;\n}\n\nexport async function setupThumbnailHover(thumbnail: HTMLImageElement): Promise {\n // Cache would be reset every load due to no SPA\n if (isOnInvidious()) return;\n\n const mainElement = thumbnail.closest(\"#dismissible\") as HTMLElement;\n if (mainElement) {\n mainElement.removeEventListener(\"mouseenter\", thumbnailHoverListener);\n mainElement.addEventListener(\"mouseenter\", thumbnailHoverListener);\n }\n}\n\nfunction thumbnailHoverListener(e: MouseEvent) {\n if (!chrome.runtime?.id) return;\n\n const thumbnail = (e.target as HTMLElement).querySelector(getThumbnailSelector()) as HTMLImageElement;\n if (!thumbnail) return;\n\n // Pre-fetch data for this video\n let fetched = false;\n const preFetch = async () => {\n fetched = true;\n const videoID = await extractVideoIDFromElement(thumbnail);\n if (videoID && await getHasStartSegment(videoID)) {\n void getSegmentsForVideo(videoID, false);\n }\n };\n const timeout = setTimeout(preFetch, 100);\n const onMouseDown = () => {\n clearTimeout(timeout);\n if (!fetched) {\n preFetch();\n }\n };\n\n e.target.addEventListener(\"mousedown\", onMouseDown, { once: true });\n e.target.addEventListener(\"mouseleave\", () => {\n clearTimeout(timeout);\n e.target.removeEventListener(\"mousedown\", onMouseDown);\n }, { once: true });\n}\n\nfunction getLink(thumbnail: HTMLImageElement): HTMLAnchorElement | null {\n if (isOnInvidious()) {\n return thumbnail.parentElement as HTMLAnchorElement | null;\n } else if (!onMobile()) {\n const link = thumbnail.querySelector(\"a#thumbnail, a.reel-item-endpoint, a.yt-lockup-metadata-view-model__title, a.yt-lockup-metadata-view-model__title-link, a.yt-lockup-view-model__content-image, a.yt-lockup-metadata-view-model-wiz__title\") as HTMLAnchorElement;\n if (link) {\n return link;\n } else if (thumbnail.nodeName === \"YTD-HERO-PLAYLIST-THUMBNAIL-RENDERER\"\n || thumbnail.nodeName === \"YT-THUMBNAIL-VIEW-MODEL\"\n ) {\n return thumbnail.closest(\"a\") as HTMLAnchorElement;\n } else {\n return null;\n }\n } else {\n // Big thumbnails, compact thumbnails, shorts, channel feature, playlist header\n return thumbnail.querySelector(\"a.media-item-thumbnail-container, a.compact-media-item-image, a.reel-item-endpoint, :scope > a, .amsterdam-playlist-thumbnail-wrapper > a\") as HTMLAnchorElement;\n }\n}\n\nasync function extractVideoIDFromElement(thumbnail: HTMLImageElement): Promise {\n const link = getLink(thumbnail);\n if (!link || link.nodeName !== \"A\" || !link.href) return null; // no link found\n\n return await extractVideoID(link);\n}\n\nfunction getOldThumbnailLabel(thumbnail: HTMLImageElement): HTMLElement | null {\n return thumbnail.querySelector(\".sponsorThumbnailLabel\") as HTMLElement | null;\n} \n\nfunction hideThumbnailLabel(thumbnail: HTMLImageElement): void {\n const oldLabel = getOldThumbnailLabel(thumbnail);\n if (oldLabel) {\n oldLabel.classList.remove(\"sponsorThumbnailLabelVisible\");\n }\n}\n\nfunction createOrGetThumbnail(thumbnail: HTMLImageElement): { overlay: HTMLElement; text: HTMLElement } {\n const oldElement = getOldThumbnailLabel(thumbnail);\n if (oldElement) {\n return {\n overlay: oldElement as HTMLElement,\n text: oldElement.querySelector(\"span\") as HTMLElement\n };\n }\n\n const overlay = document.createElement(\"div\") as HTMLElement;\n overlay.classList.add(\"sponsorThumbnailLabel\");\n // Disable hover autoplay\n overlay.addEventListener(\"pointerenter\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerleave\", { bubbles: true }));\n });\n overlay.addEventListener(\"pointerleave\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerenter\", { bubbles: true }));\n });\n\n const icon = createSBIconElement();\n const text = document.createElement(\"span\");\n overlay.appendChild(icon);\n overlay.appendChild(text);\n thumbnail.appendChild(overlay);\n\n return {\n overlay,\n text\n };\n}\n\nfunction createSBIconElement(): SVGSVGElement {\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"viewBox\", \"0 0 565.15 568\");\n const use = document.createElementNS(\"http://www.w3.org/2000/svg\", \"use\");\n use.setAttribute(\"href\", \"#SponsorBlockIcon\");\n svg.appendChild(use);\n return svg;\n}\n\n\n// Inserts the icon svg definition, so it can be used elsewhere\nfunction insertSBIconDefinition() {\n const container = document.createElement(\"span\");\n\n // svg from /public/icons/PlayerStartIconSponsorBlocker.svg, with useless stuff removed\n container.innerHTML = `\n\n \n \n \n \n \n \n`;\n document.body.appendChild(container.children[0]);\n}\n\nexport function setupThumbnailListener(): void {\n setThumbnailListener(handleThumbnails, () => {\n insertSBIconDefinition();\n }, () => Config.isReady());\n}","\nexport function getStartTimeFromUrl(url: string): number {\n const urlParams = new URLSearchParams(url);\n const time = urlParams?.get('t') || urlParams?.get('time_continue');\n\n return urlTimeToSeconds(time);\n}\n\nexport function urlTimeToSeconds(time: string): number {\n if (!time) {\n return 0;\n }\n\n const re = /(?:(\\d{1,3})h)?(?:(\\d{1,2})m)?(\\d+)s?/;\n const match = re.exec(time);\n\n if (match) {\n const hours = parseInt(match[1] ?? '0', 10);\n const minutes = parseInt(match[2] ?? '0', 10);\n const seconds = parseInt(match[3] ?? '0', 10);\n\n return hours * 3600 + minutes * 60 + seconds;\n } else if (/\\d+/.test(time)) {\n return parseInt(time, 10);\n } else {\n return 0;\n }\n}","import { Category, CategorySkipOption, VideoID } from \"../types\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { logWarn } from \"./logger\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { getCategorySelection } from \"./skipRule\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface VideoLabelsCacheData {\n category: Category;\n hasStartSegment: boolean;\n}\n\nexport interface LabelCacheEntry {\n timestamp: number;\n videos: Record;\n}\n\nconst labelCache: Record = {};\nconst cacheLimit = 1000;\n\nasync function getLabelHashBlock(hashPrefix: string): Promise {\n // Check cache\n const cachedEntry = labelCache[hashPrefix];\n if (cachedEntry) {\n return cachedEntry;\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"GET\", `/api/videoLabels/${hashPrefix}?hasStartSegment=true`);\n } catch (e) {\n console.error(\"[SB] Caught error while fetching video labels\", e)\n return null;\n }\n if (response.status !== 200) {\n logRequest(response, \"SB\", \"video labels\");\n // No video labels or server down\n labelCache[hashPrefix] = {\n timestamp: Date.now(),\n videos: {},\n };\n return null;\n }\n\n try {\n const data = JSON.parse(response.responseText);\n\n const newEntry: LabelCacheEntry = {\n timestamp: Date.now(),\n videos: Object.fromEntries(data.map(video => [video.videoID, {\n category: video.segments[0]?.category,\n hasStartSegment: video.hasStartSegment\n }])),\n };\n labelCache[hashPrefix] = newEntry;\n\n if (Object.keys(labelCache).length > cacheLimit) {\n // Remove oldest entry\n const oldestEntry = Object.entries(labelCache).reduce((a, b) => a[1].timestamp < b[1].timestamp ? a : b);\n delete labelCache[oldestEntry[0]];\n }\n\n return newEntry;\n } catch (e) {\n logWarn(`Error parsing video labels: ${e}`);\n\n return null;\n }\n}\n\nexport async function getVideoLabel(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n const category = result.videos[videoID]?.category;\n if (category && getCategorySelection(result.videos[videoID]).option !== CategorySkipOption.Disabled) {\n return category;\n } else {\n return null;\n }\n }\n\n return null;\n}\n\nexport async function getHasStartSegment(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n return result?.videos[videoID]?.hasStartSegment ?? false;\n }\n\n return null;\n}\n","import { objectToURI } from \"../../maze-utils/src\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport Config from \"../config\";\nimport GenericNotice, { NoticeOptions } from \"../render/GenericNotice\";\nimport { ContentContainer } from \"../types\";\nimport { asyncRequestToServer } from \"./requests\";\n\nexport interface ChatConfig {\n displayName: string;\n composerInitialValue?: string;\n customDescription?: string;\n}\n\nexport async function openWarningDialog(contentContainer: ContentContainer): Promise {\n let userInfo: FetchResponse;\n try {\n userInfo = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config.userID),\n values: [\"warningReason\"]\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to fetch user's active warnings\", e)\n return;\n }\n\n if (userInfo.ok) {\n const warningReason = JSON.parse(userInfo.responseText)?.warningReason;\n let userName = \"\";\n try {\n const userNameData = await asyncRequestToServer(\"GET\", \"/api/getUsername?userID=\" + Config.config.userID);\n userName = userNameData.ok ? JSON.parse(userNameData.responseText).userName : \"\";\n } catch (e) {\n console.warn(\"[SB] Caught non-fatal error while trying to resolve user's username\", e);\n }\n const publicUserID = await getHash(Config.config.userID);\n\n let notice: GenericNotice = null;\n const options: NoticeOptions = {\n title: chrome.i18n.getMessage(\"deArrowMessageRecieved\"),\n textBoxes: [{\n text: chrome.i18n.getMessage(\"warningChatInfo\"),\n icon: null\n }, ...warningReason.split(\"\\n\").map((reason) => ({\n text: reason,\n icon: null\n }))],\n buttons: [{\n name: chrome.i18n.getMessage(\"questionButton\"),\n listener: () => openChat({\n displayName: `${userName ? userName : ``}${userName !== publicUserID ? ` | ${publicUserID}` : ``}`\n })\n },\n {\n name: chrome.i18n.getMessage(\"warningConfirmButton\"),\n listener: async () => {\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"POST\", \"/api/warnUser\", {\n userID: Config.config.userID,\n enabled: false\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to acknowledge user's active warning\", e);\n alert(formatJSErrorMessage(e));\n }\n\n if (result.ok) {\n notice?.close();\n } else {\n logRequest(result, \"SB\", \"warning acknowledgement\");\n alert(getLongErrorMessage(result.status, result.responseText));\n }\n }\n }],\n timed: false\n };\n\n notice = new GenericNotice(contentContainer, \"warningNotice\", options);\n } else {\n logRequest(userInfo, \"SB\", \"user's active warnings\");\n }\n}\n\nexport function openChat(config: ChatConfig): void {\n window.open(\"https://chat.sponsor.ajay.app/#\" + objectToURI(\"\", config, false));\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(6069);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","logoUrl","bottomOffset","topOffset","leftOffset","rightOffset","innerBottomMargin","displayTriangle","topTriangle","extraClass","showLogo","showGotIt","positionRealtive","containerAbsolute","center","elements","buttonsAtBottom","textBoxes","textBoxMaxHeight","position","prependElement","referenceNode","timeout","timer","close","backgroundColor","root","bottom","right","margin","undefined","className","marginBottom","maxHeight","overflowY","getURL","getTextElements","textDecoration","rel","i18n","getMessage","linkOnClick","marginLeft","cursor","onAuxClick","getButtons","float","secondButtonText","secondButtonOnClick","result","line","padding","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","fetchConfig","all","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","getYouTubeTitleNode","titleNode","formattedText","innerText","elem","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CategoryPillComponent","React","mainRef","segment","open","getColor","getTextColor","toggle","showTextByDefault","getTitleText","toggleOpen","onMouseEnter","openTooltip","onMouseLeave","closeTooltip","prideTheme","category","vote","fill","colorPalette","white","downvoteButtonColor","SkipNoticeAction","Downvote","showTooltipOnClick","stopAnimation","UUID","formatJSErrorMessage","logRequest","getLongErrorMessage","tooltip","tooltipMount","Tooltip","firstElementChild","shortDescription","ChapterVoteComponent","draggable","chapterNode","actionType","ActionType","Chapter","outerBounding","buttonBounding","CountdownMode","bounds","NoticeComponent","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","showInSecondSlot","startCountdown","noticeStyle","userSelect","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","limitWidth","hideLogo","logoFill","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","icon","textParts","textPart","SelectorComponent","getOptions","option","onChange","label","utils","SkipButtonState","SkipNoticeComponent","noticeRef","categoryOptionRef","segments","autoSkip","contentContainer","voteNotice","getVoteText","upcomingNotice","getUpcomingText","getSkippingText","previousSkipNotices","selectedColor","red","unselectedColor","lockedColor","locked","isMuteSegment","Mute","getFullDurationCountdown","defaultSkipButtonState","startReskip","Redo","Undo","skipButtonStates","Start","defaultSkipButtonCallback","reskip","unskip","skipButtonCallbacks","messages","messageOnClick","countdownText","showSkipButton","editing","choosingCategory","actionState","None","showKeybindHint","voted","copied","getUnskippedModeInfo","transform","getSkipButton","noticeVisibilityMode","NoticeVisibilityMode","FadedForAll","FadedForAutoSkip","barTypes","getMessageBoxes","getBottomRow","prepAction","Upvote","openEditingOptions","CopyDownvote","dontShowNoticeAgain","CategoryVote","resetStateToStart","getCategoryOptions","getSubmissionChooser","buttonIndex","Poi","unskipTime","forceSeek","Unskip0","Unskip1","minWidth","getSkipButtonText","Skip","keybindToString","skipKeybind","getSubmissionChooserOpacity","getSubmissionChooserColor","performAction","getFormattedTime","isUpvote","isDownvote","isCopyDownvote","isVip","noAction","upvote","downvote","categoryVote","copyDownvote","unskipAction","sponsorVideoID","sponsorTimesSubmitting","generateUserID","SponsorSourceType","Local","segmentTimes","unsubmittedSegments","updatePreviewBar","resetSponsorSubmissionNotice","updateEditButtonsOnPlayer","categories","CompileConfig","categoryList","cat","categorySupport","getCategoryNameClass","lockedCategories","unskipSponsorTime","unskippedMode","reskipSponsorTime","reskippedMode","newState","skipButtonState","sponsorTime","round","playbackRate","afterVote","getSponsorIndexFromUUID","wikiLinkText","wikiLinks","clearConfigListener","setNoticeInfoMessageWithOnClick","addVoteButtonInfo","setNoticeInfoMessage","resetVoteButtonInfo","configListener","unmutedListener","forceType","getUndoText","getRedoText","getStartText","categoryNamesGrams","SponsorTimeEditComponent","timesBeforeChanging","fullVideoWarningShown","categoryNameWarningShown","lastEditTime","editTimeTimeout","actionTypeOptionRef","descriptionOptionRef","previousSkipType","sponsorTimeEdits","selectedCategory","DEFAULT_CATEGORY","selectedActionType","description","suggestedNames","chapterNameSelectorOpen","chapterNameSelectorHovering","configUpdateListener","configUpdate","checkToShowFullVideoWarning","checkToShowChapterWarning","textAlign","marginTop","borderColor","timeDisplay","timeDisplayStyle","Full","setTimeTo","setTimeToNow","onKeyDown","onKeyUp","handleOnChange","onWheel","changeTimesWhenScrolling","setTimeToEnd","toggleEditTime","categorySelectionChange","actionTypeSelectionChange","getActionTypeOptions","hidden","SponsorHideType","Hidden","Visible","saveEditTimes","onBlur","onContextMenu","descriptionUpdate","onFocus","deleteTime","previewTime","inspectTime","targetValue","before","getFormattedTimeToSeconds","after","difference","abs","showScrollToEditToolTip","allowScrollingToEdit","step","timeAsNumber","scrollToEditTimeUpdate","showToolTip","buttonFunction","htmlId","RectangleTooltip","fontSize","getVideoDuration","defaultBlockCategories","permission","showCategoryWithoutPermission","permissions","getCategoryLockedClass","chosenCategory","categorySelections","confirm","hash","hookUpdate","handleReplacingLostTimes","categoryChangeListener","getNextActionType","getRealCurrentTime","addedTime","getFormattedSponsorTimesEdits","timeSinceLastEdit","endTime","addingTime","ctrlPressed","shiftPressed","skipToEndTime","sponsorTimes","seekTime","defaultPreviewTime","skipTime","removingIncomplete","submissionNotice","cancel","fetchingSuggestions","fetchSuggestions","asyncRequestToServer","names","parse","SubmissionNoticeComponent","lastSegmentCount","videoObserver","currentSegmentCount","scrollToBottom","scrollElement","scrollTo","scrollHeight","sortButton","sortSegments","exportButton","exportSegments","getSponsorTimeMessages","submissionCountSinceCategories","submit","timeEditRefs","timeRef","guidelinesReminder","isCurrentTimeWrong","videoInfo","microformat","playerMicroformatRenderer","success","clipboard","writeText","exportTimes","dialogWidth","showCategoryGuidelines","getGuidelineInfo","update","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","categoryPillUpdate","showChapterInfoMessage","darkMode","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","downvotedSegments","alreadyInstalled","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","cleanPage","wait","getElementsByTagName","fileref","addCSS","setCategoryColorCSSVariables","runCompatibilityChecks","skipBuffer","endTimeSkipBuffer","sponsorDataFound","existingChaptersImported","importingChaptersWaitingForFocus","importingChaptersWaiting","loopedChapter","skipNotices","activeSkipKeybindElement","shownSegmentFailedToFetchWarning","selectedSegment","previewedSegment","lastKnownVideoTime","videoTime","preciseTime","fromPause","approximateDelay","lastTimeFromWaitingEvent","lastNextChapterKeybind","currentSkipSchedule","currentSkipInterval","currentVirtualTimeInterval","currentUpcomingSchedule","sponsorSkipped","videoMuted","controlsWithEventListeners","setupVideoModule","previewBar","isOnMobileYouTube","handleMobileControlsMutations","controlsContainer","getControls","createPreviewBar","getVideoID","getChannelIDInfo","channelAuthor","sponsorsLookup","updateVisibilityOfPlayerControlsButton","updateSponsorTimesSubmitting","tryShowingDeArrowPromotion","logWarn","checkPreviewbarState","getIsInline","videoOnReadyListener","durationChangeListener","setupVideoListenersFirstTime","switchingVideos","startedWaiting","lastPausedAtZero","lastVideoDataChange","rateChangeListener","updateVirtualTime","clearWaitingTime","startSponsorSchedule","playListener","firstPlay","miniPlayerUI","onVideoPage","getLastNonInlineVideoID","triggerVideoIDChange","triggerVideoElementChange","checkForMiniplayerPlaying","logDebug","startSkipScheduleCheckingForStartSponsors","updateAdFlag","lastCheckVideoTime","lastCheckTime","playingListener","playbackRateCheckInterval","lastPlaybackSpeed","seekingListener","updateActiveSegment","loop","stoppedPlayback","updateWaitingTime","cancelSponsorSchedule","pauseListener","waitingListener","emptyListener","metadataLoadedListener","setupVideoListeners","skipButtonControlBar","SkipButtonControlBar","skip","skipToTime","skippingSegments","openNotice","forceAutoSkip","selectSegment","isOnYTTV","attachToPage","categoryPill","CategoryPill","voteAsync","lastResponseStatus","disable","setVisibility","hideDeArrowPromotion","manifest_version","setupThumbnailListener","controls","playerButtons","hotkeyListener","hotkeyPropagationListener","loadedPreloadedSegment","popupInitialised","skipNoticeContentContainer","sponsorSubmissionNotice","manualSkipPercentCount","contentConfigUpdateListener","updateAll","contentLocalConfigUpdateListener","updateMobileControls","isMobileControlsOpen","isConnected","getPreviewBarAttachElement","progressElementOptions","isVisibleCheck","allElements","chapterVote","ChapterVote","importExistingChapters","includeIntersectingSegments","includeNonIntersectingSegments","getIsAdPlaying","checkIfNewVideoID","getVirtualTime","skipInfo","autoSkipSorter","skipOption","getCategorySelection","shouldAutoSkip","includedTimes","submittedArray","scheduledTimes","sponsorStartTimes","getStartTimes","sponsorStartTimesAfterCurrentTime","minSponsorTimeIndexes","GenericUtils","indexesOf","minSponsorTimeIndex","extraIndexes","endTimeIndex","getLatestEndTimeIndex","unsubmittedArray","unsubmittedSponsorStartTimes","unsubmittedSponsorStartTimesAfterCurrentTime","minUnsubmittedSponsorTimeIndex","previewEndTimeIndex","array","endIndex","getNextSkipIndex","currentSkip","scheduledTime","timeUntilSponsor","inMuteSegment","muted","incorrectVideoCheck","shouldSkip","skippingFunction","forceVideoTime","forcedSkipTime","forcedIncludeIntersectingSegments","forcedIncludeNonIntersectingSegments","extra","extraSkip","delayTime","forceStartIntervalTime","once","startIntervalTime","startVideoTime","startWaitingForReportedTimeToChange","reportedVideoTimeAtStart","intervalDuration","offsetDelayTime","maxPopupTime","timeUntilPopup","popupTime","createUpcomingNotice","virtualTime","includeOverlap","checkFunction","currentVideoID","recordedVideoID","isLoopedChapter","checkVideoIDChange","sendResponse","startOrEndTimingNewSegment","creatingSegment","isSegmentCreationInProgress","Disabled","currentTabSkipProfileID","getSkipProfileIDForTab","updating","closeInfoMenu","isYTTV","openSubmissionMenu","hasVideo","getSponsorTimeFromUUID","addHiddenSegment","isEnabled","every","importedSegments","importTimes","addedSegments","hasChaptersPermission","getCategoryDefaultSelection","KeyboardEvent","setCurrentTabSkipProfile","configID","rawCount","lastTime","lastPerformanceTime","frameTime","keepOldSubmissions","segmentData","getSegmentsForVideo","receivedSegments","oldSegments","otherSegment","other","hashPrefix","downvotedData","hashedUUID","segmentDownvoteData","uuid","hideTooShortSegments","waitForVideo","notifyPopupOfSegments","categoriesResponse","lockInfo","lockedCategoriesLookup","waitCondition","getExistingChapters","hasFocus","chapters","getSkipProfileBool","hasAutogeneratedChapters","startingSegmentTime","getStartTimeFromUrl","poiSegments","hashParams","getHashParams","requiredSegment","previewBarSegments","unsubmitted","showLarger","skippedDuration","durationID","paddingLeft","durationAfterSkips","showTimeWithoutSkips","getTimestampsDuration","updateCategoryPill","fullVideoSegment","setSegment","Autogenerated","checkingPreviewbarAgain","hideHiddenSponsors","latestEndTimeIndex","currentSegment","latestEndTime","minimum","shouldIncludeTime","possibleTimes","unpause","setCurrentTime","play","sendTelemetryAndCount","secondsSkipped","fullSkip","extension","inIncognitoContext","counted","isSubmittingSegment","isPlayingPlaylist","beep","Audio","volume","oldMetadata","mediaSession","setShowKeybindHint","toggleSkip","createSkipNotice","enable","skipNotice","upcomingNoticeShown","closed","newSkipNotice","timeLeft","sameNotice","skippedTime","createButton","baseID","imageName","isDraggable","existingElement","newButton","newButtonImage","prepend","setupListener","canSkipNonMusic","isOnYouTubeMusic","confirmMessage","getSegmentsMessage","clearSponsorTimes","info","popup","frame","borderRadius","stylusStyle","enhancerStyle","enhancerStyleVariables","enhancerCss","enhancerVariablesCss","elemHasChild","parentNodeOptions","hasChildCheck","openInfoMenu","createButtons","buttonsEnabled","submitButtonVisible","deleteButtonVisible","startSegment","cancelSegment","getIsLivePremiere","verifyCurrentTime","roundedTime","Number","EPSILON","existingSegment","getIncompleteSegment","existingTime","getFromConfig","segmentTime","pushed","checkForPreloadedSegment","openWarningDialog","sponsorIndex","Server","factor","Downvoted","notices","getElementsByClassName","closeAllSkipNotices","callRef","sendSubmitMessage","confirmShort","videoDuration","extensionUserAgent","newSegments","receivedNewSegments","sponsorTimesMessage","timeMessage","updateChapterText","handleKeybindVote","lastSkipNotice","skipNoticeRef","lastSegment","waitForSkipNoticeRef","isContentEditable","skipKey","skipToHighlightKey","closeSkipNoticeKey","startSponsorKey","submitKey","previewKey","openSubmissionMenuKey","nextChapterKey","previousChapterKey","upvoteKey","downvoteKey","unfilteredChapterGroups","nextChapter","previousChapter","wasAdPlaying","setIsAdPlaying","styleContainer","isVorapisInstalled","luminance","getLuminance","TOOLTIP_VISIBLE_CLASS","updateExistingChapters","lastSmallestSegment","hasYouTubeChapters","existingChapters","lastChapterUpdate","updatePageElements","createChapterMutationObservers","setupHoverText","categoryTooltip","chapterTooltip","categoryScrubTooltip","chapterScrubTooltip","tooltipTextWrapper","defaultTooltipSelector","originalTooltip","findNonEmptyElement","categoryTooltipContainer","titleTooltip","scrubTooltipTextWrapper","seekBar","mouseOnSeekBar","noYoutubeChapters","timeInSeconds","decimalToTime","normalSegments","chapterSegments","partition","mainSegment","getSmallestSegment","secondarySegment","hasAYouTubeChapterRemoved","setTooltipTitle","normalizeChapterName","shortCategoryName","getComputedStyle","getPropertyValue","customChaptersBar","originalChapterBar","YouTube","chapter","segmentDuration","duplicate","ariaDuration","progressBar","allProgressBars","newChapterBar","chapterChevron","getChapterChevron","chapterMargin","originalChapterBarBlocks","sortedSegments","bar","createBar","createChaptersBar","barSegment","fullCategoryName","timeToPercentage","timeToRightPercentage","chapterFilter","childElementCount","remakingBar","lastRenderedSegments","createChapterRenderGroups","filteredSegments","groups","chapterGroups","chapterGroupFilter","originalDuration","createFromScratch","cloneNode","originalSections","originalSection","newSection","firstTimeSetupChapterSection","setupChapterSection","updateChapterAllMutation","latestChapter","latestValidChapter","chaptersToAddBack","invalidChapter","priorityActionType","getActionTypePrioritized","lastChapterChecked","nextSegment","nextTime","intervalToDecimal","actionTypes","section","addMargin","sizePercent","intervalToPercentage","hoveredSection","attributeObserver","currentElement","updateChapterMutation","attributeFilter","childListObserver","firstUpdate","sections","sectionWidthDecimal","sectionWidthDecimalNoMargin","customChangedElement","fullSectionWidth","changedElement","changedData","findLeftAndScale","calculatedLeft","scale","transformScale","backgroundSize","backgroundPosition","currentWidth","lastWidth","leftPosition","scalePosition","scaleWidth","lastScalePosition","checkElement","currentSectionWidthNoMargin","getPartialChapterSectionStyle","currentSectionWidth","checkLeft","transformMatch","endPosition","submittingSegments","chaptersContainer","getChaptersContainer","activeSegments","setActiveSegments","chosenSegment","chapterButton","getChapterButton","chapterTitle","chapterVoteContainer","getContainer","oldVoteContainers","oldVoteContainer","titlePrefixDot","dest","sbChapterContainer","sbChapterTitleContent","timeToDecimal","decimalTimeConverter","decimal","isTime","totalPixels","pixelOffset","lastCheckedChapter","chapterElement","widthPixels","marginPixels","latestWidth","latestChapterDuration","percentageInCurrentChapter","sizeOfCurrentChapter","getMinimumSize","proposedIndex","startSearchIndex","direction","currentSegmentLength","seg","segmentLength","minSize","swipeStart","skipIcon","textContainer","stopTimer","startTimer","handleTouchStart","handleTouchMove","handleTouchEnd","mountingContainer","getMountingContainer","chapterText","hideButton","showButton","refreshText","getTitle","disableText","getChapterPrefix","distanceMoved","updateLeftStyle","mutationObserver","attachToPageInternal","isOnDescriptionOnRightLayout","change","removedNodes","lastState","watchDiv","unsavedState","findReferenceNode","noticeElement","maxWidth","MiniForAll","MiniForAutoSkip","waitForRef","GenericTooltip","upcomingNoticeRef","xmlns","viewBox","points","ActionTypes","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","endOverlaps","other1","other2","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","segmentUUID","segmentIDData","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","pass","fail","categoryName","messageId","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","inTest","chapterNames","exportTime","removeIf","matchers","matcher","lines","timeRegex","anyLineHasTime","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","hashparamSegments","hexChars","hex","sqrt","toISOString","overlay","downvoteType","isInPreviewPlayer","controlsSelectors","controlsSelector","windowHash","decoded","decodeURIComponent","chaptersBox","autogenerated","links","timeElement","address","testingServerAddress","sendRequestToCustomServer","segmentDataCache","pendingList","pendingData","extraRequestData","hasDownvotedSegments","trimUUIDs","fetchSegmentsForVideo","currentTabSkipProfile","getSkipProfileIDForTime","getSkipProfileIDForVideo","getSkipProfileIDForChannel","getSkipProfileID","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","MinimumDuration","SkipRuleAttribute","SkipRuleOperator","isSkipRulePassing","rule","attribute","StartTime","EndTime","Duration","StartTimePercent","EndTimePercent","DurationPercent","Category","Description","Source","ChannelID","ChannelName","VideoDuration","Title","getCurrentPageTitle","getSkipRuleValue","operator","Less","LessOrEqual","Greater","GreaterOrEqual","Equal","NotEqual","Contains","toLocaleLowerCase","NotContains","Regex","RegExp","RegexIgnoreCase","NotRegex","NotRegexIgnoreCase","ruleSet","rules","profileSelection","handleThumbnails","labelThumbnail","setupThumbnailHover","hideThumbnailLabel","extractVideoIDFromElement","getVideoLabel","oldElement","getOldThumbnailLabel","PointerEvent","svg","use","createSBIconElement","createOrGetThumbnail","mainElement","thumbnailHoverListener","fetched","preFetch","getHasStartSegment","getLink","extractVideoID","oldLabel","setThumbnailListener","insertSBIconDefinition","urlTimeToSeconds","urlParams","URLSearchParams","labelCache","getLabelHashBlock","cachedEntry","timestamp","videos","newEntry","fromEntries","hasStartSegment","oldestEntry","openChat","userInfo","publicUserID","warningReason","userName","userNameData","reason","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/firefox-beta/6.0.3/help.js.map b/firefox-beta/6.0.3/help.js.map new file mode 100644 index 00000000..ca9403e3 --- /dev/null +++ b/firefox-beta/6.0.3/help.js.map @@ -0,0 +1 @@ +{"version":3,"file":"help.js","mappings":"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","sources":["webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./src/config.ts","webpack:///./src/help.ts","webpack:///./src/types.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import { localizeHtmlPage } from \"../maze-utils/src/setup\";\nimport Config from \"./config\";\nimport { showDonationLink } from \"./utils/configUtils\";\n\nimport { waitFor } from \"../maze-utils/src\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\n\nif (document.readyState === \"complete\") {\n init();\n} else {\n document.addEventListener(\"DOMContentLoaded\", init);\n}\n\n// DeArrow promotion\nwaitFor(() => Config.isReady()).then(() => {\n if (Config.config.showNewFeaturePopups && Config.config.showUpsells) {\n isDeArrowInstalled().then((installed) => {\n if (!installed) {\n const deArrowPromotion = document.getElementById(\"dearrow-link\");\n deArrowPromotion.classList.remove(\"hidden\");\n\n deArrowPromotion.addEventListener(\"click\", () => Config.config.showDeArrowPromotion = false);\n\n const text = deArrowPromotion.querySelector(\"#dearrow-link-text\");\n text.textContent = `${chrome.i18n.getMessage(\"DeArrowPromotionMessage2\").split(\"?\")[0]}? ${chrome.i18n.getMessage(\"DeArrowPromotionMessage3\")}`;\n\n const closeButton = deArrowPromotion.querySelector(\".close-button\");\n closeButton.addEventListener(\"click\", (e) => {\n e.preventDefault();\n\n deArrowPromotion.classList.add(\"hidden\");\n Config.config.showDeArrowPromotion = false;\n Config.config.showDeArrowInSettings = false;\n });\n }\n });\n }\n});\n\nasync function init() {\n localizeHtmlPage();\n\n await waitFor(() => Config.config !== null);\n\n if (!Config.config.darkMode) {\n document.documentElement.setAttribute(\"data-theme\", \"light\");\n }\n\n if (!showDonationLink()) {\n document.getElementById(\"donate-component\").style.display = \"none\";\n }\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(3105);\n"],"names":["isSafari","navigator","vendor","formatKey","key","length","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","then","result","sync","configProxy","chrome","storage","onChanged","addListener","changes","areaName","newValue","callback","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","value","Date","now","add","delayUpdate","items","clear","map","v","reduce","acc","k","setTimeout","get","data","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","error","runtime","lastError","alert","i18n","getMessage","fetchConfig","Promise","all","resolve","undefined","window","location","href","includes","isFirefoxOrSafari","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","condition","timeout","check","predicate","reject","interval","intervalCheck","clearInterval","toString","Error","stack","setInterval","url","includeQuestionMark","counter","seperator","JSON","stringify","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","id","getManifest","version","getLocalizedMessage","text","valNewH","replace","match","v1","charset","cryptoFuncs","crypto","getRandomValues","values","Uint32Array","i","Math","floor","random","localizedTitle","document","title","body","querySelector","localizedMessage","innerHTML","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","supportInvidious","serverAddress","CompileConfig","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","prideTheme","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","name","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","navigationApiAvailable","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","filter","s","channelID","keys","some","push","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","init","localizeHtmlPage","waitFor","documentElement","setAttribute","getElementById","style","display","readyState","addEventListener","isDeArrowInstalled","installed","deArrowPromotion","classList","textContent","split","e","preventDefault","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","count","sendMessage","message","response","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/firefox-beta/6.0.3/options.js.LICENSE.txt b/firefox-beta/6.0.3/options.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/firefox-beta/6.0.3/options.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/firefox-beta/6.0.3/options.js.map b/firefox-beta/6.0.3/options.js.map new file mode 100644 index 00000000..9b985b31 --- /dev/null +++ b/firefox-beta/6.0.3/options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"options.js","mappings":"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","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/options/AdvancedSkipOptionsComponent.tsx","webpack:///./src/components/options/CategoryChooserComponent.tsx","webpack:///./src/components/options/CategorySkipOptionsComponent.tsx","webpack:///./src/components/options/KeybindComponent.tsx","webpack:///./src/components/options/KeybindDialogComponent.tsx","webpack:///./src/components/options/NumberInputOptionComponent.tsx","webpack:///./src/components/options/SelectOptionComponent.tsx","webpack:///./src/components/options/ToggleOptionComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListItem.tsx","webpack:///./src/components/options/UnsubmittedVideosComponent.tsx","webpack:///./src/config.ts","webpack:///./src/options.ts","webpack:///./src/render/AdvancedSkipOptions.tsx","webpack:///./src/render/CategoryChooser.tsx","webpack:///./src/render/UnsubmittedVideos.tsx","webpack:///./src/svg-icons/resetIcon.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport * as CompileConfig from \"../../../config.json\";\n\nimport Config from \"../../config\";\nimport { AdvancedSkipRuleSet, SkipRuleAttribute, SkipRuleOperator } from \"../../utils/skipRule\";\nimport { ActionType, ActionTypes, CategorySkipOption } from \"../../types\";\n\nlet configSaveTimeout: NodeJS.Timeout | null = null;\n\nexport function AdvancedSkipOptionsComponent() {\n const [optionsOpen, setOptionsOpen] = React.useState(false);\n const [config, setConfig] = React.useState(configToText(Config.local.skipRules));\n const [configValid, setConfigValid] = React.useState(true);\n\n return (\n
\n
{\n setOptionsOpen(!optionsOpen);\n }}>\n {chrome.i18n.getMessage(\"openAdvancedSkipOptions\")}\n
\n\n {\n optionsOpen &&\n
\n
\n \n {chrome.i18n.getMessage(\"advancedSkipSettingsHelp\")}\n \n\n \n {\" - \"}\n {chrome.i18n.getMessage(\"advancedSkipNotSaved\")}\n \n
\n\n \n\n \n \n
\n )\n}\n","import * as React from \"react\";\nimport { VideoID } from \"../types\";\nimport Config from \"../config\";\nimport { Message, MessageResponse } from \"../messageTypes\";\nimport { LoadingStatus } from \"./PopupComponent\";\n\ninterface SegmentSubmissionComponentProps {\n videoID: VideoID;\n status: LoadingStatus;\n\n sendMessage: (request: Message) => Promise;\n}\n\nexport const SegmentSubmissionComponent = (props: SegmentSubmissionComponentProps) => {\n const segments = Config.local.unsubmittedSegments[props.videoID];\n\n const [showSubmitButton, setShowSubmitButton] = React.useState(segments && segments.length > 0);\n const [showStartSegment, setShowStartSegment] = React.useState(!segments || segments[segments.length - 1].segment.length === 2);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"recordTimesDescription\")}\n

\n \n {chrome.i18n.getMessage(\"popupHint\")}\n \n
\n \n \n
\n \n {chrome.i18n.getMessage(\"submissionEditHint\")}\n \n
\n );\n};","import * as React from \"react\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { formatJSErrorMessage, getShortErrorMessage } from \"../../maze-utils/src/formating\";\nimport Config from \"../config\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport PencilIcon from \"../svg-icons/pencilIcon\";\nimport ClipboardIcon from \"../svg-icons/clipboardIcon\";\nimport CheckIcon from \"../svg-icons/checkIcon\";\nimport { showDonationLink } from \"../utils/configUtils\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport const YourWorkComponent = () => {\n const [isSettingUsername, setIsSettingUsername] = React.useState(false);\n const [username, setUsername] = React.useState(\"\");\n const [newUsername, setNewUsername] = React.useState(\"\");\n const [usernameSubmissionStatus, setUsernameSubmissionStatus] = React.useState(\"\");\n const [submissionCount, setSubmissionCount] = React.useState(\"\");\n const [viewCount, setViewCount] = React.useState(0);\n const [minutesSaved, setMinutesSaved] = React.useState(0);\n const [showDonateMessage, setShowDonateMessage] = React.useState(false);\n\n React.useEffect(() => {\n (async () => {\n const values = [\"userName\", \"viewCount\", \"minutesSaved\", \"vip\", \"permissions\", \"segmentCount\"];\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config!.userID!),\n values\n });\n } catch (e) {\n console.error(\"[SB] Caught error while fetching user info\", e);\n return\n }\n\n if (result.ok) {\n const userInfo = JSON.parse(result.responseText);\n setUsername(userInfo.userName);\n setSubmissionCount(Math.max(Config.config.sponsorTimesContributed ?? 0, userInfo.segmentCount).toLocaleString());\n setViewCount(userInfo.viewCount);\n setMinutesSaved(userInfo.minutesSaved);\n\n if (username === \"sponege\") {\n Config.config.prideTheme = true;\n }\n\n Config.config!.isVip = userInfo.vip;\n Config.config!.permissions = userInfo.permissions;\n\n setShowDonateMessage(Config.config.showDonationLink && Config.config.donateClicked <= 0 && Config.config.showPopupDonationCount < 5\n && viewCount < 50000 && !Config.config.isVip && Config.config.skipCount > 10 && showDonationLink());\n } else {\n logRequest(result, \"SB\", \"user info\");\n }\n })();\n }, []);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"yourWork\")}\n

\n
\n {/* Username */}\n
\n

\n {chrome.i18n.getMessage(\"Username\")}:\n {/* loading/errors */}\n \n {usernameSubmissionStatus}\n \n

\n
\n

{username}

\n \n \n
\n
\n {\n setNewUsername(e.target.value);\n }}/>\n \n
\n
\n \n
\n\n \n\n {showDonateMessage && {\n setShowDonateMessage(false);\n Config.config.showPopupDonationCount = 100;\n }} />}\n\n
\n );\n};\n\nfunction SubmissionCounts(props: { isSettingUsername: boolean; submissionCount: string }): JSX.Element {\n return <>\n
\n

\n {chrome.i18n.getMessage(\"Submissions\")}:\n

\n

{props.submissionCount}

\n
\n \n}\n\nfunction TimeSavedMessage({ viewCount, minutesSaved }: { viewCount: number; minutesSaved: number }): JSX.Element {\n return (\n <>\n {\n viewCount > 0 &&\n

\n {chrome.i18n.getMessage(\"savedPeopleFrom\")}\n \n {viewCount.toLocaleString()}{\" \"}\n \n {viewCount !== 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}\n
\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(minutesSaved)}{\" \"}\n {minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {chrome.i18n.getMessage(\"youHaveSavedTimeEnd\")}{\" \"}\n {\" )\"}\n \n

\n }\n

\n {chrome.i18n.getMessage(\"youHaveSkipped\")}\n \n {Config.config.skipCount}{\" \"}\n \n {Config.config.skipCount > 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}{\" \"}\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(Config.config.minutesSaved)}{\" \"}\n {Config.config.minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {\")\"}\n \n

\n \n );\n}\n\nfunction DonateMessage(props: { onClose: () => void }): JSX.Element {\n return (\n \n );\n}\n\n/**\n * Converts time in minutes to 2d 5h 25.1\n * If less than 1 hour, just returns minutes\n *\n * @param {float} minutes\n * @returns {string}\n */\nfunction getFormattedHours(minutes) {\n minutes = Math.round(minutes * 10) / 10;\n const years = Math.floor(minutes / 525600); // Assumes 365.0 days in a year\n const days = Math.floor(minutes / 1440) % 365;\n const hours = Math.floor(minutes / 60) % 24;\n return (years > 0 ? years + chrome.i18n.getMessage(\"yearAbbreviation\") + \" \" : \"\") + (days > 0 ? days + chrome.i18n.getMessage(\"dayAbbreviation\") + \" \" : \"\") + (hours > 0 ? hours + chrome.i18n.getMessage(\"hourAbbreviation\") + \" \" : \"\") + (minutes % 60).toFixed(1);\n}\n","import * as React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { PopupComponent } from \"./PopupComponent\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport Config from \"../config\";\n\n\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n await waitFor(() => Config.isReady());\n\n const root = createRoot(document.body);\n root.render();\n})","import { Message, MessageResponse } from \"../messageTypes\";\n\nexport function copyToClipboardPopup(text: string, sendMessage: (request: Message) => Promise): void {\n if (window === window.top) {\n window.navigator.clipboard.writeText(text);\n } else {\n sendMessage({\n message: \"copyToClipboard\",\n text\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\n\nexport interface CheckIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst CheckIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: CheckIconProps): JSX.Element => (\n \n \n \n);\n\nexport default CheckIcon;","import * as React from \"react\";\n\nexport interface ClipboardIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ClipboardIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: ClipboardIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ClipboardIcon;","import * as React from \"react\";\n\nexport interface PencilIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst PencilIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: PencilIconProps): JSX.Element => (\n \n \n \n);\n\nexport default PencilIcon;","import * as React from \"react\";\n\nexport interface AddIconProps {\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ResetIcon = ({\n className = \"\",\n style = {},\n onClick\n}: AddIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ResetIcon;","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4901);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","timeout","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","innerText","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CountdownMode","bounds","NoticeComponent","React","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","right","bottom","showInSecondSlot","startCountdown","noticeStyle","userSelect","className","extraClass","onMouseEnter","onMouseLeave","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","prideTheme","limitWidth","hideLogo","getURL","fill","logoFill","float","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","close","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","cursor","textDecoration","icon","getTextElements","textParts","textPart","rel","SelectOptionComponent","label","htmlFor","onChange","option","showResetButton","onReset","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","CompileConfig","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","downvotedSegments","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","LoadingStatus","loadRetryCount","loadSegments","updating","segmentsLoaded","setStatus","NoVideo","SegmentsFound","JSError","NoSegmentsFound","ConnectionError","StillLoading","setVideoID","Video","setCurrentTime","setChanelIDInfo","channelAuthor","setCurrentTabSkipProfile","currentTabSkipProfileID","setSegments","sponsorTimes","segment","SponsorSourceType","Server","actionType","ActionType","Full","setLoopedChapter","loopedChapter","active","currentWindow","setupComPort","port","connect","onDisconnect","msg","SkipProfileButton","menuOpen","setMenuOpen","channelSkipProfileSet","getSkipProfileIDForChannel","skipProfileSet","getSkipProfileID","role","tabIndex","setShowForceChannelCheckWarning","viewBox","SkipProfileMenu","open","PopupComponent","Loading","extensionEnabled","setExtensionEnabled","showForceChannelCheckWarning","showNoticeButton","setShowNoticeButton","segments","forwardClickEvents","getVideoStatusText","stopAnimation","SegmentListComponent","SegmentSubmissionComponent","YourWorkComponent","logs","copyToClipboardPopup","generateDebugDetails","origin","endsWith","skipProfileOptions","getSkipProfileIDForTime","getSkipProfileIDForTab","getSkipProfileIDForVideo","configID","setConfigID","selectedSkipProfileAction","setSelectedSkipProfileAction","allSkipProfiles","setAllSkipProfiles","getChannelIDInfo","isOnYTTV","position","hash","updateSkipProfileSetting","SkipProfileRadioButtons","setSelected","updateConfig","alreadySelected","highlighted","overridden","SkipOptionActionComponent","getVideoID","SegmentListTab","isSegment","Chapter","isChapter","SegmentListItem","tabFilter","voteMessage","setVoteMessage","hidden","setHidden","SponsorHideType","Visible","isLooped","setIsLooped","UUID","extraInfo","Downvoted","MinimumDuration","Hidden","onDoubleClick","skipSegment","selectSegment","backgroundColor","category","description","shortCategoryName","margin","getFormattedTime","Poi","vote","segmentIDData","asyncRequestToServer","logRequest","loopChapter","Skip","Mute","newState","innerChapters","InnerChapterList","chapters","chapter","messageDuration","formatJSErrorMessage","getShortErrorMessage","ImportSegments","importMenuVisible","setImportMenuVisible","textArea","exportTimes","referenceNode","minWidth","rows","setTab","setIsVip","hasSegments","hasChapters","setTabBasedOnConfig","preferChapters","Chapters","segmentsWithNesting","chapterStack","seg","lastChapter","showSubmitButton","setShowSubmitButton","showStartSegment","setShowStartSegment","textAlign","SubmissionCounts","isSettingUsername","submissionCount","TimeSavedMessage","viewCount","toLocaleString","getFormattedHours","DonateMessage","alignItems","justifyContent","paddingLeft","onClose","round","years","days","setIsSettingUsername","username","setUsername","newUsername","setNewUsername","usernameSubmissionStatus","setUsernameSubmissionStatus","setSubmissionCount","setViewCount","setMinutesSaved","showDonateMessage","setShowDonateMessage","publicUserID","userInfo","userName","segmentCount","vip","clipboard","writeText","placeholder","utils","contentContainer","noticeRef","findReferenceNode","noticeElement","prepend","root","update","textBoxes","maxHeight","getMessageBoxes","getButtons","xmlns","points","ActionTypes","backgroundScriptContainer","wait","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","enable","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","other","endOverlaps","other1","other2","getTimestampsDuration","getSponsorIndexFromUUID","getSponsorTimeFromUUID","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","extension","inIncognitoContext","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","uuid","autoSkip","categoryName","messageId","DEFAULT_CATEGORY","inTest","chapterNames","categoryList","names","exportTime","removeIf","matchers","matcher","YouTube","Autogenerated","videoDuration","lines","timeRegex","anyLineHasTime","line","getFormattedTimeToSeconds","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","Local","generateUserID","hashparamSegments","address","testingServerAddress","sendRequestToCustomServer","currentTabSkipProfile","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/firefox/6.0.3/background.js.map b/firefox/6.0.3/background.js.map new file mode 100644 index 00000000..6fb80340 --- /dev/null +++ b/firefox/6.0.3/background.js.map @@ -0,0 +1 @@ +{"version":3,"file":"background.js","mappings":"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","sources":["webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/tab-updates.ts","webpack:///./src/background.ts","webpack:///./src/config.ts","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/requests.ts","webpack:///./node_modules/webext-polyfill-kinda/index.js","webpack:///./node_modules/webext-patterns/index.js","webpack:///./node_modules/webext-content-scripts/index.js","webpack:///./node_modules/content-scripts-register-polyfill/ponyfill.js","webpack:///./node_modules/content-scripts-register-polyfill/index.js","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage } from \"./config\";\n\nfunction onTabUpdatedListener(tabId: number) {\n chrome.tabs.sendMessage(tabId, {\n message: 'update',\n }, () => void chrome.runtime.lastError ); // Suppress error on Firefox\n}\n\nfunction onNavigationApiAvailableChange(changes: {[key: string]: chrome.storage.StorageChange}) {\n if (changes.navigationApiAvailable) {\n if (changes.navigationApiAvailable.newValue) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n } else {\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n }\n }\n}\n\nexport function setupTabUpdates(config: ProtoConfig) {\n // If Navigation API is not supported, then background has to inform content script about video change.\n // This happens on Safari, Firefox, and Chromium 101 (inclusive) and below.\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n void waitFor(() => config.local !== null).then(() => {\n if (config.local!.navigationApiAvailable) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n }\n });\n\n if (!config.configSyncListeners.includes(onNavigationApiAvailableChange)) {\n config.configSyncListeners.push(onNavigationApiAvailableChange);\n }\n}","import * as CompileConfig from \"../config.json\";\n\nimport Config from \"./config\";\nimport { Registration } from \"./types\";\nimport \"content-scripts-register-polyfill\";\nimport { sendRealRequestToCustomServer, serializeOrStringify, setupBackgroundRequestProxy } from \"../maze-utils/src/background-request-proxy\";\nimport { setupTabUpdates } from \"../maze-utils/src/tab-updates\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\n\nimport Utils from \"./utils\";\nimport { getExtensionIdsToImportFrom } from \"./utils/crossExtension\";\nimport { isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { injectUpdatedScripts } from \"../maze-utils/src/cleanup\";\nimport { logWarn } from \"./utils/logger\";\nimport { chromeP } from \"../maze-utils/src/browserApi\";\nimport { getHash } from \"../maze-utils/src/hash\";\nconst utils = new Utils({\n registerFirefoxContentScript,\n unregisterFirefoxContentScript\n});\n\nconst popupPort: Record = {};\n\n// Used only on Firefox, which does not support non persistent background pages.\nconst contentScriptRegistrations = {};\n\n// Register content script if needed\nutils.wait(() => Config.isReady()).then(function() {\n if (Config.config.supportInvidious) utils.setupExtraSiteContentScripts();\n});\n\nsetupBackgroundRequestProxy();\nsetupTabUpdates(Config);\n\nchrome.runtime.onMessage.addListener(function (request, sender, callback) {\n switch(request.message) {\n case \"openConfig\":\n chrome.tabs.create({url: chrome.runtime.getURL('options/options.html' + (request.hash ? '#' + request.hash : ''))});\n return false;\n case \"openHelp\":\n chrome.tabs.create({url: chrome.runtime.getURL('help/index.html')});\n return false;\n case \"openPage\":\n chrome.tabs.create({url: chrome.runtime.getURL(request.url)});\n return false;\n case \"submitVote\":\n submitVote(request.type, request.UUID, request.category, request.videoID).then(callback);\n\n //this allows the callback to be called later\n return true;\n case \"registerContentScript\":\n registerFirefoxContentScript(request);\n return false;\n case \"unregisterContentScript\":\n unregisterFirefoxContentScript(request.id)\n return false;\n case \"tabs\": {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n chrome.tabs.sendMessage(\n tabs[0].id,\n request.data,\n (response) => {\n callback(response);\n }\n );\n });\n return true;\n }\n case \"time\":\n case \"infoUpdated\":\n case \"videoChanged\":\n if (sender.tab) {\n try {\n popupPort[sender.tab.id]?.postMessage(request);\n } catch (e) {\n // This can happen if the popup is closed\n }\n }\n return false;\n default:\n return false;\n\t}\n});\n\nchrome.runtime.onMessageExternal.addListener((request, sender, callback) => {\n if (getExtensionIdsToImportFrom().includes(sender.id)) {\n if (request.message === \"requestConfig\") {\n callback({\n userID: Config.config.userID,\n allowExpirements: Config.config.allowExpirements,\n showDonationLink: Config.config.showDonationLink,\n showUpsells: Config.config.showUpsells,\n darkMode: Config.config.darkMode,\n })\n }\n }\n});\n\nchrome.runtime.onConnect.addListener((port) => {\n if (port.name === \"popup\") {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n popupPort[tabs[0].id] = port;\n });\n }\n});\n\n//add help page on install\nchrome.runtime.onInstalled.addListener(function () {\n // This let's the config sync to run fully before checking.\n // This is required on Firefox\n setTimeout(async () => {\n const userID = Config.config.userID;\n\n // If there is no userID, then it is the first install.\n if (!userID && !Config.local.alreadyInstalled){\n //open up the install page\n chrome.tabs.create({url: chrome.runtime.getURL(\"/help/index.html\")});\n\n //generate a userID\n const newUserID = generateUserID();\n //save this UUID\n Config.config.userID = newUserID;\n Config.local.alreadyInstalled = true;\n\n // Don't show update notification\n Config.config.categoryPillUpdate = true;\n }\n\n if (Config.config.supportInvidious) {\n if (!(await utils.containsInvidiousPermission())) {\n chrome.tabs.create({url: chrome.runtime.getURL(\"/permissions/index.html\")});\n }\n }\n\n getHash(Config.config!.userID!).then((userID) => {\n if (userID == \"60eed03c8644b7efa32df06977b3a4c11b62f63518e74a0e29baa1fd449cb54f\") {\n Config.config.prideTheme = true;\n }\n });\n }, 1500);\n\n if (!isFirefoxOrSafari()) {\n injectUpdatedScripts().catch(logWarn);\n\n waitFor(() => Config.isReady()).then(() => {\n if (Config.config.supportInvidious) {\n injectUpdatedScripts([\n utils.getExtraSiteRegistration()\n ])\n }\n }).catch(logWarn);\n }\n});\n\n/**\n * Only works on Firefox.\n * Firefox requires that it be applied after every extension restart.\n *\n * @param {JSON} options\n */\nasync function registerFirefoxContentScript(options: Registration) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n const existingRegistrations = await chromeP.scripting.getRegisteredContentScripts({\n ids: [options.id]\n }).catch(() => []);\n\n if (existingRegistrations && existingRegistrations.length > 0 \n && options.matches.every((match) => existingRegistrations[0].matches.includes(match))) {\n // No need to register another script, already registered\n return;\n }\n }\n\n await unregisterFirefoxContentScript(options.id);\n\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n await chromeP.scripting.registerContentScripts([{\n id: options.id,\n runAt: \"document_start\",\n matches: options.matches,\n allFrames: options.allFrames,\n js: options.js,\n css: options.css,\n persistAcrossSessions: true,\n }]);\n } else {\n chrome.contentScripts.register({\n allFrames: options.allFrames,\n js: options.js?.map?.(file => ({file})),\n css: options.css?.map?.(file => ({file})),\n matches: options.matches\n }).then((registration) => void (contentScriptRegistrations[options.id] = registration));\n }\n\n}\n\n/**\n * Only works on Firefox.\n * Firefox requires that this is handled by the background script\n */\nasync function unregisterFirefoxContentScript(id: string) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n try {\n await chromeP.scripting.unregisterContentScripts({\n ids: [id]\n });\n } catch (e) {\n // Not registered yet\n }\n } else {\n if (contentScriptRegistrations[id]) {\n contentScriptRegistrations[id].unregister();\n delete contentScriptRegistrations[id];\n }\n }\n}\n\nasync function submitVote(type: number, UUID: string, category: string, videoID: string) {\n let userID = Config.config.userID;\n\n if (userID == undefined || userID === \"undefined\") {\n //generate one\n userID = generateUserID();\n Config.config.userID = userID;\n }\n\n const typeSection = (type !== undefined) ? \"&type=\" + type : \"&category=\" + category;\n\n try {\n const response = await asyncRequestToServer(\"POST\", \"/api/voteOnSponsorTime?UUID=\" + UUID + \"&videoID=\" + videoID + \"&userID=\" + userID + typeSection);\n\n return {\n status: response.status,\n ok: response.ok,\n responseText: await response.text(),\n };\n } catch (e) {\n console.error(\"Error while voting:\", e);\n return {\n error: serializeOrStringify(e),\n };\n }\n}\n\n\nasync function asyncRequestToServer(type: string, address: string, data = {}) {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRealRequestToCustomServer(type, serverAddress + address, data));\n}\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","function NestedProxy(target) {\n\treturn new Proxy(target, {\n\t\tget(target, prop) {\n\t\t\tif (!target[prop]) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof target[prop] !== 'function') {\n\t\t\t\treturn new NestedProxy(target[prop]);\n\t\t\t}\n\n\t\t\treturn (...arguments_) =>\n\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\ttarget[prop](...arguments_, result => {\n\t\t\t\t\t\tif (chrome.runtime.lastError) {\n\t\t\t\t\t\t\treject(new Error(chrome.runtime.lastError.message));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t});\n}\n\nconst chromeP = globalThis.chrome && new NestedProxy(globalThis.chrome);\n\nexport default chromeP;\n","import escapeStringRegexp from 'escape-string-regexp';\n// Copied from https://github.com/mozilla/gecko-dev/blob/073cc24f53d0cf31403121d768812146e597cc9d/toolkit/components/extensions/schemas/manifest.json#L487-L491\nexport const patternValidationRegex = /^(https?|wss?|file|ftp|\\*):\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^file:\\/\\/\\/.*$|^resource:\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^about:/;\nconst isFirefox = typeof navigator === 'object' && navigator.userAgent.includes('Firefox/');\nexport const allStarsRegex = isFirefox\n ? /^(https?|wss?):[/][/][^/]+([/].*)?$/\n : /^https?:[/][/][^/]+([/].*)?$/;\nexport const allUrlsRegex = /^(https?|file|ftp):[/]+/;\nfunction getRawPatternRegex(matchPattern) {\n if (!patternValidationRegex.test(matchPattern)) {\n throw new Error(matchPattern + ' is an invalid pattern, it must match ' + String(patternValidationRegex));\n }\n let [, protocol, host, pathname] = matchPattern.split(/(^[^:]+:[/][/])([^/]+)?/);\n protocol = protocol\n .replace('*', isFirefox ? '(https?|wss?)' : 'https?') // Protocol wildcard\n .replace(/[/]/g, '[/]'); // Escape slashes\n host = (host !== null && host !== void 0 ? host : '') // Undefined for file:///\n .replace(/^[*][.]/, '([^/]+.)*') // Initial wildcard\n .replace(/^[*]$/, '[^/]+') // Only wildcard\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]$/g, '[^.]+'); // Last wildcard\n pathname = pathname\n .replace(/[/]/g, '[/]') // Escape slashes\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]/g, '.*'); // Any wildcard\n return '^' + protocol + host + '(' + pathname + ')?$';\n}\nexport function patternToRegex(...matchPatterns) {\n // No pattern, match nothing https://stackoverflow.com/q/14115522/288906\n if (matchPatterns.length === 0) {\n return /$./;\n }\n if (matchPatterns.includes('')) {\n return allUrlsRegex;\n }\n if (matchPatterns.includes('*://*/*')) {\n return allStarsRegex;\n }\n return new RegExp(matchPatterns.map(x => getRawPatternRegex(x)).join('|'));\n}\n// The parens are required by .split() to preserve the symbols\nconst globSymbols = /([?*]+)/;\nfunction splitReplace(part, index) {\n if (part === '') {\n // Shortcut for speed\n return '';\n }\n if (index % 2 === 0) {\n // Raw text, escape it\n return escapeStringRegexp(part);\n }\n // Else: Symbol\n if (part.includes('*')) { // Can be more than one and it swallows surrounding question marks\n return '.*';\n }\n return [...part].map(() => isFirefox ? '.' : '.?').join('');\n}\nfunction getRawGlobRegex(glob) {\n const regexString = glob\n .split(globSymbols)\n // eslint-disable-next-line unicorn/no-array-callback-reference -- tis ok 🤫\n .map(splitReplace)\n .join('');\n // Drop \"start with anything\" and \"end with anything\" sequences because they're the default for regex\n return ('^' + regexString + '$')\n .replace(/^[.][*]/, '')\n .replace(/[.][*]$/, '')\n .replace(/^[$]$/, '.+'); // Catch `*` and `*`\n}\nexport function globToRegex(...globs) {\n // No glob, match anything; `include_globs: []` is the default\n if (globs.length === 0) {\n return /.*/;\n }\n return new RegExp(globs.map(x => getRawGlobRegex(x)).join('|'));\n}\nexport function excludeDuplicatePatterns(matchPatterns) {\n if (matchPatterns.includes('')) {\n return [''];\n }\n if (matchPatterns.includes('*://*/*')) {\n return ['*://*/*'];\n }\n return matchPatterns.filter(possibleSubset => !matchPatterns.some(possibleSuperset => possibleSubset !== possibleSuperset && patternToRegex(possibleSuperset).test(possibleSubset)));\n}\n","import chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst gotScripting = Boolean(globalThis.chrome?.scripting);\nfunction castTarget(target) {\n return typeof target === 'object' ? target : {\n tabId: target,\n frameId: 0,\n };\n}\nfunction castAllFramesTarget(target) {\n if (typeof target === 'object') {\n return { ...target, allFrames: false };\n }\n return {\n tabId: target,\n frameId: undefined,\n allFrames: true,\n };\n}\nfunction castArray(possibleArray) {\n if (Array.isArray(possibleArray)) {\n return possibleArray;\n }\n return [possibleArray];\n}\nconst nativeFunction = /^function \\w+\\(\\) {[\\n\\s]+\\[native code][\\n\\s]+}/;\nexport async function executeFunction(target, function_, ...args) {\n if (nativeFunction.test(String(function_))) {\n throw new TypeError('Native functions need to be wrapped first, like `executeFunction(1, () => alert(1))`');\n }\n const { frameId, tabId } = castTarget(target);\n if (gotScripting) {\n const [injection] = await chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: [frameId],\n },\n func: function_,\n args,\n });\n return injection?.result;\n }\n const [result] = await chromeP.tabs.executeScript(tabId, {\n code: `(${function_.toString()})(...${JSON.stringify(args)})`,\n frameId,\n });\n return result;\n}\nfunction arrayOrUndefined(value) {\n return value === undefined ? undefined : [value];\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention -- It follows the native naming\nexport async function insertCSS({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const everyInsertion = Promise.all(files.map(async (content) => {\n if (typeof content === 'string') {\n content = { file: content };\n }\n if (gotScripting) {\n return chrome.scripting.insertCSS({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: 'file' in content ? [content.file] : undefined,\n css: 'code' in content ? content.code : undefined,\n });\n }\n return chromeP.tabs.insertCSS(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt: runAt ?? 'document_start', // CSS should prefer `document_start` when unspecified\n });\n }));\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(everyInsertion);\n }\n else {\n await everyInsertion;\n }\n}\nfunction assertNoCode(files) {\n if (files.some(content => 'code' in content)) {\n throw new Error('chrome.scripting does not support injecting strings of `code`');\n }\n}\nexport async function executeScript({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const normalizedFiles = files.map(file => typeof file === 'string' ? { file } : file);\n if (gotScripting) {\n assertNoCode(normalizedFiles);\n const injection = chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: normalizedFiles.map(({ file }) => file),\n });\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(injection);\n }\n else {\n await injection;\n }\n // Don't return `injection`; the \"return value\" of a file is generally not useful\n return;\n }\n // Don't use .map(), `code` injections can't be \"parallel\"\n const executions = [];\n for (const content of normalizedFiles) {\n // Files are executed in order, but `code` isn’t, so it must await the last script before injecting more\n if ('code' in content) {\n // eslint-disable-next-line no-await-in-loop -- On purpose, see above\n await executions.at(-1);\n }\n executions.push(chromeP.tabs.executeScript(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt,\n }));\n }\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(Promise.all(executions));\n }\n else {\n await Promise.all(executions);\n }\n}\nexport async function getTabsByUrl(matches, excludeMatches) {\n if (matches.length === 0) {\n return [];\n }\n const exclude = excludeMatches ? patternToRegex(...excludeMatches) : undefined;\n const tabs = await chromeP.tabs.query({ url: matches });\n return tabs\n .filter(tab => tab.id && tab.url && (exclude ? !exclude.test(tab.url) : true))\n .map(tab => tab.id);\n}\nexport async function injectContentScript(where, scripts, options = {}) {\n const targets = castArray(where);\n await Promise.all(targets.map(async (target) => injectContentScriptInSpecificTarget(castAllFramesTarget(target), scripts, options)));\n}\nasync function injectContentScriptInSpecificTarget({ frameId, tabId, allFrames }, scripts, options = {}) {\n const injections = castArray(scripts).flatMap(script => [\n insertCSS({\n tabId,\n frameId,\n allFrames,\n files: script.css ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n executeScript({\n tabId,\n frameId,\n allFrames,\n files: script.js ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n ]);\n await Promise.all(injections);\n}\n// Sourced from:\n// https://source.chromium.org/chromium/chromium/src/+/main:extensions/common/extension_urls.cc;drc=6b42116fe3b3d93a77750bdcc07948e98a728405;l=29\n// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts\nconst blockedPrefixes = [\n 'chrome.google.com/webstore',\n 'accounts-static.cdn.mozilla.net',\n 'accounts.firefox.com',\n 'addons.cdn.mozilla.net',\n 'addons.mozilla.org',\n 'api.accounts.firefox.com',\n 'content.cdn.mozilla.net',\n 'discovery.addons.mozilla.org',\n 'input.mozilla.org',\n 'install.mozilla.org',\n 'oauth.accounts.firefox.com',\n 'profile.accounts.firefox.com',\n 'support.mozilla.org',\n 'sync.services.mozilla.com',\n 'testpilot.firefox.com',\n];\nexport function isScriptableUrl(url) {\n if (!url.startsWith('http')) {\n return false;\n }\n const cleanUrl = url.replace(/^https?:\\/\\//, '');\n return blockedPrefixes.every(blocked => !cleanUrl.startsWith(blocked));\n}\nconst targetErrors = /^No frame with id \\d+ in tab \\d+.$|^No tab with id: \\d+.$|^The tab was closed.$|^The frame was removed.$/;\nasync function catchTargetInjectionErrors(promise) {\n try {\n await promise;\n }\n catch (error) {\n // @ts-expect-error Optional chaining is good enough\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!targetErrors.test(error?.message)) {\n throw error;\n }\n }\n}\n","import { injectContentScript } from 'webext-content-scripts';\nimport chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst noMatchesError = 'Type error for parameter contentScriptOptions (Error processing matches: Array requires at least 1 items; you have 0) for contentScripts.register.';\nconst noPermissionError = 'Permission denied to register a content script for ';\nconst gotNavigation = typeof chrome === 'object' && 'webNavigation' in chrome;\nasync function isOriginPermitted(url) {\n return chromeP.permissions.contains({\n origins: [new URL(url).origin + '/*'],\n });\n}\n// The callback is only used by webextension-polyfill\nexport default async function registerContentScript(contentScriptOptions, callback) {\n const { js = [], css = [], matchAboutBlank, matches = [], excludeMatches, runAt, } = contentScriptOptions;\n let { allFrames } = contentScriptOptions;\n if (gotNavigation) {\n allFrames = false;\n }\n else if (allFrames) {\n console.warn('`allFrames: true` requires the `webNavigation` permission to work correctly: https://github.com/fregante/content-scripts-register-polyfill#permissions');\n }\n if (matches.length === 0) {\n throw new Error(noMatchesError);\n }\n await Promise.all(matches.map(async (pattern) => {\n if (!await chromeP.permissions.contains({ origins: [pattern] })) {\n throw new Error(noPermissionError + pattern);\n }\n }));\n const matchesRegex = patternToRegex(...matches);\n const excludeMatchesRegex = patternToRegex(...excludeMatches !== null && excludeMatches !== void 0 ? excludeMatches : []);\n const inject = async (url, tabId, frameId = 0) => {\n if (!matchesRegex.test(url) // Manual `matches` glob matching\n || excludeMatchesRegex.test(url) // Manual `exclude_matches` glob matching\n || !await isOriginPermitted(url) // Without this, we might have temporary access via accessTab\n ) {\n return;\n }\n await injectContentScript({\n tabId,\n frameId,\n }, {\n css,\n js,\n matchAboutBlank,\n runAt,\n }, {\n ignoreTargetErrors: true,\n });\n };\n const tabListener = async (tabId, { status }, { url }) => {\n // Only status updates are relevant\n // No URL = no permission\n if (status === 'loading' && url) {\n void inject(url, tabId);\n }\n };\n const navListener = async ({ tabId, frameId, url, }) => {\n void inject(url, tabId, frameId);\n };\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.addListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.addListener(tabListener);\n }\n const registeredContentScript = {\n async unregister() {\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.removeListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.removeListener(tabListener);\n }\n },\n };\n if (typeof callback === 'function') {\n callback(registeredContentScript);\n }\n return registeredContentScript;\n}\n","/// \n// The .js extension is required to create ESM-compatible file\nimport register from './ponyfill.js';\nif (typeof chrome === 'object' && !chrome.contentScripts) {\n chrome.contentScripts = { register };\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(1398);\n"],"names":["sendRealRequestToCustomServer","type","url","data","headers","toLowerCase","objectToURI","fetch","method","redirect","body","JSON","stringify","isSerializable","value","window","structuredClone","serializeOrStringify","toString","String","chrome","runtime","onMessage","addListener","request","sender","callback","message","then","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","Array","from","Uint8Array","arrayBuffer","responseText","text","responseBinary","returnHeaders","entries","reduce","acc","key","status","ok","catch","error","console","getHash","times","e","Promise","resolve","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","cleanupListeners","getCleanupId","id","listener","push","source","started","performance","now","postMessage","addEventListener","extraScripts","ignoreNormalScipts","scripts","concat","getManifest","content_scripts","cs","tab","tabs","query","matches","css","length","scripting","insertCSS","target","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","match","replace","file","navigator","vendor","formatKey","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","Date","add","delayUpdate","items","clear","map","v","k","setTimeout","get","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","location","href","includes","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","isVisible","element","ignoreWidth","tagName","classList","contains","document","querySelectorAll","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","left","width","top","height","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","textContent","trim","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","node","possibleElements","disconnect","MutationObserver","observe","documentElement","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","Math","max","hours","floor","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","isNaN","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","digest","TextEncoder","encode","b","padStart","join","condition","timeout","check","interval","intervalCheck","clearInterval","Error","stack","setInterval","includeQuestionMark","counter","seperator","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","version","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","random","localizedTitle","title","localizedMessage","innerHTML","onTabUpdatedListener","onNavigationApiAvailableChange","navigationApiAvailable","onUpdated","removeListener","waitFor","utils","registerFirefoxContentScript","unregisterFirefoxContentScript","popupPort","contentScriptRegistrations","options","existingRegistrations","getRegisteredContentScripts","ids","every","registerContentScripts","runAt","allFrames","persistAcrossSessions","contentScripts","register","registration","unregisterContentScripts","unregister","wait","supportInvidious","setupExtraSiteContentScripts","setupBackgroundRequestProxy","setupTabUpdates","create","getURL","hash","UUID","category","videoID","userID","generateUserID","typeSection","address","serverAddress","testingServer","CompileConfig","testingServerAddress","asyncRequestToServer","submitVote","active","currentWindow","onMessageExternal","getExtensionIdsToImportFrom","allowExpirements","showDonationLink","showUpsells","darkMode","onConnect","port","name","onInstalled","alreadyInstalled","newUserID","categoryPillUpdate","containsInvidiousPermission","prideTheme","injectUpdatedScripts","logWarn","getExtraSiteRegistration","ConfigClass","ProtoConfig","resetToDefault","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","ytInfoPermissionGranted","showPopupDonationCount","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","hookUpdate","showChapterInfoMessage","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","s","channelID","keys","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","removeExtraSiteRegistration","applyInvidiousPermissions","enable","getMergedTimestamps","timestamps","deduped","forEach","range","startOverlaps","findIndex","other","endOverlaps","other1","splice","other2","min","slice","getTimestampsDuration","getSponsorIndexFromUUID","sponsorTimes","startsWith","getSponsorTimeFromUUID","domains","permissionRegex","findReferenceNode","referenceNode","findValidElementFromSelector","player","getElementById","firstChild","index","children","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","hidden","extension","inIncognitoContext","segmentIDData","formatJSErrorMessage","logRequest","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","segments","lastAccess","existingData","segment","uuid","Visible","indexOf","extensionImportList","safari","firefox","chromium","extensionIds","count","toISOString","log","sendRequestToCustomServer","globalThis","NestedProxy","arguments_","patternValidationRegex","isFirefox","allStarsRegex","allUrlsRegex","matchPatterns","RegExp","x","matchPattern","test","host","pathname","split","getRawPatternRegex","gotScripting","castArray","possibleArray","isArray","arrayOrUndefined","async","frameId","matchAboutBlank","ignoreTargetErrors","everyInsertion","content","frameIds","catchTargetInjectionErrors","normalizedFiles","assertNoCode","injection","executions","at","targetErrors","gotNavigation","contentScriptOptions","excludeMatches","pattern","matchesRegex","excludeMatchesRegex","inject","URL","origin","isOriginPermitted","where","targets","injections","flatMap","match_about_blank","run_at","injectContentScriptInSpecificTarget","castAllFramesTarget","injectContentScript","tabListener","navListener","webNavigation","onCommitted","registeredContentScript","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/firefox/6.0.3/content.js.LICENSE.txt b/firefox/6.0.3/content.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/firefox/6.0.3/content.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/firefox/6.0.3/content.js.map b/firefox/6.0.3/content.js.map new file mode 100644 index 00000000..8cb63cc0 --- /dev/null +++ b/firefox/6.0.3/content.js.map @@ -0,0 +1 @@ +{"version":3,"file":"content.js","mappings":"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","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/animationUtils.ts","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/components/Tooltip.tsx","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/CategoryPillComponent.tsx","webpack:///./src/components/ChapterVoteComponent.tsx","webpack:///./src/components/NoticeComponent.tsx","webpack:///./src/components/NoticeTextSectionComponent.tsx","webpack:///./src/components/SelectorComponent.tsx","webpack:///./src/components/SkipNoticeComponent.tsx","webpack:///./src/components/SponsorTimeEditComponent.tsx","webpack:///./src/components/SubmissionNoticeComponent.tsx","webpack:///./src/config.ts","webpack:///./src/content.ts","webpack:///./src/dearrowPromotion.ts","webpack:///./src/js-components/previewBar.ts","webpack:///./src/js-components/skipButtonControlBar.ts","webpack:///./src/render/CategoryPill.tsx","webpack:///./src/render/ChapterVote.tsx","webpack:///./src/render/GenericNotice.tsx","webpack:///./src/render/RectangleTooltip.tsx","webpack:///./src/render/SkipNotice.tsx","webpack:///./src/render/SubmissionNotice.tsx","webpack:///./src/render/Tooltip.tsx","webpack:///./src/render/UpcomingNotice.tsx","webpack:///./src/svg-icons/pencil_svg.tsx","webpack:///./src/svg-icons/sb_svg.tsx","webpack:///./src/svg-icons/thumbs_down_svg.tsx","webpack:///./src/svg-icons/thumbs_up_svg.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/arrayUtils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/compatibility.ts","webpack:///./src/utils/constants.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/genericUtils.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/mobileUtils.ts","webpack:///./src/utils/noticeUtils.ts","webpack:///./src/utils/pageCleaner.ts","webpack:///./src/utils/pageUtils.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/segmentData.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///./src/utils/thumbnails.ts","webpack:///./src/utils/urlParser.ts","webpack:///./src/utils/videoLabels.ts","webpack:///./src/utils/warnings.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n"," /**\n * Starts a spinning animation and returns a function to be called when it should be stopped\n * The callback will be called when the animation is finished \n * It waits until a full rotation is complete\n */\nfunction applyLoadingAnimation(element: HTMLElement, time: number, callback?: () => void): () => Promise {\n element.style.animation = `rotate ${time}s 0s infinite`;\n\n return async () => new Promise((resolve) => {\n // Make the animation finite\n element.style.animation = `rotate ${time}s`;\n\n // When the animation is over, hide the button\n const animationEndListener = () => {\n if (callback) callback();\n\n element.style.animation = \"none\";\n\n element.removeEventListener(\"animationend\", animationEndListener);\n\n resolve();\n };\n\n element.addEventListener(\"animationend\", animationEndListener);\n });\n}\n\nfunction setupCustomHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): { hide: () => void; show: () => void } {\n if (enabled) element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n element.classList.add(\"animationDone\");\n if (!rightSlide) element.classList.add(\"autoHideLeft\");\n\n let mouseEntered = false;\n\n return {\n hide: () => {\n mouseEntered = false;\n if (element.classList.contains(\"autoHiding\")) {\n element.classList.add(\"sbhidden\");\n }\n },\n show: () => {\n mouseEntered = true;\n element.classList.remove(\"animationDone\");\n\n // Wait for next event loop\n setTimeout(() => {\n if (mouseEntered) element.classList.remove(\"sbhidden\")\n }, 10);\n }\n };\n}\n\nfunction setupAutoHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): void {\n const { hide, show } = this.setupCustomHideAnimation(element, container, enabled, rightSlide);\n\n container.addEventListener(\"mouseleave\", () => hide());\n container.addEventListener(\"mouseenter\", () => show());\n}\n\nfunction enableAutoHideAnimation(element: Element): void {\n element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n}\n\nfunction disableAutoHideAnimation(element: Element): void {\n element.classList.remove(\"autoHiding\");\n element.classList.remove(\"sbhidden\");\n}\n\nexport const AnimationUtils = {\n applyLoadingAnimation,\n setupAutoHideAnimation,\n setupCustomHideAnimation,\n enableAutoHideAnimation,\n disableAutoHideAnimation\n};","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ButtonListener } from \"./component-types\";\nimport { isFirefoxOrSafari } from \"..\";\nimport { isSafari } from \"../config\";\n\nexport interface TooltipProps {\n text?: string;\n textBoxes?: string[];\n link?: string;\n linkOnClick?: () => void;\n secondButtonOnClick?: () => void;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n topOffset?: string;\n leftOffset?: string;\n rightOffset?: string;\n zIndex?: number;\n innerBottomMargin?: string;\n timeout?: number;\n opacity?: number;\n displayTriangle?: boolean;\n topTriangle?: boolean;\n extraClass?: string;\n showLogo?: boolean;\n showGotIt?: boolean;\n secondButtonText?: string;\n center?: boolean;\n positionRealtive?: boolean;\n containerAbsolute?: boolean;\n buttons?: ButtonListener[];\n elements?: JSX.Element[];\n buttonsAtBottom?: boolean;\n textBoxMaxHeight?: string;\n}\n\nexport class GenericTooltip {\n text?: string; \n container: HTMLDivElement;\n\n timer: NodeJS.Timeout;\n root: Root;\n \n constructor(props: TooltipProps, logoUrl: string) {\n props.bottomOffset ??= \"70px\";\n props.topOffset ??= \"inherit\";\n props.leftOffset ??= \"inherit\";\n props.rightOffset ??= \"inherit\";\n props.zIndex ??= 10000;\n props.innerBottomMargin ??= \"0px\";\n props.opacity ??= 0.7;\n props.displayTriangle ??= !props.topTriangle;\n props.topTriangle ??= false;\n props.extraClass ??= \"\";\n props.showLogo ??= true;\n props.showGotIt ??= true;\n props.positionRealtive ??= true;\n props.containerAbsolute ??= false;\n props.center ??= false;\n props.elements ??= [];\n props.buttonsAtBottom ??= false;\n props.textBoxes ??= [];\n props.textBoxMaxHeight ??= \"inherit\";\n this.text = props.text;\n\n this.container = document.createElement('div');\n this.container.id = \"sponsorTooltip\" + props.text;\n if (props.positionRealtive) this.container.style.position = \"relative\";\n if (props.containerAbsolute) this.container.style.position = \"absolute\";\n if (props.center) {\n if (isFirefoxOrSafari() && !isSafari()) {\n this.container.style.width = \"-moz-available\";\n } else {\n this.container.style.width = \"-webkit-fill-available\";\n }\n }\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n const backgroundColor = `rgba(28, 28, 28, ${props.opacity})`;\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n {props.showLogo ? \n \n \n : null}\n {this.text ? \n \n {this.getTextElements(this.text + (props.link ? \". \" : \"\"))}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : (props.linkOnClick ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null)}\n \n : null}\n\n {props.textBoxes ? props.textBoxes.map((text, index) => (\n
\n {text || String.fromCharCode(8203)} {/* Zero width space */}\n
\n )) : null}\n\n {props.elements}\n\n {!props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n
\n\n {props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n\n {props.showGotIt ?\n \n : null}\n\n {\n props.secondButtonText ?\n \n : null\n }\n
\n )\n }\n\n private getTextElements(text: string): JSX.Element[] {\n if (!text.includes(\"\\n\")) return [<>{text}];\n\n const result: JSX.Element[] = [];\n\n for (const line of text.split(\"\\n\")) {\n result.push(\n
\n {line}\n
\n );\n }\n\n return result;\n }\n\n getButtons(buttons: ButtonListener[] | undefined, buttonsAtBottom: boolean): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n const style: React.CSSProperties = {};\n if (buttonsAtBottom) {\n style.float = \"right\";\n }\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return [];\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport Config from \"../config\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface CategoryPillProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n showTextByDefault: boolean;\n showTooltipOnClick: boolean;\n}\n\nexport interface CategoryPillState {\n segment?: SponsorTime;\n show: boolean;\n open?: boolean;\n}\n\nclass CategoryPillComponent extends React.Component {\n mainRef: React.MutableRefObject;\n tooltip?: Tooltip;\n\n constructor(props: CategoryPillProps) {\n super(props);\n\n this.mainRef = React.createRef();\n\n this.state = {\n segment: null,\n show: false,\n open: false\n };\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {\n backgroundColor: this.getColor(),\n display: this.state.show ? \"flex\" : \"none\",\n color: this.getTextColor(),\n }\n\n // To be able to remove the margin from the parent\n this.mainRef?.current?.parentElement?.classList?.toggle(\"cbPillOpen\", this.state.show);\n\n return (\n this.toggleOpen(e)}\n onMouseEnter={() => this.openTooltip()}\n onMouseLeave={() => this.closeTooltip()}\n ref={this.mainRef}>\n \n \n \n \n\n {\n (this.props.showTextByDefault || this.state.open) &&\n \n {chrome.i18n.getMessage(\"category_\" + this.state.segment?.category)}\n \n }\n \n\n {this.state.open && (\n <>\n {/* Upvote Button */}\n
this.vote(e, 1)}>\n \n
\n\n {/* Downvote Button */}\n
this.vote(event, 0)}>\n \n
\n \n )}\n\n {/* Close Button */}\n {\n this.setState({ show: false });\n this.closeTooltip();\n }}>\n \n
\n );\n }\n\n private toggleOpen(event: React.MouseEvent): void {\n event.stopPropagation();\n\n if (this.state.show) {\n if (this.props.showTooltipOnClick) {\n if (this.state.open) {\n this.closeTooltip();\n } else {\n this.openTooltip();\n }\n }\n\n this.setState({ open: !this.state.open });\n }\n }\n\n private async vote(event: React.MouseEvent, type: number): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response) {\n console.error(\"[SB] Caught error while attempting to vote on a FV label\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status === 429) {\n this.setState({\n open: false,\n show: type === 1\n });\n\n this.closeTooltip();\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on FV label\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n\n private getColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-preview-${category}, var(--sb-category-${category}))`;\n }\n\n private getTextColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`;\n }\n\n private openTooltip(): void {\n if (this.tooltip) {\n this.tooltip.close();\n }\n\n const tooltipMount = document.querySelector(\"#above-the-fold, ytm-slim-owner-renderer\") as HTMLElement;\n if (tooltipMount) {\n this.tooltip = new Tooltip({\n text: this.getTitleText(),\n referenceNode: tooltipMount,\n bottomOffset: \"0px\",\n opacity: 0.95,\n displayTriangle: false,\n showLogo: false,\n showGotIt: false,\n prependElement: tooltipMount.firstElementChild as HTMLElement\n });\n }\n }\n\n private closeTooltip(): void {\n this.tooltip?.close?.();\n this.tooltip = null;\n }\n\n getTitleText(): string {\n const shortDescription = chrome.i18n.getMessage(`category_${this.state.segment?.category}_pill`);\n return (shortDescription ? shortDescription + \". \": \"\") + chrome.i18n.getMessage(\"categoryPillTitleText\");\n }\n}\n\nexport default CategoryPillComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport { ActionType, Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface ChapterVoteProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n size?: string;\n}\n\nexport interface ChapterVoteState {\n segment?: SponsorTime;\n show: boolean;\n size?: string;\n}\n\nclass ChapterVoteComponent extends React.Component {\n tooltip?: Tooltip;\n\n constructor(props: ChapterVoteProps) {\n super(props);\n\n this.state = {\n segment: null,\n show: false,\n size: props.size ?? \"22px\"\n };\n }\n\n render(): React.ReactElement {\n if (this.tooltip && !this.state.show) {\n this.tooltip.close();\n this.tooltip = null;\n }\n\n return (\n <>\n {/* Upvote Button */}\n \n\n {/* Downvote Button */}\n \n \n );\n }\n\n private async vote(event: React.MouseEvent, type: number, element?: HTMLElement): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(element ?? event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response){\n console.error(\"[SB] Caught error while attempting to vote on a chapter\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status == 429) {\n this.setState({\n show: type === 1\n });\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on chapter\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n}\n\nexport default ChapterVoteComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport SbSvg from \"../svg-icons/sb_svg\";\n\nenum CountdownMode {\n Timer,\n Paused,\n Stopped\n}\n\nexport interface NoticeProps {\n noticeTitle: string;\n\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n amountOfPreviousNotices?: number;\n showInSecondSlot?: boolean;\n timed?: boolean;\n idSuffix?: string;\n\n fadeIn?: boolean;\n fadeOut?: boolean;\n startFaded?: boolean;\n firstColumn?: React.ReactElement[] | React.ReactElement;\n firstRow?: React.ReactElement;\n bottomRow?: React.ReactElement[];\n\n smaller?: boolean;\n limitWidth?: boolean;\n extraClass?: string;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n logoFill?: string;\n\n // Callback for when this is closed\n closeListener: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n zIndex?: number;\n style?: React.CSSProperties;\n biggerCloseButton?: boolean;\n children?: React.ReactNode;\n}\n\ninterface MouseDownInfo {\n x: number;\n y: number;\n right: number;\n bottom: number;\n}\n\nexport interface NoticeState {\n maxCountdownTime: () => number;\n\n countdownTime: number;\n countdownMode: CountdownMode;\n\n mouseHovering: boolean;\n\n startFaded: boolean;\n\n mouseDownInfo: MouseDownInfo | null;\n mouseMoved: boolean;\n right: number;\n bottom: number;\n}\n\n// Limits for dragging notice around\nconst bounds = [10, 100, 10, 10];\n\nclass NoticeComponent extends React.Component {\n countdownInterval: NodeJS.Timeout;\n\n idSuffix: string;\n\n amountOfPreviousNotices: number;\n\n parentRef: React.RefObject;\n\n handleMouseMoveBinded: (e: MouseEvent) => void = this.handleMouseMove.bind(this);\n\n constructor(props: NoticeProps) {\n super(props);\n\n this.parentRef = React.createRef();\n\n const maxCountdownTime = () => {\n if (this.props.maxCountdownTime) return this.props.maxCountdownTime();\n else return Config.config.skipNoticeDuration;\n };\n \n //the id for the setInterval running the countdown\n this.countdownInterval = null;\n\n this.amountOfPreviousNotices = props.amountOfPreviousNotices || 0;\n\n this.idSuffix = props.idSuffix || \"\";\n\n // Setup state\n this.state = {\n maxCountdownTime,\n\n //the countdown until this notice closes\n countdownTime: maxCountdownTime(),\n countdownMode: CountdownMode.Timer,\n mouseHovering: false,\n\n startFaded: this.props.startFaded ?? false,\n\n mouseDownInfo: null,\n mouseMoved: false,\n right: bounds[0],\n bottom: props.showInSecondSlot ? 290 : bounds[1]\n }\n }\n\n componentDidMount(): void {\n this.startCountdown();\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = {\n zIndex: this.props.zIndex || (1000 + this.amountOfPreviousNotices),\n right: this.state.right,\n bottom: this.state.bottom,\n userSelect: this.state.mouseDownInfo && this.state.mouseMoved ? \"none\" : \"auto\",\n ...(this.props.style ?? {})\n }\n\n return (\n
this.onMouseEnter(e) }\n onMouseLeave={() => {\n this.timerMouseLeave();\n }}\n onMouseDown={(e) => {\n document.addEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: {\n x: e.clientX,\n y: e.clientY,\n right: this.state.right,\n bottom: this.state.bottom\n },\n mouseMoved: false\n });\n }}\n onMouseUp={() => {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: null\n });\n }}\n ref={this.parentRef}\n style={noticeStyle} >\n
\n \n \n\n {/* First row */}\n \n {/* Left column */}\n \n\n {this.props.firstRow}\n\n {/* Right column */}\n {!this.props.hideRightInfo &&\n \n }\n \n\n {this.props.children}\n\n {!this.props.smaller && this.props.bottomRow ? \n this.props.bottomRow\n : null}\n\n \n
\n {/* Logo */}\n {!this.props.hideLogo &&\n (\n !Config.config.prideTheme ?\n \n :\n \n )\n }\n\n \n \n {this.props.noticeTitle}\n \n\n {this.props.firstColumn}\n \n \n {/* Time left */}\n {this.props.timed ? ( \n this.toggleManualPause()}\n className=\"sponsorSkipObject sponsorSkipNoticeTimeLeft\">\n\n {this.getCountdownElements()}\n\n \n ) : \"\"}\n \n\n {/* Close button */}\n this.close()}>\n \n
\n
\n\n {/* Add as a hidden table to keep the height constant */}\n {this.props.smaller && this.props.bottomRow ? \n \n \n {this.props.bottomRow}\n \n
\n : null}\n
\n );\n }\n\n getCountdownElements(): React.ReactElement[] {\n return [(\n \n {chrome.i18n.getMessage(\"NoticeTimeAfterSkip\").replace(\"{seconds}\", Math.ceil(this.state.countdownTime).toString())}\n \n ),(\n {chrome.i18n.getMessage(\"paused\")}\n ),(\n {chrome.i18n.getMessage(\"manualPaused\")}\n )];\n }\n\n onMouseEnter(event: React.MouseEvent): void {\n if (this.props.onMouseEnter) this.props.onMouseEnter(event);\n\n this.fadedMouseEnter();\n this.timerMouseEnter();\n }\n\n fadedMouseEnter(): void {\n if (this.state.startFaded) {\n this.setState({\n startFaded: false\n });\n }\n }\n\n timerMouseEnter(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.pauseCountdown();\n\n this.setState({\n mouseHovering: true\n });\n }\n\n timerMouseLeave(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.startCountdown();\n\n this.setState({\n mouseHovering: false\n });\n }\n\n toggleManualPause(): void {\n this.setState({\n countdownMode: this.state.countdownMode === CountdownMode.Stopped ? CountdownMode.Timer : CountdownMode.Stopped\n }, () => {\n if (this.state.countdownMode === CountdownMode.Stopped || this.state.mouseHovering) {\n this.pauseCountdown();\n } else {\n this.startCountdown();\n }\n });\n }\n\n //called every second to lower the countdown before hiding the notice\n countdown(): void {\n if (!this.props.timed) return;\n\n const countdownTime = Math.min(this.state.countdownTime - 1, this.state.maxCountdownTime());\n\n if (countdownTime <= 0) {\n //remove this from setInterval\n clearInterval(this.countdownInterval);\n\n //time to close this notice\n this.close();\n\n return;\n }\n\n if (countdownTime == 3 && this.props.fadeOut) {\n //start fade out animation\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice?.style.removeProperty(\"animation\");\n notice?.classList.add(\"sponsorSkipNoticeFadeOut\");\n }\n\n this.setState({\n countdownTime\n })\n }\n \n removeFadeAnimation(): void {\n //remove the fade out class if it exists\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice.classList.remove(\"sponsorSkipNoticeFadeOut\");\n notice.style.animation = \"none\";\n }\n\n pauseCountdown(): void {\n if (!this.props.timed || this.props.dontPauseCountdown) return;\n\n //remove setInterval\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n this.countdownInterval = null;\n\n //reset countdown and inform the user\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: this.state.countdownMode === CountdownMode.Timer ? CountdownMode.Paused : this.state.countdownMode\n });\n \n this.removeFadeAnimation();\n }\n\n startCountdown(): void {\n if (!this.props.timed) return;\n\n //if it has already started, don't start it again\n if (this.countdownInterval !== null) return;\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.setupInterval();\n }\n\n setupInterval(): void {\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n\n this.countdownInterval = setInterval(this.countdown.bind(this), 1000);\n }\n\n resetCountdown(): void {\n if (!this.props.timed) return;\n\n this.setupInterval();\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.removeFadeAnimation();\n }\n \n /**\n * @param silent If true, the close listener will not be called\n */\n close(silent?: boolean): void {\n //remove setInterval\n if (this.countdownInterval !== null) clearInterval(this.countdownInterval);\n\n if (!silent) this.props.closeListener();\n }\n\n addNoticeInfoMessage(message: string, message2 = \"\"): void {\n //TODO: Replace\n\n const previousInfoMessage = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix);\n if (previousInfoMessage != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage);\n }\n\n const previousInfoMessage2 = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix + \"2\");\n if (previousInfoMessage2 != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage2);\n }\n \n //add info\n const thanksForVotingText = document.createElement(\"p\");\n thanksForVotingText.id = \"sponsorTimesInfoMessage\" + this.idSuffix;\n thanksForVotingText.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText.innerText = message;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n \n if (message2 !== undefined) {\n const thanksForVotingText2 = document.createElement(\"p\");\n thanksForVotingText2.id = \"sponsorTimesInfoMessage\" + this.idSuffix + \"2\";\n thanksForVotingText2.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText2.innerText = message2;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText2, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n }\n }\n\n getElement(): React.RefObject {\n return this.parentRef;\n }\n\n componentWillUnmount(): void {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n\n // For dragging around notice\n handleMouseMove(e: MouseEvent): void {\n if (this.state.mouseDownInfo && e.buttons === 1) {\n const [mouseX, mouseY] = [e.clientX, e.clientY];\n\n const deltaX = mouseX - this.state.mouseDownInfo.x;\n const deltaY = mouseY - this.state.mouseDownInfo.y;\n\n if (deltaX > 0 || deltaY > 0) this.setState({ mouseMoved: true });\n\n const element = this.parentRef.current;\n const parent = element.parentElement.parentElement;\n this.setState({\n right: Math.min(parent.clientWidth - element.clientWidth - bounds[2], Math.max(bounds[0], this.state.mouseDownInfo.right - deltaX)),\n bottom: Math.min(parent.clientHeight - element.clientHeight - bounds[3], Math.max(bounds[1], this.state.mouseDownInfo.bottom - deltaY))\n });\n } else {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n }\n}\n\nexport default NoticeComponent;\n","import * as React from \"react\";\n\nexport interface NoticeTextSelectionProps {\n icon?: string;\n text: string;\n idSuffix: string;\n onClick?: (event: React.MouseEvent) => unknown;\n children?: React.ReactNode;\n}\n\nexport interface NoticeTextSelectionState {\n\n}\n\nclass NoticeTextSelectionComponent extends React.Component {\n\n constructor(props: NoticeTextSelectionProps) {\n super(props);\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {};\n if (this.props.onClick) {\n style.cursor = \"pointer\";\n style.textDecoration = \"underline\"\n }\n\n return (\n \n \n \n {this.props.icon ? \n \n : null}\n\n \n {this.getTextElements(this.props.text)}\n \n \n \n );\n }\n\n private getTextElements(text: string): Array {\n const elements: Array = [];\n const textParts = text.split(/(?=\\s+)/);\n for (const textPart of textParts) {\n if (textPart.match(/^\\s*http/)) {\n elements.push(\n \n {textPart}\n \n );\n } else {\n elements.push(textPart);\n }\n\n }\n\n return elements;\n }\n}\n\nexport default NoticeTextSelectionComponent;","import * as React from \"react\";\n\nexport interface SelectorOption {\n label: string;\n}\n\nexport interface SelectorProps { \n id: string;\n options: SelectorOption[];\n onChange: (value: string) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport interface SelectorState {\n\n}\n\nclass SelectorComponent extends React.Component {\n\n constructor(props: SelectorProps) {\n super(props);\n\n // Setup state\n this.state = {\n \n }\n }\n\n render(): React.ReactElement {\n return (\n
0 ? \"inherit\" : \"none\"}}\n className=\"sbSelector\">\n
\n {this.getOptions()}\n
\n
\n );\n }\n\n getOptions(): React.ReactElement[] {\n const result: React.ReactElement[] = [];\n for (const option of this.props.options) {\n result.push(\n
{\n e.stopPropagation();\n this.props.onChange(option.label);\n }}\n key={option.label}>\n {option.label}\n
\n );\n }\n\n return result;\n }\n}\n\nexport default SelectorComponent;","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\"\nimport { Category, ContentContainer, SponsorTime, NoticeVisibilityMode, ActionType, SponsorSourceType, SegmentUUID } from \"../types\";\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport Utils from \"../utils\";\nconst utils = new Utils();\nimport { getSkippingText, getUpcomingText, getVoteText } from \"../utils/categoryUtils\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport PencilSvg from \"../svg-icons/pencil_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { getFormattedTime } from \"../../maze-utils/src/formating\";\nimport { getCurrentTime, getVideo } from \"../../maze-utils/src/video\";\n\nenum SkipButtonState {\n Undo, // Unskip\n Redo, // Reskip\n Start // Skip\n}\n\nexport interface SkipNoticeProps {\n segments: SponsorTime[];\n\n autoSkip: boolean;\n startReskip?: boolean;\n upcomingNotice?: boolean;\n voteNotice?: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n closeListener: () => void;\n showKeybindHint?: boolean;\n smaller: boolean;\n fadeIn: boolean;\n maxCountdownTime?: number;\n\n componentDidMount?: () => void;\n\n unskipTime?: number;\n}\n\nexport interface SkipNoticeState {\n noticeTitle?: string;\n\n messages?: string[];\n messageOnClick?: (event: React.MouseEvent) => unknown;\n\n countdownTime?: number;\n maxCountdownTime?: () => number;\n countdownText?: string;\n\n skipButtonStates?: SkipButtonState[];\n skipButtonCallbacks?: Array<(buttonIndex: number, index: number, forceSeek: boolean) => void>;\n showSkipButton?: boolean[];\n\n editing?: boolean;\n choosingCategory?: boolean;\n thanksForVotingText?: string; //null until the voting buttons should be hidden\n\n actionState?: SkipNoticeAction;\n\n showKeybindHint?: boolean;\n\n smaller?: boolean;\n\n voted?: SkipNoticeAction[];\n copied?: SkipNoticeAction[];\n\n}\n\nclass SkipNoticeComponent extends React.Component {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n amountOfPreviousNotices: number;\n showInSecondSlot: boolean;\n\n idSuffix: string;\n\n noticeRef: React.MutableRefObject;\n categoryOptionRef: React.RefObject;\n\n selectedColor: string;\n unselectedColor: string;\n lockedColor: string;\n\n // Used to update on config change\n configListener: () => void;\n\n constructor(props: SkipNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n this.categoryOptionRef = React.createRef();\n\n this.segments = props.segments;\n this.autoSkip = props.autoSkip;\n this.contentContainer = props.contentContainer;\n\n const noticeTitle = this.props.voteNotice ? getVoteText(this.segments) : !this.props.upcomingNotice ? getSkippingText(this.segments, this.props.autoSkip) : getUpcomingText(this.segments);\n\n const previousSkipNotices = document.querySelectorAll(\".sponsorSkipNoticeParent:not(.sponsorSkipUpcomingNotice)\");\n this.amountOfPreviousNotices = previousSkipNotices.length;\n // If there is at least one already in the first slot\n this.showInSecondSlot = previousSkipNotices.length > 0 && [...previousSkipNotices].some(notice => !notice.classList.contains(\"secondSkipNotice\"));\n\n // Sort segments\n if (this.segments.length > 1) {\n this.segments.sort((a, b) => a.segment[0] - b.segment[0]);\n }\n\n // This is the suffix added at the end of every id\n for (const segment of this.segments) {\n this.idSuffix += segment.UUID;\n }\n this.idSuffix += this.amountOfPreviousNotices;\n\n this.selectedColor = Config.config.colorPalette.red;\n this.unselectedColor = Config.config.colorPalette.white;\n this.lockedColor = Config.config.colorPalette.locked;\n\n const isMuteSegment = this.segments[0].actionType === ActionType.Mute;\n const maxCountdownTime = props.maxCountdownTime ? () => props.maxCountdownTime : (isMuteSegment ? this.getFullDurationCountdown(0) : () => Config.config.skipNoticeDuration);\n\n const defaultSkipButtonState = this.props.startReskip ? SkipButtonState.Redo : SkipButtonState.Undo;\n const skipButtonStates = [defaultSkipButtonState, isMuteSegment ? SkipButtonState.Start : defaultSkipButtonState];\n\n const defaultSkipButtonCallback = this.props.startReskip ? this.reskip.bind(this) : this.unskip.bind(this);\n const skipButtonCallbacks = [defaultSkipButtonCallback, isMuteSegment ? this.reskip.bind(this) : defaultSkipButtonCallback];\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n messageOnClick: null,\n\n //the countdown until this notice closes\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n countdownText: null,\n\n skipButtonStates,\n skipButtonCallbacks,\n showSkipButton: [true, true],\n\n editing: false,\n choosingCategory: false,\n thanksForVotingText: null,\n\n actionState: SkipNoticeAction.None,\n\n showKeybindHint: this.props.showKeybindHint ?? true,\n\n smaller: this.props.smaller ?? false,\n\n // Keep track of what segment the user interacted with.\n voted: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n copied: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n }\n\n if (!this.autoSkip) {\n // Assume manual skip is only skipping 1 submission\n Object.assign(this.state, this.getUnskippedModeInfo(null, 0, SkipButtonState.Start));\n }\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = { }\n if (this.contentContainer().onMobileYouTube) {\n noticeStyle.bottom = \"4em\";\n noticeStyle.transform = \"scale(0.8) translate(10%, 10%)\";\n }\n\n const firstColumn = this.getSkipButton(0);\n\n return (\n = NoticeVisibilityMode.FadedForAll\n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.FadedForAutoSkip && this.autoSkip)}\n timed={true}\n maxCountdownTime={this.state.maxCountdownTime}\n style={noticeStyle}\n biggerCloseButton={this.contentContainer().onMobileYouTube}\n ref={this.noticeRef}\n closeListener={() => this.closeListener()}\n smaller={this.state.smaller}\n logoFill={Config.config.barTypes[this.segments[0].category].color}\n limitWidth={true}\n firstColumn={firstColumn}\n dontPauseCountdown={!!this.props.upcomingNotice}\n bottomRow={[...this.getMessageBoxes(), ...this.getBottomRow() ]}\n extraClass={this.props.upcomingNotice ? \"sponsorSkipUpcomingNotice\" : \"\"}\n onMouseEnter={() => this.onMouseEnter() } >\n \n );\n }\n\n componentDidMount(): void {\n if (this.props.componentDidMount) {\n this.props.componentDidMount();\n }\n }\n\n getBottomRow(): JSX.Element[] {\n return [\n /* Bottom Row */\n (\n\n {/* Vote Button Container */}\n {!this.state.thanksForVotingText ?\n \n\n {/* Upvote Button */}\n
this.prepAction(SkipNoticeAction.Upvote)}>\n \n
\n\n {/* Report Button */}\n
this.prepAction(SkipNoticeAction.Downvote)}>\n \n
\n\n {/* Copy and Downvote Button */}\n {\n !this.props.voteNotice &&\n
this.openEditingOptions()}>\n \n
\n }\n \n\n :\n\n \n\n {/* Submitted string */}\n \n {this.state.thanksForVotingText}\n \n\n {/* Continue Voting Button */}\n \n \n }\n\n {/* Unskip/Skip Button */}\n {!this.props.voteNotice && (!this.props.smaller || this.segments[0].actionType === ActionType.Mute)\n ? this.getSkipButton(1) : null}\n\n {/* Never show button */}\n {!this.autoSkip || this.props.startReskip || this.props.voteNotice ? \"\" :\n \n \n \n }\n ),\n\n /* Edit Segments Row */\n (this.state.editing && !this.state.thanksForVotingText && !(this.state.choosingCategory || this.state.actionState === SkipNoticeAction.CopyDownvote) &&\n \n \n\n {/* Copy Segment */}\n \n\n {/* Category vote */}\n \n \n \n ),\n\n /* Category Chooser Row */\n (this.state.choosingCategory && !this.state.thanksForVotingText &&\n \n \n {/* Category Selector */}\n \n\n {/* Submit Button */}\n {this.segments.length === 1 &&\n \n }\n \n \n ),\n\n /* Segment Chooser Row */\n (this.state.actionState !== SkipNoticeAction.None && this.segments.length > 1 && !this.state.thanksForVotingText &&\n \n \n {this.getSubmissionChooser()}\n \n \n )\n ];\n }\n\n getSkipButton(buttonIndex: number): JSX.Element {\n if (this.state.showSkipButton[buttonIndex] && (this.segments.length > 1\n || this.segments[0].actionType !== ActionType.Poi\n || this.props.unskipTime)) {\n\n const forceSeek = buttonIndex === 1 && this.segments[0].actionType === ActionType.Mute;\n\n const style: React.CSSProperties = {\n marginLeft: \"4px\",\n color: ([SkipNoticeAction.Unskip0, SkipNoticeAction.Unskip1].includes(this.state.actionState))\n ? this.selectedColor : this.unselectedColor\n };\n if (this.contentContainer().onMobileYouTube) {\n style.padding = \"20px\";\n style.minWidth = \"100px\";\n }\n\n const showSkipButton = (buttonIndex !== 0 || this.props.smaller || !this.props.voteNotice || this.segments[0].actionType === ActionType.Mute) && !this.props.upcomingNotice;\n\n return (\n \n \n \n );\n }\n return null;\n }\n\n getSubmissionChooser(): JSX.Element[] {\n const elements: JSX.Element[] = [];\n for (let i = 0; i < this.segments.length; i++) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getSubmissionChooserOpacity(index: number): number {\n const isUpvote = this.state.actionState === SkipNoticeAction.Upvote;\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldBeGray: boolean = (isUpvote && this.state.voted[index] == SkipNoticeAction.Upvote) ||\n (isDownvote && this.state.voted[index] == SkipNoticeAction.Downvote) ||\n (isCopyDownvote && this.state.copied[index] == SkipNoticeAction.CopyDownvote);\n\n return shouldBeGray ? 0.35 : 1;\n }\n\n getSubmissionChooserColor(index: number): string {\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldWarnUser = Config.config.isVip && (isDownvote || isCopyDownvote)\n && this.segments[index].locked === 1;\n\n return shouldWarnUser ? this.lockedColor : this.unselectedColor;\n }\n\n onMouseEnter(): void {\n if (this.state.smaller && !this.props.upcomingNotice) {\n this.setState({\n smaller: false\n });\n }\n }\n\n getMessageBoxes(): JSX.Element[] {\n if (this.state.messages.length === 0) {\n // Add a spacer if there is no text\n return [\n \n \n ];\n }\n\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n \n \n \n \n )\n }\n\n return elements;\n }\n\n prepAction(action: SkipNoticeAction): void {\n if (this.segments.length === 1) {\n this.performAction(0, action);\n } else {\n if (this.state.smaller) {\n this.setState({\n smaller: false\n });\n\n this.noticeRef.current.fadedMouseEnter();\n this.noticeRef.current.resetCountdown();\n }\n\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.resetStateToStart();\n break;\n case SkipNoticeAction.Upvote:\n this.resetStateToStart(SkipNoticeAction.Upvote);\n break;\n case SkipNoticeAction.Downvote:\n this.resetStateToStart(SkipNoticeAction.Downvote);\n break;\n case SkipNoticeAction.CategoryVote:\n this.resetStateToStart(SkipNoticeAction.CategoryVote, true, true);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.resetStateToStart(SkipNoticeAction.CopyDownvote, true);\n break;\n case SkipNoticeAction.Unskip0:\n this.resetStateToStart(SkipNoticeAction.Unskip0);\n break;\n case SkipNoticeAction.Unskip1:\n this.resetStateToStart(SkipNoticeAction.Unskip1);\n break;\n }\n }\n }\n\n /**\n * Performs the action from the current state\n *\n * @param index\n */\n performAction(index: number, action?: SkipNoticeAction): void {\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.noAction(index);\n break;\n case SkipNoticeAction.Upvote:\n this.upvote(index);\n break;\n case SkipNoticeAction.Downvote:\n this.downvote(index);\n break;\n case SkipNoticeAction.CategoryVote:\n this.categoryVote(index);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.copyDownvote(index);\n break;\n case SkipNoticeAction.Unskip0:\n this.unskipAction(0, index, false);\n break;\n case SkipNoticeAction.Unskip1:\n this.unskipAction(1, index, true);\n break;\n default:\n this.resetStateToStart();\n break;\n }\n }\n\n noAction(index: number): void {\n const voted = this.state.voted;\n voted[index] = SkipNoticeAction.None;\n\n this.setState({\n voted\n });\n }\n\n upvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n this.contentContainer().vote(1, this.segments[index].UUID, undefined, this);\n }\n\n downvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n }\n\n categoryVote(index: number): void {\n this.contentContainer().vote(undefined, this.segments[index].UUID, this.categoryOptionRef.current.value as Category, this)\n }\n\n copyDownvote(index: number): void {\n const sponsorVideoID = this.props.contentContainer().sponsorVideoID;\n const sponsorTimesSubmitting : SponsorTime = {\n segment: this.segments[index].segment,\n UUID: generateUserID() as SegmentUUID,\n category: this.segments[index].category,\n actionType: this.segments[index].actionType,\n source: SponsorSourceType.Local\n };\n\n const segmentTimes = Config.local.unsubmittedSegments[sponsorVideoID] || [];\n segmentTimes.push(sponsorTimesSubmitting);\n Config.local.unsubmittedSegments[sponsorVideoID] = segmentTimes;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().sponsorTimesSubmitting.push(sponsorTimesSubmitting);\n this.props.contentContainer().updatePreviewBar();\n this.props.contentContainer().resetSponsorSubmissionNotice();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n\n const copied = this.state.copied;\n copied[index] = SkipNoticeAction.CopyDownvote;\n\n this.setState({\n copied\n });\n }\n\n unskipAction(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.state.skipButtonCallbacks[buttonIndex](buttonIndex, index, forceSeek);\n }\n\n openEditingOptions(): void {\n this.resetStateToStart(undefined, true);\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [];\n\n const categories = (CompileConfig.categoryList.filter((cat => CompileConfig.categorySupport[cat].includes(ActionType.Skip)))) as Category[];\n for (const category of categories) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getCategoryNameClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\"\n }\n\n unskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().unskipSponsorTime(this.segments[index], this.props.unskipTime, forceSeek, this.props.voteNotice);\n\n this.unskippedMode(buttonIndex, index, this.segments[0].actionType === ActionType.Poi ? SkipButtonState.Undo : SkipButtonState.Redo);\n }\n\n reskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().reskipSponsorTime(this.segments[index], forceSeek);\n this.reskippedMode(buttonIndex);\n }\n\n reskippedMode(buttonIndex: number): void {\n const skipButtonStates = this.state.skipButtonStates;\n skipButtonStates[buttonIndex] = SkipButtonState.Undo;\n\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n skipButtonCallbacks[buttonIndex] = this.unskip.bind(this);\n\n const newState: SkipNoticeState = {\n skipButtonStates,\n skipButtonCallbacks,\n\n maxCountdownTime: () => Config.config.skipNoticeDuration,\n countdownTime: Config.config.skipNoticeDuration\n };\n\n //reset countdown\n this.setState(newState, () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n /** Sets up notice to be not skipped yet */\n unskippedMode(buttonIndex: number, index: number, skipButtonState: SkipButtonState): void {\n //setup new callback and reset countdown\n this.setState(this.getUnskippedModeInfo(buttonIndex, index, skipButtonState), () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n getUnskippedModeInfo(buttonIndex: number, index: number, skipButtonState: SkipButtonState): SkipNoticeState {\n const changeCountdown = !this.props.voteNotice && this.segments[index].actionType !== ActionType.Poi;\n\n const maxCountdownTime = changeCountdown ?\n this.getFullDurationCountdown(index) : this.state.maxCountdownTime;\n\n const skipButtonStates = this.state.skipButtonStates;\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n if (buttonIndex === null) {\n for (let i = 0; i < skipButtonStates.length; i++) {\n skipButtonStates[i] = skipButtonState;\n skipButtonCallbacks[i] = this.reskip.bind(this);\n }\n } else {\n skipButtonStates[buttonIndex] = skipButtonState;\n skipButtonCallbacks[buttonIndex] = this.reskip.bind(this);\n\n if (buttonIndex === 1) {\n // Trigger both to move at once\n skipButtonStates[0] = SkipButtonState.Redo;\n skipButtonCallbacks[0] = this.reskip.bind(this);\n }\n }\n\n return {\n skipButtonStates,\n skipButtonCallbacks,\n // change max duration to however much of the sponsor is left\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n showSkipButton: buttonIndex === 1 ? [true, true] : this.state.showSkipButton\n } as SkipNoticeState;\n }\n\n getFullDurationCountdown(index: number): () => number {\n return () => {\n const sponsorTime = this.segments[index];\n const duration = Math.round((sponsorTime.segment[1] - (getCurrentTime() ?? 0)) * (1 / (getVideo()?.playbackRate ?? 1)));\n\n return Math.max(duration, Config.config.skipNoticeDuration);\n };\n }\n\n afterVote(segment: SponsorTime, type: number, category: Category): void {\n const index = utils.getSponsorIndexFromUUID(this.segments, segment.UUID);\n const wikiLinkText = CompileConfig.wikiLinks[segment.category];\n\n const voted = this.state.voted;\n switch (type) {\n case 0:\n this.clearConfigListener();\n this.setNoticeInfoMessageWithOnClick(() => window.open(wikiLinkText), chrome.i18n.getMessage(\"OpenCategoryWikiPage\"));\n\n voted[index] = SkipNoticeAction.Downvote;\n break;\n case 1:\n voted[index] = SkipNoticeAction.Upvote;\n break;\n case 20:\n voted[index] = SkipNoticeAction.None;\n break;\n }\n\n this.setState({\n voted\n });\n\n this.addVoteButtonInfo(chrome.i18n.getMessage(\"voted\"));\n\n if (segment && category) {\n // This is the segment inside the skip notice\n this.segments[index].category = category;\n }\n }\n\n setNoticeInfoMessageWithOnClick(onClick: (event: React.MouseEvent) => unknown, ...messages: string[]): void {\n this.setState({\n messages,\n messageOnClick: (event) => onClick(event)\n });\n }\n\n setNoticeInfoMessage(...messages: string[]): void {\n this.setState({\n messages\n });\n }\n\n addVoteButtonInfo(message: string): void {\n this.setState({\n thanksForVotingText: message\n });\n }\n\n resetVoteButtonInfo(): void {\n this.setState({\n thanksForVotingText: null\n });\n }\n\n closeListener(): void {\n this.clearConfigListener();\n\n this.props.closeListener();\n }\n\n clearConfigListener(): void {\n if (this.configListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configListener), 1);\n this.configListener = null;\n }\n }\n\n unmutedListener(time: number): void {\n if (this.props.segments.length === 1\n && this.props.segments[0].actionType === ActionType.Mute\n && time >= this.props.segments[0].segment[1]) {\n this.setState({\n showSkipButton: [false, true]\n });\n }\n }\n\n resetStateToStart(actionState: SkipNoticeAction = SkipNoticeAction.None, editing = false, choosingCategory = false): void {\n this.setState({\n actionState: actionState,\n editing: editing,\n choosingCategory: choosingCategory,\n thanksForVotingText: null,\n messages: []\n });\n }\n\n private getSkipButtonText(buttonIndex: number, forceType?: ActionType): string {\n switch (this.state.skipButtonStates[buttonIndex]) {\n case SkipButtonState.Undo:\n return this.getUndoText(forceType);\n case SkipButtonState.Redo:\n return this.getRedoText(forceType);\n case SkipButtonState.Start:\n return this.getStartText(forceType);\n }\n }\n\n private getUndoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"unmute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"unskip\");\n }\n }\n }\n\n private getRedoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"reskip\");\n }\n }\n }\n\n private getStartText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"skip\");\n }\n }\n }\n}\n\nexport default SkipNoticeComponent;\n","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\";\nimport { ActionType, Category, ChannelIDStatus, ContentContainer, SponsorHideType, SponsorTime } from \"../types\";\nimport SubmissionNoticeComponent from \"./SubmissionNoticeComponent\";\nimport { RectangleTooltip } from \"../render/RectangleTooltip\";\nimport SelectorComponent, { SelectorOption } from \"./SelectorComponent\";\nimport { DEFAULT_CATEGORY } from \"../utils/categoryUtils\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport { defaultPreviewTime } from \"../utils/constants\";\nimport { getVideo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface SponsorTimeEditProps {\n index: number;\n\n idSuffix: string;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n submissionNotice: SubmissionNoticeComponent;\n categoryList?: Category[];\n categoryChangeListener?: (index: number, category: Category) => void;\n children?: React.ReactNode;\n}\n\nexport interface SponsorTimeEditState {\n editing: boolean;\n sponsorTimeEdits: [string, string];\n selectedCategory: Category;\n selectedActionType: ActionType;\n description: string;\n suggestedNames: SelectorOption[];\n chapterNameSelectorOpen: boolean;\n chapterNameSelectorHovering: boolean;\n}\n\nconst categoryNamesGrams: string[] = [].concat(...CompileConfig.categoryList.filter((name) => ![\"chapter\", \"intro\"].includes(name))\n .map((name) => chrome.i18n.getMessage(\"category_\" + name).split(/\\/|\\s|-/)));\n\nclass SponsorTimeEditComponent extends React.Component {\n\n idSuffix: string;\n\n categoryOptionRef: React.RefObject;\n actionTypeOptionRef: React.RefObject;\n descriptionOptionRef: React.RefObject;\n\n configUpdateListener: () => void;\n\n previousSkipType: ActionType;\n // Used when selecting POI or Full\n timesBeforeChanging: number[] = [];\n fullVideoWarningShown = false;\n categoryNameWarningShown = false;\n\n // For description auto-complete\n fetchingSuggestions: boolean;\n\n constructor(props: SponsorTimeEditProps) {\n super(props);\n\n this.categoryOptionRef = React.createRef();\n this.actionTypeOptionRef = React.createRef();\n this.descriptionOptionRef = React.createRef();\n\n this.idSuffix = this.props.idSuffix;\n this.previousSkipType = ActionType.Skip;\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.state = {\n editing: false,\n sponsorTimeEdits: [null, null],\n selectedCategory: sponsorTime.category ?? DEFAULT_CATEGORY as Category,\n selectedActionType: sponsorTime.actionType,\n description: sponsorTime.description || \"\",\n suggestedNames: [],\n chapterNameSelectorOpen: false,\n chapterNameSelectorHovering: false\n };\n }\n\n componentDidMount(): void {\n // Prevent inputs from triggering key events\n document.getElementById(\"sponsorTimeEditContainer\" + this.idSuffix).addEventListener('keydown', (e) => {\n e.stopPropagation();\n });\n\n // Prevent scrolling while changing times\n document.getElementById(\"sponsorTimesContainer\" + this.idSuffix).addEventListener('wheel', (e) => {\n if (this.state.editing) {\n e.preventDefault();\n }\n }, {passive: false});\n\n // Add as a config listener\n if (!this.configUpdateListener) {\n this.configUpdateListener = () => this.configUpdate();\n Config.configSyncListeners.push(this.configUpdate.bind(this));\n }\n\n this.checkToShowFullVideoWarning();\n }\n\n componentWillUnmount(): void {\n if (this.configUpdateListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configUpdate.bind(this)), 1);\n }\n }\n\n render(): React.ReactElement {\n this.checkToShowFullVideoWarning();\n this.checkToShowChapterWarning();\n\n const style: React.CSSProperties = {\n textAlign: \"center\"\n };\n\n if (this.props.index != 0) {\n style.marginTop = \"15px\";\n }\n\n const borderColor = this.state.selectedCategory ? Config.config.barTypes[this.state.selectedCategory]?.color : null;\n\n // Create time display\n let timeDisplay: JSX.Element;\n const timeDisplayStyle: React.CSSProperties = {};\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segment = sponsorTime.segment;\n if (this.state.selectedActionType === ActionType.Full) timeDisplayStyle.display = \"none\";\n if (this.state.editing) {\n timeDisplay = (\n
\n\n {this.state.selectedActionType !== ActionType.Poi ? (\n this.setTimeTo(0, 0)}>\n {chrome.i18n.getMessage(\"bracketStart\")}\n \n ): \"\"}\n\n this.setTimeToNow(0)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(0, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(0, e, sponsorTime)}>\n \n\n {this.state.selectedActionType !== ActionType.Poi ? (\n \n \n {\" \" + chrome.i18n.getMessage(\"to\") + \" \"}\n \n\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(1, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(1, e, sponsorTime)}>\n \n\n this.setTimeToNow(1)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n\n this.setTimeToEnd()}>\n {chrome.i18n.getMessage(\"bracketEnd\")}\n \n \n ): \"\"}\n
\n );\n } else {\n timeDisplay = (\n \n
\n {getFormattedTime(segment[0], true) +\n ((!isNaN(segment[1]) && this.state.selectedActionType !== ActionType.Poi)\n ? \" \" + chrome.i18n.getMessage(\"to\") + \" \" + getFormattedTime(segment[1], true) : \"\")}\n
\n );\n }\n\n return (\n
\n \n {timeDisplay}\n\n {/* Category */}\n
\n \n\n {/* open in new tab */}\n \n \n \n
\n\n {/* Action Type */}\n {CompileConfig.categorySupport[sponsorTime.category] && \n (CompileConfig.categorySupport[sponsorTime.category]?.length > 1 \n || CompileConfig.categorySupport[sponsorTime.category]?.[0] === ActionType.Full) ? (\n
\n \n {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.4);\n stopAnimation();\n \n if (sponsorTime.hidden === SponsorHideType.Hidden) {\n sponsorTime.hidden = SponsorHideType.Visible;\n } else {\n sponsorTime.hidden = SponsorHideType.Hidden;\n }\n\n this.saveEditTimes();\n }}/>\n
\n ): \"\"}\n\n {/* Chapter Name */}\n {this.state.selectedActionType=== ActionType.Chapter ? (\n
this.setState({chapterNameSelectorOpen: false})}>\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onContextMenu={(e) => e.stopPropagation()}\n onChange={(e) => this.descriptionUpdate(e.target.value)}\n onFocus={() => this.setState({chapterNameSelectorOpen: true})}>\n \n {this.state.description \n && (this.state.chapterNameSelectorOpen || this.state.chapterNameSelectorHovering) &&\n this.setState({chapterNameSelectorHovering: true})}\n onMouseLeave={() => this.setState({chapterNameSelectorHovering: false})}\n onChange={(v) => this.descriptionUpdate(v)}\n />\n }\n
\n ): \"\"}\n\n {/* Editing Tools */}\n\n
\n \n {chrome.i18n.getMessage(\"delete\")}\n \n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) \n && this.state.selectedActionType !== ActionType.Chapter ? (\n this.previewTime(e.ctrlKey, e.shiftKey)}>\n {chrome.i18n.getMessage(\"preview\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {chrome.i18n.getMessage(\"inspect\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) ? (\n this.previewTime(e.ctrlKey, e.shiftKey, true)}>\n {chrome.i18n.getMessage(\"End\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {this.state.editing ? chrome.i18n.getMessage(\"save\") : chrome.i18n.getMessage(\"edit\")}\n \n ): \"\"}\n
\n\n
\n );\n }\n\n handleOnChange(index: number, e: React.ChangeEvent, sponsorTime: SponsorTime, targetValue: string): void {\n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n \n // check if change is small engough to show tooltip\n const before = getFormattedTimeToSeconds(sponsorTimeEdits[index]);\n const after = getFormattedTimeToSeconds(targetValue);\n const difference = Math.abs(before - after);\n if (0 < difference && difference < 0.5) this.showScrollToEditToolTip();\n\n sponsorTimeEdits[index] = targetValue;\n if (index === 0 && sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = targetValue;\n\n this.setState({sponsorTimeEdits}, () => this.saveEditTimes());\n }\n\n changeTimesWhenScrolling(index: number, e: React.WheelEvent, sponsorTime: SponsorTime): void {\n if (!Config.config.allowScrollingToEdit) return;\n let step = 0;\n // shift + ctrl = 1\n // ctrl = 0.1\n // default = 0.01\n // shift = 0.001\n if (e.shiftKey) {\n step = (e.ctrlKey) ? 1 : 0.001;\n } else {\n step = (e.ctrlKey) ? 0.1 : 0.01;\n }\n \n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n let timeAsNumber = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[index]);\n if (timeAsNumber !== null && e.deltaY != 0) {\n if (e.deltaY < 0) {\n timeAsNumber += step;\n } else if (timeAsNumber >= step) {\n timeAsNumber -= step;\n } else {\n timeAsNumber = 0;\n }\n \n sponsorTimeEdits[index] = getFormattedTime(timeAsNumber, true);\n if (sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = sponsorTimeEdits[0];\n\n this.setState({sponsorTimeEdits});\n this.saveEditTimes();\n }\n }\n\n showScrollToEditToolTip(): void {\n if (!Config.config.scrollToEditTimeUpdate && document.getElementById(\"sponsorRectangleTooltip\" + \"sponsorTimesContainer\" + this.idSuffix) === null) {\n this.showToolTip(chrome.i18n.getMessage(\"SponsorTimeEditScrollNewFeature\"), \"scrollToEdit\", () => { Config.config.scrollToEditTimeUpdate = true });\n }\n }\n\n showToolTip(text: string, id: string, buttonFunction?: () => void): boolean {\n const element = document.getElementById(\"sponsorTimesContainer\" + this.idSuffix);\n if (element) {\n const htmlId = `sponsorRectangleTooltip${id + this.idSuffix}`;\n if (!document.getElementById(htmlId)) {\n new RectangleTooltip({\n text,\n referenceNode: element.parentElement,\n prependElement: element,\n timeout: 15,\n bottomOffset: 0 + \"px\",\n leftOffset: -318 + \"px\",\n backgroundColor: \"rgba(28, 28, 28, 1.0)\",\n htmlId,\n buttonFunction,\n fontSize: \"14px\",\n maxHeight: \"200px\"\n });\n }\n\n return true;\n } else {\n return false;\n }\n }\n\n checkToShowFullVideoWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segmentDuration = sponsorTime.segment[1] - sponsorTime.segment[0];\n const videoPercentage = segmentDuration / getVideoDuration();\n\n if (videoPercentage > 0.6 && !this.fullVideoWarningShown \n && (sponsorTime.category === \"sponsor\" || sponsorTime.category === \"selfpromo\" || sponsorTime.category === \"chooseACategory\")) {\n if (this.showToolTip(chrome.i18n.getMessage(\"fullVideoTooltipWarning\"), \"fullVideoWarning\")) {\n this.fullVideoWarningShown = true;\n }\n }\n }\n\n checkToShowChapterWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n if (sponsorTime.actionType === ActionType.Chapter && sponsorTime.description\n && !this.categoryNameWarningShown\n && categoryNamesGrams.some(\n (category) => sponsorTime.description.toLowerCase().includes(category.toLowerCase()))) {\n if (this.showToolTip(chrome.i18n.getMessage(\"chapterNameTooltipWarning\"), \"chapterWarning\")) {\n this.categoryNameWarningShown = true;\n }\n }\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [(\n \n )];\n\n for (const category of (this.props.categoryList ?? CompileConfig.categoryList)) {\n // If permission not loaded, treat it like we have permission except chapter\n const defaultBlockCategories = [\"chapter\"];\n const permission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[category as Category]);\n if ((defaultBlockCategories.includes(category) \n || (permission !== undefined && !Config.config.showCategoryWithoutPermission)) && !permission) continue;\n\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n getCategoryLockedClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\";\n }\n\n categorySelectionChange(event: React.ChangeEvent): void {\n const chosenCategory = event.target.value as Category;\n this.setState({\n selectedCategory: chosenCategory\n });\n\n // See if show more categories was pressed\n if (chosenCategory !== DEFAULT_CATEGORY && !Config.config.categorySelections.some((category) => category.name === chosenCategory)) {\n event.target.value = DEFAULT_CATEGORY;\n \n // Alert that they have to enable this category first\n if (confirm(chrome.i18n.getMessage(\"enableThisCategoryFirst\")\n .replace(\"{0}\", chrome.i18n.getMessage(\"category_\" + chosenCategory)))) {\n // Open options page\n chrome.runtime.sendMessage({message: \"openConfig\", hash: \"behavior\"});\n }\n \n return;\n }\n\n // Hook update\n if (!Config.config.hookUpdate && chosenCategory === \"preview\") {\n Config.config.hookUpdate = true;\n\n const target = event.target.closest(\".sponsorSkipNotice tbody\");\n if (target) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"hookNewFeature\"),\n referenceNode: target.parentElement,\n prependElement: target as HTMLElement,\n bottomOffset: \"30px\",\n opacity: 0.9,\n timeout: 100\n });\n }\n }\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.handleReplacingLostTimes(chosenCategory, sponsorTime.actionType, sponsorTime);\n this.saveEditTimes();\n\n if (this.props.categoryChangeListener) {\n this.props.categoryChangeListener(this.props.index, chosenCategory);\n }\n }\n\n actionTypeSelectionChange(event: React.ChangeEvent): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n selectedActionType: event.target.value as ActionType\n });\n\n this.handleReplacingLostTimes(sponsorTime.category, event.target.value as ActionType, sponsorTime);\n this.saveEditTimes();\n }\n\n private handleReplacingLostTimes(category: Category, actionType: ActionType, segment: SponsorTime): void {\n if (CompileConfig.categorySupport[category]?.includes(ActionType.Poi)) {\n if (this.previousSkipType !== ActionType.Poi) {\n this.timesBeforeChanging = [null, segment.segment[1]];\n }\n\n this.setTimeTo(1, null);\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n if (this.props.contentContainer().sponsorTimesSubmitting\n .some((segment, i) => segment.category === category && i !== this.props.index)) {\n alert(chrome.i18n.getMessage(\"poiOnlyOneSegment\"));\n }\n\n this.previousSkipType = ActionType.Poi;\n } else if (CompileConfig.categorySupport[category]?.length === 1 \n && CompileConfig.categorySupport[category]?.[0] === ActionType.Full) {\n if (this.previousSkipType !== ActionType.Full) {\n this.timesBeforeChanging = [...segment.segment];\n }\n\n this.previousSkipType = ActionType.Full;\n } else if ((category === \"chooseACategory\" || ((CompileConfig.categorySupport[category]?.includes(ActionType.Skip)\n || CompileConfig.categorySupport[category]?.includes(ActionType.Chapter))\n && ![ActionType.Poi, ActionType.Full].includes(this.getNextActionType(category, actionType))))\n && this.previousSkipType !== ActionType.Skip) {\n if (this.timesBeforeChanging[0]) {\n this.setTimeTo(0, this.timesBeforeChanging[0]);\n }\n if (this.timesBeforeChanging[1]) {\n this.setTimeTo(1, this.timesBeforeChanging[1]);\n }\n\n this.previousSkipType = ActionType.Skip;\n }\n }\n\n getActionTypeOptions(sponsorTime: SponsorTime): React.ReactElement[] {\n const elements = [];\n\n for (const actionType of CompileConfig.categorySupport[sponsorTime.category]) {\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n setTimeToNow(index: number): void {\n this.setTimeTo(index, this.props.contentContainer().getRealCurrentTime());\n }\n\n setTimeToEnd(): void {\n this.setTimeTo(1, getVideoDuration());\n }\n\n /**\n * @param index \n * @param time If null, will set time to the first index's time\n */\n setTimeTo(index: number, time: number): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n if (time === null) time = sponsorTime.segment[0];\n\n const addedTime = sponsorTime.segment.length === 1;\n sponsorTime.segment[index] = time;\n if (sponsorTime.actionType === ActionType.Poi) sponsorTime.segment[1] = time;\n\n if (addedTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n this.setState({\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n }, () => this.saveEditTimes());\n }\n\n toggleEditTime(): void {\n if (this.state.editing) {\n \n this.setState({\n editing: false\n });\n\n this.saveEditTimes(); \n } else {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n editing: true,\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n });\n }\n }\n\n /** Returns an array in the sponsorTimeEdits form (formatted time string) from a normal seconds sponsor time */\n getFormattedSponsorTimesEdits(sponsorTime: SponsorTime): [string, string] {\n return [getFormattedTime(sponsorTime.segment[0], true),\n getFormattedTime(sponsorTime.segment[1], true)];\n }\n\n lastEditTime = 0;\n editTimeTimeout: NodeJS.Timeout | null = null;\n saveEditTimes(): void {\n // Rate limit edits\n const timeSinceLastEdit = Date.now() - this.lastEditTime;\n const rateLimitTime = 200;\n if (timeSinceLastEdit < rateLimitTime) {\n if (!this.editTimeTimeout) {\n this.editTimeTimeout = setTimeout(() => {\n this.saveEditTimes();\n }, rateLimitTime - timeSinceLastEdit)\n }\n\n return;\n }\n\n this.lastEditTime = Date.now();\n this.editTimeTimeout = null;\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n const category = this.categoryOptionRef.current.value as Category\n\n if (this.state.editing) {\n const startTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[0]);\n const endTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[1]);\n\n // Change segment time only if the format was correct\n if (startTime !== null && endTime !== null) {\n const addingTime = sponsorTimesSubmitting[this.props.index].segment.length === 1;\n sponsorTimesSubmitting[this.props.index].segment = [startTime, endTime];\n\n if (addingTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n } else if (startTime !== null) {\n // Only start time is valid, still an incomplete segment\n sponsorTimesSubmitting[this.props.index].segment[0] = startTime;\n }\n } else if (this.state.sponsorTimeEdits[1] === null && category === \"outro\" && !sponsorTimesSubmitting[this.props.index].segment[1]) {\n sponsorTimesSubmitting[this.props.index].segment[1] = getVideoDuration();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n sponsorTimesSubmitting[this.props.index].category = category;\n\n const actionType = this.getNextActionType(category, this.actionTypeOptionRef?.current?.value as ActionType);\n sponsorTimesSubmitting[this.props.index].actionType = actionType;\n this.setState({\n selectedActionType: actionType\n });\n\n const description = actionType === ActionType.Chapter ? this.descriptionOptionRef?.current?.value : \"\";\n sponsorTimesSubmitting[this.props.index].description = description;\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n\n if (sponsorTimesSubmitting[this.props.index].actionType === ActionType.Full \n && (sponsorTimesSubmitting[this.props.index].segment[0] !== 0 || sponsorTimesSubmitting[this.props.index].segment[1] !== 0)) {\n this.setTimeTo(0, 0);\n this.setTimeTo(1, 0);\n }\n }\n\n private getNextActionType(category: Category, actionType: ActionType): ActionType {\n return actionType && CompileConfig.categorySupport[category]?.includes(actionType) ? actionType\n : CompileConfig.categorySupport[category]?.[0] ?? ActionType.Skip\n }\n\n previewTime(ctrlPressed = false, shiftPressed = false, skipToEndTime = false): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n let seekTime = defaultPreviewTime;\n if (ctrlPressed) seekTime = 0.5;\n if (shiftPressed) seekTime = 0.25;\n\n const startTime = sponsorTimes[index].segment[0];\n const endTime = sponsorTimes[index].segment[1];\n\n // If segment starts at 0:00, start playback at the end of the segment\n const skipTime = (startTime === 0 || skipToEndTime) ? endTime : (startTime - (seekTime * getVideo().playbackRate));\n\n this.props.contentContainer().previewTime(skipTime, !skipToEndTime);\n }\n\n inspectTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n\n const skipTime = sponsorTimes[index].segment[0];\n\n this.props.contentContainer().previewTime(skipTime + 0.0001, false);\n }\n\n deleteTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n const removingIncomplete = sponsorTimes[index].segment.length < 2;\n\n sponsorTimes.splice(index, 1);\n \n //save this\n if (sponsorTimes.length > 0) {\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimes;\n } else {\n delete Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n \n //if they are all removed\n if (sponsorTimes.length == 0) {\n this.props.submissionNotice.cancel();\n } else {\n //update display\n this.props.submissionNotice.forceUpdate();\n }\n\n //if it is not a complete segment, or all are removed\n if (sponsorTimes.length === 0 || removingIncomplete) {\n //update video player\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n }\n\n descriptionUpdate(description: string): void {\n this.setState({\n description\n }, () => {\n this.saveEditTimes();\n });\n\n if (!this.fetchingSuggestions) {\n this.fetchSuggestions(description);\n }\n }\n\n async fetchSuggestions(description: string): Promise {\n if (this.props.contentContainer().channelIDInfo.status !== ChannelIDStatus.Found) return;\n\n this.fetchingSuggestions = true;\n try {\n const result = await asyncRequestToServer(\"GET\", \"/api/chapterNames\", {\n description,\n channelID: this.props.contentContainer().channelIDInfo.id\n });\n if (result.ok) {\n const names = JSON.parse(result.responseText) as {description: string}[];\n this.setState({\n suggestedNames: names.map(n => ({\n label: n.description\n }))\n });\n } else if (result.status !== 404) {\n logRequest(result, \"SB\", \"chapter suggestion\")\n }\n } catch (e) {\n console.warn(\"[SB] Caught error while fetching chapter suggestions\", e);\n } finally {\n this.fetchingSuggestions = false;\n }\n }\n\n configUpdate(): void {\n this.forceUpdate();\n }\n}\n\nexport default SponsorTimeEditComponent;\n","import * as React from \"react\";\nimport Config from \"../config\"\nimport GenericNotice from \"../render/GenericNotice\";\nimport { Category, ContentContainer } from \"../types\";\nimport * as CompileConfig from \"../../config.json\";\n\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport SponsorTimeEditComponent from \"./SponsorTimeEditComponent\";\nimport { getGuidelineInfo } from \"../utils/constants\";\nimport { exportTimes } from \"../utils/exporter\";\nimport { getVideo, isCurrentTimeWrong } from \"../../maze-utils/src/video\";\n\nexport interface SubmissionNoticeProps { \n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => Promise;\n\n closeListener: () => void;\n}\n\nexport interface SubmissionNoticeState {\n noticeTitle: string;\n messages: string[];\n idSuffix: string;\n}\n\nclass SubmissionNoticeComponent extends React.Component {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => unknown;\n\n noticeRef: React.MutableRefObject;\n timeEditRefs: React.RefObject[];\n\n videoObserver: MutationObserver;\n\n guidelinesReminder: GenericNotice;\n\n lastSegmentCount: number;\n\n constructor(props: SubmissionNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n\n this.contentContainer = props.contentContainer;\n this.callback = props.callback;\n \n const noticeTitle = chrome.i18n.getMessage(\"confirmNoticeTitle\");\n\n this.lastSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n idSuffix: \"SubmissionNotice\"\n };\n }\n\n componentDidMount(): void {\n // Catch and rerender when the video size changes\n //TODO: Use ResizeObserver when it is supported in TypeScript\n this.videoObserver = new MutationObserver(() => {\n this.forceUpdate();\n });\n\n this.videoObserver.observe(getVideo(), {\n attributes: true\n });\n\n // Prevent zooming while changing times\n document.getElementById(\"sponsorSkipNoticeMiddleRow\" + this.state.idSuffix).addEventListener('wheel', function (event) {\n if (event.ctrlKey) {\n event.preventDefault();\n }\n }, {passive: false});\n }\n\n componentWillUnmount(): void {\n if (this.videoObserver) {\n this.videoObserver.disconnect();\n }\n }\n\n componentDidUpdate() {\n const currentSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n if (currentSegmentCount > this.lastSegmentCount) {\n this.lastSegmentCount = currentSegmentCount;\n\n this.scrollToBottom();\n }\n }\n\n scrollToBottom() {\n const scrollElement = this.noticeRef.current.getElement().current.querySelector(\"#sponsorSkipNoticeMiddleRowSubmissionNotice\");\n scrollElement.scrollTo({\n top: scrollElement.scrollHeight + 1000\n });\n }\n\n render(): React.ReactElement {\n const sortButton = \n this.sortSegments()}\n title={chrome.i18n.getMessage(\"sortSegments\")}\n key=\"sortButton\"\n src={chrome.runtime.getURL(\"icons/sort.svg\")}>\n ;\n const exportButton = \n this.exportSegments()}\n title={chrome.i18n.getMessage(\"exportSegments\")}\n key=\"exportButton\"\n src={chrome.runtime.getURL(\"icons/export.svg\")}>\n ;\n return (\n \n\n {/* Text Boxes */}\n {this.getMessageBoxes()}\n\n {/* Sponsor Time List */}\n e.stopPropagation()}>\n \n {this.getSponsorTimeMessages()}\n \n \n\n {/* Last Row */}\n \n\n \n\n {/* Guidelines button */}\n \n\n {/* Submit Button */}\n \n \n \n\n \n );\n }\n\n getSponsorTimeMessages(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n this.timeEditRefs = [];\n\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n const timeRef = React.createRef();\n\n elements.push(\n \n \n );\n\n this.timeEditRefs.push(timeRef);\n }\n\n return elements;\n }\n\n getMessageBoxes(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n );\n }\n\n return elements;\n }\n\n cancel(): void {\n this.guidelinesReminder?.close();\n this.noticeRef.current.close(true);\n\n this.contentContainer().resetSponsorSubmissionNotice(false);\n\n this.props.closeListener();\n }\n\n submit(): void {\n if (isCurrentTimeWrong()) {\n alert(chrome.i18n.getMessage(\"submissionFailedServerSideAds\"));\n return;\n }\n\n // save all items\n for (const ref of this.timeEditRefs) {\n ref.current.saveEditTimes();\n }\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"chooseACategory\") {\n alert(chrome.i18n.getMessage(\"youMustSelectACategory\"));\n return;\n }\n }\n\n // Check if any non music categories are being used on a music video\n if (this.contentContainer().videoInfo?.microformat?.playerMicroformatRenderer?.category === \"Music\") {\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"sponsor\") {\n if (!confirm(chrome.i18n.getMessage(\"nonMusicCategoryOnMusic\"))) return;\n\n break;\n }\n }\n }\n\n this.props.callback().then((success) => {\n if (success) {\n this.cancel();\n }\n });\n }\n\n sortSegments(): void {\n let sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n sponsorTimesSubmitting = sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.forceUpdate();\n }\n\n exportSegments() {\n const sponsorTimesSubmitting = this.props.contentContainer()\n .sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n window.navigator.clipboard.writeText(exportTimes(sponsorTimesSubmitting));\n\n new GenericNotice(null, \"exportCopied\", {\n title: chrome.i18n.getMessage(`CopiedExclamation`),\n timed: true,\n maxCountdownTime: () => 0.6,\n referenceNode: document.querySelector(\".noticeLeftIcon\"),\n dontPauseCountdown: true,\n style: {\n top: 0,\n bottom: 0,\n minWidth: 0,\n right: \"30px\",\n margin: \"auto\"\n },\n hideLogo: true,\n hideRightInfo: true,\n extraClass: \"exportCopiedNotice\"\n });\n }\n\n categoryChangeListener(index: number, category: Category): void {\n const dialogWidth = this.noticeRef?.current?.getElement()?.current?.offsetWidth;\n if (category !== \"chooseACategory\" && Config.config.showCategoryGuidelines\n && getVideo().offsetWidth > dialogWidth * 2) {\n const options = {\n title: chrome.i18n.getMessage(`category_${category}`),\n textBoxes: getGuidelineInfo(category),\n buttons: [{\n name: chrome.i18n.getMessage(\"FullDetails\"),\n listener: () => window.open(CompileConfig.wikiLinks[category])\n },\n {\n name: chrome.i18n.getMessage(\"Hide\"),\n listener: () => {\n Config.config.showCategoryGuidelines = false;\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }],\n timed: false,\n style: {\n right: `${dialogWidth + 10}px`,\n },\n extraClass: \"sb-guidelines-notice\"\n };\n\n if (options.textBoxes) {\n if (this.guidelinesReminder) {\n this.guidelinesReminder.update(options);\n } else {\n this.guidelinesReminder = new GenericNotice(null, \"GuidelinesReminder\", options);\n }\n } else {\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }\n }\n}\n\nexport default SubmissionNoticeComponent;\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import Config from \"./config\";\nimport {\n ActionType,\n Category,\n CategorySkipOption,\n ChannelIDStatus,\n ContentContainer,\n ScheduledTime,\n SegmentUUID,\n SkipToTimeParams,\n SponsorHideType,\n SponsorSourceType,\n SponsorTime,\n ToggleSkippable,\n VideoID,\n VideoInfo,\n} from \"./types\";\nimport Utils from \"./utils\";\nimport PreviewBar, { PreviewBarSegment } from \"./js-components/previewBar\";\nimport SkipNotice from \"./render/SkipNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport UpcomingNotice from \"./render/UpcomingNotice\";\nimport SubmissionNotice from \"./render/SubmissionNotice\";\nimport { Message, MessageResponse, VoteResponse } from \"./messageTypes\";\nimport { SkipButtonControlBar } from \"./js-components/skipButtonControlBar\";\nimport { getStartTimeFromUrl } from \"./utils/urlParser\";\nimport { getControls, getExistingChapters, getHashParams, hasAutogeneratedChapters, isPlayingPlaylist, isVisible } from \"./utils/pageUtils\";\nimport { CategoryPill } from \"./render/CategoryPill\";\nimport { AnimationUtils } from \"../maze-utils/src/animationUtils\";\nimport { GenericUtils } from \"./utils/genericUtils\";\nimport { logDebug, logWarn } from \"./utils/logger\";\nimport { importTimes } from \"./utils/exporter\";\nimport { ChapterVote } from \"./render/ChapterVote\";\nimport { openWarningDialog } from \"./utils/warnings\";\nimport { extensionUserAgent, isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { formatJSErrorMessage, getFormattedTime, getLongErrorMessage } from \"../maze-utils/src/formating\";\nimport { getChannelIDInfo, getVideo, getIsAdPlaying, getIsLivePremiere, setIsAdPlaying, checkVideoIDChange, getVideoID, getYouTubeVideoID, setupVideoModule, checkIfNewVideoID, isOnInvidious, isOnMobileYouTube, isOnYouTubeMusic, isOnYTTV, getLastNonInlineVideoID, triggerVideoIDChange, triggerVideoElementChange, getIsInline, getCurrentTime, setCurrentTime, getVideoDuration, verifyCurrentTime, waitForVideo } from \"../maze-utils/src/video\";\nimport { Keybind, StorageChangesObject, isSafari, keybindEquals, keybindToString } from \"../maze-utils/src/config\";\nimport { findValidElement } from \"../maze-utils/src/dom\"\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\nimport { updateAll } from \"../maze-utils/src/thumbnailManagement\";\nimport { setupThumbnailListener } from \"./utils/thumbnails\";\nimport * as documentScript from \"../dist/js/document.js\";\nimport { isVorapisInstalled, runCompatibilityChecks } from \"./utils/compatibility\";\nimport { cleanPage } from \"./utils/pageCleaner\";\nimport { addCleanupListener } from \"../maze-utils/src/cleanup\";\nimport { hideDeArrowPromotion, tryShowingDeArrowPromotion } from \"./dearrowPromotion\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { isMobileControlsOpen } from \"./utils/mobileUtils\";\nimport { defaultPreviewTime } from \"./utils/constants\";\nimport { onVideoPage } from \"../maze-utils/src/pageInfo\";\nimport { getSegmentsForVideo } from \"./utils/segmentData\";\nimport { getCategoryDefaultSelection, getCategorySelection } from \"./utils/skipRule\";\nimport { getSkipProfileBool, getSkipProfileIDForTab, hideTooShortSegments, setCurrentTabSkipProfile } from \"./utils/skipProfiles\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\n\ncleanPage();\n\nconst utils = new Utils();\n\nutils.wait(() => Config.isReady(), 5000, 10).then(() => {\n // Hack to get the CSS loaded on permission-based sites (Invidious)\n addCSS();\n setCategoryColorCSSVariables();\n\n runCompatibilityChecks();\n});\n\nconst skipBuffer = 0.003;\n// If this close to the end, skip to the end\nconst endTimeSkipBuffer = 0.5;\n\n//was sponsor data found when doing SponsorsLookup\nlet sponsorDataFound = false;\n//the actual sponsorTimes if loaded and UUIDs associated with them\nlet sponsorTimes: SponsorTime[] = [];\nlet existingChaptersImported = false;\nlet importingChaptersWaitingForFocus = false;\nlet importingChaptersWaiting = false;\nlet loopedChapter :SponsorTime = null;\n// List of open skip notices\nconst skipNotices: SkipNotice[] = [];\nlet upcomingNotice: UpcomingNotice | null = null;\nlet activeSkipKeybindElement: ToggleSkippable = null;\nlet shownSegmentFailedToFetchWarning = false;\nlet selectedSegment: SegmentUUID | null = null;\nlet previewedSegment = false;\n\n// JSON video info\nlet videoInfo: VideoInfo = null;\n// Locked Categories in this tab, like: [\"sponsor\",\"intro\",\"outro\"]\nlet lockedCategories: Category[] = [];\n// Used to calculate a more precise \"virtual\" video time\nconst lastKnownVideoTime: { videoTime: number; preciseTime: number; fromPause: boolean; approximateDelay: number } = {\n videoTime: null,\n preciseTime: null,\n fromPause: false,\n approximateDelay: null,\n};\n// It resumes with a slightly later time on chromium\nlet lastTimeFromWaitingEvent: number = null;\nconst lastNextChapterKeybind = {\n time: 0,\n date: 0\n};\n\n// Skips are scheduled to ensure precision.\n// Skips are rescheduled every seeking event.\n// Skips are canceled every seeking event\nlet currentSkipSchedule: NodeJS.Timeout = null;\nlet currentSkipInterval: NodeJS.Timeout = null;\nlet currentVirtualTimeInterval: NodeJS.Timeout = null;\nlet currentUpcomingSchedule: NodeJS.Timeout = null;\n\n/** Has the sponsor been skipped */\nlet sponsorSkipped: boolean[] = [];\n\nlet videoMuted = false; // Has it been attempted to be muted\nconst controlsWithEventListeners: HTMLElement[] = [];\n\nsetupVideoModule({\n videoIDChange,\n channelIDChange,\n videoElementChange,\n playerInit: () => {\n previewBar = null; // remove old previewbar\n createPreviewBar();\n },\n updatePlayerBar: () => {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n },\n resetValues,\n documentScript: chrome.runtime.getManifest().manifest_version === 2 ? documentScript : undefined\n}, () => Config);\nsetupThumbnailListener();\n\n// Is the video currently being switched\nlet switchingVideos = null;\n\n// Used by the play and playing listeners to make sure two aren't\n// called at the same time\nlet lastCheckTime = 0;\nlet lastCheckVideoTime = -1;\n\n// To determine if a video resolution change is happening\nlet firstPlay = true;\n\nlet previewBar: PreviewBar = null;\n// Skip to highlight button\nlet skipButtonControlBar: SkipButtonControlBar = null;\n// For full video sponsors/selfpromo\nlet categoryPill: CategoryPill = null;\n\n/** Element containing the player controls on the YouTube player. */\nlet controls: HTMLElement | null = null;\n\n/** Contains buttons created by `createButton()`. */\nconst playerButtons: Record = {};\n\naddHotkeyListener();\n\n/** Segments created by the user which have not yet been submitted. */\nlet sponsorTimesSubmitting: SponsorTime[] = [];\nlet loadedPreloadedSegment = false;\n\n//becomes true when isInfoFound is called\n//this is used to close the popup on YouTube when the other popup opens\nlet popupInitialised = false;\n\nlet submissionNotice: SubmissionNotice = null;\n\nlet lastResponseStatus: number | Error | string;\n\n// Contains all of the functions and variables needed by the skip notice\nconst skipNoticeContentContainer: ContentContainer = () => ({\n vote,\n dontShowNoticeAgain,\n unskipSponsorTime,\n sponsorTimes,\n sponsorTimesSubmitting,\n skipNotices,\n sponsorVideoID: getVideoID(),\n reskipSponsorTime,\n updatePreviewBar,\n onMobileYouTube: isOnMobileYouTube(),\n sponsorSubmissionNotice: submissionNotice,\n resetSponsorSubmissionNotice,\n updateEditButtonsOnPlayer,\n previewTime,\n videoInfo,\n getRealCurrentTime: getRealCurrentTime,\n lockedCategories,\n channelIDInfo: getChannelIDInfo()\n});\n\n// value determining when to count segment as skipped and send telemetry to server (percent based)\nconst manualSkipPercentCount = 0.5;\n\n//get messages from the background script and the popup\nchrome.runtime.onMessage.addListener(messageListener);\n\nfunction messageListener(request: Message, sender: unknown, sendResponse: (response: MessageResponse) => void): void | boolean {\n //messages from popup script\n switch(request.message){\n case \"update\":\n checkVideoIDChange();\n break;\n case \"sponsorStart\":\n startOrEndTimingNewSegment()\n\n sendResponse({\n creatingSegment: isSegmentCreationInProgress(),\n });\n\n break;\n case \"isInfoFound\":\n //send the sponsor times along with if it's found\n sendResponse({\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n\n if (!request.updating && popupInitialised && document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //the popup should be closed now that another is opening\n closeInfoMenu();\n }\n\n popupInitialised = true;\n break;\n case \"getChannelID\":\n sendResponse({\n channelID: getChannelIDInfo().id,\n isYTTV: (document.location.host === \"tv.youtube.com\")\n });\n\n break;\n case \"submitTimes\":\n openSubmissionMenu();\n break;\n case \"refreshSegments\":\n // update video on refresh if videoID invalid\n if (!getVideoID()) {\n checkVideoIDChange();\n }\n // if popup rescieves no response, or the videoID is invalid,\n // it will assume the page is not a video page and stop the refresh animation\n sendResponse({ hasVideo: getVideoID() != null });\n // fetch segments\n if (getVideoID()) {\n sponsorsLookup(false, true);\n }\n\n break;\n case \"unskip\":\n unskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), null, true);\n break;\n case \"reskip\":\n reskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), true);\n break;\n case \"selectSegment\":\n selectSegment(request.UUID);\n break;\n case \"submitVote\":\n vote(request.type, request.UUID).then((response) => sendResponse(response));\n return true;\n case \"hideSegment\":\n utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID).hidden = request.type;\n utils.addHiddenSegment(getVideoID(), request.UUID, request.type);\n updatePreviewBar();\n\n if (skipButtonControlBar?.isEnabled()\n && sponsorTimesSubmitting.every((s) => s.hidden !== SponsorHideType.Visible || s.actionType !== ActionType.Poi)) {\n skipButtonControlBar.disable();\n }\n break;\n case \"closePopup\":\n closeInfoMenu();\n break;\n case \"copyToClipboard\":\n navigator.clipboard.writeText(request.text);\n break;\n case \"loopChapter\":\n if (!request.UUID){\n loopedChapter = null;\n break;\n }\n loopedChapter = {...utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID)};\n loopedChapter.segment = [loopedChapter.segment[1], loopedChapter.segment[0]];\n break;\n case \"importSegments\": {\n const importedSegments = importTimes(request.data, getVideoDuration());\n let addedSegments = false;\n for (const segment of importedSegments) {\n if (!sponsorTimesSubmitting.some(\n (s) => Math.abs(s.segment[0] - segment.segment[0]) < 1\n && Math.abs(s.segment[1] - segment.segment[1]) < 1\n && s.description === segment.description)) {\n const hasChaptersPermission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[\"chapter\"]);\n if (segment.category === \"chapter\" && (!getCategoryDefaultSelection(\"chapter\") || !hasChaptersPermission)) {\n segment.category = \"chooseACategory\" as Category;\n segment.actionType = ActionType.Skip;\n segment.description = \"\";\n }\n\n sponsorTimesSubmitting.push(segment);\n addedSegments = true;\n }\n }\n\n if (addedSegments) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n openSubmissionMenu();\n }\n\n sendResponse({\n importedSegments\n });\n break;\n }\n case \"keydown\":\n (document.body || document).dispatchEvent(new KeyboardEvent('keydown', {\n key: request.key,\n keyCode: request.keyCode,\n code: request.code,\n which: request.which,\n shiftKey: request.shiftKey,\n ctrlKey: request.ctrlKey,\n altKey: request.altKey,\n metaKey: request.metaKey\n }));\n break;\n case \"getLogs\":\n sendResponse({\n debug: window[\"SBLogs\"].debug,\n warn: window[\"SBLogs\"].warn\n });\n break;\n case \"setCurrentTabSkipProfile\":\n setCurrentTabSkipProfile(request.configID);\n channelIDChange();\n break;\n }\n\n sendResponse({});\n}\n\n/**\n * Called when the config is updated\n */\nfunction contentConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"hideVideoPlayerControls\":\n case \"hideInfoButtonPlayerControls\":\n case \"hideDeleteButtonPlayerControls\":\n updateVisibilityOfPlayerControlsButton()\n break;\n case \"categorySelections\":\n channelIDChange();\n break;\n case \"barTypes\":\n setCategoryColorCSSVariables();\n break;\n case \"fullVideoSegments\":\n case \"fullVideoLabelsOnThumbnails\":\n updateAll();\n break;\n }\n }\n}\nfunction contentLocalConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"channelSkipProfileIDs\":\n case \"skipProfiles\":\n case \"skipProfileTemp\":\n channelIDChange();\n break;\n }\n }\n}\n\nif (!window.location.href.includes(\"youtube.com/live_chat\")) {\n if (!Config.configSyncListeners.includes(contentConfigUpdateListener)) {\n Config.configSyncListeners.push(contentConfigUpdateListener);\n }\n\n if (!Config.configLocalListeners.includes(contentLocalConfigUpdateListener)) {\n Config.configLocalListeners.push(contentLocalConfigUpdateListener);\n }\n}\n\nfunction resetValues() {\n lastCheckTime = 0;\n lastCheckVideoTime = -1;\n previewedSegment = false;\n firstPlay = true;\n\n sponsorTimes = [];\n existingChaptersImported = false;\n sponsorSkipped = [];\n loopedChapter = null;\n lastResponseStatus = 0;\n shownSegmentFailedToFetchWarning = false;\n\n videoInfo = null;\n lockedCategories = [];\n\n //empty the preview bar\n if (previewBar !== null) {\n previewBar.clear();\n }\n\n //reset sponsor data found check\n sponsorDataFound = false;\n\n // When first loading a video, it is not switching videos\n // Hover play also doesn't need this check\n if (switchingVideos === null || !onVideoPage()) {\n switchingVideos = false;\n } else {\n switchingVideos = true;\n logDebug(\"Setting switching videos to true (reset data)\");\n }\n\n skipButtonControlBar?.disable();\n categoryPill?.setVisibility(false);\n\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop()?.close();\n }\n\n if (upcomingNotice) {\n upcomingNotice.close();\n upcomingNotice = null;\n }\n\n hideDeArrowPromotion();\n}\n\nfunction videoIDChange(): void {\n //setup the preview bar\n if (previewBar === null) {\n if (isOnMobileYouTube()) {\n // Mobile YouTube workaround\n const observer = new MutationObserver(handleMobileControlsMutations);\n let controlsContainer = null;\n\n utils.wait(() => {\n controlsContainer = document.getElementById(\"player-control-container\")\n return controlsContainer !== null\n }).then(() => {\n observer.observe(document.getElementById(\"player-control-container\"), {\n attributes: true,\n childList: true,\n subtree: true\n });\n }).catch();\n } else {\n utils.wait(getControls).then(createPreviewBar);\n }\n }\n\n // Notify the popup about the video change\n chrome.runtime.sendMessage({\n message: \"videoChanged\",\n videoID: getVideoID(),\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author\n });\n\n sponsorsLookup();\n\n // Make sure all player buttons are properly added\n updateVisibilityOfPlayerControlsButton();\n\n // Clear unsubmitted segments from the previous video\n sponsorTimesSubmitting = [];\n updateSponsorTimesSubmitting();\n\n tryShowingDeArrowPromotion().catch(logWarn);\n\n checkPreviewbarState();\n\n if (getIsInline()) {\n // Hover preview progress bar can take some time to appear\n // and if the miniplayer is also active then it would \n // attach to the wrong one\n setTimeout(checkPreviewbarState, 500);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 3000);\n }\n}\n\nfunction handleMobileControlsMutations(): void {\n // Don't update while scrubbing\n if (!chrome.runtime?.id \n || document.querySelector(\".YtProgressBarProgressBarPlayheadDotInDragging\")) return;\n\n updateVisibilityOfPlayerControlsButton();\n\n skipButtonControlBar?.updateMobileControls();\n\n if (previewBar !== null) {\n if (!previewBar.parent.contains(previewBar.container) && isMobileControlsOpen()) {\n previewBar.createElement();\n updatePreviewBar();\n\n return;\n } else if (!previewBar.parent.isConnected) {\n // The parent does not exist anymore, remove that old preview bar\n previewBar.remove();\n previewBar = null;\n }\n }\n\n // Create the preview bar if needed (the function hasn't returned yet)\n createPreviewBar();\n}\n\nfunction getPreviewBarAttachElement(): HTMLElement | null {\n const progressElementOptions = [{\n // For newer mobile YouTube (Sept 2024)\n selector: \".ytChapteredProgressBarHost, .ytProgressBarLineHost, .YtProgressBarLineHost, .YtChapteredProgressBarHost\",\n isVisibleCheck: true\n }, {\n // For newer mobile YouTube (May 2024)\n selector: \".YtmProgressBarProgressBarLine\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube hover play\n // Priority is given to the hover play progress bar over the main progress bar\n // for miniplayer + hover preview case\n // Second is new hover play selector\n selector: \"#video-preview .ytp-progress-bar, #video-preview .YtProgressBarLineHost\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".ytp-progress-bar\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".no-model.cue-range-marker\",\n isVisibleCheck: true\n }, {\n // For Invidious/VideoJS\n selector: \".vjs-progress-holder\",\n isVisibleCheck: false\n }, {\n // For Youtube Music and YTKids\n // there are two sliders, one for volume and one for progress - both called #progressContainer\n selector: \"#progress-bar>#sliderContainer>div>#sliderBar>#progressContainer\",\n }, {\n // For piped\n selector: \".shaka-ad-markers\",\n isVisibleCheck: false\n }, {\n // For Vorapis v3\n selector: \".ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\"\n }, {\n // For YTTV\n selector: \".yssi-slider > div.ytu-ss-timeline-container\",\n isVisibleCheck: false\n }\n ];\n\n for (const option of progressElementOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.isVisibleCheck ? findValidElement(allElements) : allElements[0];\n\n if (el) {\n return el;\n }\n }\n\n return null;\n}\n\n/**\n * Creates a preview bar on the video\n */\nfunction createPreviewBar(): void {\n if (previewBar !== null) return;\n\n const el = getPreviewBarAttachElement();\n\n if (el) {\n const chapterVote = new ChapterVote(voteAsync);\n previewBar = new PreviewBar(el, isOnMobileYouTube(), isOnInvidious(), isOnYTTV(), chapterVote, () => importExistingChapters(true));\n\n updatePreviewBar();\n }\n}\n\n/**\n * Triggered every time the video duration changes.\n * This happens when the resolution changes or at random time to clear memory.\n */\nfunction durationChangeListener(): void {\n updateAdFlag();\n updatePreviewBar();\n}\n\n/**\n * Triggered once the video is ready.\n * This is mainly to attach to embedded players who don't have a video element visible.\n */\nfunction videoOnReadyListener(): void {\n createPreviewBar();\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton()\n}\n\nfunction cancelSponsorSchedule(): void {\n logDebug(\"Pausing skipping\");\n\n if (currentSkipSchedule !== null) {\n clearTimeout(currentSkipSchedule);\n currentSkipSchedule = null;\n }\n\n if (currentSkipInterval !== null) {\n clearInterval(currentSkipInterval);\n currentSkipInterval = null;\n }\n\n if (currentUpcomingSchedule !== null) {\n clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = null;\n }\n}\n\n/**\n * @param currentTime Optional if you don't want to use the actual current time\n */\nasync function startSponsorSchedule(includeIntersectingSegments = false, currentTime?: number, includeNonIntersectingSegments = true): Promise {\n cancelSponsorSchedule();\n\n // Don't skip if advert playing and reset last checked time\n if (getIsAdPlaying()) {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n logDebug(\"[SB] Ad playing, pausing skipping\");\n\n return;\n }\n\n // Give up if video changed, and trigger a videoID change if so\n if (await checkIfNewVideoID()) {\n return;\n }\n\n logDebug(`Considering to start skipping: ${!getVideo()}, ${getVideo()?.paused}`);\n if (!getVideo()) return;\n if (currentTime === undefined || currentTime === null) {\n currentTime = getVirtualTime();\n }\n clearWaitingTime();\n\n updateActiveSegment(currentTime);\n\n if ((getVideo().paused && getCurrentTime() !== 0) // Allow autoplay disabled videos to skip before playing\n || (getCurrentTime() >= getVideoDuration() - 0.01 && getVideoDuration() > 1)) return;\n const skipInfo = getNextSkipIndex(currentTime, includeIntersectingSegments, includeNonIntersectingSegments);\n\n const currentSkip = skipInfo.array[skipInfo.index];\n const skipTime: number[] = [currentSkip?.scheduledTime, skipInfo.array[skipInfo.endIndex]?.segment[1]];\n const timeUntilSponsor = skipTime?.[0] - currentTime;\n const videoID = getVideoID();\n\n if (videoMuted && !inMuteSegment(currentTime, skipInfo.index !== -1\n && timeUntilSponsor < skipBuffer && shouldAutoSkip(currentSkip))) {\n getVideo().muted = false;\n videoMuted = false;\n\n for (const notice of skipNotices) {\n // So that the notice can hide buttons\n notice.unmutedListener(currentTime);\n }\n }\n\n logDebug(`Ready to start skipping: ${skipInfo.index} at ${currentTime}`);\n if (skipInfo.index === -1) return;\n\n if (Config.config.disableSkipping || (getChannelIDInfo().status === ChannelIDStatus.Fetching && Config.config.forceChannelCheck)){\n return;\n }\n\n if (incorrectVideoCheck()) return;\n\n // Find all indexes in between the start and end\n let skippingSegments = [skipInfo.array[skipInfo.index]];\n if (skipInfo.index !== skipInfo.endIndex) {\n skippingSegments = [];\n\n for (const segment of skipInfo.array) {\n if (shouldAutoSkip(segment) &&\n segment.segment[0] >= skipTime[0] && segment.segment[1] <= skipTime[1]\n && segment.segment[0] === segment.scheduledTime) { // Don't include artificial scheduled segments (end times for mutes)\n skippingSegments.push(segment);\n }\n }\n }\n\n logDebug(`Next step in starting skipping: ${!shouldSkip(currentSkip)}, ${!sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)}`);\n\n const skippingFunction = (forceVideoTime?: number) => {\n let forcedSkipTime: number = null;\n let forcedIncludeIntersectingSegments = false;\n let forcedIncludeNonIntersectingSegments = true;\n\n if (incorrectVideoCheck(videoID, currentSkip)) return;\n forceVideoTime ||= Math.max(getCurrentTime(), getVirtualTime());\n\n if ((shouldSkip(currentSkip)\n || sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment\n && segment.actionType !== ActionType.Chapter\n && segment.hidden === SponsorHideType.Visible))) {\n if (forceVideoTime >= skipTime[0] - skipBuffer && (forceVideoTime < skipTime[1] || skipTime[1] < skipTime[0])) {\n skipToTime({\n v: getVideo(),\n skipTime,\n skippingSegments,\n openNotice: skipInfo.openNotice\n });\n\n // These are segments that start at the exact same time but need separate notices\n for (const extra of skipInfo.extraIndexes) {\n const extraSkip = skipInfo.array[extra];\n if (shouldSkip(extraSkip)) {\n skipToTime({\n v: getVideo(),\n skipTime: [extraSkip.scheduledTime, extraSkip.segment[1]],\n skippingSegments: [extraSkip],\n openNotice: skipInfo.openNotice\n });\n }\n }\n\n if (getCategorySelection(currentSkip)?.option === CategorySkipOption.ManualSkip\n || currentSkip.actionType === ActionType.Mute) {\n forcedSkipTime = skipTime[0] + 0.001;\n } else {\n forcedSkipTime = skipTime[1];\n forcedIncludeNonIntersectingSegments = false;\n\n // Only if not at the end of the video\n if (Math.abs(skipTime[1] - getVideoDuration()) > endTimeSkipBuffer) {\n forcedIncludeIntersectingSegments = true;\n }\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n\n // Don't pretend to be earlier than we are, could result in loops\n if (forcedSkipTime !== null && forceVideoTime > forcedSkipTime && skipTime[1] > skipTime[0]) {\n forcedSkipTime = forceVideoTime;\n }\n\n startSponsorSchedule(forcedIncludeIntersectingSegments, forcedSkipTime, forcedIncludeNonIntersectingSegments);\n };\n\n if (timeUntilSponsor < skipBuffer) {\n skippingFunction(currentTime);\n } else {\n let delayTime = timeUntilSponsor * 1000 * (1 / getVideo().playbackRate);\n if (delayTime < (isFirefoxOrSafari() && !isSafari() ? 750 : 300)\n && shouldAutoSkip(skippingSegments[0])) {\n let forceStartIntervalTime: number | null = null;\n if (isFirefoxOrSafari() && !isSafari() && delayTime > 300) {\n forceStartIntervalTime = await waitForNextTimeChange();\n }\n\n // Use interval instead of timeout near the end to combat imprecise video time\n const startIntervalTime = forceStartIntervalTime || performance.now();\n const startVideoTime = Math.max(currentTime, getVirtualTime());\n delayTime = (skipTime?.[0] - startVideoTime) * 1000 * (1 / getVideo().playbackRate);\n\n let startWaitingForReportedTimeToChange = true;\n const reportedVideoTimeAtStart = getCurrentTime();\n logDebug(`Starting setInterval skipping ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n if (currentSkipInterval !== null) clearInterval(currentSkipInterval);\n currentSkipInterval = setInterval(() => {\n // Estimate delay, but only take the current time right after a change\n // Current time remains the same for many \"frames\" on Firefox\n if (isFirefoxOrSafari() && !lastKnownVideoTime.fromPause && startWaitingForReportedTimeToChange\n && reportedVideoTimeAtStart !== getCurrentTime()) {\n startWaitingForReportedTimeToChange = false;\n const delay = getVirtualTime() - getCurrentTime();\n if (delay > 0) lastKnownVideoTime.approximateDelay = delay;\n }\n\n const intervalDuration = performance.now() - startIntervalTime;\n if (intervalDuration + skipBuffer * 1000 >= delayTime || getVirtualTime() + skipBuffer >= skipTime[0]) {\n clearInterval(currentSkipInterval);\n if (!isFirefoxOrSafari() && !getVideo().muted && !inMuteSegment(getCurrentTime(), true)) {\n // Workaround for more accurate skipping on Chromium\n getVideo().muted = true;\n getVideo().muted = false;\n }\n\n skippingFunction(Math.max(getVirtualTime(), startVideoTime + getVideo().playbackRate * Math.max(delayTime, intervalDuration) / 1000));\n }\n }, 0);\n } else {\n logDebug(`Starting timeout to skip ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n const offset = (isFirefoxOrSafari() && !isSafari() ? 600 : 150);\n // Schedule for right before to be more precise than normal timeout\n const offsetDelayTime = Math.max(0, delayTime - offset);\n currentSkipSchedule = setTimeout(skippingFunction, offsetDelayTime);\n\n // Show the notice only if the segment hasn't already started\n if (Config.config.showUpcomingNotice && getCurrentTime() < skippingSegments[0].segment[0] \n && !sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)\n && [ActionType.Skip, ActionType.Mute].includes(skippingSegments[0].actionType)\n && getCategorySelection(skippingSegments[0])?.option > CategorySkipOption.ShowOverlay\n && !getVideo()?.paused) {\n const maxPopupTime = 3000;\n const timeUntilPopup = Math.max(0, offsetDelayTime - maxPopupTime);\n const popupTime = offsetDelayTime - timeUntilPopup;\n const autoSkip = shouldAutoSkip(skippingSegments[0]);\n\n if (currentUpcomingSchedule) clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = setTimeout(createUpcomingNotice, timeUntilPopup, [skippingSegments[0]], popupTime, autoSkip);\n }\n }\n }\n}\n\n/**\n * Used on Firefox only, waits for the next animation frame until\n * the video time has changed\n */\nfunction waitForNextTimeChange(): Promise {\n return new Promise((resolve) => {\n getVideo().addEventListener(\"timeupdate\", () => resolve(performance.now()), { once: true });\n });\n}\n\nfunction getVirtualTime(): number {\n const virtualTime = lastTimeFromWaitingEvent ?? (lastKnownVideoTime.videoTime !== null ?\n (performance.now() - lastKnownVideoTime.preciseTime) * (getVideo()?.playbackRate || 1) / 1000 + lastKnownVideoTime.videoTime : null);\n\n if (Config.config.useVirtualTime && !isSafari() && virtualTime\n && virtualTime > getCurrentTime() && virtualTime - getCurrentTime() < 0.8 && getCurrentTime() !== 0) {\n return Math.max(virtualTime, getCurrentTime());\n } else {\n return getCurrentTime();\n }\n}\n\nfunction inMuteSegment(currentTime: number, includeOverlap: boolean): boolean {\n const checkFunction = (segment) => segment.actionType === ActionType.Mute\n && segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime\n && (segment.segment[1] > currentTime || (includeOverlap && segment.segment[1] + 0.02 > currentTime));\n return sponsorTimes?.some(checkFunction) || sponsorTimesSubmitting.some(checkFunction);\n}\n\n/**\n * This makes sure the videoID is still correct and if the sponsorTime is included\n */\nfunction incorrectVideoCheck(videoID?: string, sponsorTime?: SponsorTime): boolean {\n if (!onVideoPage()) return false;\n\n const currentVideoID = getYouTubeVideoID();\n const recordedVideoID = videoID || getVideoID();\n if (currentVideoID !== recordedVideoID || (sponsorTime\n && (!sponsorTimes || !sponsorTimes?.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1]))\n && !sponsorTimesSubmitting.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1])\n && (!isLoopedChapter(sponsorTime)))) {\n // Something has really gone wrong\n console.error(\"[SponsorBlock] The videoID recorded when trying to skip is different than what it should be.\");\n console.error(\"[SponsorBlock] VideoID recorded: \" + recordedVideoID + \". Actual VideoID: \" + currentVideoID);\n console.error(\"[SponsorBlock] SponsorTime\", sponsorTime, \"sponsorTimes\", sponsorTimes, \"sponsorTimesSubmitting\", sponsorTimesSubmitting);\n\n // Video ID change occured\n checkVideoIDChange();\n\n return true;\n } else {\n return false;\n }\n}\n\nlet playbackRateCheckInterval: NodeJS.Timeout | null = null;\nlet lastPlaybackSpeed = 1;\nlet setupVideoListenersFirstTime = true;\nfunction setupVideoListeners(video: HTMLVideoElement) {\n if (!video) return; // Maybe video became invisible\n\n //wait until it is loaded\n video.addEventListener('loadstart', videoOnReadyListener)\n video.addEventListener('durationchange', durationChangeListener);\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('loadstart', videoOnReadyListener);\n video.removeEventListener('durationchange', durationChangeListener);\n });\n }\n\n if (!Config.config.disableSkipping) {\n switchingVideos = false;\n\n let startedWaiting = false;\n let lastPausedAtZero = true;\n let lastVideoDataChange = 0;\n\n const rateChangeListener = () => {\n updateVirtualTime();\n clearWaitingTime();\n\n startSponsorSchedule();\n };\n video.addEventListener('ratechange', rateChangeListener);\n // Used by videospeed extension (https://github.com/igrigorik/videospeed/pull/740)\n video.addEventListener('videoSpeed_ratechange', rateChangeListener);\n\n const playListener = () => {\n // Prevent video resolution changes from causing skips\n if (!firstPlay && Date.now() - lastVideoDataChange < 200 && video.currentTime === 0) return;\n\n firstPlay = false;\n updateVirtualTime();\n checkForMiniplayerPlaying();\n\n if (switchingVideos || lastPausedAtZero) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n lastPausedAtZero = false;\n\n // Check if an ad is playing\n updateAdFlag();\n\n // Make sure it doesn't get double called with the playing event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n };\n video.addEventListener('play', playListener);\n\n const playingListener = () => {\n updateVirtualTime();\n lastPausedAtZero = false;\n\n if (startedWaiting) {\n startedWaiting = false;\n logDebug(`[SB] Playing event after buffering: ${Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)}`);\n }\n\n if (switchingVideos) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n // Make sure it doesn't get double called with the play event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n lastPlaybackSpeed = video.playbackRate;\n\n // Video speed controller compatibility\n // That extension makes rate change events not propagate\n if (document.body.classList.contains(\"vsc-initialized\")) {\n playbackRateCheckInterval = setInterval(() => {\n if ((!getVideoID() || video.paused) && playbackRateCheckInterval) {\n // Video is gone, stop checking\n clearInterval(playbackRateCheckInterval);\n return;\n }\n \n if (video.playbackRate !== lastPlaybackSpeed) {\n lastPlaybackSpeed = video.playbackRate;\n \n rateChangeListener();\n }\n }, 2000);\n }\n };\n video.addEventListener('playing', playingListener);\n \n const seekingListener = () => {\n lastKnownVideoTime.fromPause = false;\n\n if (!video.paused){\n // Reset lastCheckVideoTime\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n updateVirtualTime();\n clearWaitingTime();\n\n // Sometimes looped videos loop back to almost zero, but not quite\n if (video.loop && video.currentTime < 0.2 && getCurrentTime() < 0.2) {\n startSponsorSchedule(false, 0);\n } else {\n startSponsorSchedule();\n }\n } else {\n updateActiveSegment(getCurrentTime());\n\n if (getCurrentTime() === 0) {\n lastPausedAtZero = true;\n }\n }\n };\n video.addEventListener('seeking', seekingListener);\n \n const stoppedPlayback = () => {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n\n lastKnownVideoTime.videoTime = null;\n lastKnownVideoTime.preciseTime = null;\n updateWaitingTime(video);\n\n cancelSponsorSchedule();\n };\n const pauseListener = () => {\n lastKnownVideoTime.fromPause = true;\n\n stoppedPlayback();\n };\n video.addEventListener('pause', pauseListener);\n const waitingListener = () => {\n logDebug(\"[SB] Not skipping due to buffering\");\n startedWaiting = true;\n\n stoppedPlayback();\n };\n video.addEventListener('waiting', waitingListener);\n\n // When video data is changed\n const emptyListener = () => {\n lastVideoDataChange = Date.now();\n\n if (firstPlay && video.currentTime === 0) {\n playListener();\n }\n }\n video.addEventListener('emptied', emptyListener);\n\n // For when autoplay is off to skip before starting playback\n const metadataLoadedListener = () => {\n if (firstPlay && getCurrentTime() === 0) {\n playListener();\n }\n }\n video.addEventListener('loadedmetadata', metadataLoadedListener)\n\n startSponsorSchedule();\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('play', playListener);\n video.removeEventListener('playing', playingListener);\n video.removeEventListener('seeking', seekingListener);\n video.removeEventListener('ratechange', rateChangeListener);\n video.removeEventListener('videoSpeed_ratechange', rateChangeListener);\n video.removeEventListener('pause', pauseListener);\n video.removeEventListener('waiting', waitingListener);\n video.removeEventListener('empty', emptyListener);\n video.removeEventListener('loadedmetadata', metadataLoadedListener);\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n });\n }\n }\n\n setupVideoListenersFirstTime = false;\n}\n\nfunction updateVirtualTime() {\n if (currentVirtualTimeInterval) clearInterval(currentVirtualTimeInterval);\n\n lastKnownVideoTime.videoTime = getCurrentTime();\n lastKnownVideoTime.preciseTime = performance.now();\n\n // If on Firefox, wait for the second time change (time remains fixed for many \"frames\" for privacy reasons)\n if (isFirefoxOrSafari()) {\n let count = 0;\n let rawCount = 0;\n let lastTime = lastKnownVideoTime.videoTime;\n let lastPerformanceTime = performance.now();\n\n currentVirtualTimeInterval = setInterval(() => {\n const frameTime = performance.now() - lastPerformanceTime;\n if (lastTime !== getCurrentTime()) {\n rawCount++;\n\n // If there is lag, give it another shot at finding a good change time\n if (frameTime < 20 || rawCount > 30) {\n count++;\n }\n lastTime = getCurrentTime();\n }\n\n if (count > 1) {\n const delay = lastKnownVideoTime.fromPause && lastKnownVideoTime.approximateDelay ?\n lastKnownVideoTime.approximateDelay : 0;\n\n lastKnownVideoTime.videoTime = getCurrentTime() + delay;\n lastKnownVideoTime.preciseTime = performance.now();\n\n clearInterval(currentVirtualTimeInterval);\n currentVirtualTimeInterval = null;\n }\n\n lastPerformanceTime = performance.now();\n }, 1);\n }\n}\n\nfunction updateWaitingTime(video: HTMLVideoElement): void {\n lastTimeFromWaitingEvent = video.currentTime;\n}\n\nfunction clearWaitingTime(): void {\n lastTimeFromWaitingEvent = null;\n}\n\nfunction setupSkipButtonControlBar() {\n if (!skipButtonControlBar) {\n skipButtonControlBar = new SkipButtonControlBar({\n skip: (segment) => skipToTime({\n v: getVideo(),\n skipTime: segment.segment,\n skippingSegments: [segment],\n openNotice: true,\n forceAutoSkip: true\n }),\n selectSegment,\n onMobileYouTube: isOnMobileYouTube(),\n onYTTV: isOnYTTV(),\n });\n }\n\n skipButtonControlBar.attachToPage();\n}\n\nfunction setupCategoryPill() {\n if (!categoryPill) {\n categoryPill = new CategoryPill();\n }\n\n categoryPill.attachToPage(isOnMobileYouTube(), isOnInvidious(), voteAsync);\n}\n\nasync function sponsorsLookup(keepOldSubmissions = true, ignoreCache = false) {\n const videoID = getVideoID();\n if (!videoID) {\n console.error(\"[SponsorBlock] Attempted to fetch segments with a null/undefined videoID.\");\n return;\n }\n\n const segmentData = await getSegmentsForVideo(videoID, ignoreCache);\n\n // Make sure an old pending request doesn't get used.\n if (videoID !== getVideoID()) return;\n\n // store last response status\n lastResponseStatus = segmentData.status;\n if (segmentData.status === 200) {\n const receivedSegments = segmentData.segments;\n\n if (receivedSegments && receivedSegments.length) {\n sponsorDataFound = receivedSegments.findIndex((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled) !== -1;\n\n // Check if any old submissions should be kept\n if (sponsorTimes !== null && keepOldSubmissions) {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].source === SponsorSourceType.Local) {\n // This is a user submission, keep it\n receivedSegments.push(sponsorTimes[i]);\n }\n }\n }\n\n const oldSegments = sponsorTimes || [];\n sponsorTimes = receivedSegments;\n existingChaptersImported = false;\n\n if (keepOldSubmissions) {\n for (const segment of oldSegments) {\n const otherSegment = sponsorTimes.find((other) => segment.UUID === other.UUID);\n if (otherSegment) {\n // If they downvoted it, or changed the category, keep it\n otherSegment.hidden = segment.hidden;\n otherSegment.category = segment.category;\n }\n }\n }\n\n // See if some segments should be hidden\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const downvotedData = Config.local.downvotedSegments[hashPrefix];\n if (downvotedData) {\n for (const segment of sponsorTimes) {\n const hashedUUID = await getHash(segment.UUID, 1);\n const segmentDownvoteData = downvotedData.segments.find((downvote) => downvote.uuid === hashedUUID);\n if (segmentDownvoteData) {\n segment.hidden = segmentDownvoteData.hidden;\n }\n }\n }\n\n hideTooShortSegments(sponsorTimes);\n\n if (!getVideo()) {\n //there is still no video here\n await waitForVideo();\n }\n\n startSkipScheduleCheckingForStartSponsors();\n\n if (!isNaN(getVideoDuration())) {\n updatePreviewBar();\n }\n }\n }\n\n notifyPopupOfSegments();\n importExistingChapters(true);\n\n if (Config.config.isVip) {\n lockedCategoriesLookup();\n }\n}\n\nfunction notifyPopupOfSegments(): void {\n // notify popup of segment changes\n chrome.runtime.sendMessage({\n message: \"infoUpdated\",\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n}\n\nfunction importExistingChapters(wait: boolean) {\n if (!existingChaptersImported && !importingChaptersWaiting && onVideoPage() && !isOnMobileYouTube()) {\n const waitCondition = () => getVideoDuration() && getExistingChapters(getVideoID(), getVideoDuration());\n\n if (wait && !document.hasFocus() && !importingChaptersWaitingForFocus && !waitCondition()) {\n importingChaptersWaitingForFocus = true;\n const listener = () => {\n importExistingChapters(wait);\n window.removeEventListener(\"focus\", listener);\n };\n window.addEventListener(\"focus\", listener);\n } else {\n importingChaptersWaiting = true;\n waitFor(waitCondition,\n wait ? 15000 : 0, 400, (c) => c?.length > 0).then((chapters) => {\n importingChaptersWaiting = false;\n\n if (!existingChaptersImported && chapters?.length > 0) {\n sponsorTimes = (sponsorTimes ?? []).concat(...chapters).sort((a, b) => a.segment[0] - b.segment[0]);\n existingChaptersImported = true;\n updatePreviewBar();\n }\n }).catch(() => { importingChaptersWaiting = false; });\n\n if (!getSkipProfileBool(\"showAutogeneratedChapters\")) {\n waitFor(() => hasAutogeneratedChapters(), wait ? 15000 : 0, 400).then(() => {\n updateActiveSegment(getCurrentTime());\n }).catch(() => { }); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n }\n }\n}\n\nfunction handleExistingChaptersChannelChange() {\n if (existingChaptersImported && hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\")) {\n sponsorTimes = sponsorTimes.filter((segment) => segment.source !== SponsorSourceType.Autogenerated);\n }\n}\n\nasync function lockedCategoriesLookup(): Promise {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n try {\n const response = await asyncRequestToServer(\"GET\", \"/api/lockCategories/\" + hashPrefix);\n\n if (response.ok) {\n const categoriesResponse = JSON.parse(response.responseText).filter((lockInfo) => lockInfo.videoID === getVideoID())[0]?.categories;\n if (Array.isArray(categoriesResponse)) {\n lockedCategories = categoriesResponse;\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"locked categories\")\n }\n } catch (e) {\n console.warn(`[SB] Caught error while looking up category locks for hashprefix ${hashPrefix}`, e)\n }\n}\n\n/**\n * Only should be used when it is okay to skip a sponsor when in the middle of it\n *\n * Ex. When segments are first loaded\n */\nfunction startSkipScheduleCheckingForStartSponsors() {\n\t// switchingVideos is ignored in Safari due to event fire order. See #1142\n if ((!switchingVideos || isSafari()) && sponsorTimes) {\n // See if there are any starting sponsors\n let startingSegmentTime = getStartTimeFromUrl(document.URL) || -1;\n let found = false;\n for (const time of sponsorTimes) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n if (!found) {\n for (const time of sponsorTimesSubmitting) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n }\n\n // For highlight category\n const poiSegments = sponsorTimes\n .filter((time) => time.segment[1] > getCurrentTime()\n && time.actionType === ActionType.Poi\n && time.hidden === SponsorHideType.Visible\n && getCategorySelection(time).option !== CategorySkipOption.Disabled)\n .sort((a, b) => b.segment[0] - a.segment[0]);\n for (const time of poiSegments) {\n const skipOption = getCategorySelection(time)?.option;\n if (skipOption !== CategorySkipOption.ShowOverlay) {\n skipToTime({\n v: getVideo(),\n skipTime: time.segment,\n skippingSegments: [time],\n openNotice: true,\n unskipTime: getCurrentTime()\n });\n if (skipOption === CategorySkipOption.AutoSkip) break;\n }\n }\n\n if (startingSegmentTime !== -1) {\n startSponsorSchedule(undefined, startingSegmentTime);\n } else {\n startSponsorSchedule();\n }\n }\n}\n\nfunction selectSegment(UUID: SegmentUUID): void {\n selectedSegment = UUID;\n updatePreviewBar();\n}\n\nfunction updatePreviewBar(): void {\n if (previewBar === null) return;\n\n if (getIsAdPlaying()) {\n previewBar.clear();\n return;\n }\n\n if (getVideo() === null) return;\n\n const hashParams = getHashParams();\n const requiredSegment = hashParams?.requiredSegment as SegmentUUID || undefined;\n const previewBarSegments: PreviewBarSegment[] = [];\n if (sponsorTimes) {\n sponsorTimes.forEach((segment) => {\n if (segment.hidden !== SponsorHideType.Visible || getCategorySelection(segment).option === CategorySkipOption.Disabled) return;\n\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: false,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source,\n requiredSegment: requiredSegment && (segment.UUID === requiredSegment || segment.UUID?.startsWith(requiredSegment) || requiredSegment.startsWith(segment.UUID)),\n selectedSegment: selectedSegment && segment.UUID === selectedSegment\n });\n });\n }\n\n sponsorTimesSubmitting.forEach((segment) => {\n if (segment.hidden === SponsorHideType.Visible\n && (segment.actionType !== ActionType.Chapter || segment.segment.length > 1)) {\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: true,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source\n });\n }\n });\n\n previewBar.set(previewBarSegments.filter((segment) => segment.actionType !== ActionType.Full), getVideoDuration())\n if (getVideo()) updateActiveSegment(getCurrentTime());\n\n if (Config.config.showTimeWithSkips) {\n const skippedDuration = utils.getTimestampsDuration(previewBarSegments\n .filter(({actionType}) => ![ActionType.Mute, ActionType.Chapter].includes(actionType))\n .map(({segment}) => segment));\n\n showTimeWithoutSkips(skippedDuration);\n }\n}\n\nfunction updateCategoryPill() {\n const fullVideoSegment = sponsorTimes.filter((time) => time.actionType === ActionType.Full)[0];\n if (fullVideoSegment && getSkipProfileBool(\"fullVideoSegments\")) {\n categoryPill?.setSegment(fullVideoSegment);\n } else {\n categoryPill?.setVisibility(false);\n }\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nasync function channelIDChange() {\n // check if the start of segments were missed\n if (Config.config.forceChannelCheck && sponsorTimes?.length > 0) startSkipScheduleCheckingForStartSponsors();\n\n hideTooShortSegments(sponsorTimes);\n handleExistingChaptersChannelChange();\n updatePreviewBar();\n updateCategoryPill();\n notifyPopupOfSegments();\n}\n\nfunction videoElementChange(newVideo: boolean, video: HTMLVideoElement): void {\n waitFor(() => Config.isReady()).then(() => {\n if (newVideo) {\n setupVideoListeners(video);\n setupSkipButtonControlBar();\n setupCategoryPill();\n }\n \n updatePreviewBar();\n checkPreviewbarState();\n \n // Incase the page is still transitioning, check again in a few seconds\n setTimeout(checkPreviewbarState, 100);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 5000);\n })\n}\n\nlet checkingPreviewbarAgain = false;\nfunction checkPreviewbarState(): void {\n if (!getPreviewBarAttachElement() && !checkingPreviewbarAgain && getVideo() && getVideoID()) {\n checkingPreviewbarAgain = true;\n setTimeout(() => {\n checkingPreviewbarAgain = false;\n checkPreviewbarState();\n }, 500);\n\n return;\n }\n\n if (previewBar && !getPreviewBarAttachElement()?.contains(previewBar.container)) {\n previewBar.remove();\n previewBar = null;\n }\n\n createPreviewBar();\n}\n\n/**\n * Returns info about the next upcoming sponsor skip\n */\nfunction getNextSkipIndex(currentTime: number, includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean):\n {array: ScheduledTime[]; index: number; endIndex: number; extraIndexes: number[]; openNotice: boolean} {\n\n const autoSkipSorter = (segment: ScheduledTime) => {\n const skipOption = getCategorySelection(segment)?.option;\n if (segment.hidden !== SponsorHideType.Visible) {\n // Hidden segments sometimes end up here if another segment is at the same time, use them last\n return 3;\n } else if ((skipOption === CategorySkipOption.AutoSkip || shouldAutoSkip(segment))\n && (segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter)) {\n return 0;\n } else if (skipOption !== CategorySkipOption.ShowOverlay) {\n return 1;\n } else {\n return 2;\n }\n }\n\n const { includedTimes: submittedArray, scheduledTimes: sponsorStartTimes } =\n getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: sponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, true);\n\n // This is an array in-case multiple segments have the exact same start time\n const minSponsorTimeIndexes = GenericUtils.indexesOf(sponsorStartTimes, Math.min(...sponsorStartTimesAfterCurrentTime));\n // Find auto skipping segments if possible, sort by duration otherwise\n const minSponsorTimeIndex = minSponsorTimeIndexes.sort(\n (a, b) => ((autoSkipSorter(submittedArray[a]) - autoSkipSorter(submittedArray[b]))\n || (submittedArray[a].segment[1] - submittedArray[a].segment[0]) - (submittedArray[b].segment[1] - submittedArray[b].segment[0])))[0] ?? -1;\n // Store extra indexes for the non-auto skipping segments if others occur at the exact same start time\n const extraIndexes = minSponsorTimeIndexes.filter((i) => i !== minSponsorTimeIndex && autoSkipSorter(submittedArray[i]) !== 0);\n\n const endTimeIndex = getLatestEndTimeIndex(submittedArray, minSponsorTimeIndex);\n\n const { includedTimes: unsubmittedArray, scheduledTimes: unsubmittedSponsorStartTimes } =\n getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: unsubmittedSponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, false);\n\n const minUnsubmittedSponsorTimeIndex = unsubmittedSponsorStartTimes.indexOf(Math.min(...unsubmittedSponsorStartTimesAfterCurrentTime));\n const previewEndTimeIndex = getLatestEndTimeIndex(unsubmittedArray, minUnsubmittedSponsorTimeIndex);\n\n if ((minUnsubmittedSponsorTimeIndex === -1 && minSponsorTimeIndex !== -1) ||\n sponsorStartTimes[minSponsorTimeIndex] < unsubmittedSponsorStartTimes[minUnsubmittedSponsorTimeIndex]) {\n return {\n array: submittedArray,\n index: minSponsorTimeIndex,\n endIndex: endTimeIndex,\n extraIndexes, // Segments at same time that need separate notices\n openNotice: true\n };\n } else {\n return {\n array: unsubmittedArray,\n index: minUnsubmittedSponsorTimeIndex,\n endIndex: previewEndTimeIndex,\n extraIndexes: [], // No manual things for unsubmitted\n openNotice: false\n };\n }\n}\n\n/**\n * This returns index if the skip option is not AutoSkip\n *\n * Finds the last endTime that occurs in a segment that the given\n * segment skips into that is part of an AutoSkip category.\n *\n * Used to find where a segment should truely skip to if there are intersecting submissions due to\n * them having different categories.\n *\n * @param sponsorTimes\n * @param index Index of the given sponsor\n * @param hideHiddenSponsors\n */\nfunction getLatestEndTimeIndex(sponsorTimes: SponsorTime[], index: number, hideHiddenSponsors = true): number {\n // Only combine segments for AutoSkip\n if (index == -1 ||\n !shouldAutoSkip(sponsorTimes[index])\n || sponsorTimes[index].actionType !== ActionType.Skip) {\n return index;\n }\n\n let latestEndTimeIndex = -1;\n // Default to looped chapter if its end would have been skipped\n if (loopedChapter\n && (loopedChapter.segment[0] > sponsorTimes[index].segment[0]\n && loopedChapter.segment[0] <= sponsorTimes[index]?.segment[1])){\n latestEndTimeIndex = sponsorTimes.length - 1;\n } else {\n // or the normal end time otherwise \n latestEndTimeIndex = index;\n }\n\n for (let i = 0; i < sponsorTimes?.length; i++) {\n const currentSegment = sponsorTimes[i].segment;\n const latestEndTime = sponsorTimes[latestEndTimeIndex].segment[1];\n\n if (currentSegment[0] - skipBuffer <= latestEndTime && currentSegment[1] > latestEndTime\n && (!hideHiddenSponsors || sponsorTimes[i].hidden === SponsorHideType.Visible)\n && shouldAutoSkip(sponsorTimes[i])\n && sponsorTimes[i].actionType === ActionType.Skip) {\n // Overlapping segment\n latestEndTimeIndex = i;\n }\n }\n\n // Keep going if required\n if (latestEndTimeIndex !== index) {\n latestEndTimeIndex = getLatestEndTimeIndex(sponsorTimes, latestEndTimeIndex, hideHiddenSponsors);\n }\n\n return latestEndTimeIndex;\n}\n\n/**\n * Gets just the start times from a sponsor times array.\n * Optionally specify a minimum\n *\n * @param sponsorTimes\n * @param minimum\n * @param hideHiddenSponsors\n * @param includeIntersectingSegments If true, it will include segments that start before\n * the current time, but end after\n */\nfunction getStartTimes(sponsorTimes: SponsorTime[], includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean,\n minimum?: number, hideHiddenSponsors = false): {includedTimes: ScheduledTime[]; scheduledTimes: number[]} {\n if (!sponsorTimes) return {includedTimes: [], scheduledTimes: []};\n\n const includedTimes: ScheduledTime[] = [];\n const scheduledTimes: number[] = [];\n\n const shouldIncludeTime = (segment: ScheduledTime ) => (minimum === undefined\n || ((includeNonIntersectingSegments && segment.scheduledTime >= minimum)\n || (includeIntersectingSegments && segment.scheduledTime < minimum\n && ((segment.segment[1] > minimum && shouldSkip(segment)) // Only include intersecting skippable segments\n || isLoopedChapter(segment)))))\n && (!hideHiddenSponsors || segment.hidden === SponsorHideType.Visible)\n && segment.segment.length === 2\n && segment.actionType !== ActionType.Poi\n && segment.actionType !== ActionType.Full;\n\n const possibleTimes = sponsorTimes.map((sponsorTime) => ({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[0]\n }));\n\n // Schedule at the end time to know when to unmute and remove title from seek bar\n sponsorTimes.forEach(sponsorTime => {\n if (!possibleTimes.some((time) => sponsorTime.segment[1] === time.scheduledTime && shouldIncludeTime(time))\n && (minimum === undefined || sponsorTime.segment[1] > minimum)) {\n possibleTimes.push({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[1]\n });\n }\n });\n\n if (loopedChapter){\n possibleTimes.push({\n ...loopedChapter,\n scheduledTime: loopedChapter.segment[0]})\n }\n\n for (let i = 0; i < possibleTimes.length; i++) {\n if (shouldIncludeTime(possibleTimes[i])) {\n scheduledTimes.push(possibleTimes[i].scheduledTime);\n includedTimes.push(possibleTimes[i]);\n }\n }\n\n return { includedTimes, scheduledTimes };\n}\n\n/**\n * Skip to exact time in a video and autoskips\n *\n * @param time\n */\nfunction previewTime(time: number, unpause = true) {\n previewedSegment = true;\n setCurrentTime(time);\n\n // Unpause the video if needed\n if (unpause && getVideo().paused){\n getVideo().play();\n }\n}\n\n//send telemetry and count skip\nfunction sendTelemetryAndCount(skippingSegments: SponsorTime[], secondsSkipped: number, fullSkip: boolean) {\n for (const segment of skippingSegments) {\n if (!previewedSegment && sponsorTimesSubmitting.some((s) => s.segment === segment.segment)) {\n // Count that as a previewed segment\n previewedSegment = true;\n }\n }\n\n if (!Config.config.trackViewCount || (!Config.config.trackViewCountInPrivate && chrome.extension.inIncognitoContext)) return;\n\n let counted = false;\n for (const segment of skippingSegments) {\n const index = sponsorTimes?.findIndex((s) => s.segment === segment.segment);\n if (index !== -1 && !sponsorSkipped[index]) {\n sponsorSkipped[index] = true;\n if (!counted) {\n Config.config.minutesSaved = Config.config.minutesSaved + secondsSkipped / 60;\n if (segment.actionType !== ActionType.Chapter) {\n Config.config.skipCount = Config.config.skipCount + 1;\n }\n counted = true;\n }\n\n if (fullSkip) asyncRequestToServer(\"POST\", \"/api/viewedVideoSponsorTime?UUID=\" + segment.UUID + \"&videoID=\" + getVideoID())\n .then(r => {\n if (!r.ok) logRequest(r, \"SB\", \"segment skip log\");\n })\n .catch(e => console.warn(\"[SB] Caught error while attempting to log segment skip\", e));\n }\n }\n}\n\n//skip from the start time to the end time for a certain index sponsor time\nfunction skipToTime({v, skipTime, skippingSegments, openNotice, forceAutoSkip, unskipTime}: SkipToTimeParams): void {\n if (Config.config.disableSkipping) return;\n\n // There will only be one submission if it is manual skip\n const autoSkip: boolean = forceAutoSkip || shouldAutoSkip(skippingSegments[0]);\n const isSubmittingSegment = sponsorTimesSubmitting.some((time) => time.segment === skippingSegments[0].segment);\n\n if ((autoSkip || isSubmittingSegment)\n && getCurrentTime() !== skipTime[1]) {\n switch(skippingSegments[0].actionType) {\n case ActionType.Poi:\n case ActionType.Chapter:\n case ActionType.Skip: {\n // Fix for looped videos not working when skipping to the end #426\n // for some reason you also can't skip to 1 second before the end\n if (v.loop && getVideoDuration() > 1 && skipTime[1] >= getVideoDuration() - 1) {\n setCurrentTime(0);\n } else if (getVideoDuration() > 1 && skipTime[1] >= getVideoDuration()\n && (navigator.vendor === \"Apple Computer, Inc.\" || isPlayingPlaylist())) {\n // MacOS will loop otherwise #1027\n // Sometimes playlists loop too #1804\n setCurrentTime(getVideoDuration() - 0.001);\n } else if (getVideoDuration() > 1 && Math.abs(skipTime[1] - getVideoDuration()) < endTimeSkipBuffer\n && isFirefoxOrSafari() && !isSafari()) {\n setCurrentTime(getVideoDuration());\n } else {\n if (inMuteSegment(skipTime[1], true)) {\n // Make sure not to mute if skipping into a mute segment\n v.muted = true;\n videoMuted = true;\n }\n\n setCurrentTime(skipTime[1]);\n }\n\n break;\n }\n case ActionType.Mute: {\n if (!v.muted) {\n v.muted = true;\n videoMuted = true;\n }\n break;\n }\n }\n }\n\n if (autoSkip && Config.config.audioNotificationOnSkip\n && !isSubmittingSegment && !getVideo()?.muted) {\n const beep = new Audio(chrome.runtime.getURL(\"icons/beep.oga\"));\n beep.volume = getVideo().volume * 0.1;\n const oldMetadata = navigator.mediaSession.metadata\n beep.play();\n beep.addEventListener(\"ended\", () => {\n navigator.mediaSession.metadata = null;\n setTimeout(() => {\n navigator.mediaSession.metadata = oldMetadata;\n beep.remove();\n });\n })\n }\n\n if (!autoSkip\n && skippingSegments.length === 1\n && skippingSegments[0].actionType === ActionType.Poi) {\n waitFor(() => skipButtonControlBar).then(() => {\n skipButtonControlBar.enable(skippingSegments[0]);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) skipButtonControlBar.setShowKeybindHint(false);\n \n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = skipButtonControlBar;\n })\n } else {\n if (openNotice) {\n //send out the message saying that a sponsor message was skipped\n if (!Config.config.dontShowNotice || !autoSkip) {\n createSkipNotice(skippingSegments, autoSkip, unskipTime, false);\n } else if (autoSkip) {\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = {\n setShowKeybindHint: () => {}, //eslint-disable-line @typescript-eslint/no-empty-function\n toggleSkip: () => {\n unskipSponsorTime(skippingSegments[0], unskipTime);\n\n createSkipNotice(skippingSegments, autoSkip, unskipTime, true);\n }\n };\n }\n }\n }\n\n //send telemetry that a this sponsor was skipped\n if (autoSkip || isSubmittingSegment) sendTelemetryAndCount(skippingSegments, skipTime[1] - skipTime[0], true);\n}\n\nfunction createSkipNotice(skippingSegments: SponsorTime[], autoSkip: boolean, unskipTime: number, startReskip: boolean, voteNotice = false) {\n for (const skipNotice of skipNotices) {\n if (skippingSegments.length === skipNotice.segments.length\n && skippingSegments.every((segment) => skipNotice.segments.some((s) => s.UUID === segment.UUID))) {\n // Skip notice already exists\n return;\n }\n }\n\n const upcomingNoticeShown = !!upcomingNotice && !upcomingNotice.closed;\n\n const newSkipNotice = new SkipNotice(skippingSegments, autoSkip, skipNoticeContentContainer, () => {\n upcomingNotice?.close();\n upcomingNotice = null;\n }, unskipTime, startReskip, upcomingNoticeShown, voteNotice);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) newSkipNotice.setShowKeybindHint(false);\n skipNotices.push(newSkipNotice);\n\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = newSkipNotice;\n}\n\nfunction createUpcomingNotice(skippingSegments: SponsorTime[], timeLeft: number, autoSkip: boolean): void {\n if (upcomingNotice \n && !upcomingNotice.closed\n && upcomingNotice.sameNotice(skippingSegments)) {\n return;\n }\n\n upcomingNotice?.close();\n upcomingNotice = new UpcomingNotice(skippingSegments, skipNoticeContentContainer, timeLeft / 1000, autoSkip);\n}\n\nfunction unskipSponsorTime(segment: SponsorTime, unskipTime: number = null, forceSeek = false, voteNotice = false) {\n if (segment.actionType === ActionType.Mute) {\n getVideo().muted = false;\n videoMuted = false;\n }\n\n if (forceSeek || segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter || voteNotice) {\n //add a tiny bit of time to make sure it is not skipped again\n setCurrentTime(unskipTime ?? segment.segment[0] + 0.001);\n }\n\n}\n\nfunction reskipSponsorTime(segment: SponsorTime, forceSeek = false) {\n if (segment.actionType === ActionType.Mute && !forceSeek) {\n getVideo().muted = true;\n videoMuted = true;\n } else {\n const skippedTime = Math.max(segment.segment[1] - getCurrentTime(), 0);\n const segmentDuration = segment.segment[1] - segment.segment[0];\n const fullSkip = skippedTime / segmentDuration > manualSkipPercentCount;\n\n setCurrentTime(segment.segment[1]);\n sendTelemetryAndCount([segment], segment.actionType !== ActionType.Chapter ? skippedTime : 0, fullSkip);\n startSponsorSchedule(true, segment.segment[1], false);\n }\n}\n\nfunction createButton(baseID: string, title: string, callback: () => void, imageName: string, isDraggable = false): HTMLElement {\n const existingElement = document.getElementById(baseID + \"Button\");\n if (existingElement !== null) return existingElement;\n\n // Button HTML\n const newButton = document.createElement(\"button\");\n newButton.draggable = isDraggable;\n newButton.id = baseID + \"Button\";\n newButton.classList.add(\"playerButton\");\n newButton.classList.add(\"ytp-button\");\n if (Config.config.prideTheme) newButton.classList.add(\"prideTheme\");\n if (isOnYTTV()) {\n // Some style needs to be set here, but the numbers don't matter \n newButton.setAttribute(\"style\", \"width: 40px; height: 40px\");\n }\n newButton.setAttribute(\"title\", chrome.i18n.getMessage(title));\n newButton.addEventListener(\"click\", () => {\n callback();\n });\n\n // Image HTML\n const newButtonImage = document.createElement(\"img\");\n newButton.draggable = isDraggable;\n newButtonImage.id = baseID + \"Image\";\n newButtonImage.className = \"playerButtonImage\";\n newButtonImage.src = chrome.runtime.getURL(\"icons/\" + imageName);\n\n // Append image to button\n newButton.appendChild(newButtonImage);\n\n // Add the button to player\n if (controls) controls.prepend(newButton);\n\n // Store the elements to prevent unnecessary querying\n playerButtons[baseID] = {\n button: newButton,\n image: newButtonImage,\n setupListener: false\n };\n\n return newButton;\n}\n\nfunction shouldAutoSkip(segment: SponsorTime): boolean {\n const canSkipNonMusic = !Config.config.skipNonMusicOnlyOnYoutubeMusic || isOnYouTubeMusic();\n if (segment.category === \"music_offtopic\" && !canSkipNonMusic) {\n return false;\n }\n\n return (!getSkipProfileBool(\"manualSkipOnFullVideo\") || !sponsorTimes?.some((s) => s.category === segment.category && s.actionType === ActionType.Full))\n && (getCategorySelection(segment)?.option === CategorySkipOption.AutoSkip ||\n (getSkipProfileBool(\"autoSkipOnMusicVideos\") && canSkipNonMusic && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || sponsorTimesSubmitting.some((s) => s.segment === segment.segment))\n || isLoopedChapter(segment);\n}\n\nfunction shouldSkip(segment: SponsorTime): boolean {\n return segment.hidden === SponsorHideType.Visible && (segment.actionType !== ActionType.Full\n && getCategorySelection(segment)?.option > CategorySkipOption.ShowOverlay)\n || (getSkipProfileBool(\"autoSkipOnMusicVideos\") && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || isLoopedChapter(segment);\n}\n\nfunction isLoopedChapter(segment: SponsorTime): boolean{\n return !!segment && !!loopedChapter && segment.segment[1] != undefined\n && segment.segment[0] === loopedChapter.segment[0] && segment.segment[1] === loopedChapter.segment[1];\n}\n\n/** Creates any missing buttons on the YouTube player if possible. */\nasync function createButtons(): Promise {\n controls = await utils.wait(getControls).catch();\n\n // Add button if does not already exist in html\n createButton(\"startSegment\", \"sponsorStart\", () => startOrEndTimingNewSegment(), \"PlayerStartIconSponsorBlocker.svg\");\n createButton(\"cancelSegment\", \"sponsorCancel\", () => cancelCreatingSegment(), \"PlayerCancelSegmentIconSponsorBlocker.svg\");\n createButton(\"delete\", \"clearTimes\", () => clearSponsorTimes(), \"PlayerDeleteIconSponsorBlocker.svg\");\n createButton(\"submit\", \"OpenSubmissionMenu\", () => openSubmissionMenu(), \"PlayerUploadIconSponsorBlocker.svg\");\n createButton(\"info\", \"openPopup\", () => openInfoMenu(), \"PlayerInfoIconSponsorBlocker.svg\");\n\n const controlsContainer = getControls();\n if (Config.config.autoHideInfoButton && !isOnInvidious() && controlsContainer\n && playerButtons[\"info\"]?.button && !controlsWithEventListeners.includes(controlsContainer)) {\n controlsWithEventListeners.push(controlsContainer);\n\n AnimationUtils.setupAutoHideAnimation(playerButtons[\"info\"].button, controlsContainer);\n }\n}\n\n/** Creates any missing buttons on the player and updates their visiblity. */\nasync function updateVisibilityOfPlayerControlsButton(): Promise {\n // Not on a proper video yet\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n await createButtons();\n\n updateEditButtonsOnPlayer();\n\n // Don't show the info button on embeds\n if (Config.config.hideInfoButtonPlayerControls || document.URL.includes(\"/embed/\") || isOnInvidious() || isOnYTTV()\n || document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n playerButtons.info.button.style.display = \"none\";\n } else {\n playerButtons.info.button.style.removeProperty(\"display\");\n }\n}\n\n/** Updates the visibility of buttons on the player related to creating segments. */\nfunction updateEditButtonsOnPlayer(): void {\n // Don't try to update the buttons if we aren't on a YouTube video page\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n const buttonsEnabled = !(Config.config.hideVideoPlayerControls || isOnInvidious());\n\n let creatingSegment = false;\n let submitButtonVisible = false;\n let deleteButtonVisible = false;\n\n // Only check if buttons should be visible if they're enabled\n if (buttonsEnabled) {\n creatingSegment = isSegmentCreationInProgress();\n\n // Show only if there are any segments to submit\n submitButtonVisible = sponsorTimesSubmitting.length > 0;\n\n // Show only if there are any segments to delete\n deleteButtonVisible = sponsorTimesSubmitting.length > 1 || (sponsorTimesSubmitting.length > 0 && !creatingSegment);\n }\n\n // Update the elements\n playerButtons.startSegment.button.style.display = buttonsEnabled ? \"unset\" : \"none\";\n playerButtons.cancelSegment.button.style.display = buttonsEnabled && creatingSegment ? \"unset\" : \"none\";\n\n if (buttonsEnabled) {\n if (creatingSegment) {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStopIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorEnd\"));\n } else {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStartIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorStart\"));\n }\n }\n\n playerButtons.submit.button.style.display = submitButtonVisible && !Config.config.hideUploadButtonPlayerControls ? \"unset\" : \"none\";\n playerButtons.delete.button.style.display = deleteButtonVisible && !Config.config.hideDeleteButtonPlayerControls ? \"unset\" : \"none\";\n}\n\n/**\n * Used for submitting. This will use the HTML displayed number when required as the video's\n * current time is out of date while scrubbing or at the end of the getVideo(). This is not needed\n * for sponsor skipping as the video is not playing during these times.\n */\nfunction getRealCurrentTime(): number {\n // Used to check if replay button\n const playButtonSVGData = document.querySelector(\".ytp-play-button\")?.querySelector(\".ytp-svg-fill\")?.getAttribute(\"d\");\n const replaceSVGData = \"M 18,11 V 7 l -5,5 5,5 v -4 c 3.3,0 6,2.7 6,6 0,3.3 -2.7,6 -6,6 -3.3,0 -6,-2.7 -6,-6 h -2 c 0,4.4 3.6,8 8,8 4.4,0 8,-3.6 8,-8 0,-4.4 -3.6,-8 -8,-8 z\";\n\n if (playButtonSVGData === replaceSVGData) {\n // At the end of the video\n return getVideoDuration();\n } else {\n return getCurrentTime();\n }\n}\n\nfunction startOrEndTimingNewSegment() {\n if (isOnYTTV() && getIsLivePremiere()) {\n alert(chrome.i18n.getMessage(\"yttvLiveContentWarning\"));\n return;\n }\n\n verifyCurrentTime(getRealCurrentTime());\n const roundedTime = Math.round((getRealCurrentTime() + Number.EPSILON) * 1000) / 1000;\n if (!isSegmentCreationInProgress()) {\n sponsorTimesSubmitting.push({\n segment: [roundedTime],\n UUID: generateUserID() as SegmentUUID,\n category: Config.config.defaultCategory,\n actionType: ActionType.Skip,\n source: SponsorSourceType.Local\n });\n } else {\n // Finish creating the new segment\n const existingSegment = getIncompleteSegment();\n const existingTime = existingSegment.segment[0];\n const currentTime = roundedTime;\n\n // Swap timestamps if the user put the segment end before the start\n existingSegment.segment = [Math.min(existingTime, currentTime), Math.max(existingTime, currentTime)];\n }\n\n // Save the newly created segment\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Make sure they know if someone has already submitted something it while they were watching\n sponsorsLookup(true, true);\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n\n importExistingChapters(false);\n\n if (lastResponseStatus !== 200 && lastResponseStatus !== 404\n && !shownSegmentFailedToFetchWarning && Config.config.showSegmentFailedToFetchWarning) {\n alert(chrome.i18n.getMessage(\"segmentFetchFailureWarning\"));\n\n shownSegmentFailedToFetchWarning = true;\n }\n}\n\nfunction getIncompleteSegment(): SponsorTime {\n return sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1];\n}\n\n/** Is the latest submitting segment incomplete */\nfunction isSegmentCreationInProgress(): boolean {\n const segment = getIncompleteSegment();\n return segment && segment?.segment?.length !== 2;\n}\n\nfunction cancelCreatingSegment() {\n if (isSegmentCreationInProgress()) {\n if (sponsorTimesSubmitting.length > 1) { // If there's more than one segment: remove last\n sponsorTimesSubmitting.pop();\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n } else { // Otherwise delete the video entry & close submission menu\n resetSponsorSubmissionNotice();\n sponsorTimesSubmitting = [];\n delete Config.local.unsubmittedSegments[getVideoID()];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n}\n\nfunction updateSponsorTimesSubmitting(getFromConfig = true) {\n const segmentTimes = Config.local.unsubmittedSegments[getVideoID()];\n\n //see if this data should be saved in the sponsorTimesSubmitting variable\n if (getFromConfig && segmentTimes != undefined) {\n sponsorTimesSubmitting = [];\n\n for (const segmentTime of segmentTimes) {\n sponsorTimesSubmitting.push({\n segment: segmentTime.segment,\n UUID: segmentTime.UUID,\n category: segmentTime.category,\n actionType: segmentTime.actionType,\n description: segmentTime.description,\n hidden: segmentTime.hidden,\n source: segmentTime.source\n });\n }\n\n if (sponsorTimesSubmitting.length > 0) {\n // Assume they already previewed a segment\n previewedSegment = true;\n\n importExistingChapters(true);\n }\n }\n\n updatePreviewBar();\n\n // Restart skipping schedule\n if (getVideo() !== null) startSponsorSchedule();\n\n if (submissionNotice !== null) {\n submissionNotice.update();\n }\n\n checkForPreloadedSegment();\n}\n\nfunction openInfoMenu() {\n if (document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //it's already added\n return;\n }\n\n popupInitialised = false;\n\n //hide info button\n if (playerButtons.info) playerButtons.info.button.style.display = \"none\";\n\n const popup = document.createElement(\"div\");\n popup.id = \"sponsorBlockPopupContainer\";\n\n const frame = document.createElement(\"iframe\");\n frame.width = \"374\";\n frame.height = \"500\";\n frame.style.borderRadius = \"12px\";\n frame.addEventListener(\"load\", async () => {\n frame.contentWindow.postMessage(\"\", \"*\");\n\n // To support userstyles applying to the popup\n const stylusStyle = document.querySelector(\".stylus\");\n if (stylusStyle) {\n frame.contentWindow.postMessage({\n type: \"style\",\n css: stylusStyle.textContent\n }, \"*\");\n }\n\n const enhancerStyle = document.getElementById(\"efyt-theme\");\n if (enhancerStyle) {\n const enhancerStyleVariables = document.getElementById(\"efyt-theme-variables\");\n if (enhancerStyleVariables) {\n const enhancerCss = await fetch(enhancerStyle.getAttribute(\"href\")).then((response) => response.text());\n const enhancerVariablesCss = await fetch(enhancerStyleVariables.getAttribute(\"href\")).then((response) => response.text());\n\n if (enhancerCss && enhancerVariablesCss) {\n frame.contentWindow.postMessage({\n type: \"style\",\n // Image needs needs to reference the full url now\n css: enhancerCss.replace(\"./images/youtube-deep-dark/IconSponsorBlocker256px.png\",\n \"https://raw.githubusercontent.com/RaitaroH/YouTube-DeepDark/master/YT_Images/IconSponsorBlocker256px.png\")\n + enhancerVariablesCss\n }, \"*\");\n }\n }\n }\n });\n frame.src = chrome.runtime.getURL(\"popup.html\");\n popup.appendChild(frame);\n\n const elemHasChild = (elements: NodeListOf): Element => {\n let parentNode: Element;\n for (const node of elements) {\n if (node.firstElementChild !== null) {\n parentNode = node;\n }\n }\n return parentNode\n }\n\n const parentNodeOptions = [{\n // YouTube\n selector: \"#secondary-inner\",\n hasChildCheck: true\n }, {\n // old youtube theme\n selector: \"#watch7-sidebar-contents\",\n }];\n for (const option of parentNodeOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.hasChildCheck ? elemHasChild(allElements) : allElements[0];\n\n if (el) {\n if (option.hasChildCheck) el.insertBefore(popup, el.firstChild);\n break;\n }\n }\n}\n\nfunction closeInfoMenu() {\n const popup = document.getElementById(\"sponsorBlockPopupContainer\");\n if (popup === null) return;\n\n popup.remove();\n\n // Show info button if it's not an embed\n if (!document.URL.includes(\"/embed/\") && playerButtons.info) {\n playerButtons.info.button.style.display = \"unset\";\n }\n}\n\nfunction clearSponsorTimes() {\n const currentVideoID = getVideoID();\n\n const sponsorTimes = Config.local.unsubmittedSegments[currentVideoID];\n\n if (sponsorTimes != undefined && sponsorTimes.length > 0) {\n const confirmMessage = chrome.i18n.getMessage(\"clearThis\") + getSegmentsMessage(sponsorTimes)\n + \"\\n\" + chrome.i18n.getMessage(\"confirmMSG\")\n if(!confirm(confirmMessage)) return;\n\n resetSponsorSubmissionNotice();\n\n //clear the sponsor times\n delete Config.local.unsubmittedSegments[currentVideoID];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n //clear sponsor times submitting\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateEditButtonsOnPlayer();\n }\n}\n\n//if skipNotice is null, it will not affect the UI\nasync function vote(type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent): Promise {\n if (skipNotice !== null && skipNotice !== undefined) {\n //add loading info\n skipNotice.addVoteButtonInfo(chrome.i18n.getMessage(\"Loading\"))\n skipNotice.setNoticeInfoMessage();\n }\n\n const response = await voteAsync(type, UUID, category);\n if (response != undefined) {\n //see if it was a success or failure\n if (skipNotice != null) {\n if (\"error\" in response) {\n skipNotice.setNoticeInfoMessage(formatJSErrorMessage(response.error))\n skipNotice.resetVoteButtonInfo();\n } else if (response.ok || response.status === 429) {\n //success (treat rate limits as a success)\n skipNotice.afterVote(utils.getSponsorTimeFromUUID(sponsorTimes, UUID), type, category);\n } else {\n logRequest({headers: null, ...response}, \"SB\", \"vote on segment\");\n if (response.status === 403 && response.responseText.startsWith(\"Vote rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n skipNotice.setNoticeInfoMessage(getLongErrorMessage(response.status, response.responseText))\n }\n\n skipNotice.resetVoteButtonInfo();\n }\n }\n }\n\n return response;\n}\n\nasync function voteAsync(type: number, UUID: SegmentUUID, category?: Category): Promise {\n const sponsorIndex = utils.getSponsorIndexFromUUID(sponsorTimes, UUID);\n\n // Don't vote for preview sponsors\n if (sponsorIndex == -1 || sponsorTimes[sponsorIndex].source !== SponsorSourceType.Server) return Promise.resolve(undefined);\n\n // See if the local time saved count and skip count should be saved\n if (type === 0 && sponsorSkipped[sponsorIndex] || type === 1 && !sponsorSkipped[sponsorIndex]) {\n let factor = 1;\n if (type == 0) {\n factor = -1;\n\n sponsorSkipped[sponsorIndex] = false;\n }\n\n // Count this as a skip\n Config.config.minutesSaved = Config.config.minutesSaved + factor * (sponsorTimes[sponsorIndex].segment[1] - sponsorTimes[sponsorIndex].segment[0]) / 60;\n\n Config.config.skipCount = Config.config.skipCount + factor;\n }\n\n return new Promise((resolve) => {\n chrome.runtime.sendMessage({\n message: \"submitVote\",\n type: type,\n UUID: UUID,\n category: category,\n videoID: getVideoID()\n }, (response) => {\n if (response.ok === true) {\n // Change the sponsor locally\n const segment = utils.getSponsorTimeFromUUID(sponsorTimes, UUID);\n if (segment) {\n if (type === 0) {\n segment.hidden = SponsorHideType.Downvoted;\n } else if (category) {\n segment.category = category;\n } else if (type === 1) {\n segment.hidden = SponsorHideType.Visible;\n }\n\n if (!category && !Config.config.isVip) {\n utils.addHiddenSegment(getVideoID(), segment.UUID, segment.hidden);\n }\n\n updatePreviewBar();\n }\n }\n\n resolve(response);\n });\n });\n}\n\n//Closes all notices that tell the user that a sponsor was just skipped\nfunction closeAllSkipNotices(){\n const notices = document.getElementsByClassName(\"sponsorSkipNotice\");\n for (let i = 0; i < notices.length; i++) {\n notices[i].remove();\n }\n}\n\nfunction dontShowNoticeAgain() {\n Config.config.dontShowNotice = true;\n closeAllSkipNotices();\n}\n\n/**\n * Helper method for the submission notice to clear itself when it closes\n */\nfunction resetSponsorSubmissionNotice(callRef = true) {\n submissionNotice?.close(callRef);\n submissionNotice = null;\n}\n\nfunction closeSubmissionMenu() {\n submissionNotice?.close();\n submissionNotice = null;\n}\n\nfunction openSubmissionMenu() {\n if (submissionNotice !== null){\n closeSubmissionMenu();\n return;\n }\n\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n submissionNotice = new SubmissionNotice(skipNoticeContentContainer, sendSubmitMessage);\n }\n}\n\nfunction previewRecentSegment() {\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n previewTime(sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment[0] - defaultPreviewTime);\n \n if (submissionNotice) {\n submissionNotice.scrollToBottom();\n }\n }\n}\n\nfunction submitSegments() {\n if (sponsorTimesSubmitting !== undefined\n && sponsorTimesSubmitting.length > 0\n && submissionNotice !== null) {\n submissionNotice.submit();\n }\n\n}\n\n//send the message to the background js\n//called after all the checks have been made that it's okay to do so\nasync function sendSubmitMessage(): Promise {\n // check if all segments are full video\n const onlyFullVideo = sponsorTimesSubmitting.every((segment) => segment.actionType === ActionType.Full);\n // Block if submitting on a running livestream or premiere\n if (!onlyFullVideo && (getIsLivePremiere() || isVisible(document.querySelector(\".ytp-live-badge\")))) {\n alert(chrome.i18n.getMessage(\"liveOrPremiere\"));\n return false;\n }\n\n if (!previewedSegment \n && !sponsorTimesSubmitting.every((segment) => \n [ActionType.Full, ActionType.Chapter, ActionType.Poi].includes(segment.actionType) \n || segment.segment[1] >= getVideoDuration()\n || segment.segment[0] === 0)) {\n alert(`${chrome.i18n.getMessage(\"previewSegmentRequired\")} ${keybindToString(Config.config.previewKeybind)}`);\n return false;\n }\n\n // Add loading animation\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadIconSponsorBlocker.svg\");\n const stopAnimation = AnimationUtils.applyLoadingAnimation(playerButtons.submit.button, 1, () => updateEditButtonsOnPlayer());\n\n //check if a sponsor exceeds the duration of the video\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n if (sponsorTimesSubmitting[i].segment[1] > getVideoDuration()) {\n sponsorTimesSubmitting[i].segment[1] = getVideoDuration();\n }\n }\n\n //update sponsorTimes\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Check to see if any of the submissions are below the minimum duration set\n if (Config.config.minDuration > 0) {\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n const duration = sponsorTimesSubmitting[i].segment[1] - sponsorTimesSubmitting[i].segment[0];\n if (duration > 0 && duration < Config.config.minDuration) {\n const confirmShort = chrome.i18n.getMessage(\"shortCheck\") + \"\\n\\n\" +\n getSegmentsMessage(sponsorTimesSubmitting);\n\n if(!confirm(confirmShort)) return false;\n }\n }\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"POST\", \"/api/skipSegments\", {\n videoID: getVideoID(),\n userID: Config.config.userID,\n segments: sponsorTimesSubmitting,\n videoDuration: getVideoDuration(),\n userAgent: extensionUserAgent(),\n });\n } catch (e) {\n console.error(\"[SB] Caught error while attempting to submit segments\", e);\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n alert(formatJSErrorMessage(e));\n return false;\n }\n\n if (response.status === 200) {\n stopAnimation();\n\n // Remove segments from storage since they've already been submitted\n delete Config.local.unsubmittedSegments[getVideoID()];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n const newSegments = sponsorTimesSubmitting;\n try {\n const receivedNewSegments = JSON.parse(response.responseText);\n if (receivedNewSegments?.length === newSegments.length) {\n for (let i = 0; i < receivedNewSegments.length; i++) {\n newSegments[i].UUID = receivedNewSegments[i].UUID;\n newSegments[i].source = SponsorSourceType.Server;\n }\n }\n } catch(e) {} // eslint-disable-line no-empty\n\n // Add submissions to current sponsors list\n sponsorTimes = (sponsorTimes || []).concat(newSegments).sort((a, b) => a.segment[0] - b.segment[0]);\n\n // Increase contribution count\n Config.config.sponsorTimesContributed = Config.config.sponsorTimesContributed + sponsorTimesSubmitting.length;\n\n // New count just used to see if a warning \"Read The Guidelines!!\" message needs to be shown\n // One per time submitting\n Config.config.submissionCountSinceCategories = Config.config.submissionCountSinceCategories + 1;\n\n // Empty the submitting times\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateCategoryPill();\n\n return true;\n } else {\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n\n if (response.status === 403 && response.responseText.startsWith(\"Submission rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n logRequest(response, \"SB\", \"segment submission\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n\n return false;\n}\n\n//get the message that visually displays the video times\nfunction getSegmentsMessage(sponsorTimes: SponsorTime[]): string {\n let sponsorTimesMessage = \"\";\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n for (let s = 0; s < sponsorTimes[i].segment.length; s++) {\n let timeMessage = getFormattedTime(sponsorTimes[i].segment[s]);\n //if this is an end time\n if (s == 1) {\n timeMessage = \" \" + chrome.i18n.getMessage(\"to\") + \" \" + timeMessage;\n } else if (i > 0) {\n //add commas if necessary\n timeMessage = \", \" + timeMessage;\n }\n\n sponsorTimesMessage += timeMessage;\n }\n }\n\n return sponsorTimesMessage;\n}\n\nfunction updateActiveSegment(currentTime: number): void {\n if (!chrome.runtime?.id) return;\n\n previewBar?.updateChapterText(sponsorTimes, sponsorTimesSubmitting, currentTime);\n\n chrome.runtime.sendMessage({\n message: \"time\",\n time: currentTime\n });\n}\n\nfunction nextChapter(): void {\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) return;\n\n lastNextChapterKeybind.time = getCurrentTime();\n lastNextChapterKeybind.date = Date.now();\n\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime());\n if (nextChapter !== -1) {\n setCurrentTime(chapters[nextChapter].segment[0]);\n } else {\n setCurrentTime(getVideoDuration());\n }\n}\n\nfunction previousChapter(): void {\n if (Date.now() - lastNextChapterKeybind.date < 3000) {\n setCurrentTime(lastNextChapterKeybind.time);\n lastNextChapterKeybind.date = 0;\n return;\n }\n\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) {\n setCurrentTime(0);\n return;\n }\n\n // subtract 5 seconds to allow skipping back to the previous chapter if close to start of\n // the current one\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime() - Math.min(5, time.segment[1] - time.segment[0]));\n const previousChapter = nextChapter !== -1 ? (nextChapter - 1) : (chapters.length - 1);\n if (previousChapter !== -1) {\n setCurrentTime(chapters[previousChapter].segment[0]);\n } else {\n setCurrentTime(0);\n }\n}\n\nasync function handleKeybindVote(type: number): Promise{\n let lastSkipNotice = skipNotices[0]?.skipNoticeRef.current;\n lastSkipNotice?.onMouseEnter();\n\n if (!lastSkipNotice) {\n const lastSegment = [...sponsorTimes].reverse()?.find((s) => s.source == SponsorSourceType.Server && (s.segment[0] <= getCurrentTime() && getCurrentTime() - (s.segment[1] || s.segment[0]) <= Config.config.skipNoticeDuration));\n if (!lastSegment) return;\n\n createSkipNotice([lastSegment], shouldAutoSkip(lastSegment), lastSegment?.segment[0] + 0.001,false, true);\n lastSkipNotice = await skipNotices[0].waitForSkipNoticeRef();\n lastSkipNotice?.reskippedMode(0);\n }\n\n vote(type,lastSkipNotice?.segments[0]?.UUID, undefined, lastSkipNotice);\n return;\n}\n\nfunction addHotkeyListener(): void {\n document.addEventListener(\"keydown\", hotkeyListener, true);\n document.addEventListener(\"keyup\", hotkeyPropagationListener, true);\n\n addCleanupListener(() => {\n document.body.removeEventListener(\"keydown\", hotkeyListener, true);\n document.body.removeEventListener(\"keyup\", hotkeyPropagationListener, true);\n });\n}\n\nfunction hotkeyListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const skipKey = Config.config.skipKeybind;\n const skipToHighlightKey = Config.config.skipToHighlightKeybind;\n const closeSkipNoticeKey = Config.config.closeSkipNoticeKeybind;\n const startSponsorKey = Config.config.startSponsorKeybind;\n const submitKey = Config.config.actuallySubmitKeybind;\n const previewKey = Config.config.previewKeybind;\n const openSubmissionMenuKey = Config.config.submitKeybind;\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n const upvoteKey = Config.config.upvoteKeybind;\n const downvoteKey = Config.config.downvoteKeybind;\n\n if (keybindEquals(key, skipKey)) {\n if (activeSkipKeybindElement && !(activeSkipKeybindElement instanceof SkipButtonControlBar)) {\n activeSkipKeybindElement.toggleSkip.call(activeSkipKeybindElement);\n }\n\n return;\n } else if (keybindEquals(key, skipToHighlightKey)) {\n if (skipButtonControlBar) {\n skipButtonControlBar.toggleSkip.call(skipButtonControlBar);\n }\n\n return;\n } else if (keybindEquals(key, closeSkipNoticeKey)) {\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop().close();\n }\n \n upcomingNotice?.close();\n upcomingNotice = null;\n return;\n } else if (keybindEquals(key, startSponsorKey)) {\n startOrEndTimingNewSegment();\n return;\n } else if (keybindEquals(key, submitKey)) {\n submitSegments();\n return;\n } else if (keybindEquals(key, openSubmissionMenuKey)) {\n e.preventDefault();\n\n openSubmissionMenu();\n return;\n } else if (keybindEquals(key, previewKey)) {\n previewRecentSegment();\n return;\n } else if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n nextChapter();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n previousChapter();\n return;\n } else if (keybindEquals(key, upvoteKey)) {\n handleKeybindVote(1);\n return;\n } else if (keybindEquals(key, downvoteKey)) {\n handleKeybindVote(0);\n return;\n }\n}\n\nfunction hotkeyPropagationListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n\n if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n }\n}\n\n/**\n * Adds the CSS to the page if needed. Required on optional sites with Chrome.\n */\nfunction addCSS() {\n if (!isFirefoxOrSafari() && Config.config.invidiousInstances.includes(new URL(document.URL).hostname)) {\n const onLoad = () => {\n const head = document.getElementsByTagName(\"head\")[0];\n\n for (const file of utils.css) {\n const fileref = document.createElement(\"link\");\n\n fileref.rel = \"stylesheet\";\n fileref.type = \"text/css\";\n fileref.href = chrome.runtime.getURL(file);\n\n head.appendChild(fileref);\n }\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n document.addEventListener(\"DOMContentLoaded\", onLoad);\n }\n }\n}\n\n/**\n * Update the isAdPlaying flag and hide preview bar/controls if ad is playing\n */\nfunction updateAdFlag(): void {\n const wasAdPlaying = getIsAdPlaying();\n setIsAdPlaying(document.getElementsByClassName('ad-showing').length > 0);\n if(wasAdPlaying != getIsAdPlaying()) {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n }\n}\n\nfunction showTimeWithoutSkips(skippedDuration: number): void {\n if (isNaN(skippedDuration) || skippedDuration < 0) {\n skippedDuration = 0;\n }\n\n // YouTube player time display\n const selector =\n isOnInvidious() ? \".vjs-duration\" :\n isOnYTTV() ? \".ypl-full-controls .ypmcs-control .time-info-bar\" :\n isOnMobileYouTube() ? \".ytwPlayerTimeDisplayContent\" :\n \".ytp-time-display.notranslate .ytp-time-wrapper .ytp-time-contents\";\n const display = document.querySelector(selector);\n if (!display) return;\n\n const durationID = \"sponsorBlockDurationAfterSkips\";\n let duration = document.getElementById(durationID);\n\n // Create span if needed\n if (duration === null) {\n duration = document.createElement('span');\n duration.id = durationID;\n\n if (isOnMobileYouTube()) {\n duration.style.paddingLeft = \"4px\";\n display.insertBefore(duration, display.lastChild);\n } else {\n display.appendChild(duration);\n }\n }\n\n const durationAfterSkips = getFormattedTime(getVideoDuration() - skippedDuration);\n\n duration.innerText = (durationAfterSkips == null || skippedDuration <= 0) ? \"\" : \" (\" + durationAfterSkips + \")\";\n}\n\nfunction checkForPreloadedSegment() {\n if (loadedPreloadedSegment) return;\n\n loadedPreloadedSegment = true;\n const hashParams = getHashParams();\n\n let pushed = false;\n const segments = hashParams.segments;\n if (Array.isArray(segments)) {\n for (const segment of segments) {\n if (Array.isArray(segment.segment)) {\n if (!sponsorTimesSubmitting.some((s) => s.segment[0] === segment.segment[0] && s.segment[1] === s.segment[1])) {\n sponsorTimesSubmitting.push({\n segment: segment.segment,\n UUID: generateUserID() as SegmentUUID,\n category: segment.category ? segment.category : Config.config.defaultCategory,\n actionType: segment.actionType ? segment.actionType : ActionType.Skip,\n description: segment.description ?? \"\",\n source: SponsorSourceType.Local\n });\n\n pushed = true;\n }\n }\n }\n }\n\n if (pushed) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n}\n\n// Generate and inject a stylesheet that creates CSS variables with configured category colors\nfunction setCategoryColorCSSVariables() {\n let styleContainer = document.getElementById(\"sbCategoryColorStyle\");\n if (!styleContainer) {\n styleContainer = document.createElement(\"style\");\n styleContainer.id = \"sbCategoryColorStyle\";\n if (isVorapisInstalled()) {\n // Vorapi deletes styles\n styleContainer.className = 'stylus';\n }\n\n const head = (document.head || document.documentElement);\n head.appendChild(styleContainer)\n }\n\n let css = \":root {\"\n for (const [category, config] of Object.entries(Config.config.barTypes)) {\n css += `--sb-category-${category}: ${config.color};`;\n css += `--darkreader-bg--sb-category-${category}: ${config.color};`;\n\n const luminance = GenericUtils.getLuminance(config.color);\n css += `--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n css += `--darkreader-text--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n }\n css += \"}\";\n\n styleContainer.innerText = css;\n}\n\n/**\n * If mini player starts playing, then videoID change might have to be called\n */\nfunction checkForMiniplayerPlaying() {\n const miniPlayerUI = document.querySelector(\".miniplayer\") as HTMLElement;\n if (!onVideoPage() && isVisible(miniPlayerUI)) {\n const videoID = getLastNonInlineVideoID();\n if (videoID) {\n triggerVideoIDChange(videoID);\n\n // treat as if video element has changed\n const video = miniPlayerUI.querySelector(\"video\") as HTMLVideoElement;\n if (video && getVideo() !== video) {\n triggerVideoElementChange(video);\n }\n }\n }\n}\n","import { waitFor } from \"../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../maze-utils/src/elements\";\nimport { getHash } from \"../maze-utils/src/hash\";\nimport { getVideoID, isOnInvidious, isOnMobileYouTube } from \"../maze-utils/src/video\";\nimport Config from \"./config\";\nimport { Tooltip } from \"./render/Tooltip\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\nimport { isVisible } from \"./utils/pageUtils\";\nimport { asyncRequestToServer } from \"./utils/requests\";\n\nlet tooltip: Tooltip = null;\nconst showDeArrowPromotion = false;\nexport async function tryShowingDeArrowPromotion() {\n if (showDeArrowPromotion\n && Config.config.showDeArrowPromotion\n && !isOnMobileYouTube()\n && !isOnInvidious()\n && document.URL.includes(\"watch\")\n && Config.config.showUpsells \n && Config.config.showNewFeaturePopups\n && (Config.config.skipCount > 30 || !Config.config.trackViewCount)) {\n\n if (!await isDeArrowInstalled()) {\n try {\n const element = await waitFor(() => getYouTubeTitleNode(), 5000, 500, (e) => isVisible(e)) as HTMLElement;\n if (element && element.innerText && badTitle(element.innerText)) {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n const deArrowData = await asyncRequestToServer(\"GET\", \"/api/branding/\" + hashPrefix);\n if (!deArrowData.ok) return;\n\n const deArrowDataJson = JSON.parse(deArrowData.responseText);\n const title = deArrowDataJson?.[getVideoID()]?.titles?.[0];\n if (title && title.title && (title.locked || title.votes > 0)) {\n Config.config.showDeArrowPromotion = false;\n\n tooltip = new Tooltip({\n text: chrome.i18n.getMessage(\"DeArrowTitleReplacementSuggestion\") + \"\\n\\n\" + title.title,\n linkOnClick: () => {\n window.open(\"https://dearrow.ajay.app\");\n Config.config.shownDeArrowPromotion = true;\n },\n secondButtonText: chrome.i18n.getMessage(\"hideNewFeatureUpdates\"),\n referenceNode: element,\n prependElement: element.firstElementChild as HTMLElement,\n timeout: 15000,\n positionRealtive: false,\n containerAbsolute: true,\n bottomOffset: \"inherit\",\n topOffset: \"55px\",\n leftOffset: \"0\",\n rightOffset: \"0\",\n topTriangle: true,\n center: true,\n opacity: 1\n });\n }\n }\n } catch { } // eslint-disable-line no-empty\n } else {\n Config.config.showDeArrowPromotion = false;\n }\n }\n}\n\n/**\n * Two upper case words (at least 2 letters long)\n */\nfunction badTitle(title: string): boolean {\n return !!title.match(/\\p{Lu}{2,} \\p{Lu}{2,}[.!? ]/u);\n}\n\nexport function hideDeArrowPromotion(): void {\n if (tooltip) tooltip.close();\n}\n","/*\nBased on code from\nhttps://github.com/videosegments/videosegments/commits/f1e111bdfe231947800c6efdd51f62a4e7fef4d4/segmentsbar/segmentsbar.js\n*/\n\nimport Config from \"../config\";\nimport { ChapterVote } from \"../render/ChapterVote\";\nimport { ActionType, Category, CategorySkipOption, SegmentContainer, SponsorHideType, SponsorSourceType, SponsorTime } from \"../types\";\nimport { partition } from \"../utils/arrayUtils\";\nimport { DEFAULT_CATEGORY, shortCategoryName } from \"../utils/categoryUtils\";\nimport { normalizeChapterName } from \"../utils/exporter\";\nimport { findNonEmptyElement, findValidElement } from \"../../maze-utils/src/dom\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\nimport { hasAutogeneratedChapters, isVisible } from \"../utils/pageUtils\";\nimport { isVorapisInstalled } from \"../utils/compatibility\";\nimport { isOnYTTV } from \"../../maze-utils/src/video\";\nimport { getCategorySelection } from \"../utils/skipRule\";\nimport { getSkipProfileBool } from \"../utils/skipProfiles\";\n\nconst TOOLTIP_VISIBLE_CLASS = 'sponsorCategoryTooltipVisible';\nconst MIN_CHAPTER_SIZE = 0.003;\n\nexport interface PreviewBarSegment {\n segment: [number, number];\n category: Category;\n actionType: ActionType;\n unsubmitted: boolean;\n showLarger: boolean;\n description: string;\n source: SponsorSourceType;\n requiredSegment?: boolean;\n selectedSegment?: boolean;\n}\n\ninterface ChapterGroup extends SegmentContainer {\n originalDuration: number;\n actionType: ActionType;\n}\n\nclass PreviewBar {\n container: HTMLUListElement;\n categoryTooltip?: HTMLDivElement;\n categoryTooltipContainer?: HTMLElement;\n chapterTooltip?: HTMLDivElement;\n\n // ScrubTooltips for YTTV only\n categoryScrubTooltip?: HTMLDivElement;\n categoryScrubTooltipContainer?: HTMLElement;\n chapterScrubTooltip?: HTMLDivElement;\n\n lastSmallestSegment: Record = {};\n\n parent: HTMLElement;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n onYTTV: boolean;\n progressBar: HTMLElement;\n\n segments: PreviewBarSegment[] = [];\n hasYouTubeChapters = false;\n existingChapters: PreviewBarSegment[] = [];\n videoDuration = 0;\n updateExistingChapters: () => void;\n lastChapterUpdate = 0;\n\n // For chapter bar\n hoveredSection: HTMLElement;\n customChaptersBar: HTMLElement;\n chaptersBarSegments: PreviewBarSegment[];\n chapterVote: ChapterVote;\n originalChapterBar: HTMLElement;\n originalChapterBarBlocks: NodeListOf;\n chapterMargin: number;\n lastRenderedSegments: PreviewBarSegment[];\n unfilteredChapterGroups: ChapterGroup[];\n chapterGroups: ChapterGroup[];\n\n constructor(parent: HTMLElement, onMobileYouTube: boolean, onInvidious: boolean, onYTTV: boolean, chapterVote: ChapterVote, updateExistingChapters: () => void, test=false) {\n if (test) return;\n this.container = document.createElement('ul');\n this.container.id = 'previewbar';\n\n if (onYTTV) {\n this.container.classList.add(\"sponsorblock-yttv-container\");\n }\n\n this.parent = parent;\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.onYTTV = onYTTV;\n this.chapterVote = chapterVote;\n this.updateExistingChapters = updateExistingChapters;\n\n this.updatePageElements();\n this.createElement(parent);\n this.createChapterMutationObservers();\n\n this.setupHoverText();\n }\n\n setupHoverText(): void {\n if (this.onMobileYouTube || this.onInvidious) return;\n\n // delete old ones\n document.querySelectorAll(`.sponsorCategoryTooltip`)\n .forEach((e) => e.remove());\n\n // Create label placeholder\n this.categoryTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.categoryTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.categoryTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n this.chapterTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.chapterTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.chapterTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n\n if (isOnYTTV()) {\n this.categoryScrubTooltip = document.createElement(\"div\");\n this.categoryScrubTooltip.className = \"sponsorCategoryTooltip\";\n this.chapterScrubTooltip = document.createElement(\"div\");\n this.chapterScrubTooltip.className = \"sponsorCategoryTooltip\";\n }\n\n // global chapter tooltip or duration tooltip\n // YT, Vorapis, unknown, YTTV\n const tooltipTextWrapper = document.querySelector(\".ytp-tooltip-text-wrapper, .ytp-progress-tooltip-text-container, .yssi-slider .ys-seek-details .time-info-bar\") ?? document.querySelector(\"#progress-bar-container.ytk-player > #hover-time-info\");\n const defaultTooltipSelector = \".ytp-tooltip-title:not(.sponsorCategoryTooltip), .ytp-tooltip-title:not(.sponsorCategoryTooltip) span, .ytp-progress-tooltip-text:not(.sponsorCategoryTooltip), .current-time:not(.sponsorCategoryTooltip)\";\n const originalTooltip = findNonEmptyElement([\n defaultTooltipSelector,\n \".ytp-tooltip-progress-bar-pill-title\"\n ]) ?? document.querySelector(defaultTooltipSelector);\n if (!tooltipTextWrapper || !tooltipTextWrapper.parentElement) return;\n\n // Grab the tooltip from the text wrapper as the tooltip doesn't have its classes on init\n this.categoryTooltipContainer = tooltipTextWrapper.parentElement;\n // YT, Vorapis, YTTV\n const titleTooltip = tooltipTextWrapper.querySelector(\".ytp-tooltip-title, .ytp-progress-tooltip-text, .current-time\") as HTMLElement;\n if (!this.categoryTooltipContainer || !titleTooltip) return;\n\n tooltipTextWrapper.insertBefore(this.categoryTooltip, titleTooltip.nextSibling);\n tooltipTextWrapper.insertBefore(this.chapterTooltip, titleTooltip.nextSibling);\n\n if (isOnYTTV()) {\n const scrubTooltipTextWrapper = document.querySelector(\".yssi-slider .ysl-filmstrip-lens .time-info-bar\")\n if (!this.categoryTooltipContainer) return;\n \n scrubTooltipTextWrapper.appendChild(this.categoryScrubTooltip);\n scrubTooltipTextWrapper.appendChild(this.chapterScrubTooltip);\n }\n\n const seekBar = (document.querySelector(\".ytp-progress-bar-container, .ypcs-scrub-slider-slot.ytu-player-controls\"));\n if (!seekBar) return;\n\n let mouseOnSeekBar = false;\n\n seekBar.addEventListener(\"mouseenter\", () => {\n mouseOnSeekBar = true;\n });\n\n seekBar.addEventListener(\"mouseleave\", () => {\n mouseOnSeekBar = false;\n });\n\n seekBar.addEventListener(\"mousemove\", (e: MouseEvent) => {\n if (!mouseOnSeekBar || !this.categoryTooltip || !this.categoryTooltipContainer || !chrome.runtime?.id) return;\n\n let noYoutubeChapters = !!tooltipTextWrapper.querySelector(\".ytp-tooltip-text.ytp-tooltip-text-no-title, .ytp-progress-tooltip-timestamp\");\n const timeInSeconds = this.decimalToTime((e.clientX - seekBar.getBoundingClientRect().x) / seekBar.clientWidth);\n\n // Find the segment at that location, using the shortest if multiple found\n const [normalSegments, chapterSegments] =\n partition(this.segments,\n (segment) => segment.actionType !== ActionType.Chapter);\n let mainSegment = this.getSmallestSegment(timeInSeconds, normalSegments, \"normal\");\n let secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments, \"chapter\");\n if (mainSegment === null && secondarySegment !== null) {\n mainSegment = secondarySegment;\n secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments.filter((s) => s !== secondarySegment));\n }\n\n const hasAYouTubeChapterRemoved = this.hasYouTubeChapters\n || (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters());\n if (hasAYouTubeChapterRemoved) {\n // Hide original tooltip if some chapter has been filtered out\n originalTooltip.style.display = \"none\";\n noYoutubeChapters = true;\n }\n\n if (mainSegment === null && secondarySegment === null) {\n if (!hasAYouTubeChapterRemoved) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n originalTooltip.style.removeProperty(\"display\");\n }\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n } else {\n this.categoryTooltipContainer.classList.add(TOOLTIP_VISIBLE_CLASS);\n const hasTwoTooltips = mainSegment !== null && secondarySegment !== null;\n if (hasTwoTooltips) {\n this.categoryTooltipContainer.classList.add(\"sponsorTwoTooltips\");\n } else {\n this.categoryTooltipContainer.classList.remove(\"sponsorTwoTooltips\");\n }\n\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n if (isVorapisInstalled()) {\n const tooltipParent = tooltipTextWrapper.parentElement!;\n tooltipParent.classList.add(\"with-text\");\n }\n\n if (normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.categoryTooltip.textContent)\n || normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.chapterTooltip.textContent)\n || !originalTooltip.textContent) {\n if (originalTooltip.style.display !== \"none\") originalTooltip.style.display = \"none\";\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = true;\n } else if (originalTooltip.style.display === \"none\") {\n originalTooltip.style.removeProperty(\"display\");\n this.categoryTooltipContainer.classList.add(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = false;\n }\n\n // To prevent offset issue\n this.categoryTooltip.style.right = titleTooltip.style.right;\n this.chapterTooltip.style.right = titleTooltip.style.right;\n this.categoryTooltip.style.textAlign = titleTooltip.style.textAlign;\n this.chapterTooltip.style.textAlign = titleTooltip.style.textAlign;\n }\n\n // Used to prevent overlapping\n this.categoryTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n this.chapterTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n });\n }\n\n private setTooltipTitle(segment: PreviewBarSegment, tooltip: HTMLElement): void {\n if (segment) {\n const name = segment.description || shortCategoryName(segment.category);\n if (segment.unsubmitted) {\n tooltip.textContent = chrome.i18n.getMessage(\"unsubmitted\") + \" \" + name;\n } else {\n tooltip.textContent = name;\n }\n\n tooltip.style.removeProperty(\"display\");\n\n // For July 2025 test layout\n if (document.querySelector(\".ytp-delhi-modern\")) {\n tooltip.style.display = \"inline-block\";\n\n // Class gets added back, so grab the top value for when the class is removed\n tooltip.style.removeProperty(\"top\");\n tooltip.classList.remove(\"ytp-tooltip-text-no-title\");\n\n if (tooltip === this.chapterTooltip) {\n tooltip.style.top = `calc(${window.getComputedStyle(tooltip).getPropertyValue(\"top\")} + 5px)`;\n } else {\n tooltip.style.top = window.getComputedStyle(tooltip).getPropertyValue(\"top\");\n }\n }\n } else {\n tooltip.style.display = \"none\";\n }\n }\n\n createElement(parent?: HTMLElement): void {\n if (parent) this.parent = parent;\n\n if (this.onMobileYouTube) {\n this.container.style.transform = \"none\";\n } else if (!this.onInvidious) {\n this.container.classList.add(\"sbNotInvidious\");\n }\n\n // On the seek bar\n if (this.onYTTV) {\n // order of sibling elements matters on YTTV\n this.parent.insertBefore(this.container, this.parent.firstChild.nextSibling.nextSibling);\n } else {\n this.parent.prepend(this.container);\n }\n }\n\n clear(): void {\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild);\n }\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar?.style?.removeProperty(\"display\");\n this.chapterVote?.setVisibility(false);\n\n document.querySelectorAll(`.sponsorBlockChapterBar`).forEach((e) => {\n if (e !== this.customChaptersBar) {\n e.remove();\n }\n });\n }\n\n set(segments: PreviewBarSegment[], videoDuration: number): void {\n this.segments = segments ?? [];\n this.videoDuration = videoDuration ?? 0;\n this.hasYouTubeChapters = segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source));\n\n // Remove unnecessary original chapters if submitted replacements exist\n for (const chapter of this.segments.filter((s) => s.actionType === ActionType.Chapter && s.source === SponsorSourceType.Server)) {\n const segmentDuration = chapter.segment[1] - chapter.segment[0];\n \n const duplicate = this.segments.find((s) => s.actionType === ActionType.Chapter \n && [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source) \n && Math.abs(s.segment[0] - chapter.segment[0]) < Math.min(3, segmentDuration / 3)\n && Math.abs(s.segment[1] - chapter.segment[1]) < Math.min(3, segmentDuration / 3));\n \n if (duplicate) {\n const index = this.segments.indexOf(duplicate);\n this.segments.splice(index, 1);\n }\n }\n\n this.updatePageElements();\n // Sometimes video duration is inaccurate, pull from accessibility info\n const ariaDuration = parseInt(this.progressBar?.getAttribute('aria-valuemax')) ?? 0;\n const multipleActiveVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v)).length > 1;\n if (!multipleActiveVideos && ariaDuration && Math.abs(ariaDuration - this.videoDuration) > 3) {\n this.videoDuration = ariaDuration;\n }\n\n this.update();\n }\n\n private updatePageElements(): void {\n // YT, Vorapis v3\n const allProgressBars = document.querySelectorAll(\".ytp-progress-bar, .ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\") as NodeListOf;\n this.progressBar = findValidElement(allProgressBars) ?? allProgressBars?.[0];\n\n if (this.progressBar) {\n const newChapterBar = this.progressBar.querySelector(\".ytp-chapters-container:not(.sponsorBlockChapterBar)\") as HTMLElement;\n if (this.originalChapterBar !== newChapterBar) {\n // Make sure changes are undone on old bar\n this.originalChapterBar?.style?.removeProperty(\"display\");\n\n this.originalChapterBar = newChapterBar;\n }\n }\n }\n\n private update(): void {\n this.clear();\n const chapterChevron = this.getChapterChevron();\n\n if (!this.segments) {\n chapterChevron?.style?.removeProperty(\"display\");\n }\n\n this.chapterMargin = 2;\n if (this.originalChapterBar) {\n this.originalChapterBarBlocks = this.originalChapterBar.querySelectorAll(\":scope > div\") as NodeListOf\n this.existingChapters = this.segments.filter((s) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source)).sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (this.existingChapters?.length > 0) {\n const margin = parseFloat(this.originalChapterBarBlocks?.[0]?.style?.marginRight?.replace(\"px\", \"\"));\n if (margin) this.chapterMargin = margin;\n }\n }\n\n const sortedSegments = this.segments.sort(({ segment: a }, { segment: b }) => {\n // Sort longer segments before short segments to make shorter segments render later\n return (b[1] - b[0]) - (a[1] - a[0]);\n });\n for (const segment of sortedSegments) {\n if (segment.actionType === ActionType.Chapter) continue;\n const bar = this.createBar(segment);\n\n this.container.appendChild(bar);\n }\n\n this.createChaptersBar(this.segments.sort((a, b) => a.segment[0] - b.segment[0]));\n\n if (chapterChevron) {\n if (this.segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))) {\n chapterChevron.style.removeProperty(\"display\");\n } else if (this.segments) {\n chapterChevron.style.display = \"none\";\n }\n }\n }\n\n createBar(barSegment: PreviewBarSegment): HTMLLIElement {\n const { category, unsubmitted, segment, showLarger } = barSegment;\n\n const bar = document.createElement('li');\n bar.classList.add('previewbar');\n if (barSegment.requiredSegment) bar.classList.add(\"requiredSegment\");\n if (barSegment.selectedSegment) bar.classList.add(\"selectedSegment\");\n bar.innerHTML = showLarger ? '  ' : ' ';\n\n const fullCategoryName = (unsubmitted ? 'preview-' : '') + category;\n bar.setAttribute('sponsorblock-category', fullCategoryName);\n\n // Handled by setCategoryColorCSSVariables() of content.ts\n bar.style.backgroundColor = `var(--sb-category-${fullCategoryName})`;\n if (!this.onMobileYouTube) bar.style.opacity = Config.config.barTypes[fullCategoryName]?.opacity;\n\n bar.style.position = \"absolute\";\n const duration = Math.min(segment[1], this.videoDuration) - segment[0];\n const startTime = segment[1] ? Math.min(this.videoDuration, segment[0]) : segment[0];\n const endTime = Math.min(this.videoDuration, segment[1]);\n bar.style.left = this.timeToPercentage(startTime);\n\n if (duration > 0) {\n bar.style.right = this.timeToRightPercentage(endTime);\n }\n if (this.chapterFilter(barSegment) && segment[1] < this.videoDuration) {\n bar.style.marginRight = `${this.chapterMargin}px`;\n }\n\n if (this.onYTTV) {\n bar.classList.add(\"previewbar-yttv\");\n }\n\n return bar;\n }\n\n createChaptersBar(segments: PreviewBarSegment[]): void {\n if (!this.progressBar || !this.originalChapterBar || this.originalChapterBar.childElementCount <= 0) {\n if (this.originalChapterBar) this.originalChapterBar.style.removeProperty(\"display\");\n\n // Make sure other video types lose their chapter bar\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n this.customChaptersBar = null;\n return;\n }\n\n const remakingBar = segments !== this.lastRenderedSegments;\n if (remakingBar) {\n this.lastRenderedSegments = segments;\n\n // Merge overlapping chapters\n this.unfilteredChapterGroups = this.createChapterRenderGroups(segments);\n }\n \n if ((segments.every((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))\n || (!Config.config.renderSegmentsAsChapters\n && segments.every((segment) => segment.actionType !== ActionType.Chapter\n || [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))))\n && !(hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\"))) {\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n const filteredSegments = segments?.filter((segment) => this.chapterFilter(segment));\n if (filteredSegments) {\n let groups = this.unfilteredChapterGroups;\n if (filteredSegments.length !== segments.length) {\n groups = this.createChapterRenderGroups(filteredSegments);\n }\n this.chapterGroups = groups.filter((segment) => this.chapterGroupFilter(segment));\n\n if (groups.length !== this.chapterGroups.length) {\n // Fix missing sections due to filtered segments\n for (let i = 1; i < this.chapterGroups.length; i++) {\n if (this.chapterGroups[i].segment[0] !== this.chapterGroups[i - 1].segment[1]) {\n this.chapterGroups[i - 1].segment[1] = this.chapterGroups[i].segment[0]\n }\n }\n }\n } else {\n this.chapterGroups = this.unfilteredChapterGroups;\n }\n\n if (this.chapterGroups.length === 0 && !getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Add placeholder chapter group for whole video\n this.chapterGroups = [{\n segment: [0, this.videoDuration],\n originalDuration: 0,\n actionType: null\n }];\n }\n\n if (!this.chapterGroups || this.chapterGroups.length <= 0) {\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n // Create it from cloning\n let createFromScratch = false;\n if (!this.customChaptersBar || !this.progressBar.contains(this.customChaptersBar)) {\n // Clear anything remaining\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n\n createFromScratch = true;\n this.customChaptersBar = this.originalChapterBar.cloneNode(true) as HTMLElement;\n this.customChaptersBar.classList.add(\"sponsorBlockChapterBar\");\n }\n\n this.customChaptersBar.style.display = \"none\";\n const originalSections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\");\n const originalSection = originalSections[0];\n\n // For switching to a video with less chapters\n if (originalSections.length > this.chapterGroups.length) {\n for (let i = originalSections.length - 1; i >= this.chapterGroups.length; i--) {\n this.customChaptersBar.removeChild(originalSections[i]);\n }\n }\n\n // Modify it to have sections for each segment\n for (let i = 0; i < this.chapterGroups.length; i++) {\n const chapter = this.chapterGroups[i].segment;\n let newSection = originalSections[i] as HTMLElement;\n if (!newSection) {\n newSection = originalSection.cloneNode(true) as HTMLElement;\n\n this.firstTimeSetupChapterSection(newSection);\n this.customChaptersBar.appendChild(newSection);\n } else if (createFromScratch) {\n this.firstTimeSetupChapterSection(newSection);\n }\n\n this.setupChapterSection(newSection, chapter[0], chapter[1], i !== this.chapterGroups.length - 1);\n }\n\n // Hide old bar\n this.originalChapterBar.style.display = \"none\";\n this.customChaptersBar.style.removeProperty(\"display\");\n\n if (createFromScratch) {\n if (this.container?.parentElement === this.progressBar) {\n this.progressBar.insertBefore(this.customChaptersBar, this.container.nextSibling);\n } else {\n this.progressBar.prepend(this.customChaptersBar);\n }\n }\n\n if (remakingBar) {\n this.updateChapterAllMutation(this.originalChapterBar, this.progressBar, true);\n }\n }\n\n createChapterRenderGroups(segments: PreviewBarSegment[]): ChapterGroup[] {\n const result: ChapterGroup[] = [];\n\n segments?.forEach((segment, index) => {\n const latestChapter = result[result.length - 1];\n if (latestChapter && latestChapter.segment[1] > segment.segment[0]) {\n const segmentDuration = segment.segment[1] - segment.segment[0];\n if (segment.segment[0] < latestChapter.segment[0]\n || segmentDuration < latestChapter.originalDuration) {\n // Remove latest if it starts too late\n let latestValidChapter = latestChapter;\n const chaptersToAddBack: ChapterGroup[] = []\n while (latestValidChapter?.segment[0] >= segment.segment[0]) {\n const invalidChapter = result.pop();\n if (invalidChapter.segment[1] > segment.segment[1]) {\n if (invalidChapter.segment[0] === segment.segment[0]) {\n invalidChapter.segment[0] = segment.segment[1];\n }\n\n chaptersToAddBack.push(invalidChapter);\n }\n latestValidChapter = result[result.length - 1];\n }\n\n const priorityActionType = this.getActionTypePrioritized([segment.actionType, latestChapter?.actionType]);\n\n // Split the latest chapter if smaller\n result.push({\n segment: [segment.segment[0], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: priorityActionType\n });\n if (latestValidChapter?.segment[1] > segment.segment[1]) {\n result.push({\n segment: [segment.segment[1], latestValidChapter.segment[1]],\n originalDuration: latestValidChapter.originalDuration,\n actionType: latestValidChapter.actionType\n });\n }\n\n chaptersToAddBack.reverse();\n let lastChapterChecked: number[] = segment.segment;\n for (const chapter of chaptersToAddBack) {\n if (chapter.segment[0] < lastChapterChecked[1]) {\n chapter.segment[0] = lastChapterChecked[1];\n }\n\n lastChapterChecked = chapter.segment;\n }\n result.push(...chaptersToAddBack);\n if (latestValidChapter) latestValidChapter.segment[1] = segment.segment[0];\n } else {\n // Start at end of old one otherwise\n result.push({\n segment: [latestChapter.segment[1], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: segment.actionType\n });\n }\n } else {\n // Add empty buffer before segment if needed\n const lastTime = latestChapter?.segment[1] || 0;\n if (segment.segment[0] > lastTime) {\n result.push({\n segment: [lastTime, segment.segment[0]],\n originalDuration: 0,\n actionType: null\n });\n }\n\n // Normal case\n const endTime = Math.min(segment.segment[1], this.videoDuration);\n result.push({\n segment: [segment.segment[0], endTime],\n originalDuration: endTime - segment.segment[0],\n actionType: segment.actionType\n });\n }\n\n // Add empty buffer after segment if needed\n if (index === segments.length - 1) {\n const nextSegment = segments[index + 1];\n const nextTime = nextSegment ? nextSegment.segment[0] : this.videoDuration;\n const lastTime = result[result.length - 1]?.segment[1] || segment.segment[1];\n if (this.intervalToDecimal(lastTime, nextTime) > MIN_CHAPTER_SIZE) {\n result.push({\n segment: [lastTime, nextTime],\n originalDuration: 0,\n actionType: null\n });\n }\n }\n });\n\n return result;\n }\n\n private getActionTypePrioritized(actionTypes: ActionType[]): ActionType {\n if (actionTypes.includes(ActionType.Skip)) {\n return ActionType.Skip;\n } else if (actionTypes.includes(ActionType.Mute)) {\n return ActionType.Mute;\n } else {\n return actionTypes.find(a => a) ?? actionTypes[0];\n }\n }\n\n private setupChapterSection(section: HTMLElement, startTime: number, endTime: number, addMargin: boolean): void {\n const sizePercent = this.intervalToPercentage(startTime, endTime);\n if (addMargin) {\n section.style.marginRight = `${this.chapterMargin}px`;\n section.style.width = `calc(${sizePercent} - ${this.chapterMargin}px)`;\n } else {\n section.style.marginRight = \"0\";\n section.style.width = sizePercent;\n }\n\n section.setAttribute(\"decimal-width\", String(this.intervalToDecimal(startTime, endTime)));\n }\n\n private firstTimeSetupChapterSection(section: HTMLElement): void {\n section.addEventListener(\"mouseenter\", () => {\n this.hoveredSection?.classList.remove(\"ytp-exp-chapter-hover-effect\");\n section.classList.add(\"ytp-exp-chapter-hover-effect\");\n this.hoveredSection = section;\n });\n }\n\n private createChapterMutationObservers(): void {\n if (!this.progressBar || !this.originalChapterBar) return;\n\n const attributeObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n const currentElement = mutation.target as HTMLElement;\n if (mutation.type === \"attributes\"\n && currentElement.parentElement?.classList.contains(\"ytp-progress-list\")) {\n changes[currentElement.classList[0]] = mutation.target as HTMLElement;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n attributeObserver.observe(this.originalChapterBar, {\n subtree: true,\n attributes: true,\n attributeFilter: [\"style\", \"class\"]\n });\n\n const childListObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n if (mutation.type === \"childList\") {\n this.update();\n break;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n // Only direct children, no subtree\n childListObserver.observe(this.originalChapterBar, {\n childList: true\n });\n\n addCleanupListener(() => {\n attributeObserver.disconnect();\n childListObserver.disconnect();\n });\n }\n\n private updateChapterAllMutation(originalChapterBar: HTMLElement, progressBar: HTMLElement, firstUpdate = false): void {\n const elements = originalChapterBar.querySelectorAll(\".ytp-progress-list > *\");\n const changes: Record = {};\n for (const element of elements) {\n changes[element.classList[0]] = element as HTMLElement;\n }\n\n this.updateChapterMutation(changes, progressBar, firstUpdate);\n }\n\n private updateChapterMutation(changes: Record, progressBar: HTMLElement, firstUpdate = false): void {\n // Go through each newly generated chapter bar and update the width based on changes array\n if (this.customChaptersBar) {\n // Width reached so far in decimal percent\n let cursor = 0;\n\n const sections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\") as NodeListOf;\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i];\n\n const sectionWidthDecimal = parseFloat(section.getAttribute(\"decimal-width\"));\n const sectionWidthDecimalNoMargin = sectionWidthDecimal - this.chapterMargin / progressBar.clientWidth;\n\n for (const className in changes) {\n const selector = `.${className}`\n const customChangedElement = section.querySelector(selector) as HTMLElement;\n if (customChangedElement) {\n const fullSectionWidth = i === sections.length - 1 ? sectionWidthDecimal : sectionWidthDecimalNoMargin;\n const changedElement = changes[className];\n const changedData = this.findLeftAndScale(selector, changedElement, progressBar);\n\n const left = (changedData.left) / progressBar.clientWidth;\n const calculatedLeft = Math.max(0, Math.min(1, (left - cursor) / fullSectionWidth));\n if (!isNaN(left) && !isNaN(calculatedLeft)) {\n customChangedElement.style.left = `${calculatedLeft * 100}%`;\n customChangedElement.style.removeProperty(\"display\");\n }\n\n if (changedData.scale !== null) {\n const transformScale = (changedData.scale) / progressBar.clientWidth;\n\n const scale = Math.max(0, Math.min(1 - calculatedLeft, (transformScale - cursor) / fullSectionWidth - calculatedLeft));\n customChangedElement.style.transform =\n `scaleX(${scale})`;\n if (customChangedElement.style.backgroundSize) {\n const backgroundSize = Math.max(changedData.scale / scale, fullSectionWidth * progressBar.clientWidth);\n customChangedElement.style.backgroundSize = `${backgroundSize}px`;\n\n if (changedData.scale < (cursor + fullSectionWidth) * progressBar.clientWidth) {\n customChangedElement.style.backgroundPosition = `-${backgroundSize - fullSectionWidth * progressBar.clientWidth}px`;\n } else {\n // Passed this section\n customChangedElement.style.backgroundPosition = `-${cursor * progressBar.clientWidth}px`;\n }\n }\n\n if (firstUpdate) {\n customChangedElement.style.transition = \"none\";\n setTimeout(() => customChangedElement.style.removeProperty(\"transition\"), 50);\n }\n }\n\n if (customChangedElement.className !== changedElement.className) {\n customChangedElement.className = changedElement.className;\n }\n }\n }\n\n cursor += sectionWidthDecimal;\n }\n\n if (sections.length !== 0 && sections.length !== this.existingChapters?.length\n && Date.now() - this.lastChapterUpdate > 3000) {\n this.lastChapterUpdate = Date.now();\n this.updateExistingChapters();\n }\n }\n }\n\n private findLeftAndScale(selector: string, currentElement: HTMLElement, progressBar: HTMLElement):\n { left: number; scale: number } {\n const sections = currentElement.parentElement.parentElement.parentElement.children;\n let currentWidth = 0;\n let lastWidth = 0;\n\n let left = 0;\n let leftPosition = 0;\n\n let scale = null;\n let scalePosition = 0;\n let scaleWidth = 0;\n let lastScalePosition = 0;\n\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i] as HTMLElement;\n const checkElement = section.querySelector(selector) as HTMLElement;\n const currentSectionWidthNoMargin = this.getPartialChapterSectionStyle(section, \"width\") ?? progressBar.clientWidth;\n const currentSectionWidth = currentSectionWidthNoMargin\n + this.getPartialChapterSectionStyle(section, \"marginRight\");\n\n // First check for left\n const checkLeft = parseFloat(checkElement.style.left.replace(\"px\", \"\"));\n if (checkLeft !== 0) {\n left = checkLeft;\n leftPosition = currentWidth;\n }\n\n // Then check for scale\n const transformMatch = checkElement.style.transform.match(/scaleX\\(([0-9.]+?)\\)/);\n if (transformMatch) {\n const transformScale = parseFloat(transformMatch[1]);\n const endPosition = transformScale + checkLeft / currentSectionWidthNoMargin;\n\n if (lastScalePosition > 0.99999 && endPosition === 0) {\n // Last one was an end section that was fully filled\n scalePosition = currentWidth - lastWidth;\n break;\n }\n\n lastScalePosition = endPosition;\n\n scale = transformScale;\n scaleWidth = currentSectionWidthNoMargin;\n\n if ((i === sections.length - 1 || endPosition < 0.99999) && endPosition > 0) {\n // reached the end of this section for sure\n // if the scale is always zero, then it will go through all sections but still return 0\n\n scalePosition = currentWidth;\n if (checkLeft !== 0) {\n scalePosition += left;\n }\n break;\n }\n }\n\n lastWidth = currentSectionWidth;\n currentWidth += lastWidth;\n }\n\n return {\n left: left + leftPosition,\n scale: scale !== null ? scale * scaleWidth + scalePosition : null\n };\n }\n\n private getPartialChapterSectionStyle(element: HTMLElement, param: string): number {\n const data = element.style[param];\n if (data?.includes(\"%\")) {\n return this.customChaptersBar.clientWidth * (parseFloat(data.replace(\"%\", \"\")) / 100);\n } else {\n return parseInt(element.style[param].match(/\\d+/g)?.[0]) || 0;\n }\n }\n\n updateChapterText(segments: SponsorTime[], submittingSegments: SponsorTime[], currentTime: number): SponsorTime[] {\n if (!Config.config.showSegmentNameInChapterBar\n || Config.config.disableSkipping\n || ((!segments || segments.length <= 0) && submittingSegments?.length <= 0 \n && (getSkipProfileBool(\"showAutogeneratedChapters\") || !hasAutogeneratedChapters()))) {\n const chaptersContainer = this.getChaptersContainer();\n if (chaptersContainer) {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n \n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n }\n\n return [];\n }\n\n segments ??= [];\n if (submittingSegments?.length > 0) segments = segments.concat(submittingSegments);\n const activeSegments = segments.filter((segment) => {\n return segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime && segment.segment[1] > currentTime\n && segment.category !== DEFAULT_CATEGORY\n && getCategorySelection(segment).option !== CategorySkipOption.Disabled\n });\n\n this.setActiveSegments(activeSegments);\n return activeSegments;\n }\n\n /**\n * Adds the text to the chapters slot if not filled by default\n */\n private setActiveSegments(segments: SponsorTime[]): void {\n const chaptersContainer = this.getChaptersContainer();\n\n if (chaptersContainer) {\n if (segments.length > 0) {\n chaptersContainer.classList.add(\"sponsorblock-chapter-visible\");\n\n const chosenSegment = segments.sort((a, b) => {\n if (a.actionType === ActionType.Chapter && b.actionType !== ActionType.Chapter) {\n return -1;\n } else if (a.actionType !== ActionType.Chapter && b.actionType === ActionType.Chapter) {\n return 1;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source === SponsorSourceType.Server && b.source !== SponsorSourceType.Server) {\n return -0.5;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source !== SponsorSourceType.Server && b.source === SponsorSourceType.Server) {\n return 0.5;\n } else {\n return (b.segment[0] - a.segment[0]) * 4;\n }\n })[0];\n\n const chapterButton = this.getChapterButton(chaptersContainer);\n if (chapterButton) {\n chapterButton.classList.remove(\"ytp-chapter-container-disabled\");\n chapterButton.disabled = false;\n }\n\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n chapterTitle.style.display = \"none\";\n\n const chapterCustomText = (chapterTitle.parentElement.querySelector(\".sponsorChapterText\") || (() => {\n const elem = document.createElement(\"div\");\n chapterTitle.parentElement.insertBefore(elem, chapterTitle);\n elem.classList.add(\"sponsorChapterText\");\n if (document.location.host === \"tv.youtube.com\") {\n elem.style.lineHeight = \"initial\";\n }\n return elem;\n })()) as HTMLDivElement;\n chapterCustomText.innerText = chosenSegment.description || shortCategoryName(chosenSegment.category);\n\n if (chosenSegment.actionType !== ActionType.Chapter) {\n chapterTitle.classList.add(\"sponsorBlock-segment-title\");\n } else {\n chapterTitle.classList.remove(\"sponsorBlock-segment-title\");\n }\n\n if (chosenSegment.source === SponsorSourceType.Server) {\n const chapterVoteContainer = this.chapterVote.getContainer();\n if (document.location.host === \"tv.youtube.com\") {\n if (!chaptersContainer.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n chaptersContainer.appendChild(chapterVoteContainer);\n }\n } else if (!chapterButton.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n\n chapterButton.insertBefore(chapterVoteContainer, this.getChapterChevron());\n }\n\n this.chapterVote.setVisibility(true);\n this.chapterVote.setSegment(chosenSegment);\n } else {\n this.chapterVote.setVisibility(false);\n }\n } else if (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Keep original hidden\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.display = \"none\";\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n\n const titlePrefixDot = chaptersContainer.querySelector(\".ytp-chapter-title-prefix\") as HTMLElement;\n if (titlePrefixDot) titlePrefixDot.style.display = \"none\";\n \n this.chapterVote.setVisibility(false);\n } else {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n \n this.chapterVote.setVisibility(false);\n }\n }\n }\n\n private getChaptersContainer(): HTMLElement {\n if (document.location.host === \"tv.youtube.com\") {\n if (!document.querySelector(\".ytp-chapter-container\")) {\n const dest = document.querySelector(\".ypcs-control-buttons-left\");\n if (!dest) return null;\n const sbChapterContainer = document.createElement(\"div\");\n sbChapterContainer.className = \"ytp-chapter-container\";\n const sbChapterTitleContent = document.createElement(\"div\");\n sbChapterTitleContent.className = \"ytp-chapter-title-content\";\n sbChapterContainer.appendChild(sbChapterTitleContent);\n dest.appendChild(sbChapterContainer);\n }\n }\n return document.querySelector(\".ytp-chapter-container\") as HTMLElement;\n }\n\n private getChapterButton(chaptersContainer: HTMLElement): HTMLButtonElement {\n return (chaptersContainer ?? this.getChaptersContainer())\n ?.querySelector(\"button.ytp-chapter-title\") as HTMLButtonElement;\n }\n\n remove(): void {\n this.container.remove();\n\n if (this.categoryTooltip) {\n this.categoryTooltip.remove();\n this.categoryTooltip = undefined;\n }\n\n if (this.categoryTooltipContainer) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n this.categoryTooltipContainer = undefined;\n }\n }\n\n private chapterFilter(segment: PreviewBarSegment): boolean {\n return (Config.config.renderSegmentsAsChapters || segment.actionType === ActionType.Chapter)\n && segment.actionType !== ActionType.Poi\n && this.chapterGroupFilter(segment);\n }\n\n private chapterGroupFilter(segment: SegmentContainer): boolean {\n return segment.segment.length === 2 && this.intervalToDecimal(segment.segment[0], segment.segment[1]) > MIN_CHAPTER_SIZE;\n }\n\n intervalToPercentage(startTime: number, endTime: number) {\n return `${this.intervalToDecimal(startTime, endTime) * 100}%`;\n }\n\n intervalToDecimal(startTime: number, endTime: number) {\n return (this.timeToDecimal(endTime) - this.timeToDecimal(startTime));\n }\n\n timeToPercentage(time: number): string {\n return `${this.timeToDecimal(time) * 100}%`\n }\n\n timeToRightPercentage(time: number): string {\n return `${(1 - this.timeToDecimal(time)) * 100}%`\n }\n\n timeToDecimal(time: number): number {\n return this.decimalTimeConverter(time, true);\n }\n\n decimalToTime(decimal: number): number {\n return this.decimalTimeConverter(decimal, false);\n }\n\n /**\n * Decimal to time or time to decimal\n */\n decimalTimeConverter(value: number, isTime: boolean): number {\n if (this.originalChapterBarBlocks?.length > 1 && this.existingChapters.length === this.originalChapterBarBlocks?.length) {\n // Parent element to still work when display: none\n const totalPixels = this.originalChapterBar.parentElement.clientWidth;\n let pixelOffset = 0;\n let lastCheckedChapter = -1;\n for (let i = 0; i < this.originalChapterBarBlocks.length; i++) {\n const chapterElement = this.originalChapterBarBlocks[i];\n const widthPixels = parseFloat(chapterElement.style.width.replace(\"px\", \"\"));\n\n const marginPixels = chapterElement.style.marginRight ? parseFloat(chapterElement.style.marginRight.replace(\"px\", \"\")) : 0;\n if ((isTime && value >= this.existingChapters[i].segment[1])\n || (!isTime && value >= (pixelOffset + widthPixels + marginPixels) / totalPixels)) {\n pixelOffset += widthPixels + marginPixels;\n lastCheckedChapter = i;\n } else {\n break;\n }\n }\n\n // The next chapter is the one we are currently inside of\n const latestChapter = this.existingChapters[lastCheckedChapter + 1];\n if (latestChapter) {\n const latestWidth = parseFloat(this.originalChapterBarBlocks[lastCheckedChapter + 1].style.width.replace(\"px\", \"\"));\n const latestChapterDuration = latestChapter.segment[1] - latestChapter.segment[0];\n\n if (isTime) {\n const percentageInCurrentChapter = (value - latestChapter.segment[0]) / latestChapterDuration;\n const sizeOfCurrentChapter = latestWidth / totalPixels;\n return Math.min(1, ((pixelOffset / totalPixels) + (percentageInCurrentChapter * sizeOfCurrentChapter)));\n } else {\n const percentageInCurrentChapter = (value * totalPixels - pixelOffset) / latestWidth;\n return Math.max(0, latestChapter.segment[0] + (percentageInCurrentChapter * latestChapterDuration));\n }\n }\n }\n\n if (isTime) {\n return Math.min(1, value / this.videoDuration);\n } else {\n return Math.max(0, value * this.videoDuration);\n }\n }\n\n /*\n * Approximate size on preview bar for smallest element (due to  )\n */\n getMinimumSize(showLarger = false): number {\n return this.videoDuration * (showLarger ? 0.006 : 0.003);\n }\n\n // Name parameter used for cache\n private getSmallestSegment(timeInSeconds: number, segments: PreviewBarSegment[], name?: string): PreviewBarSegment | null {\n const proposedIndex = name ? this.lastSmallestSegment[name]?.index : null;\n const startSearchIndex = proposedIndex && segments[proposedIndex] === this.lastSmallestSegment[name].segment ? proposedIndex : 0;\n const direction = startSearchIndex > 0 && timeInSeconds < this.lastSmallestSegment[name].segment.segment[0] ? -1 : 1;\n\n let segment: PreviewBarSegment | null = null;\n let index = -1;\n let currentSegmentLength = Infinity;\n\n for (let i = startSearchIndex; i < segments.length && i >= 0; i += direction) {\n const seg = segments[i];\n const segmentLength = seg.segment[1] - seg.segment[0];\n const minSize = this.getMinimumSize(seg.showLarger);\n\n const startTime = segmentLength !== 0 ? seg.segment[0] : Math.floor(seg.segment[0]);\n const endTime = segmentLength > minSize ? seg.segment[1] : Math.ceil(seg.segment[0] + minSize);\n if (startTime <= timeInSeconds && endTime >= timeInSeconds) {\n if (segmentLength < currentSegmentLength) {\n currentSegmentLength = segmentLength;\n segment = seg;\n index = i;\n }\n }\n\n if (direction === 1 && seg.segment[0] > timeInSeconds) {\n break;\n }\n }\n\n if (segment) {\n this.lastSmallestSegment[name] = {\n index: index,\n segment: segment\n };\n }\n\n return segment;\n }\n\n private getChapterChevron(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-chevron\");\n }\n}\n\nexport default PreviewBar;\n","import Config from \"../config\";\nimport { SegmentUUID, SponsorTime } from \"../types\";\nimport { getSkippingText } from \"../utils/categoryUtils\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { isMobileControlsOpen } from \"../utils/mobileUtils\";\n\nexport interface SkipButtonControlBarProps {\n skip: (segment: SponsorTime) => void;\n selectSegment: (UUID: SegmentUUID) => void;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n}\n\nexport class SkipButtonControlBar {\n\n container: HTMLElement;\n skipIcon: HTMLImageElement;\n textContainer: HTMLElement;\n chapterText: HTMLElement;\n segment: SponsorTime;\n\n showKeybindHint = true;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n\n enabled = false;\n\n timeout: NodeJS.Timeout;\n duration = 0;\n\n skip: (segment: SponsorTime) => void;\n\n // Used if on mobile page\n hideButton: () => void;\n showButton: () => void;\n\n // Used by mobile only for swiping away\n left = 0;\n swipeStart = 0;\n\n constructor(props: SkipButtonControlBarProps) {\n this.skip = props.skip;\n this.onMobileYouTube = props.onMobileYouTube;\n this.onYTTV = props.onYTTV;\n\n this.container = document.createElement(\"div\");\n this.container.classList.add(\"skipButtonControlBarContainer\");\n this.container.classList.add(\"sbhidden\");\n if (this.onMobileYouTube) this.container.classList.add(\"mobile\");\n\n this.skipIcon = document.createElement(\"img\");\n this.skipIcon.src = chrome.runtime.getURL(\"icons/skipIcon.svg\");\n this.skipIcon.classList.add(\"ytp-button\");\n this.skipIcon.id = \"sbSkipIconControlBarImage\";\n if (this.onYTTV) {\n this.skipIcon.style.width = \"24px\";\n this.skipIcon.style.height = \"24px\";\n }\n\n this.textContainer = document.createElement(\"div\");\n\n this.container.appendChild(this.skipIcon);\n this.container.appendChild(this.textContainer);\n this.container.addEventListener(\"click\", () => this.toggleSkip());\n this.container.addEventListener(\"mouseenter\", () => {\n this.stopTimer();\n\n if (this.segment) {\n props.selectSegment(this.segment.UUID);\n }\n });\n this.container.addEventListener(\"mouseleave\", () => {\n this.startTimer();\n\n props.selectSegment(null);\n });\n if (this.onMobileYouTube) {\n this.container.addEventListener(\"touchstart\", (e) => this.handleTouchStart(e));\n this.container.addEventListener(\"touchmove\", (e) => this.handleTouchMove(e));\n this.container.addEventListener(\"touchend\", () => this.handleTouchEnd());\n }\n }\n\n getElement(): HTMLElement {\n return this.container;\n }\n\n attachToPage(): void {\n const mountingContainer = this.getMountingContainer();\n this.chapterText = document.querySelector(\".ytp-chapter-container\");\n\n if (mountingContainer && !mountingContainer.contains(this.container)) {\n if (this.onMobileYouTube || this.onYTTV) {\n mountingContainer.appendChild(this.container);\n } else {\n mountingContainer.insertBefore(this.container, this.chapterText);\n }\n\n if (!this.onMobileYouTube) {\n AnimationUtils.setupAutoHideAnimation(this.skipIcon, mountingContainer, false, false);\n } else {\n const { hide, show } = AnimationUtils.setupCustomHideAnimation(this.skipIcon, mountingContainer, false, false);\n this.hideButton = hide;\n this.showButton = show;\n }\n }\n }\n\n private getMountingContainer(): HTMLElement {\n if (!this.onMobileYouTube && !this.onYTTV) {\n return document.querySelector(\".ytp-left-controls\");\n } else if (this.onYTTV) {\n return document.querySelector(\".ypcs-control-buttons-left\");\n } else {\n return document.getElementById(\"player-container-id\");\n }\n }\n\n enable(segment: SponsorTime, duration?: number): void {\n if (duration) this.duration = duration;\n this.segment = segment;\n this.enabled = true;\n\n this.refreshText();\n this.container?.classList?.remove(\"textDisabled\");\n this.textContainer?.classList?.remove(\"sbhidden\");\n AnimationUtils.disableAutoHideAnimation(this.skipIcon);\n\n this.startTimer();\n }\n\n refreshText(): void {\n if (this.segment) {\n this.chapterText?.classList?.add(\"sbhidden\");\n this.container.classList.remove(\"sbhidden\");\n this.textContainer.innerText = this.getTitle();\n this.skipIcon.setAttribute(\"title\", this.getTitle());\n }\n }\n\n setShowKeybindHint(show: boolean): void {\n this.showKeybindHint = show;\n\n this.refreshText();\n }\n\n stopTimer(): void {\n if (this.timeout) clearTimeout(this.timeout);\n }\n\n startTimer(): void {\n this.stopTimer();\n this.timeout = setTimeout(() => this.disableText(), Math.max(Config.config.skipNoticeDuration, this.duration) * 1000);\n }\n\n disable(): void {\n this.container.classList.add(\"sbhidden\");\n\n this.chapterText?.classList?.remove(\"sbhidden\");\n this.getChapterPrefix()?.classList?.remove(\"sbhidden\");\n\n this.enabled = false;\n }\n\n isEnabled(): boolean {\n return this.enabled;\n }\n\n toggleSkip(): void {\n if (this.segment && this.enabled) {\n this.skip(this.segment);\n this.disableText();\n }\n }\n\n disableText(): void {\n if (Config.config.hideSkipButtonPlayerControls) {\n this.disable();\n return;\n }\n\n this.container.classList.add(\"textDisabled\");\n this.textContainer?.classList?.add(\"sbhidden\");\n this.chapterText?.classList?.remove(\"sbhidden\");\n\n this.getChapterPrefix()?.classList?.add(\"sbhidden\");\n\n AnimationUtils.enableAutoHideAnimation(this.skipIcon);\n if (this.onMobileYouTube) {\n this.hideButton();\n }\n }\n\n updateMobileControls(): void {\n if (this.enabled) {\n if (isMobileControlsOpen()) {\n this.showButton();\n } else {\n this.hideButton();\n }\n }\n }\n\n private getTitle(): string {\n return getSkippingText([this.segment], false) + (this.showKeybindHint ? \" (\" + keybindToString(Config.config.skipToHighlightKeybind) + \")\" : \"\");\n }\n\n private getChapterPrefix(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-prefix\");\n }\n\n // Swiping away on mobile\n private handleTouchStart(event: TouchEvent): void {\n this.swipeStart = event.touches[0].clientX;\n }\n\n // Swiping away on mobile\n private handleTouchMove(event: TouchEvent): void {\n const distanceMoved = this.swipeStart - event.touches[0].clientX;\n this.left = Math.min(-distanceMoved, 0);\n\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private handleTouchEnd(): void {\n if (this.left < -this.container.offsetWidth / 2) {\n this.disableText();\n\n // Don't let animation play\n this.skipIcon.style.display = \"none\";\n setTimeout(() => this.skipIcon.style.removeProperty(\"display\"), 200);\n }\n\n this.left = 0;\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private updateLeftStyle() {\n this.container.style.left = this.left + \"px\";\n }\n}\n","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport CategoryPillComponent, { CategoryPillState } from \"../components/CategoryPillComponent\";\nimport Config from \"../config\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\nimport { Tooltip } from \"./Tooltip\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../../maze-utils/src/elements\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\n\nconst id = \"categoryPill\";\n\nexport class CategoryPill {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n lastState: CategoryPillState;\n\n mutationObserver?: MutationObserver;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n \n constructor() {\n this.ref = React.createRef();\n\n addCleanupListener(() => {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n });\n }\n\n async attachToPage(onMobileYouTube: boolean, onInvidious: boolean,\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise): Promise {\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.vote = vote;\n\n this.attachToPageInternal();\n }\n\n private async attachToPageInternal(): Promise {\n let referenceNode =\n await waitFor(() => getYouTubeTitleNode());\n\n // Experimental YouTube layout with description on right\n const isOnDescriptionOnRightLayout = document.querySelector(\"#title #description\");\n if (isOnDescriptionOnRightLayout) {\n referenceNode = referenceNode.parentElement;\n }\n\n if (referenceNode && !referenceNode.contains(this.container)) {\n if (!this.container) {\n this.container = document.createElement('span');\n this.container.id = id;\n this.container.style.display = \"relative\";\n\n this.root = createRoot(this.container);\n this.ref = React.createRef();\n this.root.render();\n\n if (this.onMobileYouTube) {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n \n this.mutationObserver = new MutationObserver((changes) => {\n if (changes.some((change) => change.removedNodes.length > 0)) {\n this.attachToPageInternal();\n }\n });\n \n this.mutationObserver.observe(referenceNode, { \n childList: true,\n subtree: true\n });\n }\n }\n\n if (this.lastState) {\n waitFor(() => this.ref.current).then(() => {\n this.ref.current?.setState(this.lastState);\n });\n }\n\n // Use a parent because YouTube does weird things to the top level object\n // react would have to rerender if container was the top level\n const parent = document.createElement(\"span\");\n parent.id = \"categoryPillParent\";\n parent.appendChild(this.container);\n\n referenceNode.prepend(parent);\n if (!isOnDescriptionOnRightLayout) {\n referenceNode.style.display = \"flex\";\n }\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n open: show ? this.ref.current?.state.open : false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n }\n\n async setSegment(segment: SponsorTime): Promise {\n await waitFor(() => this.ref.current);\n\n if (this.ref.current?.state?.segment !== segment || !this.ref.current?.state?.show) {\n const newState = {\n segment,\n show: true,\n open: false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n\n if (!Config.config.categoryPillUpdate) {\n Config.config.categoryPillUpdate = true;\n\n const watchDiv = await waitFor(() => document.querySelector(\"#info.ytd-watch-flexy\") as HTMLElement);\n if (watchDiv) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"categoryPillNewFeature\"),\n link: \"https://blog.ajay.app/full-video-sponsorblock\",\n referenceNode: watchDiv,\n prependElement: watchDiv.firstChild as HTMLElement,\n bottomOffset: \"-10px\",\n opacity: 0.95,\n timeout: 50000\n });\n }\n }\n }\n\n if (this.onMobileYouTube && !document.contains(this.container)) {\n this.attachToPageInternal();\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport ChapterVoteComponent, { ChapterVoteState } from \"../components/ChapterVoteComponent\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nexport class ChapterVote {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n unsavedState: ChapterVoteState;\n\n mutationObserver?: MutationObserver;\n \n constructor(vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise) {\n this.ref = React.createRef();\n\n this.container = document.createElement('span');\n this.container.id = \"chapterVote\";\n this.container.style.height = \"100%\";\n\n if (document.location.host === \"tv.youtube.com\") {\n this.container.style.lineHeight = \"initial\";\n }\n\n this.root = createRoot(this.container);\n this.root.render();\n }\n\n getContainer(): HTMLElement {\n return this.container;\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n ...(!show ? { segment: null } : {})\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n\n async setSegment(segment: SponsorTime): Promise {\n if (this.ref.current?.state?.segment !== segment) {\n const newState = {\n segment,\n show: true\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nexport interface RectangleTooltipProps {\n text: string; \n link?: string;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n leftOffset?: string;\n timeout?: number;\n htmlId?: string;\n maxHeight?: string;\n maxWidth?: string;\n backgroundColor?: string;\n fontSize?: string;\n buttonFunction?: () => void;\n}\n\nexport class RectangleTooltip {\n text: string; \n container: HTMLDivElement;\n root: Root;\n timer: NodeJS.Timeout;\n \n constructor(props: RectangleTooltipProps) {\n props.bottomOffset ??= \"0px\";\n props.leftOffset ??= \"0px\";\n props.maxHeight ??= \"100px\";\n props.maxWidth ??= \"300px\";\n props.backgroundColor ??= \"rgba(28, 28, 28, 0.7)\";\n this.text = props.text;\n props.fontSize ??= \"10px\";\n\n this.container = document.createElement('div');\n props.htmlId ??= \"sponsorRectangleTooltip\" + props.text;\n this.container.id = props.htmlId;\n this.container.style.display = \"relative\";\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n \n \n \n {this.text + (props.link ? \". \" : \"\")}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null}\n \n
\n \n
\n )\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nimport { SponsorTime, ContentContainer, NoticeVisibilityMode } from \"../types\";\nimport Config from \"../config\";\nimport { SkipNoticeAction } from \"../utils/noticeUtils\";\n\nclass SkipNotice {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n skipNoticeRef: React.MutableRefObject;\n root: Root;\n\n constructor(segments: SponsorTime[], autoSkip = false, contentContainer: ContentContainer, componentDidMount: () => void, unskipTime: number = null, startReskip = false, upcomingNoticeShown: boolean, voteNotice = false) {\n this.skipNoticeRef = React.createRef();\n\n this.segments = segments;\n this.autoSkip = autoSkip;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n \n const amountOfPreviousNotices = document.getElementsByClassName(\"sponsorSkipNotice\").length;\n //this is the suffix added at the end of every id\n let idSuffix = \"\";\n for (const segment of this.segments) {\n idSuffix += segment.UUID;\n }\n idSuffix += amountOfPreviousNotices;\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={!voteNotice && (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAll \n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAutoSkip && autoSkip))}\n fadeIn={!upcomingNoticeShown && !voteNotice}\n unskipTime={unskipTime}\n componentDidMount={componentDidMount} />\n );\n }\n\n setShowKeybindHint(value: boolean): void {\n this.skipNoticeRef?.current?.setState({\n showKeybindHint: value\n });\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n\n const skipNotices = this.contentContainer().skipNotices;\n skipNotices.splice(skipNotices.indexOf(this), 1);\n }\n\n toggleSkip(): void {\n this.skipNoticeRef?.current?.prepAction(SkipNoticeAction.Unskip0);\n }\n\n unmutedListener(time: number): void {\n this.skipNoticeRef?.current?.unmutedListener(time);\n }\n\n async waitForSkipNoticeRef(): Promise {\n const waitForRef = () => new Promise((resolve) => {\n const observer = new MutationObserver(() => {\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n observer.observe(document.getElementsByClassName(\"sponsorSkipNoticeContainer\")[0], { childList: true, subtree: true});\n\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n return this.skipNoticeRef?.current || await waitForRef();\n }\n}\n\nexport default SkipNotice;","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SubmissionNoticeComponent from \"../components/SubmissionNoticeComponent\";\nimport { ContentContainer } from \"../types\";\n\nclass SubmissionNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: () => unknown;\n\n callback: () => Promise;\n\n noticeRef: React.MutableRefObject;\n\n noticeElement: HTMLDivElement;\n\n root: Root;\n\n constructor(contentContainer: ContentContainer, callback: () => Promise) {\n this.noticeRef = React.createRef();\n\n this.contentContainer = contentContainer;\n this.callback = callback;\n\n const referenceNode = utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.id = \"submissionNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close(false)} />\n );\n }\n\n update(): void {\n this.noticeRef.current.forceUpdate();\n }\n\n close(callRef = true): void {\n if (callRef) this.noticeRef.current.cancel();\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n\n submit(): void {\n this.noticeRef.current?.submit?.();\n }\n\n scrollToBottom(): void {\n this.noticeRef.current?.scrollToBottom?.();\n }\n}\n\nexport default SubmissionNotice;","import { GenericTooltip, TooltipProps } from \"../../maze-utils/src/components/Tooltip\";\n\nexport class Tooltip extends GenericTooltip {\n constructor(props: TooltipProps) {\n super(props, \"icons/IconSponsorBlocker256px.png\")\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ContentContainer, SponsorTime } from \"../types\";\n\nimport Utils from \"../utils\";\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nconst utils = new Utils();\n\nclass UpcomingNotice {\n segments: SponsorTime[];\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n upcomingNoticeRef: React.MutableRefObject;\n root: Root;\n\n closed = false;\n\n constructor(segments: SponsorTime[], contentContainer: ContentContainer, timeLeft: number, autoSkip: boolean) {\n this.upcomingNoticeRef = React.createRef();\n\n this.segments = segments;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={true}\n fadeIn={true}\n maxCountdownTime={timeLeft} />\n );\n }\n\n close(): void {\n this.root.unmount();\n this.noticeElement.remove();\n\n this.closed = true;\n }\n\n sameNotice(segments: SponsorTime[]): boolean {\n if (segments.length !== this.segments.length) return false;\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i].UUID !== this.segments[i].UUID) return false;\n }\n\n return true;\n }\n}\n\nexport default UpcomingNotice;","import * as React from \"react\";\n\nconst pencilSvg = ({\n fill = \"#ffffff\"\n }): JSX.Element => (\n \n \n \n );\n\nexport default pencilSvg;\n","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import * as React from \"react\";\n\nconst thumbsDownSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n \n
\n
\n \n );\n\nexport default thumbsDownSvg;\n","import * as React from \"react\";\n\nconst thumbsUpSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n
\n
\n \n );\n\nexport default thumbsUpSvg;\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","export function partition(array: T[], filter: (element: T) => boolean): [T[], T[]] {\n const pass = [], fail = [];\n array.forEach((element) => (filter(element) ? pass : fail).push(element));\n \n return [pass, fail];\n}","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function runCompatibilityChecks() {\n if (Config.config.showZoomToFillError2 && document.URL.includes(\"watch?v=\")) {\n setTimeout(() => {\n const zoomToFill = document.querySelector(\".zoomtofillBtn\");\n \n if (zoomToFill) {\n alert(chrome.i18n.getMessage(\"zoomToFillUnsupported\"));\n }\n\n Config.config.showZoomToFillError2 = false;\n }, 10000);\n }\n}\n\nexport function isVorapisInstalled() {\n return document.querySelector(`.v3`);\n}","import { TextBox } from \"../render/GenericNotice\";\nimport { Category } from \"../types\";\n\nexport function getGuidelineInfo(category: Category): TextBox[] {\n switch (category) {\n case \"sponsor\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"selfpromo\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"exclusive_access\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }];\n case \"interaction\":\n return [{\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"intro\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"outro\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"preview\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"hook\":\n return [{\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"filler\":\n return [{\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"music_offtopic\":\n return [{\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"poi_highlight\":\n return [{\n icon: \"icons/star.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n case \"chapter\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n default:\n return [{\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n }\n}\n\nexport const defaultPreviewTime = 2;","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","/* Gets percieved luminance of a color */\nfunction getLuminance(color: string): number {\n const {r, g, b} = hexToRgb(color);\n return Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\n}\n\n/* Converts hex color to rgb color */\nconst hexChars = \"0123456789abcdef\";\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n if (hex.length == 4)\n hex = \"#\" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\n return /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n ? {\n r: hexChars.indexOf(hex[1]) * 16 + hexChars.indexOf(hex[2]),\n g: hexChars.indexOf(hex[3]) * 16 + hexChars.indexOf(hex[4]),\n b: hexChars.indexOf(hex[5]) * 16 + hexChars.indexOf(hex[6]),\n }: null;\n}\n\n/**\n * List of all indexes that have the specified value\n * https://stackoverflow.com/a/54954694/1985387\n */\nfunction indexesOf(array: T[], value: T): number[] {\n return array.map((v, i) => v === value ? i : -1).filter(i => i !== -1);\n}\n\nexport const GenericUtils = {\n getLuminance,\n indexesOf\n}\n","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","export function isMobileControlsOpen(): boolean {\n const overlay = document.getElementById(\"player-control-overlay\");\n\n if (overlay) {\n return !!overlay?.classList?.contains(\"fadein\");\n }\n\n return false;\n}","import Config from \"../config\";\nimport { SponsorTime } from \"../types\";\n\nexport enum SkipNoticeAction {\n None,\n Upvote,\n Downvote,\n CategoryVote,\n CopyDownvote,\n Unskip0,\n Unskip1\n}\n\nexport function downvoteButtonColor(segments: SponsorTime[], actionState: SkipNoticeAction, downvoteType: SkipNoticeAction): string {\n // Also used for \"Copy and Downvote\"\n if (segments?.length > 1) {\n return (actionState === downvoteType) ? Config.config.colorPalette.red : Config.config.colorPalette.white;\n } else {\n // You dont have segment selectors so the lockbutton needs to be colored and cannot be selected.\n return Config.config.isVip && segments?.[0].locked === 1 ? Config.config.colorPalette.locked : Config.config.colorPalette.white;\n }\n}","export function cleanPage() {\n // For live-updates\n if (document.readyState === \"complete\") {\n for (const element of document.querySelectorAll(\"#categoryPillParent, .playerButton, .sponsorThumbnailLabel, #submissionNoticeContainer, .sponsorSkipNoticeContainer, #sponsorBlockPopupContainer, .skipButtonControlBarContainer, #previewbar, .sponsorBlockChapterBar\")) {\n element.remove();\n }\n }\n}","import { ActionType, Category, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { getSkipProfileBool } from \"./skipProfiles\";\n\nexport function getControls(): HTMLElement {\n const controlsSelectors = [\n // YouTube\n \".ytp-right-controls\",\n // Mobile YouTube\n \".player-controls-top\",\n // Invidious/videojs video element's controls element\n \".vjs-control-bar\",\n // Piped shaka player\n \".shaka-bottom-controls\",\n // Vorapis v3\n \".html5-player-chrome\",\n // tv.youtube.com\n \".ypcs-control-buttons-right\"\n ];\n\n for (const controlsSelector of controlsSelectors) {\n const controls = Array.from(document.querySelectorAll(controlsSelector)).filter(el => !isInPreviewPlayer(el));\n\n if (controls.length > 0) {\n return controls[controls.length - 1];\n }\n }\n\n return null;\n}\n\nexport function isInPreviewPlayer(element: Element): boolean {\n return !!element.closest(\"#inline-preview-player\");\n}\n\nexport function isVisible(element: HTMLElement): boolean {\n return element && element.offsetWidth > 0 && element.offsetHeight > 0;\n}\n\nexport function getHashParams(): Record {\n const windowHash = window.location.hash.slice(1);\n if (windowHash) {\n const params: Record = windowHash.split('&').reduce((acc, param) => {\n const [key, value] = param.split('=');\n const decoded = decodeURIComponent(value);\n try {\n acc[key] = decoded?.match(/{|\\[/) ? JSON.parse(decoded) : value;\n } catch (e) {\n console.error(`Failed to parse hash parameter ${key}: ${value}`);\n }\n\n return acc;\n }, {});\n\n return params;\n }\n\n return {};\n}\n\nexport function hasAutogeneratedChapters(): boolean {\n return !!document.querySelector(\"ytd-engagement-panel-section-list-renderer ytd-macro-markers-list-renderer #menu\");\n}\n\nexport function getExistingChapters(currentVideoID: VideoID, duration: number): SponsorTime[] {\n const chaptersBox = document.querySelector(\"ytd-macro-markers-list-renderer\");\n const title = chaptersBox?.closest(\"ytd-engagement-panel-section-list-renderer\")?.querySelector(\"#title-text.ytd-engagement-panel-title-header-renderer\");\n if (title?.textContent?.includes(\"Key moment\")) return [];\n\n const autogenerated = hasAutogeneratedChapters();\n if (!getSkipProfileBool(\"showAutogeneratedChapters\") && autogenerated) return [];\n\n const chapters: SponsorTime[] = [];\n // .ytp-timed-markers-container indicates that key-moments are present, which should not be divided\n if (chaptersBox) {\n let lastSegment: SponsorTime = null;\n const links = chaptersBox.querySelectorAll(\"ytd-macro-markers-list-item-renderer > a\");\n for (const link of links) {\n const timeElement = link.querySelector(\"#time\") as HTMLElement;\n const description = link.querySelector(\"#details h4\") as HTMLElement;\n if (timeElement && description?.innerText?.length > 0 && link.getAttribute(\"href\")?.includes(currentVideoID)) {\n const time = getFormattedTimeToSeconds(timeElement.innerText.replace(/\\./g, \":\"));\n if (time === null) return [];\n\n if (lastSegment) {\n lastSegment.segment[1] = time;\n chapters.push(lastSegment);\n }\n\n lastSegment = {\n segment: [time, null],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: description.innerText,\n source: autogenerated ? SponsorSourceType.Autogenerated : SponsorSourceType.YouTube,\n UUID: null\n };\n }\n }\n\n if (lastSegment) {\n lastSegment.segment[1] = duration;\n chapters.push(lastSegment);\n }\n }\n\n return chapters;\n}\n\nexport function isPlayingPlaylist() {\n return !!document.URL.includes(\"&list=\");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { DataCache } from \"../../maze-utils/src/cache\";\nimport { getHash, HashedValue } from \"../../maze-utils/src/hash\";\nimport Config, { } from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { ActionTypes, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getHashParams } from \"./pageUtils\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { extensionUserAgent } from \"../../maze-utils/src\";\nimport { logRequest, serializeOrStringify } from \"../../maze-utils/src/background-request-proxy\";\n\nconst segmentDataCache = new DataCache(() => {\n return {\n segments: null,\n status: 200\n };\n}, 5);\n\nconst pendingList: Record> = {};\n\nexport interface SegmentResponse {\n segments: SponsorTime[] | null;\n status: number | Error | string;\n}\n\nexport async function getSegmentsForVideo(videoID: VideoID, ignoreCache: boolean): Promise {\n if (!ignoreCache) {\n const cachedData = segmentDataCache.getFromCache(videoID);\n if (cachedData) {\n segmentDataCache.cacheUsed(videoID);\n return cachedData;\n }\n }\n\n if (pendingList[videoID]) {\n return await pendingList[videoID];\n }\n\n const pendingData = fetchSegmentsForVideo(videoID);\n pendingList[videoID] = pendingData;\n\n let result: Awaited;\n try {\n result = await pendingData;\n } catch (e) {\n console.error(\"[SB] Caught error while fetching segments\", e);\n return {\n segments: null,\n status: serializeOrStringify(e),\n }\n } finally {\n delete pendingList[videoID];\n }\n\n return result;\n}\n\nasync function fetchSegmentsForVideo(videoID: VideoID): Promise {\n const extraRequestData: Record = {};\n const hashParams = getHashParams();\n if (hashParams.requiredSegment) extraRequestData.requiredSegment = hashParams.requiredSegment;\n\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 5) as VideoID & HashedValue;\n const hasDownvotedSegments = !!Config.local.downvotedSegments[hashPrefix.slice(0, 4)];\n const response = await asyncRequestToServer('GET', \"/api/skipSegments/\" + hashPrefix, {\n categories: CompileConfig.categoryList,\n actionTypes: ActionTypes,\n trimUUIDs: hasDownvotedSegments ? null : 5,\n ...extraRequestData\n }, {\n \"X-CLIENT-NAME\": extensionUserAgent(),\n });\n\n if (response.ok) {\n const receivedSegments: SponsorTime[] = JSON.parse(response.responseText)\n ?.filter((video) => video.videoID === videoID)\n ?.map((video) => video.segments)?.[0]\n ?.map((segment) => ({\n ...segment,\n source: SponsorSourceType.Server\n }))\n ?.sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (receivedSegments && receivedSegments.length) {\n const result = {\n segments: receivedSegments,\n status: response.status\n };\n\n segmentDataCache.setupCache(videoID).segments = result.segments;\n return result;\n } else {\n // Setup with null data\n segmentDataCache.setupCache(videoID);\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"skip segments\");\n }\n\n return {\n segments: null,\n status: response.status\n };\n}","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","import { getCurrentPageTitle } from \"../../maze-utils/src/elements\";\nimport { getChannelIDInfo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { CategorySelection, CategorySkipOption, SponsorSourceType, SponsorTime } from \"../types\";\nimport { getSkipProfile, getSkipProfileBool } from \"./skipProfiles\";\nimport { VideoLabelsCacheData } from \"./videoLabels\";\n\nexport interface Permission {\n canSubmit: boolean;\n}\n\nexport enum SkipRuleAttribute {\n StartTime = \"time.start\",\n EndTime = \"time.end\",\n Duration = \"time.duration\",\n StartTimePercent = \"time.startPercent\",\n EndTimePercent = \"time.endPercent\",\n DurationPercent = \"time.durationPercent\",\n Category = \"category\",\n ActionType = \"actionType\",\n Description = \"chapter.name\",\n Source = \"chapter.source\",\n ChannelID = \"channel.id\",\n ChannelName = \"channel.name\",\n VideoDuration = \"video.duration\",\n Title = \"video.title\"\n}\n\nexport enum SkipRuleOperator {\n Less = \"<\",\n LessOrEqual = \"<=\",\n Greater = \">\",\n GreaterOrEqual = \">=\",\n Equal = \"==\",\n NotEqual = \"!=\",\n Contains = \"*=\",\n NotContains = \"!*=\",\n Regex = \"~=\",\n RegexIgnoreCase = \"~i=\",\n NotRegex = \"!~=\",\n NotRegexIgnoreCase = \"!~i=\"\n}\n\nexport interface AdvancedSkipRule {\n attribute: SkipRuleAttribute;\n operator: SkipRuleOperator;\n value: string | number;\n}\n\nexport interface AdvancedSkipRuleSet {\n rules: AdvancedSkipRule[];\n skipOption: CategorySkipOption;\n comment: string;\n}\n\nexport function getCategorySelection(segment: SponsorTime | VideoLabelsCacheData): CategorySelection {\n // First check skip rules\n for (const ruleSet of Config.local.skipRules) {\n if (ruleSet.rules.every((rule) => isSkipRulePassing(segment, rule))) {\n return { name: segment.category, option: ruleSet.skipOption } as CategorySelection;\n }\n }\n\n // Action type filters\n if (\"actionType\" in segment && (segment as SponsorTime).actionType === \"mute\" && !getSkipProfileBool(\"muteSegments\")) {\n return { name: segment.category, option: CategorySkipOption.Disabled } as CategorySelection;\n }\n\n // Then check skip profile\n const profile = getSkipProfile();\n if (profile) {\n const profileSelection = profile.categorySelections.find(selection => selection.name === segment.category);\n if (profileSelection) {\n return profileSelection;\n }\n }\n\n // Then fallback to default\n for (const selection of Config.config.categorySelections) {\n if (selection.name === segment.category) {\n return selection;\n }\n }\n return { name: segment.category, option: CategorySkipOption.Disabled} as CategorySelection;\n}\n\nfunction getSkipRuleValue(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): string | number | undefined {\n switch (rule.attribute) {\n case SkipRuleAttribute.StartTime:\n return (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.EndTime:\n return (segment as SponsorTime).segment?.[1];\n case SkipRuleAttribute.Duration:\n return (segment as SponsorTime).segment?.[1] - (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.StartTimePercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n if (startTime === undefined) return undefined;\n\n return startTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.EndTimePercent: {\n const endTime = (segment as SponsorTime).segment?.[1];\n if (endTime === undefined) return undefined;\n\n return endTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.DurationPercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n const endTime = (segment as SponsorTime).segment?.[1];\n if (startTime === undefined || endTime === undefined) return undefined;\n\n return (endTime - startTime) / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.Category:\n return segment.category;\n case SkipRuleAttribute.ActionType:\n return (segment as SponsorTime).actionType;\n case SkipRuleAttribute.Description:\n return (segment as SponsorTime).description || \"\";\n case SkipRuleAttribute.Source:\n switch ((segment as SponsorTime).source) {\n case SponsorSourceType.Local:\n return \"local\";\n case SponsorSourceType.YouTube:\n return \"youtube\";\n case SponsorSourceType.Autogenerated:\n return \"autogenerated\";\n case SponsorSourceType.Server:\n return \"server\";\n default:\n return undefined;\n }\n case SkipRuleAttribute.ChannelID:\n return getChannelIDInfo().id;\n case SkipRuleAttribute.ChannelName:\n return getChannelIDInfo().author;\n case SkipRuleAttribute.VideoDuration:\n return getVideoDuration();\n case SkipRuleAttribute.Title:\n return getCurrentPageTitle() || \"\";\n default:\n return undefined;\n }\n}\n\nfunction isSkipRulePassing(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): boolean {\n const value = getSkipRuleValue(segment, rule);\n \n switch (rule.operator) {\n case SkipRuleOperator.Less:\n return typeof value === \"number\" && value < (rule.value as number);\n case SkipRuleOperator.LessOrEqual:\n return typeof value === \"number\" && value <= (rule.value as number);\n case SkipRuleOperator.Greater:\n return typeof value === \"number\" && value > (rule.value as number);\n case SkipRuleOperator.GreaterOrEqual:\n return typeof value === \"number\" && value >= (rule.value as number);\n case SkipRuleOperator.Equal:\n return value === rule.value;\n case SkipRuleOperator.NotEqual:\n return value !== rule.value;\n case SkipRuleOperator.Contains:\n return String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.NotContains:\n return !String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.Regex:\n return new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.RegexIgnoreCase:\n return new RegExp(rule.value as string, \"i\").test(String(value));\n case SkipRuleOperator.NotRegex:\n return !new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.NotRegexIgnoreCase:\n return !new RegExp(rule.value as string, \"i\").test(String(value));\n default:\n return false;\n }\n}\n\nexport function getCategoryDefaultSelection(category: string): CategorySelection {\n for (const selection of Config.config.categorySelections) {\n if (selection.name === category) {\n return selection;\n }\n }\n return { name: category, option: CategorySkipOption.Disabled} as CategorySelection;\n}","import { extractVideoID, isOnInvidious } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { getHasStartSegment, getVideoLabel } from \"./videoLabels\";\nimport { getThumbnailSelector, setThumbnailListener } from \"../../maze-utils/src/thumbnailManagement\";\nimport { VideoID } from \"../types\";\nimport { getSegmentsForVideo } from \"./segmentData\";\nimport { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport async function handleThumbnails(thumbnails: HTMLImageElement[]): Promise {\n await Promise.all(thumbnails.map((t) => {\n labelThumbnail(t);\n setupThumbnailHover(t);\n }));\n}\n\nexport async function labelThumbnail(thumbnail: HTMLImageElement): Promise {\n if (!Config.config?.fullVideoSegments || !Config.config?.fullVideoLabelsOnThumbnails) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n \n const videoID = await extractVideoIDFromElement(thumbnail);\n if (!videoID) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const category = await getVideoLabel(videoID);\n if (!category) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const { overlay, text } = createOrGetThumbnail(thumbnail);\n\n overlay.style.setProperty('--category-color', `var(--sb-category-preview-${category}, var(--sb-category-${category}))`);\n overlay.style.setProperty('--category-text-color', `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`);\n text.innerText = chrome.i18n.getMessage(`category_${category}`);\n overlay.classList.add(\"sponsorThumbnailLabelVisible\");\n\n return overlay;\n}\n\nexport async function setupThumbnailHover(thumbnail: HTMLImageElement): Promise {\n // Cache would be reset every load due to no SPA\n if (isOnInvidious()) return;\n\n const mainElement = thumbnail.closest(\"#dismissible\") as HTMLElement;\n if (mainElement) {\n mainElement.removeEventListener(\"mouseenter\", thumbnailHoverListener);\n mainElement.addEventListener(\"mouseenter\", thumbnailHoverListener);\n }\n}\n\nfunction thumbnailHoverListener(e: MouseEvent) {\n if (!chrome.runtime?.id) return;\n\n const thumbnail = (e.target as HTMLElement).querySelector(getThumbnailSelector()) as HTMLImageElement;\n if (!thumbnail) return;\n\n // Pre-fetch data for this video\n let fetched = false;\n const preFetch = async () => {\n fetched = true;\n const videoID = await extractVideoIDFromElement(thumbnail);\n if (videoID && await getHasStartSegment(videoID)) {\n void getSegmentsForVideo(videoID, false);\n }\n };\n const timeout = setTimeout(preFetch, 100);\n const onMouseDown = () => {\n clearTimeout(timeout);\n if (!fetched) {\n preFetch();\n }\n };\n\n e.target.addEventListener(\"mousedown\", onMouseDown, { once: true });\n e.target.addEventListener(\"mouseleave\", () => {\n clearTimeout(timeout);\n e.target.removeEventListener(\"mousedown\", onMouseDown);\n }, { once: true });\n}\n\nfunction getLink(thumbnail: HTMLImageElement): HTMLAnchorElement | null {\n if (isOnInvidious()) {\n return thumbnail.parentElement as HTMLAnchorElement | null;\n } else if (!onMobile()) {\n const link = thumbnail.querySelector(\"a#thumbnail, a.reel-item-endpoint, a.yt-lockup-metadata-view-model__title, a.yt-lockup-metadata-view-model__title-link, a.yt-lockup-view-model__content-image, a.yt-lockup-metadata-view-model-wiz__title\") as HTMLAnchorElement;\n if (link) {\n return link;\n } else if (thumbnail.nodeName === \"YTD-HERO-PLAYLIST-THUMBNAIL-RENDERER\"\n || thumbnail.nodeName === \"YT-THUMBNAIL-VIEW-MODEL\"\n ) {\n return thumbnail.closest(\"a\") as HTMLAnchorElement;\n } else {\n return null;\n }\n } else {\n // Big thumbnails, compact thumbnails, shorts, channel feature, playlist header\n return thumbnail.querySelector(\"a.media-item-thumbnail-container, a.compact-media-item-image, a.reel-item-endpoint, :scope > a, .amsterdam-playlist-thumbnail-wrapper > a\") as HTMLAnchorElement;\n }\n}\n\nasync function extractVideoIDFromElement(thumbnail: HTMLImageElement): Promise {\n const link = getLink(thumbnail);\n if (!link || link.nodeName !== \"A\" || !link.href) return null; // no link found\n\n return await extractVideoID(link);\n}\n\nfunction getOldThumbnailLabel(thumbnail: HTMLImageElement): HTMLElement | null {\n return thumbnail.querySelector(\".sponsorThumbnailLabel\") as HTMLElement | null;\n} \n\nfunction hideThumbnailLabel(thumbnail: HTMLImageElement): void {\n const oldLabel = getOldThumbnailLabel(thumbnail);\n if (oldLabel) {\n oldLabel.classList.remove(\"sponsorThumbnailLabelVisible\");\n }\n}\n\nfunction createOrGetThumbnail(thumbnail: HTMLImageElement): { overlay: HTMLElement; text: HTMLElement } {\n const oldElement = getOldThumbnailLabel(thumbnail);\n if (oldElement) {\n return {\n overlay: oldElement as HTMLElement,\n text: oldElement.querySelector(\"span\") as HTMLElement\n };\n }\n\n const overlay = document.createElement(\"div\") as HTMLElement;\n overlay.classList.add(\"sponsorThumbnailLabel\");\n // Disable hover autoplay\n overlay.addEventListener(\"pointerenter\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerleave\", { bubbles: true }));\n });\n overlay.addEventListener(\"pointerleave\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerenter\", { bubbles: true }));\n });\n\n const icon = createSBIconElement();\n const text = document.createElement(\"span\");\n overlay.appendChild(icon);\n overlay.appendChild(text);\n thumbnail.appendChild(overlay);\n\n return {\n overlay,\n text\n };\n}\n\nfunction createSBIconElement(): SVGSVGElement {\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"viewBox\", \"0 0 565.15 568\");\n const use = document.createElementNS(\"http://www.w3.org/2000/svg\", \"use\");\n use.setAttribute(\"href\", \"#SponsorBlockIcon\");\n svg.appendChild(use);\n return svg;\n}\n\n\n// Inserts the icon svg definition, so it can be used elsewhere\nfunction insertSBIconDefinition() {\n const container = document.createElement(\"span\");\n\n // svg from /public/icons/PlayerStartIconSponsorBlocker.svg, with useless stuff removed\n container.innerHTML = `\n\n \n \n \n \n \n \n`;\n document.body.appendChild(container.children[0]);\n}\n\nexport function setupThumbnailListener(): void {\n setThumbnailListener(handleThumbnails, () => {\n insertSBIconDefinition();\n }, () => Config.isReady());\n}","\nexport function getStartTimeFromUrl(url: string): number {\n const urlParams = new URLSearchParams(url);\n const time = urlParams?.get('t') || urlParams?.get('time_continue');\n\n return urlTimeToSeconds(time);\n}\n\nexport function urlTimeToSeconds(time: string): number {\n if (!time) {\n return 0;\n }\n\n const re = /(?:(\\d{1,3})h)?(?:(\\d{1,2})m)?(\\d+)s?/;\n const match = re.exec(time);\n\n if (match) {\n const hours = parseInt(match[1] ?? '0', 10);\n const minutes = parseInt(match[2] ?? '0', 10);\n const seconds = parseInt(match[3] ?? '0', 10);\n\n return hours * 3600 + minutes * 60 + seconds;\n } else if (/\\d+/.test(time)) {\n return parseInt(time, 10);\n } else {\n return 0;\n }\n}","import { Category, CategorySkipOption, VideoID } from \"../types\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { logWarn } from \"./logger\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { getCategorySelection } from \"./skipRule\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface VideoLabelsCacheData {\n category: Category;\n hasStartSegment: boolean;\n}\n\nexport interface LabelCacheEntry {\n timestamp: number;\n videos: Record;\n}\n\nconst labelCache: Record = {};\nconst cacheLimit = 1000;\n\nasync function getLabelHashBlock(hashPrefix: string): Promise {\n // Check cache\n const cachedEntry = labelCache[hashPrefix];\n if (cachedEntry) {\n return cachedEntry;\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"GET\", `/api/videoLabels/${hashPrefix}?hasStartSegment=true`);\n } catch (e) {\n console.error(\"[SB] Caught error while fetching video labels\", e)\n return null;\n }\n if (response.status !== 200) {\n logRequest(response, \"SB\", \"video labels\");\n // No video labels or server down\n labelCache[hashPrefix] = {\n timestamp: Date.now(),\n videos: {},\n };\n return null;\n }\n\n try {\n const data = JSON.parse(response.responseText);\n\n const newEntry: LabelCacheEntry = {\n timestamp: Date.now(),\n videos: Object.fromEntries(data.map(video => [video.videoID, {\n category: video.segments[0]?.category,\n hasStartSegment: video.hasStartSegment\n }])),\n };\n labelCache[hashPrefix] = newEntry;\n\n if (Object.keys(labelCache).length > cacheLimit) {\n // Remove oldest entry\n const oldestEntry = Object.entries(labelCache).reduce((a, b) => a[1].timestamp < b[1].timestamp ? a : b);\n delete labelCache[oldestEntry[0]];\n }\n\n return newEntry;\n } catch (e) {\n logWarn(`Error parsing video labels: ${e}`);\n\n return null;\n }\n}\n\nexport async function getVideoLabel(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n const category = result.videos[videoID]?.category;\n if (category && getCategorySelection(result.videos[videoID]).option !== CategorySkipOption.Disabled) {\n return category;\n } else {\n return null;\n }\n }\n\n return null;\n}\n\nexport async function getHasStartSegment(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n return result?.videos[videoID]?.hasStartSegment ?? false;\n }\n\n return null;\n}\n","import { objectToURI } from \"../../maze-utils/src\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport Config from \"../config\";\nimport GenericNotice, { NoticeOptions } from \"../render/GenericNotice\";\nimport { ContentContainer } from \"../types\";\nimport { asyncRequestToServer } from \"./requests\";\n\nexport interface ChatConfig {\n displayName: string;\n composerInitialValue?: string;\n customDescription?: string;\n}\n\nexport async function openWarningDialog(contentContainer: ContentContainer): Promise {\n let userInfo: FetchResponse;\n try {\n userInfo = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config.userID),\n values: [\"warningReason\"]\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to fetch user's active warnings\", e)\n return;\n }\n\n if (userInfo.ok) {\n const warningReason = JSON.parse(userInfo.responseText)?.warningReason;\n let userName = \"\";\n try {\n const userNameData = await asyncRequestToServer(\"GET\", \"/api/getUsername?userID=\" + Config.config.userID);\n userName = userNameData.ok ? JSON.parse(userNameData.responseText).userName : \"\";\n } catch (e) {\n console.warn(\"[SB] Caught non-fatal error while trying to resolve user's username\", e);\n }\n const publicUserID = await getHash(Config.config.userID);\n\n let notice: GenericNotice = null;\n const options: NoticeOptions = {\n title: chrome.i18n.getMessage(\"deArrowMessageRecieved\"),\n textBoxes: [{\n text: chrome.i18n.getMessage(\"warningChatInfo\"),\n icon: null\n }, ...warningReason.split(\"\\n\").map((reason) => ({\n text: reason,\n icon: null\n }))],\n buttons: [{\n name: chrome.i18n.getMessage(\"questionButton\"),\n listener: () => openChat({\n displayName: `${userName ? userName : ``}${userName !== publicUserID ? ` | ${publicUserID}` : ``}`\n })\n },\n {\n name: chrome.i18n.getMessage(\"warningConfirmButton\"),\n listener: async () => {\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"POST\", \"/api/warnUser\", {\n userID: Config.config.userID,\n enabled: false\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to acknowledge user's active warning\", e);\n alert(formatJSErrorMessage(e));\n }\n\n if (result.ok) {\n notice?.close();\n } else {\n logRequest(result, \"SB\", \"warning acknowledgement\");\n alert(getLongErrorMessage(result.status, result.responseText));\n }\n }\n }],\n timed: false\n };\n\n notice = new GenericNotice(contentContainer, \"warningNotice\", options);\n } else {\n logRequest(userInfo, \"SB\", \"user's active warnings\");\n }\n}\n\nexport function openChat(config: ChatConfig): void {\n window.open(\"https://chat.sponsor.ajay.app/#\" + objectToURI(\"\", config, false));\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(6069);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","logoUrl","bottomOffset","topOffset","leftOffset","rightOffset","innerBottomMargin","displayTriangle","topTriangle","extraClass","showLogo","showGotIt","positionRealtive","containerAbsolute","center","elements","buttonsAtBottom","textBoxes","textBoxMaxHeight","position","prependElement","referenceNode","timeout","timer","close","backgroundColor","root","bottom","right","margin","undefined","className","marginBottom","maxHeight","overflowY","getURL","getTextElements","textDecoration","rel","i18n","getMessage","linkOnClick","marginLeft","cursor","onAuxClick","getButtons","float","secondButtonText","secondButtonOnClick","result","line","padding","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","fetchConfig","all","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","getYouTubeTitleNode","titleNode","formattedText","innerText","elem","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CategoryPillComponent","React","mainRef","segment","open","getColor","getTextColor","toggle","showTextByDefault","getTitleText","toggleOpen","onMouseEnter","openTooltip","onMouseLeave","closeTooltip","prideTheme","category","vote","fill","colorPalette","white","downvoteButtonColor","SkipNoticeAction","Downvote","showTooltipOnClick","stopAnimation","UUID","formatJSErrorMessage","logRequest","getLongErrorMessage","tooltip","tooltipMount","Tooltip","firstElementChild","shortDescription","ChapterVoteComponent","draggable","chapterNode","actionType","ActionType","Chapter","outerBounding","buttonBounding","CountdownMode","bounds","NoticeComponent","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","showInSecondSlot","startCountdown","noticeStyle","userSelect","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","limitWidth","hideLogo","logoFill","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","icon","textParts","textPart","SelectorComponent","getOptions","option","onChange","label","utils","SkipButtonState","SkipNoticeComponent","noticeRef","categoryOptionRef","segments","autoSkip","contentContainer","voteNotice","getVoteText","upcomingNotice","getUpcomingText","getSkippingText","previousSkipNotices","selectedColor","red","unselectedColor","lockedColor","locked","isMuteSegment","Mute","getFullDurationCountdown","defaultSkipButtonState","startReskip","Redo","Undo","skipButtonStates","Start","defaultSkipButtonCallback","reskip","unskip","skipButtonCallbacks","messages","messageOnClick","countdownText","showSkipButton","editing","choosingCategory","actionState","None","showKeybindHint","voted","copied","getUnskippedModeInfo","transform","getSkipButton","noticeVisibilityMode","NoticeVisibilityMode","FadedForAll","FadedForAutoSkip","barTypes","getMessageBoxes","getBottomRow","prepAction","Upvote","openEditingOptions","CopyDownvote","dontShowNoticeAgain","CategoryVote","resetStateToStart","getCategoryOptions","getSubmissionChooser","buttonIndex","Poi","unskipTime","forceSeek","Unskip0","Unskip1","minWidth","getSkipButtonText","Skip","keybindToString","skipKeybind","getSubmissionChooserOpacity","getSubmissionChooserColor","performAction","getFormattedTime","isUpvote","isDownvote","isCopyDownvote","isVip","noAction","upvote","downvote","categoryVote","copyDownvote","unskipAction","sponsorVideoID","sponsorTimesSubmitting","generateUserID","SponsorSourceType","Local","segmentTimes","unsubmittedSegments","updatePreviewBar","resetSponsorSubmissionNotice","updateEditButtonsOnPlayer","categories","CompileConfig","categoryList","cat","categorySupport","getCategoryNameClass","lockedCategories","unskipSponsorTime","unskippedMode","reskipSponsorTime","reskippedMode","newState","skipButtonState","sponsorTime","round","playbackRate","afterVote","getSponsorIndexFromUUID","wikiLinkText","wikiLinks","clearConfigListener","setNoticeInfoMessageWithOnClick","addVoteButtonInfo","setNoticeInfoMessage","resetVoteButtonInfo","configListener","unmutedListener","forceType","getUndoText","getRedoText","getStartText","categoryNamesGrams","SponsorTimeEditComponent","timesBeforeChanging","fullVideoWarningShown","categoryNameWarningShown","lastEditTime","editTimeTimeout","actionTypeOptionRef","descriptionOptionRef","previousSkipType","sponsorTimeEdits","selectedCategory","DEFAULT_CATEGORY","selectedActionType","description","suggestedNames","chapterNameSelectorOpen","chapterNameSelectorHovering","configUpdateListener","configUpdate","checkToShowFullVideoWarning","checkToShowChapterWarning","textAlign","marginTop","borderColor","timeDisplay","timeDisplayStyle","Full","setTimeTo","setTimeToNow","onKeyDown","onKeyUp","handleOnChange","onWheel","changeTimesWhenScrolling","setTimeToEnd","toggleEditTime","categorySelectionChange","actionTypeSelectionChange","getActionTypeOptions","hidden","SponsorHideType","Hidden","Visible","saveEditTimes","onBlur","onContextMenu","descriptionUpdate","onFocus","deleteTime","previewTime","inspectTime","targetValue","before","getFormattedTimeToSeconds","after","difference","abs","showScrollToEditToolTip","allowScrollingToEdit","step","timeAsNumber","scrollToEditTimeUpdate","showToolTip","buttonFunction","htmlId","RectangleTooltip","fontSize","getVideoDuration","defaultBlockCategories","permission","showCategoryWithoutPermission","permissions","getCategoryLockedClass","chosenCategory","categorySelections","confirm","hash","hookUpdate","handleReplacingLostTimes","categoryChangeListener","getNextActionType","getRealCurrentTime","addedTime","getFormattedSponsorTimesEdits","timeSinceLastEdit","endTime","addingTime","ctrlPressed","shiftPressed","skipToEndTime","sponsorTimes","seekTime","defaultPreviewTime","skipTime","removingIncomplete","submissionNotice","cancel","fetchingSuggestions","fetchSuggestions","asyncRequestToServer","names","parse","SubmissionNoticeComponent","lastSegmentCount","videoObserver","currentSegmentCount","scrollToBottom","scrollElement","scrollTo","scrollHeight","sortButton","sortSegments","exportButton","exportSegments","getSponsorTimeMessages","submissionCountSinceCategories","submit","timeEditRefs","timeRef","guidelinesReminder","isCurrentTimeWrong","videoInfo","microformat","playerMicroformatRenderer","success","clipboard","writeText","exportTimes","dialogWidth","showCategoryGuidelines","getGuidelineInfo","update","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","categoryPillUpdate","showChapterInfoMessage","darkMode","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","downvotedSegments","alreadyInstalled","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","cleanPage","wait","getElementsByTagName","fileref","addCSS","setCategoryColorCSSVariables","runCompatibilityChecks","skipBuffer","endTimeSkipBuffer","sponsorDataFound","existingChaptersImported","importingChaptersWaitingForFocus","importingChaptersWaiting","loopedChapter","skipNotices","activeSkipKeybindElement","shownSegmentFailedToFetchWarning","selectedSegment","previewedSegment","lastKnownVideoTime","videoTime","preciseTime","fromPause","approximateDelay","lastTimeFromWaitingEvent","lastNextChapterKeybind","currentSkipSchedule","currentSkipInterval","currentVirtualTimeInterval","currentUpcomingSchedule","sponsorSkipped","videoMuted","controlsWithEventListeners","setupVideoModule","previewBar","isOnMobileYouTube","handleMobileControlsMutations","controlsContainer","getControls","createPreviewBar","getVideoID","getChannelIDInfo","channelAuthor","sponsorsLookup","updateVisibilityOfPlayerControlsButton","updateSponsorTimesSubmitting","tryShowingDeArrowPromotion","logWarn","checkPreviewbarState","getIsInline","videoOnReadyListener","durationChangeListener","setupVideoListenersFirstTime","switchingVideos","startedWaiting","lastPausedAtZero","lastVideoDataChange","rateChangeListener","updateVirtualTime","clearWaitingTime","startSponsorSchedule","playListener","firstPlay","miniPlayerUI","onVideoPage","getLastNonInlineVideoID","triggerVideoIDChange","triggerVideoElementChange","checkForMiniplayerPlaying","logDebug","startSkipScheduleCheckingForStartSponsors","updateAdFlag","lastCheckVideoTime","lastCheckTime","playingListener","playbackRateCheckInterval","lastPlaybackSpeed","seekingListener","updateActiveSegment","loop","stoppedPlayback","updateWaitingTime","cancelSponsorSchedule","pauseListener","waitingListener","emptyListener","metadataLoadedListener","setupVideoListeners","skipButtonControlBar","SkipButtonControlBar","skip","skipToTime","skippingSegments","openNotice","forceAutoSkip","selectSegment","isOnYTTV","attachToPage","categoryPill","CategoryPill","voteAsync","lastResponseStatus","disable","setVisibility","hideDeArrowPromotion","manifest_version","setupThumbnailListener","controls","playerButtons","hotkeyListener","hotkeyPropagationListener","loadedPreloadedSegment","popupInitialised","skipNoticeContentContainer","sponsorSubmissionNotice","manualSkipPercentCount","contentConfigUpdateListener","updateAll","contentLocalConfigUpdateListener","updateMobileControls","isMobileControlsOpen","isConnected","getPreviewBarAttachElement","progressElementOptions","isVisibleCheck","allElements","chapterVote","ChapterVote","importExistingChapters","includeIntersectingSegments","includeNonIntersectingSegments","getIsAdPlaying","checkIfNewVideoID","getVirtualTime","skipInfo","autoSkipSorter","skipOption","getCategorySelection","shouldAutoSkip","includedTimes","submittedArray","scheduledTimes","sponsorStartTimes","getStartTimes","sponsorStartTimesAfterCurrentTime","minSponsorTimeIndexes","GenericUtils","indexesOf","minSponsorTimeIndex","extraIndexes","endTimeIndex","getLatestEndTimeIndex","unsubmittedArray","unsubmittedSponsorStartTimes","unsubmittedSponsorStartTimesAfterCurrentTime","minUnsubmittedSponsorTimeIndex","previewEndTimeIndex","array","endIndex","getNextSkipIndex","currentSkip","scheduledTime","timeUntilSponsor","inMuteSegment","muted","incorrectVideoCheck","shouldSkip","skippingFunction","forceVideoTime","forcedSkipTime","forcedIncludeIntersectingSegments","forcedIncludeNonIntersectingSegments","extra","extraSkip","delayTime","forceStartIntervalTime","once","startIntervalTime","startVideoTime","startWaitingForReportedTimeToChange","reportedVideoTimeAtStart","intervalDuration","offsetDelayTime","maxPopupTime","timeUntilPopup","popupTime","createUpcomingNotice","virtualTime","includeOverlap","checkFunction","currentVideoID","recordedVideoID","isLoopedChapter","checkVideoIDChange","sendResponse","startOrEndTimingNewSegment","creatingSegment","isSegmentCreationInProgress","Disabled","currentTabSkipProfileID","getSkipProfileIDForTab","updating","closeInfoMenu","isYTTV","openSubmissionMenu","hasVideo","getSponsorTimeFromUUID","addHiddenSegment","isEnabled","every","importedSegments","importTimes","addedSegments","hasChaptersPermission","getCategoryDefaultSelection","KeyboardEvent","setCurrentTabSkipProfile","configID","rawCount","lastTime","lastPerformanceTime","frameTime","keepOldSubmissions","segmentData","getSegmentsForVideo","receivedSegments","oldSegments","otherSegment","other","hashPrefix","downvotedData","hashedUUID","segmentDownvoteData","uuid","hideTooShortSegments","waitForVideo","notifyPopupOfSegments","categoriesResponse","lockInfo","lockedCategoriesLookup","waitCondition","getExistingChapters","hasFocus","chapters","getSkipProfileBool","hasAutogeneratedChapters","startingSegmentTime","getStartTimeFromUrl","poiSegments","hashParams","getHashParams","requiredSegment","previewBarSegments","unsubmitted","showLarger","skippedDuration","durationID","paddingLeft","durationAfterSkips","showTimeWithoutSkips","getTimestampsDuration","updateCategoryPill","fullVideoSegment","setSegment","Autogenerated","checkingPreviewbarAgain","hideHiddenSponsors","latestEndTimeIndex","currentSegment","latestEndTime","minimum","shouldIncludeTime","possibleTimes","unpause","setCurrentTime","play","sendTelemetryAndCount","secondsSkipped","fullSkip","extension","inIncognitoContext","counted","isSubmittingSegment","isPlayingPlaylist","beep","Audio","volume","oldMetadata","mediaSession","setShowKeybindHint","toggleSkip","createSkipNotice","enable","skipNotice","upcomingNoticeShown","closed","newSkipNotice","timeLeft","sameNotice","skippedTime","createButton","baseID","imageName","isDraggable","existingElement","newButton","newButtonImage","prepend","setupListener","canSkipNonMusic","isOnYouTubeMusic","confirmMessage","getSegmentsMessage","clearSponsorTimes","info","popup","frame","borderRadius","stylusStyle","enhancerStyle","enhancerStyleVariables","enhancerCss","enhancerVariablesCss","elemHasChild","parentNodeOptions","hasChildCheck","openInfoMenu","createButtons","buttonsEnabled","submitButtonVisible","deleteButtonVisible","startSegment","cancelSegment","getIsLivePremiere","verifyCurrentTime","roundedTime","Number","EPSILON","existingSegment","getIncompleteSegment","existingTime","getFromConfig","segmentTime","pushed","checkForPreloadedSegment","openWarningDialog","sponsorIndex","Server","factor","Downvoted","notices","getElementsByClassName","closeAllSkipNotices","callRef","sendSubmitMessage","confirmShort","videoDuration","extensionUserAgent","newSegments","receivedNewSegments","sponsorTimesMessage","timeMessage","updateChapterText","handleKeybindVote","lastSkipNotice","skipNoticeRef","lastSegment","waitForSkipNoticeRef","isContentEditable","skipKey","skipToHighlightKey","closeSkipNoticeKey","startSponsorKey","submitKey","previewKey","openSubmissionMenuKey","nextChapterKey","previousChapterKey","upvoteKey","downvoteKey","unfilteredChapterGroups","nextChapter","previousChapter","wasAdPlaying","setIsAdPlaying","styleContainer","isVorapisInstalled","luminance","getLuminance","TOOLTIP_VISIBLE_CLASS","updateExistingChapters","lastSmallestSegment","hasYouTubeChapters","existingChapters","lastChapterUpdate","updatePageElements","createChapterMutationObservers","setupHoverText","categoryTooltip","chapterTooltip","categoryScrubTooltip","chapterScrubTooltip","tooltipTextWrapper","defaultTooltipSelector","originalTooltip","findNonEmptyElement","categoryTooltipContainer","titleTooltip","scrubTooltipTextWrapper","seekBar","mouseOnSeekBar","noYoutubeChapters","timeInSeconds","decimalToTime","normalSegments","chapterSegments","partition","mainSegment","getSmallestSegment","secondarySegment","hasAYouTubeChapterRemoved","setTooltipTitle","normalizeChapterName","shortCategoryName","getComputedStyle","getPropertyValue","customChaptersBar","originalChapterBar","YouTube","chapter","segmentDuration","duplicate","ariaDuration","progressBar","allProgressBars","newChapterBar","chapterChevron","getChapterChevron","chapterMargin","originalChapterBarBlocks","sortedSegments","bar","createBar","createChaptersBar","barSegment","fullCategoryName","timeToPercentage","timeToRightPercentage","chapterFilter","childElementCount","remakingBar","lastRenderedSegments","createChapterRenderGroups","filteredSegments","groups","chapterGroups","chapterGroupFilter","originalDuration","createFromScratch","cloneNode","originalSections","originalSection","newSection","firstTimeSetupChapterSection","setupChapterSection","updateChapterAllMutation","latestChapter","latestValidChapter","chaptersToAddBack","invalidChapter","priorityActionType","getActionTypePrioritized","lastChapterChecked","nextSegment","nextTime","intervalToDecimal","actionTypes","section","addMargin","sizePercent","intervalToPercentage","hoveredSection","attributeObserver","currentElement","updateChapterMutation","attributeFilter","childListObserver","firstUpdate","sections","sectionWidthDecimal","sectionWidthDecimalNoMargin","customChangedElement","fullSectionWidth","changedElement","changedData","findLeftAndScale","calculatedLeft","scale","transformScale","backgroundSize","backgroundPosition","currentWidth","lastWidth","leftPosition","scalePosition","scaleWidth","lastScalePosition","checkElement","currentSectionWidthNoMargin","getPartialChapterSectionStyle","currentSectionWidth","checkLeft","transformMatch","endPosition","submittingSegments","chaptersContainer","getChaptersContainer","activeSegments","setActiveSegments","chosenSegment","chapterButton","getChapterButton","chapterTitle","chapterVoteContainer","getContainer","oldVoteContainers","oldVoteContainer","titlePrefixDot","dest","sbChapterContainer","sbChapterTitleContent","timeToDecimal","decimalTimeConverter","decimal","isTime","totalPixels","pixelOffset","lastCheckedChapter","chapterElement","widthPixels","marginPixels","latestWidth","latestChapterDuration","percentageInCurrentChapter","sizeOfCurrentChapter","getMinimumSize","proposedIndex","startSearchIndex","direction","currentSegmentLength","seg","segmentLength","minSize","swipeStart","skipIcon","textContainer","stopTimer","startTimer","handleTouchStart","handleTouchMove","handleTouchEnd","mountingContainer","getMountingContainer","chapterText","hideButton","showButton","refreshText","getTitle","disableText","getChapterPrefix","distanceMoved","updateLeftStyle","mutationObserver","attachToPageInternal","isOnDescriptionOnRightLayout","change","removedNodes","lastState","watchDiv","unsavedState","findReferenceNode","noticeElement","maxWidth","MiniForAll","MiniForAutoSkip","waitForRef","GenericTooltip","upcomingNoticeRef","xmlns","viewBox","points","ActionTypes","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","endOverlaps","other1","other2","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","segmentUUID","segmentIDData","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","pass","fail","categoryName","messageId","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","inTest","chapterNames","exportTime","removeIf","matchers","matcher","lines","timeRegex","anyLineHasTime","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","hashparamSegments","hexChars","hex","sqrt","toISOString","overlay","downvoteType","isInPreviewPlayer","controlsSelectors","controlsSelector","windowHash","decoded","decodeURIComponent","chaptersBox","autogenerated","links","timeElement","address","testingServerAddress","sendRequestToCustomServer","segmentDataCache","pendingList","pendingData","extraRequestData","hasDownvotedSegments","trimUUIDs","fetchSegmentsForVideo","currentTabSkipProfile","getSkipProfileIDForTime","getSkipProfileIDForVideo","getSkipProfileIDForChannel","getSkipProfileID","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","MinimumDuration","SkipRuleAttribute","SkipRuleOperator","isSkipRulePassing","rule","attribute","StartTime","EndTime","Duration","StartTimePercent","EndTimePercent","DurationPercent","Category","Description","Source","ChannelID","ChannelName","VideoDuration","Title","getCurrentPageTitle","getSkipRuleValue","operator","Less","LessOrEqual","Greater","GreaterOrEqual","Equal","NotEqual","Contains","toLocaleLowerCase","NotContains","Regex","RegExp","RegexIgnoreCase","NotRegex","NotRegexIgnoreCase","ruleSet","rules","profileSelection","handleThumbnails","labelThumbnail","setupThumbnailHover","hideThumbnailLabel","extractVideoIDFromElement","getVideoLabel","oldElement","getOldThumbnailLabel","PointerEvent","svg","use","createSBIconElement","createOrGetThumbnail","mainElement","thumbnailHoverListener","fetched","preFetch","getHasStartSegment","getLink","extractVideoID","oldLabel","setThumbnailListener","insertSBIconDefinition","urlTimeToSeconds","urlParams","URLSearchParams","labelCache","getLabelHashBlock","cachedEntry","timestamp","videos","newEntry","fromEntries","hasStartSegment","oldestEntry","openChat","userInfo","publicUserID","warningReason","userName","userNameData","reason","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/firefox/6.0.3/help.js.map b/firefox/6.0.3/help.js.map new file mode 100644 index 00000000..ca9403e3 --- /dev/null +++ b/firefox/6.0.3/help.js.map @@ -0,0 +1 @@ +{"version":3,"file":"help.js","mappings":"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","sources":["webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./src/config.ts","webpack:///./src/help.ts","webpack:///./src/types.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import { localizeHtmlPage } from \"../maze-utils/src/setup\";\nimport Config from \"./config\";\nimport { showDonationLink } from \"./utils/configUtils\";\n\nimport { waitFor } from \"../maze-utils/src\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\n\nif (document.readyState === \"complete\") {\n init();\n} else {\n document.addEventListener(\"DOMContentLoaded\", init);\n}\n\n// DeArrow promotion\nwaitFor(() => Config.isReady()).then(() => {\n if (Config.config.showNewFeaturePopups && Config.config.showUpsells) {\n isDeArrowInstalled().then((installed) => {\n if (!installed) {\n const deArrowPromotion = document.getElementById(\"dearrow-link\");\n deArrowPromotion.classList.remove(\"hidden\");\n\n deArrowPromotion.addEventListener(\"click\", () => Config.config.showDeArrowPromotion = false);\n\n const text = deArrowPromotion.querySelector(\"#dearrow-link-text\");\n text.textContent = `${chrome.i18n.getMessage(\"DeArrowPromotionMessage2\").split(\"?\")[0]}? ${chrome.i18n.getMessage(\"DeArrowPromotionMessage3\")}`;\n\n const closeButton = deArrowPromotion.querySelector(\".close-button\");\n closeButton.addEventListener(\"click\", (e) => {\n e.preventDefault();\n\n deArrowPromotion.classList.add(\"hidden\");\n Config.config.showDeArrowPromotion = false;\n Config.config.showDeArrowInSettings = false;\n });\n }\n });\n }\n});\n\nasync function init() {\n localizeHtmlPage();\n\n await waitFor(() => Config.config !== null);\n\n if (!Config.config.darkMode) {\n document.documentElement.setAttribute(\"data-theme\", \"light\");\n }\n\n if (!showDonationLink()) {\n document.getElementById(\"donate-component\").style.display = \"none\";\n }\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(3105);\n"],"names":["isSafari","navigator","vendor","formatKey","key","length","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","then","result","sync","configProxy","chrome","storage","onChanged","addListener","changes","areaName","newValue","callback","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","value","Date","now","add","delayUpdate","items","clear","map","v","reduce","acc","k","setTimeout","get","data","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","error","runtime","lastError","alert","i18n","getMessage","fetchConfig","Promise","all","resolve","undefined","window","location","href","includes","isFirefoxOrSafari","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","condition","timeout","check","predicate","reject","interval","intervalCheck","clearInterval","toString","Error","stack","setInterval","url","includeQuestionMark","counter","seperator","JSON","stringify","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","id","getManifest","version","getLocalizedMessage","text","valNewH","replace","match","v1","charset","cryptoFuncs","crypto","getRandomValues","values","Uint32Array","i","Math","floor","random","localizedTitle","document","title","body","querySelector","localizedMessage","innerHTML","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","supportInvidious","serverAddress","CompileConfig","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","prideTheme","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","name","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","navigationApiAvailable","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","filter","s","channelID","keys","some","push","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","init","localizeHtmlPage","waitFor","documentElement","setAttribute","getElementById","style","display","readyState","addEventListener","isDeArrowInstalled","installed","deArrowPromotion","classList","textContent","split","e","preventDefault","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","count","sendMessage","message","response","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/firefox/6.0.3/options.js.LICENSE.txt b/firefox/6.0.3/options.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/firefox/6.0.3/options.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/firefox/6.0.3/options.js.map b/firefox/6.0.3/options.js.map new file mode 100644 index 00000000..9b985b31 --- /dev/null +++ b/firefox/6.0.3/options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"options.js","mappings":"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","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/options/AdvancedSkipOptionsComponent.tsx","webpack:///./src/components/options/CategoryChooserComponent.tsx","webpack:///./src/components/options/CategorySkipOptionsComponent.tsx","webpack:///./src/components/options/KeybindComponent.tsx","webpack:///./src/components/options/KeybindDialogComponent.tsx","webpack:///./src/components/options/NumberInputOptionComponent.tsx","webpack:///./src/components/options/SelectOptionComponent.tsx","webpack:///./src/components/options/ToggleOptionComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListItem.tsx","webpack:///./src/components/options/UnsubmittedVideosComponent.tsx","webpack:///./src/config.ts","webpack:///./src/options.ts","webpack:///./src/render/AdvancedSkipOptions.tsx","webpack:///./src/render/CategoryChooser.tsx","webpack:///./src/render/UnsubmittedVideos.tsx","webpack:///./src/svg-icons/resetIcon.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport * as CompileConfig from \"../../../config.json\";\n\nimport Config from \"../../config\";\nimport { AdvancedSkipRuleSet, SkipRuleAttribute, SkipRuleOperator } from \"../../utils/skipRule\";\nimport { ActionType, ActionTypes, CategorySkipOption } from \"../../types\";\n\nlet configSaveTimeout: NodeJS.Timeout | null = null;\n\nexport function AdvancedSkipOptionsComponent() {\n const [optionsOpen, setOptionsOpen] = React.useState(false);\n const [config, setConfig] = React.useState(configToText(Config.local.skipRules));\n const [configValid, setConfigValid] = React.useState(true);\n\n return (\n
\n
{\n setOptionsOpen(!optionsOpen);\n }}>\n {chrome.i18n.getMessage(\"openAdvancedSkipOptions\")}\n
\n\n {\n optionsOpen &&\n
\n
\n \n {chrome.i18n.getMessage(\"advancedSkipSettingsHelp\")}\n \n\n \n {\" - \"}\n {chrome.i18n.getMessage(\"advancedSkipNotSaved\")}\n \n
\n\n \n\n \n \n
\n )\n}\n","import * as React from \"react\";\nimport { VideoID } from \"../types\";\nimport Config from \"../config\";\nimport { Message, MessageResponse } from \"../messageTypes\";\nimport { LoadingStatus } from \"./PopupComponent\";\n\ninterface SegmentSubmissionComponentProps {\n videoID: VideoID;\n status: LoadingStatus;\n\n sendMessage: (request: Message) => Promise;\n}\n\nexport const SegmentSubmissionComponent = (props: SegmentSubmissionComponentProps) => {\n const segments = Config.local.unsubmittedSegments[props.videoID];\n\n const [showSubmitButton, setShowSubmitButton] = React.useState(segments && segments.length > 0);\n const [showStartSegment, setShowStartSegment] = React.useState(!segments || segments[segments.length - 1].segment.length === 2);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"recordTimesDescription\")}\n

\n \n {chrome.i18n.getMessage(\"popupHint\")}\n \n
\n \n \n
\n \n {chrome.i18n.getMessage(\"submissionEditHint\")}\n \n
\n );\n};","import * as React from \"react\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { formatJSErrorMessage, getShortErrorMessage } from \"../../maze-utils/src/formating\";\nimport Config from \"../config\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport PencilIcon from \"../svg-icons/pencilIcon\";\nimport ClipboardIcon from \"../svg-icons/clipboardIcon\";\nimport CheckIcon from \"../svg-icons/checkIcon\";\nimport { showDonationLink } from \"../utils/configUtils\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport const YourWorkComponent = () => {\n const [isSettingUsername, setIsSettingUsername] = React.useState(false);\n const [username, setUsername] = React.useState(\"\");\n const [newUsername, setNewUsername] = React.useState(\"\");\n const [usernameSubmissionStatus, setUsernameSubmissionStatus] = React.useState(\"\");\n const [submissionCount, setSubmissionCount] = React.useState(\"\");\n const [viewCount, setViewCount] = React.useState(0);\n const [minutesSaved, setMinutesSaved] = React.useState(0);\n const [showDonateMessage, setShowDonateMessage] = React.useState(false);\n\n React.useEffect(() => {\n (async () => {\n const values = [\"userName\", \"viewCount\", \"minutesSaved\", \"vip\", \"permissions\", \"segmentCount\"];\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config!.userID!),\n values\n });\n } catch (e) {\n console.error(\"[SB] Caught error while fetching user info\", e);\n return\n }\n\n if (result.ok) {\n const userInfo = JSON.parse(result.responseText);\n setUsername(userInfo.userName);\n setSubmissionCount(Math.max(Config.config.sponsorTimesContributed ?? 0, userInfo.segmentCount).toLocaleString());\n setViewCount(userInfo.viewCount);\n setMinutesSaved(userInfo.minutesSaved);\n\n if (username === \"sponege\") {\n Config.config.prideTheme = true;\n }\n\n Config.config!.isVip = userInfo.vip;\n Config.config!.permissions = userInfo.permissions;\n\n setShowDonateMessage(Config.config.showDonationLink && Config.config.donateClicked <= 0 && Config.config.showPopupDonationCount < 5\n && viewCount < 50000 && !Config.config.isVip && Config.config.skipCount > 10 && showDonationLink());\n } else {\n logRequest(result, \"SB\", \"user info\");\n }\n })();\n }, []);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"yourWork\")}\n

\n
\n {/* Username */}\n
\n

\n {chrome.i18n.getMessage(\"Username\")}:\n {/* loading/errors */}\n \n {usernameSubmissionStatus}\n \n

\n
\n

{username}

\n \n \n
\n
\n {\n setNewUsername(e.target.value);\n }}/>\n \n
\n
\n \n
\n\n \n\n {showDonateMessage && {\n setShowDonateMessage(false);\n Config.config.showPopupDonationCount = 100;\n }} />}\n\n
\n );\n};\n\nfunction SubmissionCounts(props: { isSettingUsername: boolean; submissionCount: string }): JSX.Element {\n return <>\n
\n

\n {chrome.i18n.getMessage(\"Submissions\")}:\n

\n

{props.submissionCount}

\n
\n \n}\n\nfunction TimeSavedMessage({ viewCount, minutesSaved }: { viewCount: number; minutesSaved: number }): JSX.Element {\n return (\n <>\n {\n viewCount > 0 &&\n

\n {chrome.i18n.getMessage(\"savedPeopleFrom\")}\n \n {viewCount.toLocaleString()}{\" \"}\n \n {viewCount !== 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}\n
\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(minutesSaved)}{\" \"}\n {minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {chrome.i18n.getMessage(\"youHaveSavedTimeEnd\")}{\" \"}\n {\" )\"}\n \n

\n }\n

\n {chrome.i18n.getMessage(\"youHaveSkipped\")}\n \n {Config.config.skipCount}{\" \"}\n \n {Config.config.skipCount > 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}{\" \"}\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(Config.config.minutesSaved)}{\" \"}\n {Config.config.minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {\")\"}\n \n

\n \n );\n}\n\nfunction DonateMessage(props: { onClose: () => void }): JSX.Element {\n return (\n \n );\n}\n\n/**\n * Converts time in minutes to 2d 5h 25.1\n * If less than 1 hour, just returns minutes\n *\n * @param {float} minutes\n * @returns {string}\n */\nfunction getFormattedHours(minutes) {\n minutes = Math.round(minutes * 10) / 10;\n const years = Math.floor(minutes / 525600); // Assumes 365.0 days in a year\n const days = Math.floor(minutes / 1440) % 365;\n const hours = Math.floor(minutes / 60) % 24;\n return (years > 0 ? years + chrome.i18n.getMessage(\"yearAbbreviation\") + \" \" : \"\") + (days > 0 ? days + chrome.i18n.getMessage(\"dayAbbreviation\") + \" \" : \"\") + (hours > 0 ? hours + chrome.i18n.getMessage(\"hourAbbreviation\") + \" \" : \"\") + (minutes % 60).toFixed(1);\n}\n","import * as React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { PopupComponent } from \"./PopupComponent\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport Config from \"../config\";\n\n\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n await waitFor(() => Config.isReady());\n\n const root = createRoot(document.body);\n root.render();\n})","import { Message, MessageResponse } from \"../messageTypes\";\n\nexport function copyToClipboardPopup(text: string, sendMessage: (request: Message) => Promise): void {\n if (window === window.top) {\n window.navigator.clipboard.writeText(text);\n } else {\n sendMessage({\n message: \"copyToClipboard\",\n text\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\n\nexport interface CheckIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst CheckIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: CheckIconProps): JSX.Element => (\n \n \n \n);\n\nexport default CheckIcon;","import * as React from \"react\";\n\nexport interface ClipboardIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ClipboardIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: ClipboardIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ClipboardIcon;","import * as React from \"react\";\n\nexport interface PencilIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst PencilIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: PencilIconProps): JSX.Element => (\n \n \n \n);\n\nexport default PencilIcon;","import * as React from \"react\";\n\nexport interface AddIconProps {\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ResetIcon = ({\n className = \"\",\n style = {},\n onClick\n}: AddIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ResetIcon;","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4901);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","timeout","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","innerText","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CountdownMode","bounds","NoticeComponent","React","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","right","bottom","showInSecondSlot","startCountdown","noticeStyle","userSelect","className","extraClass","onMouseEnter","onMouseLeave","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","prideTheme","limitWidth","hideLogo","getURL","fill","logoFill","float","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","close","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","cursor","textDecoration","icon","getTextElements","textParts","textPart","rel","SelectOptionComponent","label","htmlFor","onChange","option","showResetButton","onReset","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","CompileConfig","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","downvotedSegments","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","LoadingStatus","loadRetryCount","loadSegments","updating","segmentsLoaded","setStatus","NoVideo","SegmentsFound","JSError","NoSegmentsFound","ConnectionError","StillLoading","setVideoID","Video","setCurrentTime","setChanelIDInfo","channelAuthor","setCurrentTabSkipProfile","currentTabSkipProfileID","setSegments","sponsorTimes","segment","SponsorSourceType","Server","actionType","ActionType","Full","setLoopedChapter","loopedChapter","active","currentWindow","setupComPort","port","connect","onDisconnect","msg","SkipProfileButton","menuOpen","setMenuOpen","channelSkipProfileSet","getSkipProfileIDForChannel","skipProfileSet","getSkipProfileID","role","tabIndex","setShowForceChannelCheckWarning","viewBox","SkipProfileMenu","open","PopupComponent","Loading","extensionEnabled","setExtensionEnabled","showForceChannelCheckWarning","showNoticeButton","setShowNoticeButton","segments","forwardClickEvents","getVideoStatusText","stopAnimation","SegmentListComponent","SegmentSubmissionComponent","YourWorkComponent","logs","copyToClipboardPopup","generateDebugDetails","origin","endsWith","skipProfileOptions","getSkipProfileIDForTime","getSkipProfileIDForTab","getSkipProfileIDForVideo","configID","setConfigID","selectedSkipProfileAction","setSelectedSkipProfileAction","allSkipProfiles","setAllSkipProfiles","getChannelIDInfo","isOnYTTV","position","hash","updateSkipProfileSetting","SkipProfileRadioButtons","setSelected","updateConfig","alreadySelected","highlighted","overridden","SkipOptionActionComponent","getVideoID","SegmentListTab","isSegment","Chapter","isChapter","SegmentListItem","tabFilter","voteMessage","setVoteMessage","hidden","setHidden","SponsorHideType","Visible","isLooped","setIsLooped","UUID","extraInfo","Downvoted","MinimumDuration","Hidden","onDoubleClick","skipSegment","selectSegment","backgroundColor","category","description","shortCategoryName","margin","getFormattedTime","Poi","vote","segmentIDData","asyncRequestToServer","logRequest","loopChapter","Skip","Mute","newState","innerChapters","InnerChapterList","chapters","chapter","messageDuration","formatJSErrorMessage","getShortErrorMessage","ImportSegments","importMenuVisible","setImportMenuVisible","textArea","exportTimes","referenceNode","minWidth","rows","setTab","setIsVip","hasSegments","hasChapters","setTabBasedOnConfig","preferChapters","Chapters","segmentsWithNesting","chapterStack","seg","lastChapter","showSubmitButton","setShowSubmitButton","showStartSegment","setShowStartSegment","textAlign","SubmissionCounts","isSettingUsername","submissionCount","TimeSavedMessage","viewCount","toLocaleString","getFormattedHours","DonateMessage","alignItems","justifyContent","paddingLeft","onClose","round","years","days","setIsSettingUsername","username","setUsername","newUsername","setNewUsername","usernameSubmissionStatus","setUsernameSubmissionStatus","setSubmissionCount","setViewCount","setMinutesSaved","showDonateMessage","setShowDonateMessage","publicUserID","userInfo","userName","segmentCount","vip","clipboard","writeText","placeholder","utils","contentContainer","noticeRef","findReferenceNode","noticeElement","prepend","root","update","textBoxes","maxHeight","getMessageBoxes","getButtons","xmlns","points","ActionTypes","backgroundScriptContainer","wait","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","enable","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","other","endOverlaps","other1","other2","getTimestampsDuration","getSponsorIndexFromUUID","getSponsorTimeFromUUID","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","extension","inIncognitoContext","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","uuid","autoSkip","categoryName","messageId","DEFAULT_CATEGORY","inTest","chapterNames","categoryList","names","exportTime","removeIf","matchers","matcher","YouTube","Autogenerated","videoDuration","lines","timeRegex","anyLineHasTime","line","getFormattedTimeToSeconds","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","Local","generateUserID","hashparamSegments","address","testingServerAddress","sendRequestToCustomServer","currentTabSkipProfile","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/safari/6.0.3/background.js.map b/safari/6.0.3/background.js.map new file mode 100644 index 00000000..6fb80340 --- /dev/null +++ b/safari/6.0.3/background.js.map @@ -0,0 +1 @@ +{"version":3,"file":"background.js","mappings":"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","sources":["webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/tab-updates.ts","webpack:///./src/background.ts","webpack:///./src/config.ts","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/requests.ts","webpack:///./node_modules/webext-polyfill-kinda/index.js","webpack:///./node_modules/webext-patterns/index.js","webpack:///./node_modules/webext-content-scripts/index.js","webpack:///./node_modules/content-scripts-register-polyfill/ponyfill.js","webpack:///./node_modules/content-scripts-register-polyfill/index.js","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage } from \"./config\";\n\nfunction onTabUpdatedListener(tabId: number) {\n chrome.tabs.sendMessage(tabId, {\n message: 'update',\n }, () => void chrome.runtime.lastError ); // Suppress error on Firefox\n}\n\nfunction onNavigationApiAvailableChange(changes: {[key: string]: chrome.storage.StorageChange}) {\n if (changes.navigationApiAvailable) {\n if (changes.navigationApiAvailable.newValue) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n } else {\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n }\n }\n}\n\nexport function setupTabUpdates(config: ProtoConfig) {\n // If Navigation API is not supported, then background has to inform content script about video change.\n // This happens on Safari, Firefox, and Chromium 101 (inclusive) and below.\n chrome.tabs.onUpdated.addListener(onTabUpdatedListener);\n void waitFor(() => config.local !== null).then(() => {\n if (config.local!.navigationApiAvailable) {\n chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);\n }\n });\n\n if (!config.configSyncListeners.includes(onNavigationApiAvailableChange)) {\n config.configSyncListeners.push(onNavigationApiAvailableChange);\n }\n}","import * as CompileConfig from \"../config.json\";\n\nimport Config from \"./config\";\nimport { Registration } from \"./types\";\nimport \"content-scripts-register-polyfill\";\nimport { sendRealRequestToCustomServer, serializeOrStringify, setupBackgroundRequestProxy } from \"../maze-utils/src/background-request-proxy\";\nimport { setupTabUpdates } from \"../maze-utils/src/tab-updates\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\n\nimport Utils from \"./utils\";\nimport { getExtensionIdsToImportFrom } from \"./utils/crossExtension\";\nimport { isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { injectUpdatedScripts } from \"../maze-utils/src/cleanup\";\nimport { logWarn } from \"./utils/logger\";\nimport { chromeP } from \"../maze-utils/src/browserApi\";\nimport { getHash } from \"../maze-utils/src/hash\";\nconst utils = new Utils({\n registerFirefoxContentScript,\n unregisterFirefoxContentScript\n});\n\nconst popupPort: Record = {};\n\n// Used only on Firefox, which does not support non persistent background pages.\nconst contentScriptRegistrations = {};\n\n// Register content script if needed\nutils.wait(() => Config.isReady()).then(function() {\n if (Config.config.supportInvidious) utils.setupExtraSiteContentScripts();\n});\n\nsetupBackgroundRequestProxy();\nsetupTabUpdates(Config);\n\nchrome.runtime.onMessage.addListener(function (request, sender, callback) {\n switch(request.message) {\n case \"openConfig\":\n chrome.tabs.create({url: chrome.runtime.getURL('options/options.html' + (request.hash ? '#' + request.hash : ''))});\n return false;\n case \"openHelp\":\n chrome.tabs.create({url: chrome.runtime.getURL('help/index.html')});\n return false;\n case \"openPage\":\n chrome.tabs.create({url: chrome.runtime.getURL(request.url)});\n return false;\n case \"submitVote\":\n submitVote(request.type, request.UUID, request.category, request.videoID).then(callback);\n\n //this allows the callback to be called later\n return true;\n case \"registerContentScript\":\n registerFirefoxContentScript(request);\n return false;\n case \"unregisterContentScript\":\n unregisterFirefoxContentScript(request.id)\n return false;\n case \"tabs\": {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n chrome.tabs.sendMessage(\n tabs[0].id,\n request.data,\n (response) => {\n callback(response);\n }\n );\n });\n return true;\n }\n case \"time\":\n case \"infoUpdated\":\n case \"videoChanged\":\n if (sender.tab) {\n try {\n popupPort[sender.tab.id]?.postMessage(request);\n } catch (e) {\n // This can happen if the popup is closed\n }\n }\n return false;\n default:\n return false;\n\t}\n});\n\nchrome.runtime.onMessageExternal.addListener((request, sender, callback) => {\n if (getExtensionIdsToImportFrom().includes(sender.id)) {\n if (request.message === \"requestConfig\") {\n callback({\n userID: Config.config.userID,\n allowExpirements: Config.config.allowExpirements,\n showDonationLink: Config.config.showDonationLink,\n showUpsells: Config.config.showUpsells,\n darkMode: Config.config.darkMode,\n })\n }\n }\n});\n\nchrome.runtime.onConnect.addListener((port) => {\n if (port.name === \"popup\") {\n chrome.tabs.query({\n active: true,\n currentWindow: true\n }, tabs => {\n popupPort[tabs[0].id] = port;\n });\n }\n});\n\n//add help page on install\nchrome.runtime.onInstalled.addListener(function () {\n // This let's the config sync to run fully before checking.\n // This is required on Firefox\n setTimeout(async () => {\n const userID = Config.config.userID;\n\n // If there is no userID, then it is the first install.\n if (!userID && !Config.local.alreadyInstalled){\n //open up the install page\n chrome.tabs.create({url: chrome.runtime.getURL(\"/help/index.html\")});\n\n //generate a userID\n const newUserID = generateUserID();\n //save this UUID\n Config.config.userID = newUserID;\n Config.local.alreadyInstalled = true;\n\n // Don't show update notification\n Config.config.categoryPillUpdate = true;\n }\n\n if (Config.config.supportInvidious) {\n if (!(await utils.containsInvidiousPermission())) {\n chrome.tabs.create({url: chrome.runtime.getURL(\"/permissions/index.html\")});\n }\n }\n\n getHash(Config.config!.userID!).then((userID) => {\n if (userID == \"60eed03c8644b7efa32df06977b3a4c11b62f63518e74a0e29baa1fd449cb54f\") {\n Config.config.prideTheme = true;\n }\n });\n }, 1500);\n\n if (!isFirefoxOrSafari()) {\n injectUpdatedScripts().catch(logWarn);\n\n waitFor(() => Config.isReady()).then(() => {\n if (Config.config.supportInvidious) {\n injectUpdatedScripts([\n utils.getExtraSiteRegistration()\n ])\n }\n }).catch(logWarn);\n }\n});\n\n/**\n * Only works on Firefox.\n * Firefox requires that it be applied after every extension restart.\n *\n * @param {JSON} options\n */\nasync function registerFirefoxContentScript(options: Registration) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n const existingRegistrations = await chromeP.scripting.getRegisteredContentScripts({\n ids: [options.id]\n }).catch(() => []);\n\n if (existingRegistrations && existingRegistrations.length > 0 \n && options.matches.every((match) => existingRegistrations[0].matches.includes(match))) {\n // No need to register another script, already registered\n return;\n }\n }\n\n await unregisterFirefoxContentScript(options.id);\n\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n await chromeP.scripting.registerContentScripts([{\n id: options.id,\n runAt: \"document_start\",\n matches: options.matches,\n allFrames: options.allFrames,\n js: options.js,\n css: options.css,\n persistAcrossSessions: true,\n }]);\n } else {\n chrome.contentScripts.register({\n allFrames: options.allFrames,\n js: options.js?.map?.(file => ({file})),\n css: options.css?.map?.(file => ({file})),\n matches: options.matches\n }).then((registration) => void (contentScriptRegistrations[options.id] = registration));\n }\n\n}\n\n/**\n * Only works on Firefox.\n * Firefox requires that this is handled by the background script\n */\nasync function unregisterFirefoxContentScript(id: string) {\n if (\"scripting\" in chrome && \"getRegisteredContentScripts\" in chrome.scripting) {\n try {\n await chromeP.scripting.unregisterContentScripts({\n ids: [id]\n });\n } catch (e) {\n // Not registered yet\n }\n } else {\n if (contentScriptRegistrations[id]) {\n contentScriptRegistrations[id].unregister();\n delete contentScriptRegistrations[id];\n }\n }\n}\n\nasync function submitVote(type: number, UUID: string, category: string, videoID: string) {\n let userID = Config.config.userID;\n\n if (userID == undefined || userID === \"undefined\") {\n //generate one\n userID = generateUserID();\n Config.config.userID = userID;\n }\n\n const typeSection = (type !== undefined) ? \"&type=\" + type : \"&category=\" + category;\n\n try {\n const response = await asyncRequestToServer(\"POST\", \"/api/voteOnSponsorTime?UUID=\" + UUID + \"&videoID=\" + videoID + \"&userID=\" + userID + typeSection);\n\n return {\n status: response.status,\n ok: response.ok,\n responseText: await response.text(),\n };\n } catch (e) {\n console.error(\"Error while voting:\", e);\n return {\n error: serializeOrStringify(e),\n };\n }\n}\n\n\nasync function asyncRequestToServer(type: string, address: string, data = {}) {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRealRequestToCustomServer(type, serverAddress + address, data));\n}\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","function NestedProxy(target) {\n\treturn new Proxy(target, {\n\t\tget(target, prop) {\n\t\t\tif (!target[prop]) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof target[prop] !== 'function') {\n\t\t\t\treturn new NestedProxy(target[prop]);\n\t\t\t}\n\n\t\t\treturn (...arguments_) =>\n\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\ttarget[prop](...arguments_, result => {\n\t\t\t\t\t\tif (chrome.runtime.lastError) {\n\t\t\t\t\t\t\treject(new Error(chrome.runtime.lastError.message));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t});\n}\n\nconst chromeP = globalThis.chrome && new NestedProxy(globalThis.chrome);\n\nexport default chromeP;\n","import escapeStringRegexp from 'escape-string-regexp';\n// Copied from https://github.com/mozilla/gecko-dev/blob/073cc24f53d0cf31403121d768812146e597cc9d/toolkit/components/extensions/schemas/manifest.json#L487-L491\nexport const patternValidationRegex = /^(https?|wss?|file|ftp|\\*):\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^file:\\/\\/\\/.*$|^resource:\\/\\/(\\*|\\*\\.[^*/]+|[^*/]+)\\/.*$|^about:/;\nconst isFirefox = typeof navigator === 'object' && navigator.userAgent.includes('Firefox/');\nexport const allStarsRegex = isFirefox\n ? /^(https?|wss?):[/][/][^/]+([/].*)?$/\n : /^https?:[/][/][^/]+([/].*)?$/;\nexport const allUrlsRegex = /^(https?|file|ftp):[/]+/;\nfunction getRawPatternRegex(matchPattern) {\n if (!patternValidationRegex.test(matchPattern)) {\n throw new Error(matchPattern + ' is an invalid pattern, it must match ' + String(patternValidationRegex));\n }\n let [, protocol, host, pathname] = matchPattern.split(/(^[^:]+:[/][/])([^/]+)?/);\n protocol = protocol\n .replace('*', isFirefox ? '(https?|wss?)' : 'https?') // Protocol wildcard\n .replace(/[/]/g, '[/]'); // Escape slashes\n host = (host !== null && host !== void 0 ? host : '') // Undefined for file:///\n .replace(/^[*][.]/, '([^/]+.)*') // Initial wildcard\n .replace(/^[*]$/, '[^/]+') // Only wildcard\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]$/g, '[^.]+'); // Last wildcard\n pathname = pathname\n .replace(/[/]/g, '[/]') // Escape slashes\n .replace(/[.]/g, '[.]') // Escape dots\n .replace(/[*]/g, '.*'); // Any wildcard\n return '^' + protocol + host + '(' + pathname + ')?$';\n}\nexport function patternToRegex(...matchPatterns) {\n // No pattern, match nothing https://stackoverflow.com/q/14115522/288906\n if (matchPatterns.length === 0) {\n return /$./;\n }\n if (matchPatterns.includes('')) {\n return allUrlsRegex;\n }\n if (matchPatterns.includes('*://*/*')) {\n return allStarsRegex;\n }\n return new RegExp(matchPatterns.map(x => getRawPatternRegex(x)).join('|'));\n}\n// The parens are required by .split() to preserve the symbols\nconst globSymbols = /([?*]+)/;\nfunction splitReplace(part, index) {\n if (part === '') {\n // Shortcut for speed\n return '';\n }\n if (index % 2 === 0) {\n // Raw text, escape it\n return escapeStringRegexp(part);\n }\n // Else: Symbol\n if (part.includes('*')) { // Can be more than one and it swallows surrounding question marks\n return '.*';\n }\n return [...part].map(() => isFirefox ? '.' : '.?').join('');\n}\nfunction getRawGlobRegex(glob) {\n const regexString = glob\n .split(globSymbols)\n // eslint-disable-next-line unicorn/no-array-callback-reference -- tis ok 🤫\n .map(splitReplace)\n .join('');\n // Drop \"start with anything\" and \"end with anything\" sequences because they're the default for regex\n return ('^' + regexString + '$')\n .replace(/^[.][*]/, '')\n .replace(/[.][*]$/, '')\n .replace(/^[$]$/, '.+'); // Catch `*` and `*`\n}\nexport function globToRegex(...globs) {\n // No glob, match anything; `include_globs: []` is the default\n if (globs.length === 0) {\n return /.*/;\n }\n return new RegExp(globs.map(x => getRawGlobRegex(x)).join('|'));\n}\nexport function excludeDuplicatePatterns(matchPatterns) {\n if (matchPatterns.includes('')) {\n return [''];\n }\n if (matchPatterns.includes('*://*/*')) {\n return ['*://*/*'];\n }\n return matchPatterns.filter(possibleSubset => !matchPatterns.some(possibleSuperset => possibleSubset !== possibleSuperset && patternToRegex(possibleSuperset).test(possibleSubset)));\n}\n","import chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst gotScripting = Boolean(globalThis.chrome?.scripting);\nfunction castTarget(target) {\n return typeof target === 'object' ? target : {\n tabId: target,\n frameId: 0,\n };\n}\nfunction castAllFramesTarget(target) {\n if (typeof target === 'object') {\n return { ...target, allFrames: false };\n }\n return {\n tabId: target,\n frameId: undefined,\n allFrames: true,\n };\n}\nfunction castArray(possibleArray) {\n if (Array.isArray(possibleArray)) {\n return possibleArray;\n }\n return [possibleArray];\n}\nconst nativeFunction = /^function \\w+\\(\\) {[\\n\\s]+\\[native code][\\n\\s]+}/;\nexport async function executeFunction(target, function_, ...args) {\n if (nativeFunction.test(String(function_))) {\n throw new TypeError('Native functions need to be wrapped first, like `executeFunction(1, () => alert(1))`');\n }\n const { frameId, tabId } = castTarget(target);\n if (gotScripting) {\n const [injection] = await chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: [frameId],\n },\n func: function_,\n args,\n });\n return injection?.result;\n }\n const [result] = await chromeP.tabs.executeScript(tabId, {\n code: `(${function_.toString()})(...${JSON.stringify(args)})`,\n frameId,\n });\n return result;\n}\nfunction arrayOrUndefined(value) {\n return value === undefined ? undefined : [value];\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention -- It follows the native naming\nexport async function insertCSS({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const everyInsertion = Promise.all(files.map(async (content) => {\n if (typeof content === 'string') {\n content = { file: content };\n }\n if (gotScripting) {\n return chrome.scripting.insertCSS({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: 'file' in content ? [content.file] : undefined,\n css: 'code' in content ? content.code : undefined,\n });\n }\n return chromeP.tabs.insertCSS(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt: runAt ?? 'document_start', // CSS should prefer `document_start` when unspecified\n });\n }));\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(everyInsertion);\n }\n else {\n await everyInsertion;\n }\n}\nfunction assertNoCode(files) {\n if (files.some(content => 'code' in content)) {\n throw new Error('chrome.scripting does not support injecting strings of `code`');\n }\n}\nexport async function executeScript({ tabId, frameId, files, allFrames, matchAboutBlank, runAt, }, { ignoreTargetErrors } = {}) {\n const normalizedFiles = files.map(file => typeof file === 'string' ? { file } : file);\n if (gotScripting) {\n assertNoCode(normalizedFiles);\n const injection = chrome.scripting.executeScript({\n target: {\n tabId,\n frameIds: arrayOrUndefined(frameId),\n allFrames: frameId === undefined ? allFrames : undefined,\n },\n files: normalizedFiles.map(({ file }) => file),\n });\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(injection);\n }\n else {\n await injection;\n }\n // Don't return `injection`; the \"return value\" of a file is generally not useful\n return;\n }\n // Don't use .map(), `code` injections can't be \"parallel\"\n const executions = [];\n for (const content of normalizedFiles) {\n // Files are executed in order, but `code` isn’t, so it must await the last script before injecting more\n if ('code' in content) {\n // eslint-disable-next-line no-await-in-loop -- On purpose, see above\n await executions.at(-1);\n }\n executions.push(chromeP.tabs.executeScript(tabId, {\n ...content,\n matchAboutBlank,\n allFrames,\n frameId,\n runAt,\n }));\n }\n if (ignoreTargetErrors) {\n await catchTargetInjectionErrors(Promise.all(executions));\n }\n else {\n await Promise.all(executions);\n }\n}\nexport async function getTabsByUrl(matches, excludeMatches) {\n if (matches.length === 0) {\n return [];\n }\n const exclude = excludeMatches ? patternToRegex(...excludeMatches) : undefined;\n const tabs = await chromeP.tabs.query({ url: matches });\n return tabs\n .filter(tab => tab.id && tab.url && (exclude ? !exclude.test(tab.url) : true))\n .map(tab => tab.id);\n}\nexport async function injectContentScript(where, scripts, options = {}) {\n const targets = castArray(where);\n await Promise.all(targets.map(async (target) => injectContentScriptInSpecificTarget(castAllFramesTarget(target), scripts, options)));\n}\nasync function injectContentScriptInSpecificTarget({ frameId, tabId, allFrames }, scripts, options = {}) {\n const injections = castArray(scripts).flatMap(script => [\n insertCSS({\n tabId,\n frameId,\n allFrames,\n files: script.css ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n executeScript({\n tabId,\n frameId,\n allFrames,\n files: script.js ?? [],\n matchAboutBlank: script.matchAboutBlank ?? script.match_about_blank,\n runAt: script.runAt ?? script.run_at,\n }, options),\n ]);\n await Promise.all(injections);\n}\n// Sourced from:\n// https://source.chromium.org/chromium/chromium/src/+/main:extensions/common/extension_urls.cc;drc=6b42116fe3b3d93a77750bdcc07948e98a728405;l=29\n// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts\nconst blockedPrefixes = [\n 'chrome.google.com/webstore',\n 'accounts-static.cdn.mozilla.net',\n 'accounts.firefox.com',\n 'addons.cdn.mozilla.net',\n 'addons.mozilla.org',\n 'api.accounts.firefox.com',\n 'content.cdn.mozilla.net',\n 'discovery.addons.mozilla.org',\n 'input.mozilla.org',\n 'install.mozilla.org',\n 'oauth.accounts.firefox.com',\n 'profile.accounts.firefox.com',\n 'support.mozilla.org',\n 'sync.services.mozilla.com',\n 'testpilot.firefox.com',\n];\nexport function isScriptableUrl(url) {\n if (!url.startsWith('http')) {\n return false;\n }\n const cleanUrl = url.replace(/^https?:\\/\\//, '');\n return blockedPrefixes.every(blocked => !cleanUrl.startsWith(blocked));\n}\nconst targetErrors = /^No frame with id \\d+ in tab \\d+.$|^No tab with id: \\d+.$|^The tab was closed.$|^The frame was removed.$/;\nasync function catchTargetInjectionErrors(promise) {\n try {\n await promise;\n }\n catch (error) {\n // @ts-expect-error Optional chaining is good enough\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!targetErrors.test(error?.message)) {\n throw error;\n }\n }\n}\n","import { injectContentScript } from 'webext-content-scripts';\nimport chromeP from 'webext-polyfill-kinda';\nimport { patternToRegex } from 'webext-patterns';\nconst noMatchesError = 'Type error for parameter contentScriptOptions (Error processing matches: Array requires at least 1 items; you have 0) for contentScripts.register.';\nconst noPermissionError = 'Permission denied to register a content script for ';\nconst gotNavigation = typeof chrome === 'object' && 'webNavigation' in chrome;\nasync function isOriginPermitted(url) {\n return chromeP.permissions.contains({\n origins: [new URL(url).origin + '/*'],\n });\n}\n// The callback is only used by webextension-polyfill\nexport default async function registerContentScript(contentScriptOptions, callback) {\n const { js = [], css = [], matchAboutBlank, matches = [], excludeMatches, runAt, } = contentScriptOptions;\n let { allFrames } = contentScriptOptions;\n if (gotNavigation) {\n allFrames = false;\n }\n else if (allFrames) {\n console.warn('`allFrames: true` requires the `webNavigation` permission to work correctly: https://github.com/fregante/content-scripts-register-polyfill#permissions');\n }\n if (matches.length === 0) {\n throw new Error(noMatchesError);\n }\n await Promise.all(matches.map(async (pattern) => {\n if (!await chromeP.permissions.contains({ origins: [pattern] })) {\n throw new Error(noPermissionError + pattern);\n }\n }));\n const matchesRegex = patternToRegex(...matches);\n const excludeMatchesRegex = patternToRegex(...excludeMatches !== null && excludeMatches !== void 0 ? excludeMatches : []);\n const inject = async (url, tabId, frameId = 0) => {\n if (!matchesRegex.test(url) // Manual `matches` glob matching\n || excludeMatchesRegex.test(url) // Manual `exclude_matches` glob matching\n || !await isOriginPermitted(url) // Without this, we might have temporary access via accessTab\n ) {\n return;\n }\n await injectContentScript({\n tabId,\n frameId,\n }, {\n css,\n js,\n matchAboutBlank,\n runAt,\n }, {\n ignoreTargetErrors: true,\n });\n };\n const tabListener = async (tabId, { status }, { url }) => {\n // Only status updates are relevant\n // No URL = no permission\n if (status === 'loading' && url) {\n void inject(url, tabId);\n }\n };\n const navListener = async ({ tabId, frameId, url, }) => {\n void inject(url, tabId, frameId);\n };\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.addListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.addListener(tabListener);\n }\n const registeredContentScript = {\n async unregister() {\n if (gotNavigation) {\n chrome.webNavigation.onCommitted.removeListener(navListener);\n }\n else {\n chrome.tabs.onUpdated.removeListener(tabListener);\n }\n },\n };\n if (typeof callback === 'function') {\n callback(registeredContentScript);\n }\n return registeredContentScript;\n}\n","/// \n// The .js extension is required to create ESM-compatible file\nimport register from './ponyfill.js';\nif (typeof chrome === 'object' && !chrome.contentScripts) {\n chrome.contentScripts = { register };\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(1398);\n"],"names":["sendRealRequestToCustomServer","type","url","data","headers","toLowerCase","objectToURI","fetch","method","redirect","body","JSON","stringify","isSerializable","value","window","structuredClone","serializeOrStringify","toString","String","chrome","runtime","onMessage","addListener","request","sender","callback","message","then","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","Array","from","Uint8Array","arrayBuffer","responseText","text","responseBinary","returnHeaders","entries","reduce","acc","key","status","ok","catch","error","console","getHash","times","e","Promise","resolve","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","cleanupListeners","getCleanupId","id","listener","push","source","started","performance","now","postMessage","addEventListener","extraScripts","ignoreNormalScipts","scripts","concat","getManifest","content_scripts","cs","tab","tabs","query","matches","css","length","scripting","insertCSS","target","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","match","replace","file","navigator","vendor","formatKey","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","Date","add","delayUpdate","items","clear","map","v","k","setTimeout","get","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","location","href","includes","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","isVisible","element","ignoreWidth","tagName","classList","contains","document","querySelectorAll","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","left","width","top","height","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","textContent","trim","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","node","possibleElements","disconnect","MutationObserver","observe","documentElement","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","Math","max","hours","floor","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","isNaN","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","digest","TextEncoder","encode","b","padStart","join","condition","timeout","check","interval","intervalCheck","clearInterval","Error","stack","setInterval","includeQuestionMark","counter","seperator","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","version","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","random","localizedTitle","title","localizedMessage","innerHTML","onTabUpdatedListener","onNavigationApiAvailableChange","navigationApiAvailable","onUpdated","removeListener","waitFor","utils","registerFirefoxContentScript","unregisterFirefoxContentScript","popupPort","contentScriptRegistrations","options","existingRegistrations","getRegisteredContentScripts","ids","every","registerContentScripts","runAt","allFrames","persistAcrossSessions","contentScripts","register","registration","unregisterContentScripts","unregister","wait","supportInvidious","setupExtraSiteContentScripts","setupBackgroundRequestProxy","setupTabUpdates","create","getURL","hash","UUID","category","videoID","userID","generateUserID","typeSection","address","serverAddress","testingServer","CompileConfig","testingServerAddress","asyncRequestToServer","submitVote","active","currentWindow","onMessageExternal","getExtensionIdsToImportFrom","allowExpirements","showDonationLink","showUpsells","darkMode","onConnect","port","name","onInstalled","alreadyInstalled","newUserID","categoryPillUpdate","containsInvidiousPermission","prideTheme","injectUpdatedScripts","logWarn","getExtraSiteRegistration","ConfigClass","ProtoConfig","resetToDefault","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","ytInfoPermissionGranted","showPopupDonationCount","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","hookUpdate","showChapterInfoMessage","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","s","channelID","keys","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","removeExtraSiteRegistration","applyInvidiousPermissions","enable","getMergedTimestamps","timestamps","deduped","forEach","range","startOverlaps","findIndex","other","endOverlaps","other1","splice","other2","min","slice","getTimestampsDuration","getSponsorIndexFromUUID","sponsorTimes","startsWith","getSponsorTimeFromUUID","domains","permissionRegex","findReferenceNode","referenceNode","findValidElementFromSelector","player","getElementById","firstChild","index","children","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","hidden","extension","inIncognitoContext","segmentIDData","formatJSErrorMessage","logRequest","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","segments","lastAccess","existingData","segment","uuid","Visible","indexOf","extensionImportList","safari","firefox","chromium","extensionIds","count","toISOString","log","sendRequestToCustomServer","globalThis","NestedProxy","arguments_","patternValidationRegex","isFirefox","allStarsRegex","allUrlsRegex","matchPatterns","RegExp","x","matchPattern","test","host","pathname","split","getRawPatternRegex","gotScripting","castArray","possibleArray","isArray","arrayOrUndefined","async","frameId","matchAboutBlank","ignoreTargetErrors","everyInsertion","content","frameIds","catchTargetInjectionErrors","normalizedFiles","assertNoCode","injection","executions","at","targetErrors","gotNavigation","contentScriptOptions","excludeMatches","pattern","matchesRegex","excludeMatchesRegex","inject","URL","origin","isOriginPermitted","where","targets","injections","flatMap","match_about_blank","run_at","injectContentScriptInSpecificTarget","castAllFramesTarget","injectContentScript","tabListener","navListener","webNavigation","onCommitted","registeredContentScript","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/safari/6.0.3/content.js.LICENSE.txt b/safari/6.0.3/content.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/safari/6.0.3/content.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/safari/6.0.3/content.js.map b/safari/6.0.3/content.js.map new file mode 100644 index 00000000..8cb63cc0 --- /dev/null +++ b/safari/6.0.3/content.js.map @@ -0,0 +1 @@ +{"version":3,"file":"content.js","mappings":"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","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/animationUtils.ts","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/components/Tooltip.tsx","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/CategoryPillComponent.tsx","webpack:///./src/components/ChapterVoteComponent.tsx","webpack:///./src/components/NoticeComponent.tsx","webpack:///./src/components/NoticeTextSectionComponent.tsx","webpack:///./src/components/SelectorComponent.tsx","webpack:///./src/components/SkipNoticeComponent.tsx","webpack:///./src/components/SponsorTimeEditComponent.tsx","webpack:///./src/components/SubmissionNoticeComponent.tsx","webpack:///./src/config.ts","webpack:///./src/content.ts","webpack:///./src/dearrowPromotion.ts","webpack:///./src/js-components/previewBar.ts","webpack:///./src/js-components/skipButtonControlBar.ts","webpack:///./src/render/CategoryPill.tsx","webpack:///./src/render/ChapterVote.tsx","webpack:///./src/render/GenericNotice.tsx","webpack:///./src/render/RectangleTooltip.tsx","webpack:///./src/render/SkipNotice.tsx","webpack:///./src/render/SubmissionNotice.tsx","webpack:///./src/render/Tooltip.tsx","webpack:///./src/render/UpcomingNotice.tsx","webpack:///./src/svg-icons/pencil_svg.tsx","webpack:///./src/svg-icons/sb_svg.tsx","webpack:///./src/svg-icons/thumbs_down_svg.tsx","webpack:///./src/svg-icons/thumbs_up_svg.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/arrayUtils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/compatibility.ts","webpack:///./src/utils/constants.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/genericUtils.ts","webpack:///./src/utils/logger.ts","webpack:///./src/utils/mobileUtils.ts","webpack:///./src/utils/noticeUtils.ts","webpack:///./src/utils/pageCleaner.ts","webpack:///./src/utils/pageUtils.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/segmentData.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///./src/utils/thumbnails.ts","webpack:///./src/utils/urlParser.ts","webpack:///./src/utils/videoLabels.ts","webpack:///./src/utils/warnings.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n"," /**\n * Starts a spinning animation and returns a function to be called when it should be stopped\n * The callback will be called when the animation is finished \n * It waits until a full rotation is complete\n */\nfunction applyLoadingAnimation(element: HTMLElement, time: number, callback?: () => void): () => Promise {\n element.style.animation = `rotate ${time}s 0s infinite`;\n\n return async () => new Promise((resolve) => {\n // Make the animation finite\n element.style.animation = `rotate ${time}s`;\n\n // When the animation is over, hide the button\n const animationEndListener = () => {\n if (callback) callback();\n\n element.style.animation = \"none\";\n\n element.removeEventListener(\"animationend\", animationEndListener);\n\n resolve();\n };\n\n element.addEventListener(\"animationend\", animationEndListener);\n });\n}\n\nfunction setupCustomHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): { hide: () => void; show: () => void } {\n if (enabled) element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n element.classList.add(\"animationDone\");\n if (!rightSlide) element.classList.add(\"autoHideLeft\");\n\n let mouseEntered = false;\n\n return {\n hide: () => {\n mouseEntered = false;\n if (element.classList.contains(\"autoHiding\")) {\n element.classList.add(\"sbhidden\");\n }\n },\n show: () => {\n mouseEntered = true;\n element.classList.remove(\"animationDone\");\n\n // Wait for next event loop\n setTimeout(() => {\n if (mouseEntered) element.classList.remove(\"sbhidden\")\n }, 10);\n }\n };\n}\n\nfunction setupAutoHideAnimation(element: Element, container: Element, enabled = true, rightSlide = true): void {\n const { hide, show } = this.setupCustomHideAnimation(element, container, enabled, rightSlide);\n\n container.addEventListener(\"mouseleave\", () => hide());\n container.addEventListener(\"mouseenter\", () => show());\n}\n\nfunction enableAutoHideAnimation(element: Element): void {\n element.classList.add(\"autoHiding\");\n element.classList.add(\"sbhidden\");\n}\n\nfunction disableAutoHideAnimation(element: Element): void {\n element.classList.remove(\"autoHiding\");\n element.classList.remove(\"sbhidden\");\n}\n\nexport const AnimationUtils = {\n applyLoadingAnimation,\n setupAutoHideAnimation,\n setupCustomHideAnimation,\n enableAutoHideAnimation,\n disableAutoHideAnimation\n};","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ButtonListener } from \"./component-types\";\nimport { isFirefoxOrSafari } from \"..\";\nimport { isSafari } from \"../config\";\n\nexport interface TooltipProps {\n text?: string;\n textBoxes?: string[];\n link?: string;\n linkOnClick?: () => void;\n secondButtonOnClick?: () => void;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n topOffset?: string;\n leftOffset?: string;\n rightOffset?: string;\n zIndex?: number;\n innerBottomMargin?: string;\n timeout?: number;\n opacity?: number;\n displayTriangle?: boolean;\n topTriangle?: boolean;\n extraClass?: string;\n showLogo?: boolean;\n showGotIt?: boolean;\n secondButtonText?: string;\n center?: boolean;\n positionRealtive?: boolean;\n containerAbsolute?: boolean;\n buttons?: ButtonListener[];\n elements?: JSX.Element[];\n buttonsAtBottom?: boolean;\n textBoxMaxHeight?: string;\n}\n\nexport class GenericTooltip {\n text?: string; \n container: HTMLDivElement;\n\n timer: NodeJS.Timeout;\n root: Root;\n \n constructor(props: TooltipProps, logoUrl: string) {\n props.bottomOffset ??= \"70px\";\n props.topOffset ??= \"inherit\";\n props.leftOffset ??= \"inherit\";\n props.rightOffset ??= \"inherit\";\n props.zIndex ??= 10000;\n props.innerBottomMargin ??= \"0px\";\n props.opacity ??= 0.7;\n props.displayTriangle ??= !props.topTriangle;\n props.topTriangle ??= false;\n props.extraClass ??= \"\";\n props.showLogo ??= true;\n props.showGotIt ??= true;\n props.positionRealtive ??= true;\n props.containerAbsolute ??= false;\n props.center ??= false;\n props.elements ??= [];\n props.buttonsAtBottom ??= false;\n props.textBoxes ??= [];\n props.textBoxMaxHeight ??= \"inherit\";\n this.text = props.text;\n\n this.container = document.createElement('div');\n this.container.id = \"sponsorTooltip\" + props.text;\n if (props.positionRealtive) this.container.style.position = \"relative\";\n if (props.containerAbsolute) this.container.style.position = \"absolute\";\n if (props.center) {\n if (isFirefoxOrSafari() && !isSafari()) {\n this.container.style.width = \"-moz-available\";\n } else {\n this.container.style.width = \"-webkit-fill-available\";\n }\n }\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n const backgroundColor = `rgba(28, 28, 28, ${props.opacity})`;\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n {props.showLogo ? \n \n \n : null}\n {this.text ? \n \n {this.getTextElements(this.text + (props.link ? \". \" : \"\"))}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : (props.linkOnClick ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null)}\n \n : null}\n\n {props.textBoxes ? props.textBoxes.map((text, index) => (\n
\n {text || String.fromCharCode(8203)} {/* Zero width space */}\n
\n )) : null}\n\n {props.elements}\n\n {!props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n
\n\n {props.buttonsAtBottom && this.getButtons(props.buttons, props.buttonsAtBottom)}\n\n {props.showGotIt ?\n \n : null}\n\n {\n props.secondButtonText ?\n \n : null\n }\n
\n )\n }\n\n private getTextElements(text: string): JSX.Element[] {\n if (!text.includes(\"\\n\")) return [<>{text}];\n\n const result: JSX.Element[] = [];\n\n for (const line of text.split(\"\\n\")) {\n result.push(\n
\n {line}\n
\n );\n }\n\n return result;\n }\n\n getButtons(buttons: ButtonListener[] | undefined, buttonsAtBottom: boolean): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n const style: React.CSSProperties = {};\n if (buttonsAtBottom) {\n style.float = \"right\";\n }\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return [];\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport Config from \"../config\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface CategoryPillProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n showTextByDefault: boolean;\n showTooltipOnClick: boolean;\n}\n\nexport interface CategoryPillState {\n segment?: SponsorTime;\n show: boolean;\n open?: boolean;\n}\n\nclass CategoryPillComponent extends React.Component {\n mainRef: React.MutableRefObject;\n tooltip?: Tooltip;\n\n constructor(props: CategoryPillProps) {\n super(props);\n\n this.mainRef = React.createRef();\n\n this.state = {\n segment: null,\n show: false,\n open: false\n };\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {\n backgroundColor: this.getColor(),\n display: this.state.show ? \"flex\" : \"none\",\n color: this.getTextColor(),\n }\n\n // To be able to remove the margin from the parent\n this.mainRef?.current?.parentElement?.classList?.toggle(\"cbPillOpen\", this.state.show);\n\n return (\n this.toggleOpen(e)}\n onMouseEnter={() => this.openTooltip()}\n onMouseLeave={() => this.closeTooltip()}\n ref={this.mainRef}>\n \n \n \n \n\n {\n (this.props.showTextByDefault || this.state.open) &&\n \n {chrome.i18n.getMessage(\"category_\" + this.state.segment?.category)}\n \n }\n \n\n {this.state.open && (\n <>\n {/* Upvote Button */}\n
this.vote(e, 1)}>\n \n
\n\n {/* Downvote Button */}\n
this.vote(event, 0)}>\n \n
\n \n )}\n\n {/* Close Button */}\n {\n this.setState({ show: false });\n this.closeTooltip();\n }}>\n \n
\n );\n }\n\n private toggleOpen(event: React.MouseEvent): void {\n event.stopPropagation();\n\n if (this.state.show) {\n if (this.props.showTooltipOnClick) {\n if (this.state.open) {\n this.closeTooltip();\n } else {\n this.openTooltip();\n }\n }\n\n this.setState({ open: !this.state.open });\n }\n }\n\n private async vote(event: React.MouseEvent, type: number): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response) {\n console.error(\"[SB] Caught error while attempting to vote on a FV label\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status === 429) {\n this.setState({\n open: false,\n show: type === 1\n });\n\n this.closeTooltip();\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on FV label\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n\n private getColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-preview-${category}, var(--sb-category-${category}))`;\n }\n\n private getTextColor(): string {\n // Handled by setCategoryColorCSSVariables() of content.ts\n const category = this.state.segment?.category;\n return category == null ? null : `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`;\n }\n\n private openTooltip(): void {\n if (this.tooltip) {\n this.tooltip.close();\n }\n\n const tooltipMount = document.querySelector(\"#above-the-fold, ytm-slim-owner-renderer\") as HTMLElement;\n if (tooltipMount) {\n this.tooltip = new Tooltip({\n text: this.getTitleText(),\n referenceNode: tooltipMount,\n bottomOffset: \"0px\",\n opacity: 0.95,\n displayTriangle: false,\n showLogo: false,\n showGotIt: false,\n prependElement: tooltipMount.firstElementChild as HTMLElement\n });\n }\n }\n\n private closeTooltip(): void {\n this.tooltip?.close?.();\n this.tooltip = null;\n }\n\n getTitleText(): string {\n const shortDescription = chrome.i18n.getMessage(`category_${this.state.segment?.category}_pill`);\n return (shortDescription ? shortDescription + \". \": \"\") + chrome.i18n.getMessage(\"categoryPillTitleText\");\n }\n}\n\nexport default CategoryPillComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport { ActionType, Category, SegmentUUID, SponsorTime } from \"../types\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface ChapterVoteProps {\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n size?: string;\n}\n\nexport interface ChapterVoteState {\n segment?: SponsorTime;\n show: boolean;\n size?: string;\n}\n\nclass ChapterVoteComponent extends React.Component {\n tooltip?: Tooltip;\n\n constructor(props: ChapterVoteProps) {\n super(props);\n\n this.state = {\n segment: null,\n show: false,\n size: props.size ?? \"22px\"\n };\n }\n\n render(): React.ReactElement {\n if (this.tooltip && !this.state.show) {\n this.tooltip.close();\n this.tooltip = null;\n }\n\n return (\n <>\n {/* Upvote Button */}\n \n\n {/* Downvote Button */}\n \n \n );\n }\n\n private async vote(event: React.MouseEvent, type: number, element?: HTMLElement): Promise {\n event.stopPropagation();\n if (this.state.segment) {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(element ?? event.currentTarget as HTMLElement, 0.3);\n\n const response = await this.props.vote(type, this.state.segment.UUID);\n await stopAnimation();\n\n if (\"error\" in response){\n console.error(\"[SB] Caught error while attempting to vote on a chapter\", response.error);\n alert(formatJSErrorMessage(response.error));\n } else if (response.ok || response.status == 429) {\n this.setState({\n show: type === 1\n });\n } else if (response.status !== 403) {\n logRequest({headers: null, ...response}, \"SB\", \"vote on chapter\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n }\n}\n\nexport default ChapterVoteComponent;\n","import * as React from \"react\";\nimport Config from \"../config\";\nimport SbSvg from \"../svg-icons/sb_svg\";\n\nenum CountdownMode {\n Timer,\n Paused,\n Stopped\n}\n\nexport interface NoticeProps {\n noticeTitle: string;\n\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n amountOfPreviousNotices?: number;\n showInSecondSlot?: boolean;\n timed?: boolean;\n idSuffix?: string;\n\n fadeIn?: boolean;\n fadeOut?: boolean;\n startFaded?: boolean;\n firstColumn?: React.ReactElement[] | React.ReactElement;\n firstRow?: React.ReactElement;\n bottomRow?: React.ReactElement[];\n\n smaller?: boolean;\n limitWidth?: boolean;\n extraClass?: string;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n logoFill?: string;\n\n // Callback for when this is closed\n closeListener: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n zIndex?: number;\n style?: React.CSSProperties;\n biggerCloseButton?: boolean;\n children?: React.ReactNode;\n}\n\ninterface MouseDownInfo {\n x: number;\n y: number;\n right: number;\n bottom: number;\n}\n\nexport interface NoticeState {\n maxCountdownTime: () => number;\n\n countdownTime: number;\n countdownMode: CountdownMode;\n\n mouseHovering: boolean;\n\n startFaded: boolean;\n\n mouseDownInfo: MouseDownInfo | null;\n mouseMoved: boolean;\n right: number;\n bottom: number;\n}\n\n// Limits for dragging notice around\nconst bounds = [10, 100, 10, 10];\n\nclass NoticeComponent extends React.Component {\n countdownInterval: NodeJS.Timeout;\n\n idSuffix: string;\n\n amountOfPreviousNotices: number;\n\n parentRef: React.RefObject;\n\n handleMouseMoveBinded: (e: MouseEvent) => void = this.handleMouseMove.bind(this);\n\n constructor(props: NoticeProps) {\n super(props);\n\n this.parentRef = React.createRef();\n\n const maxCountdownTime = () => {\n if (this.props.maxCountdownTime) return this.props.maxCountdownTime();\n else return Config.config.skipNoticeDuration;\n };\n \n //the id for the setInterval running the countdown\n this.countdownInterval = null;\n\n this.amountOfPreviousNotices = props.amountOfPreviousNotices || 0;\n\n this.idSuffix = props.idSuffix || \"\";\n\n // Setup state\n this.state = {\n maxCountdownTime,\n\n //the countdown until this notice closes\n countdownTime: maxCountdownTime(),\n countdownMode: CountdownMode.Timer,\n mouseHovering: false,\n\n startFaded: this.props.startFaded ?? false,\n\n mouseDownInfo: null,\n mouseMoved: false,\n right: bounds[0],\n bottom: props.showInSecondSlot ? 290 : bounds[1]\n }\n }\n\n componentDidMount(): void {\n this.startCountdown();\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = {\n zIndex: this.props.zIndex || (1000 + this.amountOfPreviousNotices),\n right: this.state.right,\n bottom: this.state.bottom,\n userSelect: this.state.mouseDownInfo && this.state.mouseMoved ? \"none\" : \"auto\",\n ...(this.props.style ?? {})\n }\n\n return (\n
this.onMouseEnter(e) }\n onMouseLeave={() => {\n this.timerMouseLeave();\n }}\n onMouseDown={(e) => {\n document.addEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: {\n x: e.clientX,\n y: e.clientY,\n right: this.state.right,\n bottom: this.state.bottom\n },\n mouseMoved: false\n });\n }}\n onMouseUp={() => {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n\n this.setState({\n mouseDownInfo: null\n });\n }}\n ref={this.parentRef}\n style={noticeStyle} >\n
\n \n \n\n {/* First row */}\n \n {/* Left column */}\n \n\n {this.props.firstRow}\n\n {/* Right column */}\n {!this.props.hideRightInfo &&\n \n }\n \n\n {this.props.children}\n\n {!this.props.smaller && this.props.bottomRow ? \n this.props.bottomRow\n : null}\n\n \n
\n {/* Logo */}\n {!this.props.hideLogo &&\n (\n !Config.config.prideTheme ?\n \n :\n \n )\n }\n\n \n \n {this.props.noticeTitle}\n \n\n {this.props.firstColumn}\n \n \n {/* Time left */}\n {this.props.timed ? ( \n this.toggleManualPause()}\n className=\"sponsorSkipObject sponsorSkipNoticeTimeLeft\">\n\n {this.getCountdownElements()}\n\n \n ) : \"\"}\n \n\n {/* Close button */}\n this.close()}>\n \n
\n
\n\n {/* Add as a hidden table to keep the height constant */}\n {this.props.smaller && this.props.bottomRow ? \n \n \n {this.props.bottomRow}\n \n
\n : null}\n
\n );\n }\n\n getCountdownElements(): React.ReactElement[] {\n return [(\n \n {chrome.i18n.getMessage(\"NoticeTimeAfterSkip\").replace(\"{seconds}\", Math.ceil(this.state.countdownTime).toString())}\n \n ),(\n {chrome.i18n.getMessage(\"paused\")}\n ),(\n {chrome.i18n.getMessage(\"manualPaused\")}\n )];\n }\n\n onMouseEnter(event: React.MouseEvent): void {\n if (this.props.onMouseEnter) this.props.onMouseEnter(event);\n\n this.fadedMouseEnter();\n this.timerMouseEnter();\n }\n\n fadedMouseEnter(): void {\n if (this.state.startFaded) {\n this.setState({\n startFaded: false\n });\n }\n }\n\n timerMouseEnter(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.pauseCountdown();\n\n this.setState({\n mouseHovering: true\n });\n }\n\n timerMouseLeave(): void {\n if (this.state.countdownMode === CountdownMode.Stopped) return;\n\n this.startCountdown();\n\n this.setState({\n mouseHovering: false\n });\n }\n\n toggleManualPause(): void {\n this.setState({\n countdownMode: this.state.countdownMode === CountdownMode.Stopped ? CountdownMode.Timer : CountdownMode.Stopped\n }, () => {\n if (this.state.countdownMode === CountdownMode.Stopped || this.state.mouseHovering) {\n this.pauseCountdown();\n } else {\n this.startCountdown();\n }\n });\n }\n\n //called every second to lower the countdown before hiding the notice\n countdown(): void {\n if (!this.props.timed) return;\n\n const countdownTime = Math.min(this.state.countdownTime - 1, this.state.maxCountdownTime());\n\n if (countdownTime <= 0) {\n //remove this from setInterval\n clearInterval(this.countdownInterval);\n\n //time to close this notice\n this.close();\n\n return;\n }\n\n if (countdownTime == 3 && this.props.fadeOut) {\n //start fade out animation\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice?.style.removeProperty(\"animation\");\n notice?.classList.add(\"sponsorSkipNoticeFadeOut\");\n }\n\n this.setState({\n countdownTime\n })\n }\n \n removeFadeAnimation(): void {\n //remove the fade out class if it exists\n const notice = document.getElementById(\"sponsorSkipNotice\" + this.idSuffix);\n notice.classList.remove(\"sponsorSkipNoticeFadeOut\");\n notice.style.animation = \"none\";\n }\n\n pauseCountdown(): void {\n if (!this.props.timed || this.props.dontPauseCountdown) return;\n\n //remove setInterval\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n this.countdownInterval = null;\n\n //reset countdown and inform the user\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: this.state.countdownMode === CountdownMode.Timer ? CountdownMode.Paused : this.state.countdownMode\n });\n \n this.removeFadeAnimation();\n }\n\n startCountdown(): void {\n if (!this.props.timed) return;\n\n //if it has already started, don't start it again\n if (this.countdownInterval !== null) return;\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.setupInterval();\n }\n\n setupInterval(): void {\n if (this.countdownInterval) clearInterval(this.countdownInterval);\n\n this.countdownInterval = setInterval(this.countdown.bind(this), 1000);\n }\n\n resetCountdown(): void {\n if (!this.props.timed) return;\n\n this.setupInterval();\n\n this.setState({\n countdownTime: this.state.maxCountdownTime(),\n countdownMode: CountdownMode.Timer\n });\n\n this.removeFadeAnimation();\n }\n \n /**\n * @param silent If true, the close listener will not be called\n */\n close(silent?: boolean): void {\n //remove setInterval\n if (this.countdownInterval !== null) clearInterval(this.countdownInterval);\n\n if (!silent) this.props.closeListener();\n }\n\n addNoticeInfoMessage(message: string, message2 = \"\"): void {\n //TODO: Replace\n\n const previousInfoMessage = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix);\n if (previousInfoMessage != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage);\n }\n\n const previousInfoMessage2 = document.getElementById(\"sponsorTimesInfoMessage\" + this.idSuffix + \"2\");\n if (previousInfoMessage2 != null) {\n //remove it\n document.getElementById(\"sponsorSkipNotice\" + this.idSuffix).removeChild(previousInfoMessage2);\n }\n \n //add info\n const thanksForVotingText = document.createElement(\"p\");\n thanksForVotingText.id = \"sponsorTimesInfoMessage\" + this.idSuffix;\n thanksForVotingText.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText.innerText = message;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n \n if (message2 !== undefined) {\n const thanksForVotingText2 = document.createElement(\"p\");\n thanksForVotingText2.id = \"sponsorTimesInfoMessage\" + this.idSuffix + \"2\";\n thanksForVotingText2.className = \"sponsorTimesInfoMessage\";\n thanksForVotingText2.innerText = message2;\n\n //add element to div\n document.querySelector(\"#sponsorSkipNotice\" + this.idSuffix + \" > tbody\").insertBefore(thanksForVotingText2, document.getElementById(\"sponsorSkipNoticeSpacer\" + this.idSuffix));\n }\n }\n\n getElement(): React.RefObject {\n return this.parentRef;\n }\n\n componentWillUnmount(): void {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n\n // For dragging around notice\n handleMouseMove(e: MouseEvent): void {\n if (this.state.mouseDownInfo && e.buttons === 1) {\n const [mouseX, mouseY] = [e.clientX, e.clientY];\n\n const deltaX = mouseX - this.state.mouseDownInfo.x;\n const deltaY = mouseY - this.state.mouseDownInfo.y;\n\n if (deltaX > 0 || deltaY > 0) this.setState({ mouseMoved: true });\n\n const element = this.parentRef.current;\n const parent = element.parentElement.parentElement;\n this.setState({\n right: Math.min(parent.clientWidth - element.clientWidth - bounds[2], Math.max(bounds[0], this.state.mouseDownInfo.right - deltaX)),\n bottom: Math.min(parent.clientHeight - element.clientHeight - bounds[3], Math.max(bounds[1], this.state.mouseDownInfo.bottom - deltaY))\n });\n } else {\n document.removeEventListener(\"mousemove\", this.handleMouseMoveBinded);\n }\n }\n}\n\nexport default NoticeComponent;\n","import * as React from \"react\";\n\nexport interface NoticeTextSelectionProps {\n icon?: string;\n text: string;\n idSuffix: string;\n onClick?: (event: React.MouseEvent) => unknown;\n children?: React.ReactNode;\n}\n\nexport interface NoticeTextSelectionState {\n\n}\n\nclass NoticeTextSelectionComponent extends React.Component {\n\n constructor(props: NoticeTextSelectionProps) {\n super(props);\n }\n\n render(): React.ReactElement {\n const style: React.CSSProperties = {};\n if (this.props.onClick) {\n style.cursor = \"pointer\";\n style.textDecoration = \"underline\"\n }\n\n return (\n \n \n \n {this.props.icon ? \n \n : null}\n\n \n {this.getTextElements(this.props.text)}\n \n \n \n );\n }\n\n private getTextElements(text: string): Array {\n const elements: Array = [];\n const textParts = text.split(/(?=\\s+)/);\n for (const textPart of textParts) {\n if (textPart.match(/^\\s*http/)) {\n elements.push(\n \n {textPart}\n \n );\n } else {\n elements.push(textPart);\n }\n\n }\n\n return elements;\n }\n}\n\nexport default NoticeTextSelectionComponent;","import * as React from \"react\";\n\nexport interface SelectorOption {\n label: string;\n}\n\nexport interface SelectorProps { \n id: string;\n options: SelectorOption[];\n onChange: (value: string) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport interface SelectorState {\n\n}\n\nclass SelectorComponent extends React.Component {\n\n constructor(props: SelectorProps) {\n super(props);\n\n // Setup state\n this.state = {\n \n }\n }\n\n render(): React.ReactElement {\n return (\n
0 ? \"inherit\" : \"none\"}}\n className=\"sbSelector\">\n
\n {this.getOptions()}\n
\n
\n );\n }\n\n getOptions(): React.ReactElement[] {\n const result: React.ReactElement[] = [];\n for (const option of this.props.options) {\n result.push(\n
{\n e.stopPropagation();\n this.props.onChange(option.label);\n }}\n key={option.label}>\n {option.label}\n
\n );\n }\n\n return result;\n }\n}\n\nexport default SelectorComponent;","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\"\nimport { Category, ContentContainer, SponsorTime, NoticeVisibilityMode, ActionType, SponsorSourceType, SegmentUUID } from \"../types\";\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport Utils from \"../utils\";\nconst utils = new Utils();\nimport { getSkippingText, getUpcomingText, getVoteText } from \"../utils/categoryUtils\";\n\nimport ThumbsUpSvg from \"../svg-icons/thumbs_up_svg\";\nimport ThumbsDownSvg from \"../svg-icons/thumbs_down_svg\";\nimport PencilSvg from \"../svg-icons/pencil_svg\";\nimport { downvoteButtonColor, SkipNoticeAction } from \"../utils/noticeUtils\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { getFormattedTime } from \"../../maze-utils/src/formating\";\nimport { getCurrentTime, getVideo } from \"../../maze-utils/src/video\";\n\nenum SkipButtonState {\n Undo, // Unskip\n Redo, // Reskip\n Start // Skip\n}\n\nexport interface SkipNoticeProps {\n segments: SponsorTime[];\n\n autoSkip: boolean;\n startReskip?: boolean;\n upcomingNotice?: boolean;\n voteNotice?: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n closeListener: () => void;\n showKeybindHint?: boolean;\n smaller: boolean;\n fadeIn: boolean;\n maxCountdownTime?: number;\n\n componentDidMount?: () => void;\n\n unskipTime?: number;\n}\n\nexport interface SkipNoticeState {\n noticeTitle?: string;\n\n messages?: string[];\n messageOnClick?: (event: React.MouseEvent) => unknown;\n\n countdownTime?: number;\n maxCountdownTime?: () => number;\n countdownText?: string;\n\n skipButtonStates?: SkipButtonState[];\n skipButtonCallbacks?: Array<(buttonIndex: number, index: number, forceSeek: boolean) => void>;\n showSkipButton?: boolean[];\n\n editing?: boolean;\n choosingCategory?: boolean;\n thanksForVotingText?: string; //null until the voting buttons should be hidden\n\n actionState?: SkipNoticeAction;\n\n showKeybindHint?: boolean;\n\n smaller?: boolean;\n\n voted?: SkipNoticeAction[];\n copied?: SkipNoticeAction[];\n\n}\n\nclass SkipNoticeComponent extends React.Component {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n amountOfPreviousNotices: number;\n showInSecondSlot: boolean;\n\n idSuffix: string;\n\n noticeRef: React.MutableRefObject;\n categoryOptionRef: React.RefObject;\n\n selectedColor: string;\n unselectedColor: string;\n lockedColor: string;\n\n // Used to update on config change\n configListener: () => void;\n\n constructor(props: SkipNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n this.categoryOptionRef = React.createRef();\n\n this.segments = props.segments;\n this.autoSkip = props.autoSkip;\n this.contentContainer = props.contentContainer;\n\n const noticeTitle = this.props.voteNotice ? getVoteText(this.segments) : !this.props.upcomingNotice ? getSkippingText(this.segments, this.props.autoSkip) : getUpcomingText(this.segments);\n\n const previousSkipNotices = document.querySelectorAll(\".sponsorSkipNoticeParent:not(.sponsorSkipUpcomingNotice)\");\n this.amountOfPreviousNotices = previousSkipNotices.length;\n // If there is at least one already in the first slot\n this.showInSecondSlot = previousSkipNotices.length > 0 && [...previousSkipNotices].some(notice => !notice.classList.contains(\"secondSkipNotice\"));\n\n // Sort segments\n if (this.segments.length > 1) {\n this.segments.sort((a, b) => a.segment[0] - b.segment[0]);\n }\n\n // This is the suffix added at the end of every id\n for (const segment of this.segments) {\n this.idSuffix += segment.UUID;\n }\n this.idSuffix += this.amountOfPreviousNotices;\n\n this.selectedColor = Config.config.colorPalette.red;\n this.unselectedColor = Config.config.colorPalette.white;\n this.lockedColor = Config.config.colorPalette.locked;\n\n const isMuteSegment = this.segments[0].actionType === ActionType.Mute;\n const maxCountdownTime = props.maxCountdownTime ? () => props.maxCountdownTime : (isMuteSegment ? this.getFullDurationCountdown(0) : () => Config.config.skipNoticeDuration);\n\n const defaultSkipButtonState = this.props.startReskip ? SkipButtonState.Redo : SkipButtonState.Undo;\n const skipButtonStates = [defaultSkipButtonState, isMuteSegment ? SkipButtonState.Start : defaultSkipButtonState];\n\n const defaultSkipButtonCallback = this.props.startReskip ? this.reskip.bind(this) : this.unskip.bind(this);\n const skipButtonCallbacks = [defaultSkipButtonCallback, isMuteSegment ? this.reskip.bind(this) : defaultSkipButtonCallback];\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n messageOnClick: null,\n\n //the countdown until this notice closes\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n countdownText: null,\n\n skipButtonStates,\n skipButtonCallbacks,\n showSkipButton: [true, true],\n\n editing: false,\n choosingCategory: false,\n thanksForVotingText: null,\n\n actionState: SkipNoticeAction.None,\n\n showKeybindHint: this.props.showKeybindHint ?? true,\n\n smaller: this.props.smaller ?? false,\n\n // Keep track of what segment the user interacted with.\n voted: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n copied: new Array(this.props.segments.length).fill(SkipNoticeAction.None),\n }\n\n if (!this.autoSkip) {\n // Assume manual skip is only skipping 1 submission\n Object.assign(this.state, this.getUnskippedModeInfo(null, 0, SkipButtonState.Start));\n }\n }\n\n render(): React.ReactElement {\n const noticeStyle: React.CSSProperties = { }\n if (this.contentContainer().onMobileYouTube) {\n noticeStyle.bottom = \"4em\";\n noticeStyle.transform = \"scale(0.8) translate(10%, 10%)\";\n }\n\n const firstColumn = this.getSkipButton(0);\n\n return (\n = NoticeVisibilityMode.FadedForAll\n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.FadedForAutoSkip && this.autoSkip)}\n timed={true}\n maxCountdownTime={this.state.maxCountdownTime}\n style={noticeStyle}\n biggerCloseButton={this.contentContainer().onMobileYouTube}\n ref={this.noticeRef}\n closeListener={() => this.closeListener()}\n smaller={this.state.smaller}\n logoFill={Config.config.barTypes[this.segments[0].category].color}\n limitWidth={true}\n firstColumn={firstColumn}\n dontPauseCountdown={!!this.props.upcomingNotice}\n bottomRow={[...this.getMessageBoxes(), ...this.getBottomRow() ]}\n extraClass={this.props.upcomingNotice ? \"sponsorSkipUpcomingNotice\" : \"\"}\n onMouseEnter={() => this.onMouseEnter() } >\n \n );\n }\n\n componentDidMount(): void {\n if (this.props.componentDidMount) {\n this.props.componentDidMount();\n }\n }\n\n getBottomRow(): JSX.Element[] {\n return [\n /* Bottom Row */\n (\n\n {/* Vote Button Container */}\n {!this.state.thanksForVotingText ?\n \n\n {/* Upvote Button */}\n
this.prepAction(SkipNoticeAction.Upvote)}>\n \n
\n\n {/* Report Button */}\n
this.prepAction(SkipNoticeAction.Downvote)}>\n \n
\n\n {/* Copy and Downvote Button */}\n {\n !this.props.voteNotice &&\n
this.openEditingOptions()}>\n \n
\n }\n \n\n :\n\n \n\n {/* Submitted string */}\n \n {this.state.thanksForVotingText}\n \n\n {/* Continue Voting Button */}\n \n \n }\n\n {/* Unskip/Skip Button */}\n {!this.props.voteNotice && (!this.props.smaller || this.segments[0].actionType === ActionType.Mute)\n ? this.getSkipButton(1) : null}\n\n {/* Never show button */}\n {!this.autoSkip || this.props.startReskip || this.props.voteNotice ? \"\" :\n \n \n \n }\n ),\n\n /* Edit Segments Row */\n (this.state.editing && !this.state.thanksForVotingText && !(this.state.choosingCategory || this.state.actionState === SkipNoticeAction.CopyDownvote) &&\n \n \n\n {/* Copy Segment */}\n \n\n {/* Category vote */}\n \n \n \n ),\n\n /* Category Chooser Row */\n (this.state.choosingCategory && !this.state.thanksForVotingText &&\n \n \n {/* Category Selector */}\n \n\n {/* Submit Button */}\n {this.segments.length === 1 &&\n \n }\n \n \n ),\n\n /* Segment Chooser Row */\n (this.state.actionState !== SkipNoticeAction.None && this.segments.length > 1 && !this.state.thanksForVotingText &&\n \n \n {this.getSubmissionChooser()}\n \n \n )\n ];\n }\n\n getSkipButton(buttonIndex: number): JSX.Element {\n if (this.state.showSkipButton[buttonIndex] && (this.segments.length > 1\n || this.segments[0].actionType !== ActionType.Poi\n || this.props.unskipTime)) {\n\n const forceSeek = buttonIndex === 1 && this.segments[0].actionType === ActionType.Mute;\n\n const style: React.CSSProperties = {\n marginLeft: \"4px\",\n color: ([SkipNoticeAction.Unskip0, SkipNoticeAction.Unskip1].includes(this.state.actionState))\n ? this.selectedColor : this.unselectedColor\n };\n if (this.contentContainer().onMobileYouTube) {\n style.padding = \"20px\";\n style.minWidth = \"100px\";\n }\n\n const showSkipButton = (buttonIndex !== 0 || this.props.smaller || !this.props.voteNotice || this.segments[0].actionType === ActionType.Mute) && !this.props.upcomingNotice;\n\n return (\n \n \n \n );\n }\n return null;\n }\n\n getSubmissionChooser(): JSX.Element[] {\n const elements: JSX.Element[] = [];\n for (let i = 0; i < this.segments.length; i++) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getSubmissionChooserOpacity(index: number): number {\n const isUpvote = this.state.actionState === SkipNoticeAction.Upvote;\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldBeGray: boolean = (isUpvote && this.state.voted[index] == SkipNoticeAction.Upvote) ||\n (isDownvote && this.state.voted[index] == SkipNoticeAction.Downvote) ||\n (isCopyDownvote && this.state.copied[index] == SkipNoticeAction.CopyDownvote);\n\n return shouldBeGray ? 0.35 : 1;\n }\n\n getSubmissionChooserColor(index: number): string {\n const isDownvote = this.state.actionState == SkipNoticeAction.Downvote;\n const isCopyDownvote = this.state.actionState == SkipNoticeAction.CopyDownvote;\n const shouldWarnUser = Config.config.isVip && (isDownvote || isCopyDownvote)\n && this.segments[index].locked === 1;\n\n return shouldWarnUser ? this.lockedColor : this.unselectedColor;\n }\n\n onMouseEnter(): void {\n if (this.state.smaller && !this.props.upcomingNotice) {\n this.setState({\n smaller: false\n });\n }\n }\n\n getMessageBoxes(): JSX.Element[] {\n if (this.state.messages.length === 0) {\n // Add a spacer if there is no text\n return [\n \n \n ];\n }\n\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n \n \n \n \n )\n }\n\n return elements;\n }\n\n prepAction(action: SkipNoticeAction): void {\n if (this.segments.length === 1) {\n this.performAction(0, action);\n } else {\n if (this.state.smaller) {\n this.setState({\n smaller: false\n });\n\n this.noticeRef.current.fadedMouseEnter();\n this.noticeRef.current.resetCountdown();\n }\n\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.resetStateToStart();\n break;\n case SkipNoticeAction.Upvote:\n this.resetStateToStart(SkipNoticeAction.Upvote);\n break;\n case SkipNoticeAction.Downvote:\n this.resetStateToStart(SkipNoticeAction.Downvote);\n break;\n case SkipNoticeAction.CategoryVote:\n this.resetStateToStart(SkipNoticeAction.CategoryVote, true, true);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.resetStateToStart(SkipNoticeAction.CopyDownvote, true);\n break;\n case SkipNoticeAction.Unskip0:\n this.resetStateToStart(SkipNoticeAction.Unskip0);\n break;\n case SkipNoticeAction.Unskip1:\n this.resetStateToStart(SkipNoticeAction.Unskip1);\n break;\n }\n }\n }\n\n /**\n * Performs the action from the current state\n *\n * @param index\n */\n performAction(index: number, action?: SkipNoticeAction): void {\n switch (action ?? this.state.actionState) {\n case SkipNoticeAction.None:\n this.noAction(index);\n break;\n case SkipNoticeAction.Upvote:\n this.upvote(index);\n break;\n case SkipNoticeAction.Downvote:\n this.downvote(index);\n break;\n case SkipNoticeAction.CategoryVote:\n this.categoryVote(index);\n break;\n case SkipNoticeAction.CopyDownvote:\n this.copyDownvote(index);\n break;\n case SkipNoticeAction.Unskip0:\n this.unskipAction(0, index, false);\n break;\n case SkipNoticeAction.Unskip1:\n this.unskipAction(1, index, true);\n break;\n default:\n this.resetStateToStart();\n break;\n }\n }\n\n noAction(index: number): void {\n const voted = this.state.voted;\n voted[index] = SkipNoticeAction.None;\n\n this.setState({\n voted\n });\n }\n\n upvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n this.contentContainer().vote(1, this.segments[index].UUID, undefined, this);\n }\n\n downvote(index: number): void {\n if (this.segments.length === 1) this.resetStateToStart();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n }\n\n categoryVote(index: number): void {\n this.contentContainer().vote(undefined, this.segments[index].UUID, this.categoryOptionRef.current.value as Category, this)\n }\n\n copyDownvote(index: number): void {\n const sponsorVideoID = this.props.contentContainer().sponsorVideoID;\n const sponsorTimesSubmitting : SponsorTime = {\n segment: this.segments[index].segment,\n UUID: generateUserID() as SegmentUUID,\n category: this.segments[index].category,\n actionType: this.segments[index].actionType,\n source: SponsorSourceType.Local\n };\n\n const segmentTimes = Config.local.unsubmittedSegments[sponsorVideoID] || [];\n segmentTimes.push(sponsorTimesSubmitting);\n Config.local.unsubmittedSegments[sponsorVideoID] = segmentTimes;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().sponsorTimesSubmitting.push(sponsorTimesSubmitting);\n this.props.contentContainer().updatePreviewBar();\n this.props.contentContainer().resetSponsorSubmissionNotice();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n this.contentContainer().vote(0, this.segments[index].UUID, undefined, this);\n\n const copied = this.state.copied;\n copied[index] = SkipNoticeAction.CopyDownvote;\n\n this.setState({\n copied\n });\n }\n\n unskipAction(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.state.skipButtonCallbacks[buttonIndex](buttonIndex, index, forceSeek);\n }\n\n openEditingOptions(): void {\n this.resetStateToStart(undefined, true);\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [];\n\n const categories = (CompileConfig.categoryList.filter((cat => CompileConfig.categorySupport[cat].includes(ActionType.Skip)))) as Category[];\n for (const category of categories) {\n elements.push(\n \n );\n }\n return elements;\n }\n\n getCategoryNameClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\"\n }\n\n unskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().unskipSponsorTime(this.segments[index], this.props.unskipTime, forceSeek, this.props.voteNotice);\n\n this.unskippedMode(buttonIndex, index, this.segments[0].actionType === ActionType.Poi ? SkipButtonState.Undo : SkipButtonState.Redo);\n }\n\n reskip(buttonIndex: number, index: number, forceSeek: boolean): void {\n this.contentContainer().reskipSponsorTime(this.segments[index], forceSeek);\n this.reskippedMode(buttonIndex);\n }\n\n reskippedMode(buttonIndex: number): void {\n const skipButtonStates = this.state.skipButtonStates;\n skipButtonStates[buttonIndex] = SkipButtonState.Undo;\n\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n skipButtonCallbacks[buttonIndex] = this.unskip.bind(this);\n\n const newState: SkipNoticeState = {\n skipButtonStates,\n skipButtonCallbacks,\n\n maxCountdownTime: () => Config.config.skipNoticeDuration,\n countdownTime: Config.config.skipNoticeDuration\n };\n\n //reset countdown\n this.setState(newState, () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n /** Sets up notice to be not skipped yet */\n unskippedMode(buttonIndex: number, index: number, skipButtonState: SkipButtonState): void {\n //setup new callback and reset countdown\n this.setState(this.getUnskippedModeInfo(buttonIndex, index, skipButtonState), () => {\n this.noticeRef.current.resetCountdown();\n });\n }\n\n getUnskippedModeInfo(buttonIndex: number, index: number, skipButtonState: SkipButtonState): SkipNoticeState {\n const changeCountdown = !this.props.voteNotice && this.segments[index].actionType !== ActionType.Poi;\n\n const maxCountdownTime = changeCountdown ?\n this.getFullDurationCountdown(index) : this.state.maxCountdownTime;\n\n const skipButtonStates = this.state.skipButtonStates;\n const skipButtonCallbacks = this.state.skipButtonCallbacks;\n if (buttonIndex === null) {\n for (let i = 0; i < skipButtonStates.length; i++) {\n skipButtonStates[i] = skipButtonState;\n skipButtonCallbacks[i] = this.reskip.bind(this);\n }\n } else {\n skipButtonStates[buttonIndex] = skipButtonState;\n skipButtonCallbacks[buttonIndex] = this.reskip.bind(this);\n\n if (buttonIndex === 1) {\n // Trigger both to move at once\n skipButtonStates[0] = SkipButtonState.Redo;\n skipButtonCallbacks[0] = this.reskip.bind(this);\n }\n }\n\n return {\n skipButtonStates,\n skipButtonCallbacks,\n // change max duration to however much of the sponsor is left\n maxCountdownTime,\n countdownTime: maxCountdownTime(),\n showSkipButton: buttonIndex === 1 ? [true, true] : this.state.showSkipButton\n } as SkipNoticeState;\n }\n\n getFullDurationCountdown(index: number): () => number {\n return () => {\n const sponsorTime = this.segments[index];\n const duration = Math.round((sponsorTime.segment[1] - (getCurrentTime() ?? 0)) * (1 / (getVideo()?.playbackRate ?? 1)));\n\n return Math.max(duration, Config.config.skipNoticeDuration);\n };\n }\n\n afterVote(segment: SponsorTime, type: number, category: Category): void {\n const index = utils.getSponsorIndexFromUUID(this.segments, segment.UUID);\n const wikiLinkText = CompileConfig.wikiLinks[segment.category];\n\n const voted = this.state.voted;\n switch (type) {\n case 0:\n this.clearConfigListener();\n this.setNoticeInfoMessageWithOnClick(() => window.open(wikiLinkText), chrome.i18n.getMessage(\"OpenCategoryWikiPage\"));\n\n voted[index] = SkipNoticeAction.Downvote;\n break;\n case 1:\n voted[index] = SkipNoticeAction.Upvote;\n break;\n case 20:\n voted[index] = SkipNoticeAction.None;\n break;\n }\n\n this.setState({\n voted\n });\n\n this.addVoteButtonInfo(chrome.i18n.getMessage(\"voted\"));\n\n if (segment && category) {\n // This is the segment inside the skip notice\n this.segments[index].category = category;\n }\n }\n\n setNoticeInfoMessageWithOnClick(onClick: (event: React.MouseEvent) => unknown, ...messages: string[]): void {\n this.setState({\n messages,\n messageOnClick: (event) => onClick(event)\n });\n }\n\n setNoticeInfoMessage(...messages: string[]): void {\n this.setState({\n messages\n });\n }\n\n addVoteButtonInfo(message: string): void {\n this.setState({\n thanksForVotingText: message\n });\n }\n\n resetVoteButtonInfo(): void {\n this.setState({\n thanksForVotingText: null\n });\n }\n\n closeListener(): void {\n this.clearConfigListener();\n\n this.props.closeListener();\n }\n\n clearConfigListener(): void {\n if (this.configListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configListener), 1);\n this.configListener = null;\n }\n }\n\n unmutedListener(time: number): void {\n if (this.props.segments.length === 1\n && this.props.segments[0].actionType === ActionType.Mute\n && time >= this.props.segments[0].segment[1]) {\n this.setState({\n showSkipButton: [false, true]\n });\n }\n }\n\n resetStateToStart(actionState: SkipNoticeAction = SkipNoticeAction.None, editing = false, choosingCategory = false): void {\n this.setState({\n actionState: actionState,\n editing: editing,\n choosingCategory: choosingCategory,\n thanksForVotingText: null,\n messages: []\n });\n }\n\n private getSkipButtonText(buttonIndex: number, forceType?: ActionType): string {\n switch (this.state.skipButtonStates[buttonIndex]) {\n case SkipButtonState.Undo:\n return this.getUndoText(forceType);\n case SkipButtonState.Redo:\n return this.getRedoText(forceType);\n case SkipButtonState.Start:\n return this.getStartText(forceType);\n }\n }\n\n private getUndoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"unmute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"unskip\");\n }\n }\n }\n\n private getRedoText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"reskip\");\n }\n }\n }\n\n private getStartText(forceType?: ActionType): string {\n const actionType = forceType || this.segments[0].actionType;\n switch (actionType) {\n case ActionType.Mute: {\n return chrome.i18n.getMessage(\"mute\");\n }\n case ActionType.Skip:\n default: {\n return chrome.i18n.getMessage(\"skip\");\n }\n }\n }\n}\n\nexport default SkipNoticeComponent;\n","import * as React from \"react\";\nimport * as CompileConfig from \"../../config.json\";\nimport Config from \"../config\";\nimport { ActionType, Category, ChannelIDStatus, ContentContainer, SponsorHideType, SponsorTime } from \"../types\";\nimport SubmissionNoticeComponent from \"./SubmissionNoticeComponent\";\nimport { RectangleTooltip } from \"../render/RectangleTooltip\";\nimport SelectorComponent, { SelectorOption } from \"./SelectorComponent\";\nimport { DEFAULT_CATEGORY } from \"../utils/categoryUtils\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport { defaultPreviewTime } from \"../utils/constants\";\nimport { getVideo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { Tooltip } from \"../render/Tooltip\";\nimport { logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface SponsorTimeEditProps {\n index: number;\n\n idSuffix: string;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n submissionNotice: SubmissionNoticeComponent;\n categoryList?: Category[];\n categoryChangeListener?: (index: number, category: Category) => void;\n children?: React.ReactNode;\n}\n\nexport interface SponsorTimeEditState {\n editing: boolean;\n sponsorTimeEdits: [string, string];\n selectedCategory: Category;\n selectedActionType: ActionType;\n description: string;\n suggestedNames: SelectorOption[];\n chapterNameSelectorOpen: boolean;\n chapterNameSelectorHovering: boolean;\n}\n\nconst categoryNamesGrams: string[] = [].concat(...CompileConfig.categoryList.filter((name) => ![\"chapter\", \"intro\"].includes(name))\n .map((name) => chrome.i18n.getMessage(\"category_\" + name).split(/\\/|\\s|-/)));\n\nclass SponsorTimeEditComponent extends React.Component {\n\n idSuffix: string;\n\n categoryOptionRef: React.RefObject;\n actionTypeOptionRef: React.RefObject;\n descriptionOptionRef: React.RefObject;\n\n configUpdateListener: () => void;\n\n previousSkipType: ActionType;\n // Used when selecting POI or Full\n timesBeforeChanging: number[] = [];\n fullVideoWarningShown = false;\n categoryNameWarningShown = false;\n\n // For description auto-complete\n fetchingSuggestions: boolean;\n\n constructor(props: SponsorTimeEditProps) {\n super(props);\n\n this.categoryOptionRef = React.createRef();\n this.actionTypeOptionRef = React.createRef();\n this.descriptionOptionRef = React.createRef();\n\n this.idSuffix = this.props.idSuffix;\n this.previousSkipType = ActionType.Skip;\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.state = {\n editing: false,\n sponsorTimeEdits: [null, null],\n selectedCategory: sponsorTime.category ?? DEFAULT_CATEGORY as Category,\n selectedActionType: sponsorTime.actionType,\n description: sponsorTime.description || \"\",\n suggestedNames: [],\n chapterNameSelectorOpen: false,\n chapterNameSelectorHovering: false\n };\n }\n\n componentDidMount(): void {\n // Prevent inputs from triggering key events\n document.getElementById(\"sponsorTimeEditContainer\" + this.idSuffix).addEventListener('keydown', (e) => {\n e.stopPropagation();\n });\n\n // Prevent scrolling while changing times\n document.getElementById(\"sponsorTimesContainer\" + this.idSuffix).addEventListener('wheel', (e) => {\n if (this.state.editing) {\n e.preventDefault();\n }\n }, {passive: false});\n\n // Add as a config listener\n if (!this.configUpdateListener) {\n this.configUpdateListener = () => this.configUpdate();\n Config.configSyncListeners.push(this.configUpdate.bind(this));\n }\n\n this.checkToShowFullVideoWarning();\n }\n\n componentWillUnmount(): void {\n if (this.configUpdateListener) {\n Config.configSyncListeners.splice(Config.configSyncListeners.indexOf(this.configUpdate.bind(this)), 1);\n }\n }\n\n render(): React.ReactElement {\n this.checkToShowFullVideoWarning();\n this.checkToShowChapterWarning();\n\n const style: React.CSSProperties = {\n textAlign: \"center\"\n };\n\n if (this.props.index != 0) {\n style.marginTop = \"15px\";\n }\n\n const borderColor = this.state.selectedCategory ? Config.config.barTypes[this.state.selectedCategory]?.color : null;\n\n // Create time display\n let timeDisplay: JSX.Element;\n const timeDisplayStyle: React.CSSProperties = {};\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segment = sponsorTime.segment;\n if (this.state.selectedActionType === ActionType.Full) timeDisplayStyle.display = \"none\";\n if (this.state.editing) {\n timeDisplay = (\n
\n\n {this.state.selectedActionType !== ActionType.Poi ? (\n this.setTimeTo(0, 0)}>\n {chrome.i18n.getMessage(\"bracketStart\")}\n \n ): \"\"}\n\n this.setTimeToNow(0)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(0, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(0, e, sponsorTime)}>\n \n\n {this.state.selectedActionType !== ActionType.Poi ? (\n \n \n {\" \" + chrome.i18n.getMessage(\"to\") + \" \"}\n \n\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onChange={(e) => this.handleOnChange(1, e, sponsorTime, e.target.value)}\n onWheel={(e) => this.changeTimesWhenScrolling(1, e, sponsorTime)}>\n \n\n this.setTimeToNow(1)}>\n {chrome.i18n.getMessage(\"bracketNow\")}\n \n\n this.setTimeToEnd()}>\n {chrome.i18n.getMessage(\"bracketEnd\")}\n \n \n ): \"\"}\n
\n );\n } else {\n timeDisplay = (\n \n
\n {getFormattedTime(segment[0], true) +\n ((!isNaN(segment[1]) && this.state.selectedActionType !== ActionType.Poi)\n ? \" \" + chrome.i18n.getMessage(\"to\") + \" \" + getFormattedTime(segment[1], true) : \"\")}\n
\n );\n }\n\n return (\n
\n \n {timeDisplay}\n\n {/* Category */}\n
\n \n\n {/* open in new tab */}\n \n \n \n
\n\n {/* Action Type */}\n {CompileConfig.categorySupport[sponsorTime.category] && \n (CompileConfig.categorySupport[sponsorTime.category]?.length > 1 \n || CompileConfig.categorySupport[sponsorTime.category]?.[0] === ActionType.Full) ? (\n
\n \n {\n const stopAnimation = AnimationUtils.applyLoadingAnimation(e.currentTarget, 0.4);\n stopAnimation();\n \n if (sponsorTime.hidden === SponsorHideType.Hidden) {\n sponsorTime.hidden = SponsorHideType.Visible;\n } else {\n sponsorTime.hidden = SponsorHideType.Hidden;\n }\n\n this.saveEditTimes();\n }}/>\n
\n ): \"\"}\n\n {/* Chapter Name */}\n {this.state.selectedActionType=== ActionType.Chapter ? (\n
this.setState({chapterNameSelectorOpen: false})}>\n e.stopPropagation()}\n onKeyUp={(e) => e.stopPropagation()}\n onContextMenu={(e) => e.stopPropagation()}\n onChange={(e) => this.descriptionUpdate(e.target.value)}\n onFocus={() => this.setState({chapterNameSelectorOpen: true})}>\n \n {this.state.description \n && (this.state.chapterNameSelectorOpen || this.state.chapterNameSelectorHovering) &&\n this.setState({chapterNameSelectorHovering: true})}\n onMouseLeave={() => this.setState({chapterNameSelectorHovering: false})}\n onChange={(v) => this.descriptionUpdate(v)}\n />\n }\n
\n ): \"\"}\n\n {/* Editing Tools */}\n\n
\n \n {chrome.i18n.getMessage(\"delete\")}\n \n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) \n && this.state.selectedActionType !== ActionType.Chapter ? (\n this.previewTime(e.ctrlKey, e.shiftKey)}>\n {chrome.i18n.getMessage(\"preview\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {chrome.i18n.getMessage(\"inspect\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && ![ActionType.Poi, ActionType.Full].includes(this.state.selectedActionType)) ? (\n this.previewTime(e.ctrlKey, e.shiftKey, true)}>\n {chrome.i18n.getMessage(\"End\")}\n \n ): \"\"}\n\n {(!isNaN(segment[1]) && this.state.selectedActionType != ActionType.Full) ? (\n \n {this.state.editing ? chrome.i18n.getMessage(\"save\") : chrome.i18n.getMessage(\"edit\")}\n \n ): \"\"}\n
\n\n
\n );\n }\n\n handleOnChange(index: number, e: React.ChangeEvent, sponsorTime: SponsorTime, targetValue: string): void {\n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n \n // check if change is small engough to show tooltip\n const before = getFormattedTimeToSeconds(sponsorTimeEdits[index]);\n const after = getFormattedTimeToSeconds(targetValue);\n const difference = Math.abs(before - after);\n if (0 < difference && difference < 0.5) this.showScrollToEditToolTip();\n\n sponsorTimeEdits[index] = targetValue;\n if (index === 0 && sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = targetValue;\n\n this.setState({sponsorTimeEdits}, () => this.saveEditTimes());\n }\n\n changeTimesWhenScrolling(index: number, e: React.WheelEvent, sponsorTime: SponsorTime): void {\n if (!Config.config.allowScrollingToEdit) return;\n let step = 0;\n // shift + ctrl = 1\n // ctrl = 0.1\n // default = 0.01\n // shift = 0.001\n if (e.shiftKey) {\n step = (e.ctrlKey) ? 1 : 0.001;\n } else {\n step = (e.ctrlKey) ? 0.1 : 0.01;\n }\n \n const sponsorTimeEdits = this.state.sponsorTimeEdits;\n let timeAsNumber = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[index]);\n if (timeAsNumber !== null && e.deltaY != 0) {\n if (e.deltaY < 0) {\n timeAsNumber += step;\n } else if (timeAsNumber >= step) {\n timeAsNumber -= step;\n } else {\n timeAsNumber = 0;\n }\n \n sponsorTimeEdits[index] = getFormattedTime(timeAsNumber, true);\n if (sponsorTime.actionType === ActionType.Poi) sponsorTimeEdits[1] = sponsorTimeEdits[0];\n\n this.setState({sponsorTimeEdits});\n this.saveEditTimes();\n }\n }\n\n showScrollToEditToolTip(): void {\n if (!Config.config.scrollToEditTimeUpdate && document.getElementById(\"sponsorRectangleTooltip\" + \"sponsorTimesContainer\" + this.idSuffix) === null) {\n this.showToolTip(chrome.i18n.getMessage(\"SponsorTimeEditScrollNewFeature\"), \"scrollToEdit\", () => { Config.config.scrollToEditTimeUpdate = true });\n }\n }\n\n showToolTip(text: string, id: string, buttonFunction?: () => void): boolean {\n const element = document.getElementById(\"sponsorTimesContainer\" + this.idSuffix);\n if (element) {\n const htmlId = `sponsorRectangleTooltip${id + this.idSuffix}`;\n if (!document.getElementById(htmlId)) {\n new RectangleTooltip({\n text,\n referenceNode: element.parentElement,\n prependElement: element,\n timeout: 15,\n bottomOffset: 0 + \"px\",\n leftOffset: -318 + \"px\",\n backgroundColor: \"rgba(28, 28, 28, 1.0)\",\n htmlId,\n buttonFunction,\n fontSize: \"14px\",\n maxHeight: \"200px\"\n });\n }\n\n return true;\n } else {\n return false;\n }\n }\n\n checkToShowFullVideoWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n const segmentDuration = sponsorTime.segment[1] - sponsorTime.segment[0];\n const videoPercentage = segmentDuration / getVideoDuration();\n\n if (videoPercentage > 0.6 && !this.fullVideoWarningShown \n && (sponsorTime.category === \"sponsor\" || sponsorTime.category === \"selfpromo\" || sponsorTime.category === \"chooseACategory\")) {\n if (this.showToolTip(chrome.i18n.getMessage(\"fullVideoTooltipWarning\"), \"fullVideoWarning\")) {\n this.fullVideoWarningShown = true;\n }\n }\n }\n\n checkToShowChapterWarning(): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n if (sponsorTime.actionType === ActionType.Chapter && sponsorTime.description\n && !this.categoryNameWarningShown\n && categoryNamesGrams.some(\n (category) => sponsorTime.description.toLowerCase().includes(category.toLowerCase()))) {\n if (this.showToolTip(chrome.i18n.getMessage(\"chapterNameTooltipWarning\"), \"chapterWarning\")) {\n this.categoryNameWarningShown = true;\n }\n }\n }\n\n getCategoryOptions(): React.ReactElement[] {\n const elements = [(\n \n )];\n\n for (const category of (this.props.categoryList ?? CompileConfig.categoryList)) {\n // If permission not loaded, treat it like we have permission except chapter\n const defaultBlockCategories = [\"chapter\"];\n const permission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[category as Category]);\n if ((defaultBlockCategories.includes(category) \n || (permission !== undefined && !Config.config.showCategoryWithoutPermission)) && !permission) continue;\n\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n getCategoryLockedClass(category: string): string {\n return this.props.contentContainer().lockedCategories.includes(category) ? \"sponsorBlockLockedColor\" : \"\";\n }\n\n categorySelectionChange(event: React.ChangeEvent): void {\n const chosenCategory = event.target.value as Category;\n this.setState({\n selectedCategory: chosenCategory\n });\n\n // See if show more categories was pressed\n if (chosenCategory !== DEFAULT_CATEGORY && !Config.config.categorySelections.some((category) => category.name === chosenCategory)) {\n event.target.value = DEFAULT_CATEGORY;\n \n // Alert that they have to enable this category first\n if (confirm(chrome.i18n.getMessage(\"enableThisCategoryFirst\")\n .replace(\"{0}\", chrome.i18n.getMessage(\"category_\" + chosenCategory)))) {\n // Open options page\n chrome.runtime.sendMessage({message: \"openConfig\", hash: \"behavior\"});\n }\n \n return;\n }\n\n // Hook update\n if (!Config.config.hookUpdate && chosenCategory === \"preview\") {\n Config.config.hookUpdate = true;\n\n const target = event.target.closest(\".sponsorSkipNotice tbody\");\n if (target) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"hookNewFeature\"),\n referenceNode: target.parentElement,\n prependElement: target as HTMLElement,\n bottomOffset: \"30px\",\n opacity: 0.9,\n timeout: 100\n });\n }\n }\n\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n this.handleReplacingLostTimes(chosenCategory, sponsorTime.actionType, sponsorTime);\n this.saveEditTimes();\n\n if (this.props.categoryChangeListener) {\n this.props.categoryChangeListener(this.props.index, chosenCategory);\n }\n }\n\n actionTypeSelectionChange(event: React.ChangeEvent): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n selectedActionType: event.target.value as ActionType\n });\n\n this.handleReplacingLostTimes(sponsorTime.category, event.target.value as ActionType, sponsorTime);\n this.saveEditTimes();\n }\n\n private handleReplacingLostTimes(category: Category, actionType: ActionType, segment: SponsorTime): void {\n if (CompileConfig.categorySupport[category]?.includes(ActionType.Poi)) {\n if (this.previousSkipType !== ActionType.Poi) {\n this.timesBeforeChanging = [null, segment.segment[1]];\n }\n\n this.setTimeTo(1, null);\n this.props.contentContainer().updateEditButtonsOnPlayer();\n\n if (this.props.contentContainer().sponsorTimesSubmitting\n .some((segment, i) => segment.category === category && i !== this.props.index)) {\n alert(chrome.i18n.getMessage(\"poiOnlyOneSegment\"));\n }\n\n this.previousSkipType = ActionType.Poi;\n } else if (CompileConfig.categorySupport[category]?.length === 1 \n && CompileConfig.categorySupport[category]?.[0] === ActionType.Full) {\n if (this.previousSkipType !== ActionType.Full) {\n this.timesBeforeChanging = [...segment.segment];\n }\n\n this.previousSkipType = ActionType.Full;\n } else if ((category === \"chooseACategory\" || ((CompileConfig.categorySupport[category]?.includes(ActionType.Skip)\n || CompileConfig.categorySupport[category]?.includes(ActionType.Chapter))\n && ![ActionType.Poi, ActionType.Full].includes(this.getNextActionType(category, actionType))))\n && this.previousSkipType !== ActionType.Skip) {\n if (this.timesBeforeChanging[0]) {\n this.setTimeTo(0, this.timesBeforeChanging[0]);\n }\n if (this.timesBeforeChanging[1]) {\n this.setTimeTo(1, this.timesBeforeChanging[1]);\n }\n\n this.previousSkipType = ActionType.Skip;\n }\n }\n\n getActionTypeOptions(sponsorTime: SponsorTime): React.ReactElement[] {\n const elements = [];\n\n for (const actionType of CompileConfig.categorySupport[sponsorTime.category]) {\n elements.push(\n \n );\n }\n\n return elements;\n }\n\n setTimeToNow(index: number): void {\n this.setTimeTo(index, this.props.contentContainer().getRealCurrentTime());\n }\n\n setTimeToEnd(): void {\n this.setTimeTo(1, getVideoDuration());\n }\n\n /**\n * @param index \n * @param time If null, will set time to the first index's time\n */\n setTimeTo(index: number, time: number): void {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n if (time === null) time = sponsorTime.segment[0];\n\n const addedTime = sponsorTime.segment.length === 1;\n sponsorTime.segment[index] = time;\n if (sponsorTime.actionType === ActionType.Poi) sponsorTime.segment[1] = time;\n\n if (addedTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n this.setState({\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n }, () => this.saveEditTimes());\n }\n\n toggleEditTime(): void {\n if (this.state.editing) {\n \n this.setState({\n editing: false\n });\n\n this.saveEditTimes(); \n } else {\n const sponsorTime = this.props.contentContainer().sponsorTimesSubmitting[this.props.index];\n\n this.setState({\n editing: true,\n sponsorTimeEdits: this.getFormattedSponsorTimesEdits(sponsorTime)\n });\n }\n }\n\n /** Returns an array in the sponsorTimeEdits form (formatted time string) from a normal seconds sponsor time */\n getFormattedSponsorTimesEdits(sponsorTime: SponsorTime): [string, string] {\n return [getFormattedTime(sponsorTime.segment[0], true),\n getFormattedTime(sponsorTime.segment[1], true)];\n }\n\n lastEditTime = 0;\n editTimeTimeout: NodeJS.Timeout | null = null;\n saveEditTimes(): void {\n // Rate limit edits\n const timeSinceLastEdit = Date.now() - this.lastEditTime;\n const rateLimitTime = 200;\n if (timeSinceLastEdit < rateLimitTime) {\n if (!this.editTimeTimeout) {\n this.editTimeTimeout = setTimeout(() => {\n this.saveEditTimes();\n }, rateLimitTime - timeSinceLastEdit)\n }\n\n return;\n }\n\n this.lastEditTime = Date.now();\n this.editTimeTimeout = null;\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n const category = this.categoryOptionRef.current.value as Category\n\n if (this.state.editing) {\n const startTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[0]);\n const endTime = getFormattedTimeToSeconds(this.state.sponsorTimeEdits[1]);\n\n // Change segment time only if the format was correct\n if (startTime !== null && endTime !== null) {\n const addingTime = sponsorTimesSubmitting[this.props.index].segment.length === 1;\n sponsorTimesSubmitting[this.props.index].segment = [startTime, endTime];\n\n if (addingTime) {\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n } else if (startTime !== null) {\n // Only start time is valid, still an incomplete segment\n sponsorTimesSubmitting[this.props.index].segment[0] = startTime;\n }\n } else if (this.state.sponsorTimeEdits[1] === null && category === \"outro\" && !sponsorTimesSubmitting[this.props.index].segment[1]) {\n sponsorTimesSubmitting[this.props.index].segment[1] = getVideoDuration();\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n\n sponsorTimesSubmitting[this.props.index].category = category;\n\n const actionType = this.getNextActionType(category, this.actionTypeOptionRef?.current?.value as ActionType);\n sponsorTimesSubmitting[this.props.index].actionType = actionType;\n this.setState({\n selectedActionType: actionType\n });\n\n const description = actionType === ActionType.Chapter ? this.descriptionOptionRef?.current?.value : \"\";\n sponsorTimesSubmitting[this.props.index].description = description;\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n\n if (sponsorTimesSubmitting[this.props.index].actionType === ActionType.Full \n && (sponsorTimesSubmitting[this.props.index].segment[0] !== 0 || sponsorTimesSubmitting[this.props.index].segment[1] !== 0)) {\n this.setTimeTo(0, 0);\n this.setTimeTo(1, 0);\n }\n }\n\n private getNextActionType(category: Category, actionType: ActionType): ActionType {\n return actionType && CompileConfig.categorySupport[category]?.includes(actionType) ? actionType\n : CompileConfig.categorySupport[category]?.[0] ?? ActionType.Skip\n }\n\n previewTime(ctrlPressed = false, shiftPressed = false, skipToEndTime = false): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n let seekTime = defaultPreviewTime;\n if (ctrlPressed) seekTime = 0.5;\n if (shiftPressed) seekTime = 0.25;\n\n const startTime = sponsorTimes[index].segment[0];\n const endTime = sponsorTimes[index].segment[1];\n\n // If segment starts at 0:00, start playback at the end of the segment\n const skipTime = (startTime === 0 || skipToEndTime) ? endTime : (startTime - (seekTime * getVideo().playbackRate));\n\n this.props.contentContainer().previewTime(skipTime, !skipToEndTime);\n }\n\n inspectTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n\n const skipTime = sponsorTimes[index].segment[0];\n\n this.props.contentContainer().previewTime(skipTime + 0.0001, false);\n }\n\n deleteTime(): void {\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n const index = this.props.index;\n const removingIncomplete = sponsorTimes[index].segment.length < 2;\n\n sponsorTimes.splice(index, 1);\n \n //save this\n if (sponsorTimes.length > 0) {\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimes;\n } else {\n delete Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.props.contentContainer().updatePreviewBar();\n \n //if they are all removed\n if (sponsorTimes.length == 0) {\n this.props.submissionNotice.cancel();\n } else {\n //update display\n this.props.submissionNotice.forceUpdate();\n }\n\n //if it is not a complete segment, or all are removed\n if (sponsorTimes.length === 0 || removingIncomplete) {\n //update video player\n this.props.contentContainer().updateEditButtonsOnPlayer();\n }\n }\n\n descriptionUpdate(description: string): void {\n this.setState({\n description\n }, () => {\n this.saveEditTimes();\n });\n\n if (!this.fetchingSuggestions) {\n this.fetchSuggestions(description);\n }\n }\n\n async fetchSuggestions(description: string): Promise {\n if (this.props.contentContainer().channelIDInfo.status !== ChannelIDStatus.Found) return;\n\n this.fetchingSuggestions = true;\n try {\n const result = await asyncRequestToServer(\"GET\", \"/api/chapterNames\", {\n description,\n channelID: this.props.contentContainer().channelIDInfo.id\n });\n if (result.ok) {\n const names = JSON.parse(result.responseText) as {description: string}[];\n this.setState({\n suggestedNames: names.map(n => ({\n label: n.description\n }))\n });\n } else if (result.status !== 404) {\n logRequest(result, \"SB\", \"chapter suggestion\")\n }\n } catch (e) {\n console.warn(\"[SB] Caught error while fetching chapter suggestions\", e);\n } finally {\n this.fetchingSuggestions = false;\n }\n }\n\n configUpdate(): void {\n this.forceUpdate();\n }\n}\n\nexport default SponsorTimeEditComponent;\n","import * as React from \"react\";\nimport Config from \"../config\"\nimport GenericNotice from \"../render/GenericNotice\";\nimport { Category, ContentContainer } from \"../types\";\nimport * as CompileConfig from \"../../config.json\";\n\nimport NoticeComponent from \"./NoticeComponent\";\nimport NoticeTextSelectionComponent from \"./NoticeTextSectionComponent\";\nimport SponsorTimeEditComponent from \"./SponsorTimeEditComponent\";\nimport { getGuidelineInfo } from \"../utils/constants\";\nimport { exportTimes } from \"../utils/exporter\";\nimport { getVideo, isCurrentTimeWrong } from \"../../maze-utils/src/video\";\n\nexport interface SubmissionNoticeProps { \n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => Promise;\n\n closeListener: () => void;\n}\n\nexport interface SubmissionNoticeState {\n noticeTitle: string;\n messages: string[];\n idSuffix: string;\n}\n\nclass SubmissionNoticeComponent extends React.Component {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n callback: () => unknown;\n\n noticeRef: React.MutableRefObject;\n timeEditRefs: React.RefObject[];\n\n videoObserver: MutationObserver;\n\n guidelinesReminder: GenericNotice;\n\n lastSegmentCount: number;\n\n constructor(props: SubmissionNoticeProps) {\n super(props);\n this.noticeRef = React.createRef();\n\n this.contentContainer = props.contentContainer;\n this.callback = props.callback;\n \n const noticeTitle = chrome.i18n.getMessage(\"confirmNoticeTitle\");\n\n this.lastSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n\n // Setup state\n this.state = {\n noticeTitle,\n messages: [],\n idSuffix: \"SubmissionNotice\"\n };\n }\n\n componentDidMount(): void {\n // Catch and rerender when the video size changes\n //TODO: Use ResizeObserver when it is supported in TypeScript\n this.videoObserver = new MutationObserver(() => {\n this.forceUpdate();\n });\n\n this.videoObserver.observe(getVideo(), {\n attributes: true\n });\n\n // Prevent zooming while changing times\n document.getElementById(\"sponsorSkipNoticeMiddleRow\" + this.state.idSuffix).addEventListener('wheel', function (event) {\n if (event.ctrlKey) {\n event.preventDefault();\n }\n }, {passive: false});\n }\n\n componentWillUnmount(): void {\n if (this.videoObserver) {\n this.videoObserver.disconnect();\n }\n }\n\n componentDidUpdate() {\n const currentSegmentCount = this.props.contentContainer().sponsorTimesSubmitting.length;\n if (currentSegmentCount > this.lastSegmentCount) {\n this.lastSegmentCount = currentSegmentCount;\n\n this.scrollToBottom();\n }\n }\n\n scrollToBottom() {\n const scrollElement = this.noticeRef.current.getElement().current.querySelector(\"#sponsorSkipNoticeMiddleRowSubmissionNotice\");\n scrollElement.scrollTo({\n top: scrollElement.scrollHeight + 1000\n });\n }\n\n render(): React.ReactElement {\n const sortButton = \n this.sortSegments()}\n title={chrome.i18n.getMessage(\"sortSegments\")}\n key=\"sortButton\"\n src={chrome.runtime.getURL(\"icons/sort.svg\")}>\n ;\n const exportButton = \n this.exportSegments()}\n title={chrome.i18n.getMessage(\"exportSegments\")}\n key=\"exportButton\"\n src={chrome.runtime.getURL(\"icons/export.svg\")}>\n ;\n return (\n \n\n {/* Text Boxes */}\n {this.getMessageBoxes()}\n\n {/* Sponsor Time List */}\n e.stopPropagation()}>\n \n {this.getSponsorTimeMessages()}\n \n \n\n {/* Last Row */}\n \n\n \n\n {/* Guidelines button */}\n \n\n {/* Submit Button */}\n \n \n \n\n \n );\n }\n\n getSponsorTimeMessages(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n this.timeEditRefs = [];\n\n const sponsorTimes = this.props.contentContainer().sponsorTimesSubmitting;\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n const timeRef = React.createRef();\n\n elements.push(\n \n \n );\n\n this.timeEditRefs.push(timeRef);\n }\n\n return elements;\n }\n\n getMessageBoxes(): JSX.Element[] | JSX.Element {\n const elements: JSX.Element[] = [];\n\n for (let i = 0; i < this.state.messages.length; i++) {\n elements.push(\n \n \n );\n }\n\n return elements;\n }\n\n cancel(): void {\n this.guidelinesReminder?.close();\n this.noticeRef.current.close(true);\n\n this.contentContainer().resetSponsorSubmissionNotice(false);\n\n this.props.closeListener();\n }\n\n submit(): void {\n if (isCurrentTimeWrong()) {\n alert(chrome.i18n.getMessage(\"submissionFailedServerSideAds\"));\n return;\n }\n\n // save all items\n for (const ref of this.timeEditRefs) {\n ref.current.saveEditTimes();\n }\n\n const sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"chooseACategory\") {\n alert(chrome.i18n.getMessage(\"youMustSelectACategory\"));\n return;\n }\n }\n\n // Check if any non music categories are being used on a music video\n if (this.contentContainer().videoInfo?.microformat?.playerMicroformatRenderer?.category === \"Music\") {\n for (const sponsorTime of sponsorTimesSubmitting) {\n if (sponsorTime.category === \"sponsor\") {\n if (!confirm(chrome.i18n.getMessage(\"nonMusicCategoryOnMusic\"))) return;\n\n break;\n }\n }\n }\n\n this.props.callback().then((success) => {\n if (success) {\n this.cancel();\n }\n });\n }\n\n sortSegments(): void {\n let sponsorTimesSubmitting = this.props.contentContainer().sponsorTimesSubmitting;\n sponsorTimesSubmitting = sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n\n Config.local.unsubmittedSegments[this.props.contentContainer().sponsorVideoID] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n this.forceUpdate();\n }\n\n exportSegments() {\n const sponsorTimesSubmitting = this.props.contentContainer()\n .sponsorTimesSubmitting.sort((a, b) => a.segment[0] - b.segment[0]);\n window.navigator.clipboard.writeText(exportTimes(sponsorTimesSubmitting));\n\n new GenericNotice(null, \"exportCopied\", {\n title: chrome.i18n.getMessage(`CopiedExclamation`),\n timed: true,\n maxCountdownTime: () => 0.6,\n referenceNode: document.querySelector(\".noticeLeftIcon\"),\n dontPauseCountdown: true,\n style: {\n top: 0,\n bottom: 0,\n minWidth: 0,\n right: \"30px\",\n margin: \"auto\"\n },\n hideLogo: true,\n hideRightInfo: true,\n extraClass: \"exportCopiedNotice\"\n });\n }\n\n categoryChangeListener(index: number, category: Category): void {\n const dialogWidth = this.noticeRef?.current?.getElement()?.current?.offsetWidth;\n if (category !== \"chooseACategory\" && Config.config.showCategoryGuidelines\n && getVideo().offsetWidth > dialogWidth * 2) {\n const options = {\n title: chrome.i18n.getMessage(`category_${category}`),\n textBoxes: getGuidelineInfo(category),\n buttons: [{\n name: chrome.i18n.getMessage(\"FullDetails\"),\n listener: () => window.open(CompileConfig.wikiLinks[category])\n },\n {\n name: chrome.i18n.getMessage(\"Hide\"),\n listener: () => {\n Config.config.showCategoryGuidelines = false;\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }],\n timed: false,\n style: {\n right: `${dialogWidth + 10}px`,\n },\n extraClass: \"sb-guidelines-notice\"\n };\n\n if (options.textBoxes) {\n if (this.guidelinesReminder) {\n this.guidelinesReminder.update(options);\n } else {\n this.guidelinesReminder = new GenericNotice(null, \"GuidelinesReminder\", options);\n }\n } else {\n this.guidelinesReminder?.close();\n this.guidelinesReminder = null;\n }\n }\n }\n}\n\nexport default SubmissionNoticeComponent;\n","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import Config from \"./config\";\nimport {\n ActionType,\n Category,\n CategorySkipOption,\n ChannelIDStatus,\n ContentContainer,\n ScheduledTime,\n SegmentUUID,\n SkipToTimeParams,\n SponsorHideType,\n SponsorSourceType,\n SponsorTime,\n ToggleSkippable,\n VideoID,\n VideoInfo,\n} from \"./types\";\nimport Utils from \"./utils\";\nimport PreviewBar, { PreviewBarSegment } from \"./js-components/previewBar\";\nimport SkipNotice from \"./render/SkipNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport UpcomingNotice from \"./render/UpcomingNotice\";\nimport SubmissionNotice from \"./render/SubmissionNotice\";\nimport { Message, MessageResponse, VoteResponse } from \"./messageTypes\";\nimport { SkipButtonControlBar } from \"./js-components/skipButtonControlBar\";\nimport { getStartTimeFromUrl } from \"./utils/urlParser\";\nimport { getControls, getExistingChapters, getHashParams, hasAutogeneratedChapters, isPlayingPlaylist, isVisible } from \"./utils/pageUtils\";\nimport { CategoryPill } from \"./render/CategoryPill\";\nimport { AnimationUtils } from \"../maze-utils/src/animationUtils\";\nimport { GenericUtils } from \"./utils/genericUtils\";\nimport { logDebug, logWarn } from \"./utils/logger\";\nimport { importTimes } from \"./utils/exporter\";\nimport { ChapterVote } from \"./render/ChapterVote\";\nimport { openWarningDialog } from \"./utils/warnings\";\nimport { extensionUserAgent, isFirefoxOrSafari, waitFor } from \"../maze-utils/src\";\nimport { formatJSErrorMessage, getFormattedTime, getLongErrorMessage } from \"../maze-utils/src/formating\";\nimport { getChannelIDInfo, getVideo, getIsAdPlaying, getIsLivePremiere, setIsAdPlaying, checkVideoIDChange, getVideoID, getYouTubeVideoID, setupVideoModule, checkIfNewVideoID, isOnInvidious, isOnMobileYouTube, isOnYouTubeMusic, isOnYTTV, getLastNonInlineVideoID, triggerVideoIDChange, triggerVideoElementChange, getIsInline, getCurrentTime, setCurrentTime, getVideoDuration, verifyCurrentTime, waitForVideo } from \"../maze-utils/src/video\";\nimport { Keybind, StorageChangesObject, isSafari, keybindEquals, keybindToString } from \"../maze-utils/src/config\";\nimport { findValidElement } from \"../maze-utils/src/dom\"\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { generateUserID } from \"../maze-utils/src/setup\";\nimport { updateAll } from \"../maze-utils/src/thumbnailManagement\";\nimport { setupThumbnailListener } from \"./utils/thumbnails\";\nimport * as documentScript from \"../dist/js/document.js\";\nimport { isVorapisInstalled, runCompatibilityChecks } from \"./utils/compatibility\";\nimport { cleanPage } from \"./utils/pageCleaner\";\nimport { addCleanupListener } from \"../maze-utils/src/cleanup\";\nimport { hideDeArrowPromotion, tryShowingDeArrowPromotion } from \"./dearrowPromotion\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { isMobileControlsOpen } from \"./utils/mobileUtils\";\nimport { defaultPreviewTime } from \"./utils/constants\";\nimport { onVideoPage } from \"../maze-utils/src/pageInfo\";\nimport { getSegmentsForVideo } from \"./utils/segmentData\";\nimport { getCategoryDefaultSelection, getCategorySelection } from \"./utils/skipRule\";\nimport { getSkipProfileBool, getSkipProfileIDForTab, hideTooShortSegments, setCurrentTabSkipProfile } from \"./utils/skipProfiles\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\n\ncleanPage();\n\nconst utils = new Utils();\n\nutils.wait(() => Config.isReady(), 5000, 10).then(() => {\n // Hack to get the CSS loaded on permission-based sites (Invidious)\n addCSS();\n setCategoryColorCSSVariables();\n\n runCompatibilityChecks();\n});\n\nconst skipBuffer = 0.003;\n// If this close to the end, skip to the end\nconst endTimeSkipBuffer = 0.5;\n\n//was sponsor data found when doing SponsorsLookup\nlet sponsorDataFound = false;\n//the actual sponsorTimes if loaded and UUIDs associated with them\nlet sponsorTimes: SponsorTime[] = [];\nlet existingChaptersImported = false;\nlet importingChaptersWaitingForFocus = false;\nlet importingChaptersWaiting = false;\nlet loopedChapter :SponsorTime = null;\n// List of open skip notices\nconst skipNotices: SkipNotice[] = [];\nlet upcomingNotice: UpcomingNotice | null = null;\nlet activeSkipKeybindElement: ToggleSkippable = null;\nlet shownSegmentFailedToFetchWarning = false;\nlet selectedSegment: SegmentUUID | null = null;\nlet previewedSegment = false;\n\n// JSON video info\nlet videoInfo: VideoInfo = null;\n// Locked Categories in this tab, like: [\"sponsor\",\"intro\",\"outro\"]\nlet lockedCategories: Category[] = [];\n// Used to calculate a more precise \"virtual\" video time\nconst lastKnownVideoTime: { videoTime: number; preciseTime: number; fromPause: boolean; approximateDelay: number } = {\n videoTime: null,\n preciseTime: null,\n fromPause: false,\n approximateDelay: null,\n};\n// It resumes with a slightly later time on chromium\nlet lastTimeFromWaitingEvent: number = null;\nconst lastNextChapterKeybind = {\n time: 0,\n date: 0\n};\n\n// Skips are scheduled to ensure precision.\n// Skips are rescheduled every seeking event.\n// Skips are canceled every seeking event\nlet currentSkipSchedule: NodeJS.Timeout = null;\nlet currentSkipInterval: NodeJS.Timeout = null;\nlet currentVirtualTimeInterval: NodeJS.Timeout = null;\nlet currentUpcomingSchedule: NodeJS.Timeout = null;\n\n/** Has the sponsor been skipped */\nlet sponsorSkipped: boolean[] = [];\n\nlet videoMuted = false; // Has it been attempted to be muted\nconst controlsWithEventListeners: HTMLElement[] = [];\n\nsetupVideoModule({\n videoIDChange,\n channelIDChange,\n videoElementChange,\n playerInit: () => {\n previewBar = null; // remove old previewbar\n createPreviewBar();\n },\n updatePlayerBar: () => {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n },\n resetValues,\n documentScript: chrome.runtime.getManifest().manifest_version === 2 ? documentScript : undefined\n}, () => Config);\nsetupThumbnailListener();\n\n// Is the video currently being switched\nlet switchingVideos = null;\n\n// Used by the play and playing listeners to make sure two aren't\n// called at the same time\nlet lastCheckTime = 0;\nlet lastCheckVideoTime = -1;\n\n// To determine if a video resolution change is happening\nlet firstPlay = true;\n\nlet previewBar: PreviewBar = null;\n// Skip to highlight button\nlet skipButtonControlBar: SkipButtonControlBar = null;\n// For full video sponsors/selfpromo\nlet categoryPill: CategoryPill = null;\n\n/** Element containing the player controls on the YouTube player. */\nlet controls: HTMLElement | null = null;\n\n/** Contains buttons created by `createButton()`. */\nconst playerButtons: Record = {};\n\naddHotkeyListener();\n\n/** Segments created by the user which have not yet been submitted. */\nlet sponsorTimesSubmitting: SponsorTime[] = [];\nlet loadedPreloadedSegment = false;\n\n//becomes true when isInfoFound is called\n//this is used to close the popup on YouTube when the other popup opens\nlet popupInitialised = false;\n\nlet submissionNotice: SubmissionNotice = null;\n\nlet lastResponseStatus: number | Error | string;\n\n// Contains all of the functions and variables needed by the skip notice\nconst skipNoticeContentContainer: ContentContainer = () => ({\n vote,\n dontShowNoticeAgain,\n unskipSponsorTime,\n sponsorTimes,\n sponsorTimesSubmitting,\n skipNotices,\n sponsorVideoID: getVideoID(),\n reskipSponsorTime,\n updatePreviewBar,\n onMobileYouTube: isOnMobileYouTube(),\n sponsorSubmissionNotice: submissionNotice,\n resetSponsorSubmissionNotice,\n updateEditButtonsOnPlayer,\n previewTime,\n videoInfo,\n getRealCurrentTime: getRealCurrentTime,\n lockedCategories,\n channelIDInfo: getChannelIDInfo()\n});\n\n// value determining when to count segment as skipped and send telemetry to server (percent based)\nconst manualSkipPercentCount = 0.5;\n\n//get messages from the background script and the popup\nchrome.runtime.onMessage.addListener(messageListener);\n\nfunction messageListener(request: Message, sender: unknown, sendResponse: (response: MessageResponse) => void): void | boolean {\n //messages from popup script\n switch(request.message){\n case \"update\":\n checkVideoIDChange();\n break;\n case \"sponsorStart\":\n startOrEndTimingNewSegment()\n\n sendResponse({\n creatingSegment: isSegmentCreationInProgress(),\n });\n\n break;\n case \"isInfoFound\":\n //send the sponsor times along with if it's found\n sendResponse({\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n\n if (!request.updating && popupInitialised && document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //the popup should be closed now that another is opening\n closeInfoMenu();\n }\n\n popupInitialised = true;\n break;\n case \"getChannelID\":\n sendResponse({\n channelID: getChannelIDInfo().id,\n isYTTV: (document.location.host === \"tv.youtube.com\")\n });\n\n break;\n case \"submitTimes\":\n openSubmissionMenu();\n break;\n case \"refreshSegments\":\n // update video on refresh if videoID invalid\n if (!getVideoID()) {\n checkVideoIDChange();\n }\n // if popup rescieves no response, or the videoID is invalid,\n // it will assume the page is not a video page and stop the refresh animation\n sendResponse({ hasVideo: getVideoID() != null });\n // fetch segments\n if (getVideoID()) {\n sponsorsLookup(false, true);\n }\n\n break;\n case \"unskip\":\n unskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), null, true);\n break;\n case \"reskip\":\n reskipSponsorTime(sponsorTimes.find((segment) => segment.UUID === request.UUID), true);\n break;\n case \"selectSegment\":\n selectSegment(request.UUID);\n break;\n case \"submitVote\":\n vote(request.type, request.UUID).then((response) => sendResponse(response));\n return true;\n case \"hideSegment\":\n utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID).hidden = request.type;\n utils.addHiddenSegment(getVideoID(), request.UUID, request.type);\n updatePreviewBar();\n\n if (skipButtonControlBar?.isEnabled()\n && sponsorTimesSubmitting.every((s) => s.hidden !== SponsorHideType.Visible || s.actionType !== ActionType.Poi)) {\n skipButtonControlBar.disable();\n }\n break;\n case \"closePopup\":\n closeInfoMenu();\n break;\n case \"copyToClipboard\":\n navigator.clipboard.writeText(request.text);\n break;\n case \"loopChapter\":\n if (!request.UUID){\n loopedChapter = null;\n break;\n }\n loopedChapter = {...utils.getSponsorTimeFromUUID(sponsorTimes, request.UUID)};\n loopedChapter.segment = [loopedChapter.segment[1], loopedChapter.segment[0]];\n break;\n case \"importSegments\": {\n const importedSegments = importTimes(request.data, getVideoDuration());\n let addedSegments = false;\n for (const segment of importedSegments) {\n if (!sponsorTimesSubmitting.some(\n (s) => Math.abs(s.segment[0] - segment.segment[0]) < 1\n && Math.abs(s.segment[1] - segment.segment[1]) < 1\n && s.description === segment.description)) {\n const hasChaptersPermission = (Config.config.showCategoryWithoutPermission\n || Config.config.permissions[\"chapter\"]);\n if (segment.category === \"chapter\" && (!getCategoryDefaultSelection(\"chapter\") || !hasChaptersPermission)) {\n segment.category = \"chooseACategory\" as Category;\n segment.actionType = ActionType.Skip;\n segment.description = \"\";\n }\n\n sponsorTimesSubmitting.push(segment);\n addedSegments = true;\n }\n }\n\n if (addedSegments) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n openSubmissionMenu();\n }\n\n sendResponse({\n importedSegments\n });\n break;\n }\n case \"keydown\":\n (document.body || document).dispatchEvent(new KeyboardEvent('keydown', {\n key: request.key,\n keyCode: request.keyCode,\n code: request.code,\n which: request.which,\n shiftKey: request.shiftKey,\n ctrlKey: request.ctrlKey,\n altKey: request.altKey,\n metaKey: request.metaKey\n }));\n break;\n case \"getLogs\":\n sendResponse({\n debug: window[\"SBLogs\"].debug,\n warn: window[\"SBLogs\"].warn\n });\n break;\n case \"setCurrentTabSkipProfile\":\n setCurrentTabSkipProfile(request.configID);\n channelIDChange();\n break;\n }\n\n sendResponse({});\n}\n\n/**\n * Called when the config is updated\n */\nfunction contentConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"hideVideoPlayerControls\":\n case \"hideInfoButtonPlayerControls\":\n case \"hideDeleteButtonPlayerControls\":\n updateVisibilityOfPlayerControlsButton()\n break;\n case \"categorySelections\":\n channelIDChange();\n break;\n case \"barTypes\":\n setCategoryColorCSSVariables();\n break;\n case \"fullVideoSegments\":\n case \"fullVideoLabelsOnThumbnails\":\n updateAll();\n break;\n }\n }\n}\nfunction contentLocalConfigUpdateListener(changes: StorageChangesObject) {\n for (const key in changes) {\n switch(key) {\n case \"channelSkipProfileIDs\":\n case \"skipProfiles\":\n case \"skipProfileTemp\":\n channelIDChange();\n break;\n }\n }\n}\n\nif (!window.location.href.includes(\"youtube.com/live_chat\")) {\n if (!Config.configSyncListeners.includes(contentConfigUpdateListener)) {\n Config.configSyncListeners.push(contentConfigUpdateListener);\n }\n\n if (!Config.configLocalListeners.includes(contentLocalConfigUpdateListener)) {\n Config.configLocalListeners.push(contentLocalConfigUpdateListener);\n }\n}\n\nfunction resetValues() {\n lastCheckTime = 0;\n lastCheckVideoTime = -1;\n previewedSegment = false;\n firstPlay = true;\n\n sponsorTimes = [];\n existingChaptersImported = false;\n sponsorSkipped = [];\n loopedChapter = null;\n lastResponseStatus = 0;\n shownSegmentFailedToFetchWarning = false;\n\n videoInfo = null;\n lockedCategories = [];\n\n //empty the preview bar\n if (previewBar !== null) {\n previewBar.clear();\n }\n\n //reset sponsor data found check\n sponsorDataFound = false;\n\n // When first loading a video, it is not switching videos\n // Hover play also doesn't need this check\n if (switchingVideos === null || !onVideoPage()) {\n switchingVideos = false;\n } else {\n switchingVideos = true;\n logDebug(\"Setting switching videos to true (reset data)\");\n }\n\n skipButtonControlBar?.disable();\n categoryPill?.setVisibility(false);\n\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop()?.close();\n }\n\n if (upcomingNotice) {\n upcomingNotice.close();\n upcomingNotice = null;\n }\n\n hideDeArrowPromotion();\n}\n\nfunction videoIDChange(): void {\n //setup the preview bar\n if (previewBar === null) {\n if (isOnMobileYouTube()) {\n // Mobile YouTube workaround\n const observer = new MutationObserver(handleMobileControlsMutations);\n let controlsContainer = null;\n\n utils.wait(() => {\n controlsContainer = document.getElementById(\"player-control-container\")\n return controlsContainer !== null\n }).then(() => {\n observer.observe(document.getElementById(\"player-control-container\"), {\n attributes: true,\n childList: true,\n subtree: true\n });\n }).catch();\n } else {\n utils.wait(getControls).then(createPreviewBar);\n }\n }\n\n // Notify the popup about the video change\n chrome.runtime.sendMessage({\n message: \"videoChanged\",\n videoID: getVideoID(),\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author\n });\n\n sponsorsLookup();\n\n // Make sure all player buttons are properly added\n updateVisibilityOfPlayerControlsButton();\n\n // Clear unsubmitted segments from the previous video\n sponsorTimesSubmitting = [];\n updateSponsorTimesSubmitting();\n\n tryShowingDeArrowPromotion().catch(logWarn);\n\n checkPreviewbarState();\n\n if (getIsInline()) {\n // Hover preview progress bar can take some time to appear\n // and if the miniplayer is also active then it would \n // attach to the wrong one\n setTimeout(checkPreviewbarState, 500);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 3000);\n }\n}\n\nfunction handleMobileControlsMutations(): void {\n // Don't update while scrubbing\n if (!chrome.runtime?.id \n || document.querySelector(\".YtProgressBarProgressBarPlayheadDotInDragging\")) return;\n\n updateVisibilityOfPlayerControlsButton();\n\n skipButtonControlBar?.updateMobileControls();\n\n if (previewBar !== null) {\n if (!previewBar.parent.contains(previewBar.container) && isMobileControlsOpen()) {\n previewBar.createElement();\n updatePreviewBar();\n\n return;\n } else if (!previewBar.parent.isConnected) {\n // The parent does not exist anymore, remove that old preview bar\n previewBar.remove();\n previewBar = null;\n }\n }\n\n // Create the preview bar if needed (the function hasn't returned yet)\n createPreviewBar();\n}\n\nfunction getPreviewBarAttachElement(): HTMLElement | null {\n const progressElementOptions = [{\n // For newer mobile YouTube (Sept 2024)\n selector: \".ytChapteredProgressBarHost, .ytProgressBarLineHost, .YtProgressBarLineHost, .YtChapteredProgressBarHost\",\n isVisibleCheck: true\n }, {\n // For newer mobile YouTube (May 2024)\n selector: \".YtmProgressBarProgressBarLine\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube hover play\n // Priority is given to the hover play progress bar over the main progress bar\n // for miniplayer + hover preview case\n // Second is new hover play selector\n selector: \"#video-preview .ytp-progress-bar, #video-preview .YtProgressBarLineHost\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".ytp-progress-bar\",\n isVisibleCheck: true\n }, {\n // For desktop YouTube\n selector: \".no-model.cue-range-marker\",\n isVisibleCheck: true\n }, {\n // For Invidious/VideoJS\n selector: \".vjs-progress-holder\",\n isVisibleCheck: false\n }, {\n // For Youtube Music and YTKids\n // there are two sliders, one for volume and one for progress - both called #progressContainer\n selector: \"#progress-bar>#sliderContainer>div>#sliderBar>#progressContainer\",\n }, {\n // For piped\n selector: \".shaka-ad-markers\",\n isVisibleCheck: false\n }, {\n // For Vorapis v3\n selector: \".ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\"\n }, {\n // For YTTV\n selector: \".yssi-slider > div.ytu-ss-timeline-container\",\n isVisibleCheck: false\n }\n ];\n\n for (const option of progressElementOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.isVisibleCheck ? findValidElement(allElements) : allElements[0];\n\n if (el) {\n return el;\n }\n }\n\n return null;\n}\n\n/**\n * Creates a preview bar on the video\n */\nfunction createPreviewBar(): void {\n if (previewBar !== null) return;\n\n const el = getPreviewBarAttachElement();\n\n if (el) {\n const chapterVote = new ChapterVote(voteAsync);\n previewBar = new PreviewBar(el, isOnMobileYouTube(), isOnInvidious(), isOnYTTV(), chapterVote, () => importExistingChapters(true));\n\n updatePreviewBar();\n }\n}\n\n/**\n * Triggered every time the video duration changes.\n * This happens when the resolution changes or at random time to clear memory.\n */\nfunction durationChangeListener(): void {\n updateAdFlag();\n updatePreviewBar();\n}\n\n/**\n * Triggered once the video is ready.\n * This is mainly to attach to embedded players who don't have a video element visible.\n */\nfunction videoOnReadyListener(): void {\n createPreviewBar();\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton()\n}\n\nfunction cancelSponsorSchedule(): void {\n logDebug(\"Pausing skipping\");\n\n if (currentSkipSchedule !== null) {\n clearTimeout(currentSkipSchedule);\n currentSkipSchedule = null;\n }\n\n if (currentSkipInterval !== null) {\n clearInterval(currentSkipInterval);\n currentSkipInterval = null;\n }\n\n if (currentUpcomingSchedule !== null) {\n clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = null;\n }\n}\n\n/**\n * @param currentTime Optional if you don't want to use the actual current time\n */\nasync function startSponsorSchedule(includeIntersectingSegments = false, currentTime?: number, includeNonIntersectingSegments = true): Promise {\n cancelSponsorSchedule();\n\n // Don't skip if advert playing and reset last checked time\n if (getIsAdPlaying()) {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n logDebug(\"[SB] Ad playing, pausing skipping\");\n\n return;\n }\n\n // Give up if video changed, and trigger a videoID change if so\n if (await checkIfNewVideoID()) {\n return;\n }\n\n logDebug(`Considering to start skipping: ${!getVideo()}, ${getVideo()?.paused}`);\n if (!getVideo()) return;\n if (currentTime === undefined || currentTime === null) {\n currentTime = getVirtualTime();\n }\n clearWaitingTime();\n\n updateActiveSegment(currentTime);\n\n if ((getVideo().paused && getCurrentTime() !== 0) // Allow autoplay disabled videos to skip before playing\n || (getCurrentTime() >= getVideoDuration() - 0.01 && getVideoDuration() > 1)) return;\n const skipInfo = getNextSkipIndex(currentTime, includeIntersectingSegments, includeNonIntersectingSegments);\n\n const currentSkip = skipInfo.array[skipInfo.index];\n const skipTime: number[] = [currentSkip?.scheduledTime, skipInfo.array[skipInfo.endIndex]?.segment[1]];\n const timeUntilSponsor = skipTime?.[0] - currentTime;\n const videoID = getVideoID();\n\n if (videoMuted && !inMuteSegment(currentTime, skipInfo.index !== -1\n && timeUntilSponsor < skipBuffer && shouldAutoSkip(currentSkip))) {\n getVideo().muted = false;\n videoMuted = false;\n\n for (const notice of skipNotices) {\n // So that the notice can hide buttons\n notice.unmutedListener(currentTime);\n }\n }\n\n logDebug(`Ready to start skipping: ${skipInfo.index} at ${currentTime}`);\n if (skipInfo.index === -1) return;\n\n if (Config.config.disableSkipping || (getChannelIDInfo().status === ChannelIDStatus.Fetching && Config.config.forceChannelCheck)){\n return;\n }\n\n if (incorrectVideoCheck()) return;\n\n // Find all indexes in between the start and end\n let skippingSegments = [skipInfo.array[skipInfo.index]];\n if (skipInfo.index !== skipInfo.endIndex) {\n skippingSegments = [];\n\n for (const segment of skipInfo.array) {\n if (shouldAutoSkip(segment) &&\n segment.segment[0] >= skipTime[0] && segment.segment[1] <= skipTime[1]\n && segment.segment[0] === segment.scheduledTime) { // Don't include artificial scheduled segments (end times for mutes)\n skippingSegments.push(segment);\n }\n }\n }\n\n logDebug(`Next step in starting skipping: ${!shouldSkip(currentSkip)}, ${!sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)}`);\n\n const skippingFunction = (forceVideoTime?: number) => {\n let forcedSkipTime: number = null;\n let forcedIncludeIntersectingSegments = false;\n let forcedIncludeNonIntersectingSegments = true;\n\n if (incorrectVideoCheck(videoID, currentSkip)) return;\n forceVideoTime ||= Math.max(getCurrentTime(), getVirtualTime());\n\n if ((shouldSkip(currentSkip)\n || sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment\n && segment.actionType !== ActionType.Chapter\n && segment.hidden === SponsorHideType.Visible))) {\n if (forceVideoTime >= skipTime[0] - skipBuffer && (forceVideoTime < skipTime[1] || skipTime[1] < skipTime[0])) {\n skipToTime({\n v: getVideo(),\n skipTime,\n skippingSegments,\n openNotice: skipInfo.openNotice\n });\n\n // These are segments that start at the exact same time but need separate notices\n for (const extra of skipInfo.extraIndexes) {\n const extraSkip = skipInfo.array[extra];\n if (shouldSkip(extraSkip)) {\n skipToTime({\n v: getVideo(),\n skipTime: [extraSkip.scheduledTime, extraSkip.segment[1]],\n skippingSegments: [extraSkip],\n openNotice: skipInfo.openNotice\n });\n }\n }\n\n if (getCategorySelection(currentSkip)?.option === CategorySkipOption.ManualSkip\n || currentSkip.actionType === ActionType.Mute) {\n forcedSkipTime = skipTime[0] + 0.001;\n } else {\n forcedSkipTime = skipTime[1];\n forcedIncludeNonIntersectingSegments = false;\n\n // Only if not at the end of the video\n if (Math.abs(skipTime[1] - getVideoDuration()) > endTimeSkipBuffer) {\n forcedIncludeIntersectingSegments = true;\n }\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n } else {\n forcedSkipTime = forceVideoTime + 0.001;\n }\n\n // Don't pretend to be earlier than we are, could result in loops\n if (forcedSkipTime !== null && forceVideoTime > forcedSkipTime && skipTime[1] > skipTime[0]) {\n forcedSkipTime = forceVideoTime;\n }\n\n startSponsorSchedule(forcedIncludeIntersectingSegments, forcedSkipTime, forcedIncludeNonIntersectingSegments);\n };\n\n if (timeUntilSponsor < skipBuffer) {\n skippingFunction(currentTime);\n } else {\n let delayTime = timeUntilSponsor * 1000 * (1 / getVideo().playbackRate);\n if (delayTime < (isFirefoxOrSafari() && !isSafari() ? 750 : 300)\n && shouldAutoSkip(skippingSegments[0])) {\n let forceStartIntervalTime: number | null = null;\n if (isFirefoxOrSafari() && !isSafari() && delayTime > 300) {\n forceStartIntervalTime = await waitForNextTimeChange();\n }\n\n // Use interval instead of timeout near the end to combat imprecise video time\n const startIntervalTime = forceStartIntervalTime || performance.now();\n const startVideoTime = Math.max(currentTime, getVirtualTime());\n delayTime = (skipTime?.[0] - startVideoTime) * 1000 * (1 / getVideo().playbackRate);\n\n let startWaitingForReportedTimeToChange = true;\n const reportedVideoTimeAtStart = getCurrentTime();\n logDebug(`Starting setInterval skipping ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n if (currentSkipInterval !== null) clearInterval(currentSkipInterval);\n currentSkipInterval = setInterval(() => {\n // Estimate delay, but only take the current time right after a change\n // Current time remains the same for many \"frames\" on Firefox\n if (isFirefoxOrSafari() && !lastKnownVideoTime.fromPause && startWaitingForReportedTimeToChange\n && reportedVideoTimeAtStart !== getCurrentTime()) {\n startWaitingForReportedTimeToChange = false;\n const delay = getVirtualTime() - getCurrentTime();\n if (delay > 0) lastKnownVideoTime.approximateDelay = delay;\n }\n\n const intervalDuration = performance.now() - startIntervalTime;\n if (intervalDuration + skipBuffer * 1000 >= delayTime || getVirtualTime() + skipBuffer >= skipTime[0]) {\n clearInterval(currentSkipInterval);\n if (!isFirefoxOrSafari() && !getVideo().muted && !inMuteSegment(getCurrentTime(), true)) {\n // Workaround for more accurate skipping on Chromium\n getVideo().muted = true;\n getVideo().muted = false;\n }\n\n skippingFunction(Math.max(getVirtualTime(), startVideoTime + getVideo().playbackRate * Math.max(delayTime, intervalDuration) / 1000));\n }\n }, 0);\n } else {\n logDebug(`Starting timeout to skip ${getCurrentTime()} to skip at ${skipTime[0]}`);\n\n const offset = (isFirefoxOrSafari() && !isSafari() ? 600 : 150);\n // Schedule for right before to be more precise than normal timeout\n const offsetDelayTime = Math.max(0, delayTime - offset);\n currentSkipSchedule = setTimeout(skippingFunction, offsetDelayTime);\n\n // Show the notice only if the segment hasn't already started\n if (Config.config.showUpcomingNotice && getCurrentTime() < skippingSegments[0].segment[0] \n && !sponsorTimesSubmitting?.some((segment) => segment.segment === currentSkip.segment)\n && [ActionType.Skip, ActionType.Mute].includes(skippingSegments[0].actionType)\n && getCategorySelection(skippingSegments[0])?.option > CategorySkipOption.ShowOverlay\n && !getVideo()?.paused) {\n const maxPopupTime = 3000;\n const timeUntilPopup = Math.max(0, offsetDelayTime - maxPopupTime);\n const popupTime = offsetDelayTime - timeUntilPopup;\n const autoSkip = shouldAutoSkip(skippingSegments[0]);\n\n if (currentUpcomingSchedule) clearTimeout(currentUpcomingSchedule);\n currentUpcomingSchedule = setTimeout(createUpcomingNotice, timeUntilPopup, [skippingSegments[0]], popupTime, autoSkip);\n }\n }\n }\n}\n\n/**\n * Used on Firefox only, waits for the next animation frame until\n * the video time has changed\n */\nfunction waitForNextTimeChange(): Promise {\n return new Promise((resolve) => {\n getVideo().addEventListener(\"timeupdate\", () => resolve(performance.now()), { once: true });\n });\n}\n\nfunction getVirtualTime(): number {\n const virtualTime = lastTimeFromWaitingEvent ?? (lastKnownVideoTime.videoTime !== null ?\n (performance.now() - lastKnownVideoTime.preciseTime) * (getVideo()?.playbackRate || 1) / 1000 + lastKnownVideoTime.videoTime : null);\n\n if (Config.config.useVirtualTime && !isSafari() && virtualTime\n && virtualTime > getCurrentTime() && virtualTime - getCurrentTime() < 0.8 && getCurrentTime() !== 0) {\n return Math.max(virtualTime, getCurrentTime());\n } else {\n return getCurrentTime();\n }\n}\n\nfunction inMuteSegment(currentTime: number, includeOverlap: boolean): boolean {\n const checkFunction = (segment) => segment.actionType === ActionType.Mute\n && segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime\n && (segment.segment[1] > currentTime || (includeOverlap && segment.segment[1] + 0.02 > currentTime));\n return sponsorTimes?.some(checkFunction) || sponsorTimesSubmitting.some(checkFunction);\n}\n\n/**\n * This makes sure the videoID is still correct and if the sponsorTime is included\n */\nfunction incorrectVideoCheck(videoID?: string, sponsorTime?: SponsorTime): boolean {\n if (!onVideoPage()) return false;\n\n const currentVideoID = getYouTubeVideoID();\n const recordedVideoID = videoID || getVideoID();\n if (currentVideoID !== recordedVideoID || (sponsorTime\n && (!sponsorTimes || !sponsorTimes?.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1]))\n && !sponsorTimesSubmitting.some((time) => time.segment[0] === sponsorTime.segment[0] && time.segment[1] === sponsorTime.segment[1])\n && (!isLoopedChapter(sponsorTime)))) {\n // Something has really gone wrong\n console.error(\"[SponsorBlock] The videoID recorded when trying to skip is different than what it should be.\");\n console.error(\"[SponsorBlock] VideoID recorded: \" + recordedVideoID + \". Actual VideoID: \" + currentVideoID);\n console.error(\"[SponsorBlock] SponsorTime\", sponsorTime, \"sponsorTimes\", sponsorTimes, \"sponsorTimesSubmitting\", sponsorTimesSubmitting);\n\n // Video ID change occured\n checkVideoIDChange();\n\n return true;\n } else {\n return false;\n }\n}\n\nlet playbackRateCheckInterval: NodeJS.Timeout | null = null;\nlet lastPlaybackSpeed = 1;\nlet setupVideoListenersFirstTime = true;\nfunction setupVideoListeners(video: HTMLVideoElement) {\n if (!video) return; // Maybe video became invisible\n\n //wait until it is loaded\n video.addEventListener('loadstart', videoOnReadyListener)\n video.addEventListener('durationchange', durationChangeListener);\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('loadstart', videoOnReadyListener);\n video.removeEventListener('durationchange', durationChangeListener);\n });\n }\n\n if (!Config.config.disableSkipping) {\n switchingVideos = false;\n\n let startedWaiting = false;\n let lastPausedAtZero = true;\n let lastVideoDataChange = 0;\n\n const rateChangeListener = () => {\n updateVirtualTime();\n clearWaitingTime();\n\n startSponsorSchedule();\n };\n video.addEventListener('ratechange', rateChangeListener);\n // Used by videospeed extension (https://github.com/igrigorik/videospeed/pull/740)\n video.addEventListener('videoSpeed_ratechange', rateChangeListener);\n\n const playListener = () => {\n // Prevent video resolution changes from causing skips\n if (!firstPlay && Date.now() - lastVideoDataChange < 200 && video.currentTime === 0) return;\n\n firstPlay = false;\n updateVirtualTime();\n checkForMiniplayerPlaying();\n\n if (switchingVideos || lastPausedAtZero) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n lastPausedAtZero = false;\n\n // Check if an ad is playing\n updateAdFlag();\n\n // Make sure it doesn't get double called with the playing event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n };\n video.addEventListener('play', playListener);\n\n const playingListener = () => {\n updateVirtualTime();\n lastPausedAtZero = false;\n\n if (startedWaiting) {\n startedWaiting = false;\n logDebug(`[SB] Playing event after buffering: ${Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)}`);\n }\n\n if (switchingVideos) {\n switchingVideos = false;\n logDebug(\"Setting switching videos to false\");\n\n // If already segments loaded before video, retry to skip starting segments\n if (sponsorTimes) startSkipScheduleCheckingForStartSponsors();\n }\n\n // Make sure it doesn't get double called with the play event\n if (Math.abs(lastCheckVideoTime - video.currentTime) > 0.3\n || (lastCheckVideoTime !== video.currentTime && Date.now() - lastCheckTime > 2000)) {\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n startSponsorSchedule();\n }\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n lastPlaybackSpeed = video.playbackRate;\n\n // Video speed controller compatibility\n // That extension makes rate change events not propagate\n if (document.body.classList.contains(\"vsc-initialized\")) {\n playbackRateCheckInterval = setInterval(() => {\n if ((!getVideoID() || video.paused) && playbackRateCheckInterval) {\n // Video is gone, stop checking\n clearInterval(playbackRateCheckInterval);\n return;\n }\n \n if (video.playbackRate !== lastPlaybackSpeed) {\n lastPlaybackSpeed = video.playbackRate;\n \n rateChangeListener();\n }\n }, 2000);\n }\n };\n video.addEventListener('playing', playingListener);\n \n const seekingListener = () => {\n lastKnownVideoTime.fromPause = false;\n\n if (!video.paused){\n // Reset lastCheckVideoTime\n lastCheckTime = Date.now();\n lastCheckVideoTime = video.currentTime;\n\n updateVirtualTime();\n clearWaitingTime();\n\n // Sometimes looped videos loop back to almost zero, but not quite\n if (video.loop && video.currentTime < 0.2 && getCurrentTime() < 0.2) {\n startSponsorSchedule(false, 0);\n } else {\n startSponsorSchedule();\n }\n } else {\n updateActiveSegment(getCurrentTime());\n\n if (getCurrentTime() === 0) {\n lastPausedAtZero = true;\n }\n }\n };\n video.addEventListener('seeking', seekingListener);\n \n const stoppedPlayback = () => {\n // Reset lastCheckVideoTime\n lastCheckVideoTime = -1;\n lastCheckTime = 0;\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n\n lastKnownVideoTime.videoTime = null;\n lastKnownVideoTime.preciseTime = null;\n updateWaitingTime(video);\n\n cancelSponsorSchedule();\n };\n const pauseListener = () => {\n lastKnownVideoTime.fromPause = true;\n\n stoppedPlayback();\n };\n video.addEventListener('pause', pauseListener);\n const waitingListener = () => {\n logDebug(\"[SB] Not skipping due to buffering\");\n startedWaiting = true;\n\n stoppedPlayback();\n };\n video.addEventListener('waiting', waitingListener);\n\n // When video data is changed\n const emptyListener = () => {\n lastVideoDataChange = Date.now();\n\n if (firstPlay && video.currentTime === 0) {\n playListener();\n }\n }\n video.addEventListener('emptied', emptyListener);\n\n // For when autoplay is off to skip before starting playback\n const metadataLoadedListener = () => {\n if (firstPlay && getCurrentTime() === 0) {\n playListener();\n }\n }\n video.addEventListener('loadedmetadata', metadataLoadedListener)\n\n startSponsorSchedule();\n\n if (setupVideoListenersFirstTime) {\n addCleanupListener(() => {\n video.removeEventListener('play', playListener);\n video.removeEventListener('playing', playingListener);\n video.removeEventListener('seeking', seekingListener);\n video.removeEventListener('ratechange', rateChangeListener);\n video.removeEventListener('videoSpeed_ratechange', rateChangeListener);\n video.removeEventListener('pause', pauseListener);\n video.removeEventListener('waiting', waitingListener);\n video.removeEventListener('empty', emptyListener);\n video.removeEventListener('loadedmetadata', metadataLoadedListener);\n\n if (playbackRateCheckInterval) clearInterval(playbackRateCheckInterval);\n });\n }\n }\n\n setupVideoListenersFirstTime = false;\n}\n\nfunction updateVirtualTime() {\n if (currentVirtualTimeInterval) clearInterval(currentVirtualTimeInterval);\n\n lastKnownVideoTime.videoTime = getCurrentTime();\n lastKnownVideoTime.preciseTime = performance.now();\n\n // If on Firefox, wait for the second time change (time remains fixed for many \"frames\" for privacy reasons)\n if (isFirefoxOrSafari()) {\n let count = 0;\n let rawCount = 0;\n let lastTime = lastKnownVideoTime.videoTime;\n let lastPerformanceTime = performance.now();\n\n currentVirtualTimeInterval = setInterval(() => {\n const frameTime = performance.now() - lastPerformanceTime;\n if (lastTime !== getCurrentTime()) {\n rawCount++;\n\n // If there is lag, give it another shot at finding a good change time\n if (frameTime < 20 || rawCount > 30) {\n count++;\n }\n lastTime = getCurrentTime();\n }\n\n if (count > 1) {\n const delay = lastKnownVideoTime.fromPause && lastKnownVideoTime.approximateDelay ?\n lastKnownVideoTime.approximateDelay : 0;\n\n lastKnownVideoTime.videoTime = getCurrentTime() + delay;\n lastKnownVideoTime.preciseTime = performance.now();\n\n clearInterval(currentVirtualTimeInterval);\n currentVirtualTimeInterval = null;\n }\n\n lastPerformanceTime = performance.now();\n }, 1);\n }\n}\n\nfunction updateWaitingTime(video: HTMLVideoElement): void {\n lastTimeFromWaitingEvent = video.currentTime;\n}\n\nfunction clearWaitingTime(): void {\n lastTimeFromWaitingEvent = null;\n}\n\nfunction setupSkipButtonControlBar() {\n if (!skipButtonControlBar) {\n skipButtonControlBar = new SkipButtonControlBar({\n skip: (segment) => skipToTime({\n v: getVideo(),\n skipTime: segment.segment,\n skippingSegments: [segment],\n openNotice: true,\n forceAutoSkip: true\n }),\n selectSegment,\n onMobileYouTube: isOnMobileYouTube(),\n onYTTV: isOnYTTV(),\n });\n }\n\n skipButtonControlBar.attachToPage();\n}\n\nfunction setupCategoryPill() {\n if (!categoryPill) {\n categoryPill = new CategoryPill();\n }\n\n categoryPill.attachToPage(isOnMobileYouTube(), isOnInvidious(), voteAsync);\n}\n\nasync function sponsorsLookup(keepOldSubmissions = true, ignoreCache = false) {\n const videoID = getVideoID();\n if (!videoID) {\n console.error(\"[SponsorBlock] Attempted to fetch segments with a null/undefined videoID.\");\n return;\n }\n\n const segmentData = await getSegmentsForVideo(videoID, ignoreCache);\n\n // Make sure an old pending request doesn't get used.\n if (videoID !== getVideoID()) return;\n\n // store last response status\n lastResponseStatus = segmentData.status;\n if (segmentData.status === 200) {\n const receivedSegments = segmentData.segments;\n\n if (receivedSegments && receivedSegments.length) {\n sponsorDataFound = receivedSegments.findIndex((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled) !== -1;\n\n // Check if any old submissions should be kept\n if (sponsorTimes !== null && keepOldSubmissions) {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].source === SponsorSourceType.Local) {\n // This is a user submission, keep it\n receivedSegments.push(sponsorTimes[i]);\n }\n }\n }\n\n const oldSegments = sponsorTimes || [];\n sponsorTimes = receivedSegments;\n existingChaptersImported = false;\n\n if (keepOldSubmissions) {\n for (const segment of oldSegments) {\n const otherSegment = sponsorTimes.find((other) => segment.UUID === other.UUID);\n if (otherSegment) {\n // If they downvoted it, or changed the category, keep it\n otherSegment.hidden = segment.hidden;\n otherSegment.category = segment.category;\n }\n }\n }\n\n // See if some segments should be hidden\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const downvotedData = Config.local.downvotedSegments[hashPrefix];\n if (downvotedData) {\n for (const segment of sponsorTimes) {\n const hashedUUID = await getHash(segment.UUID, 1);\n const segmentDownvoteData = downvotedData.segments.find((downvote) => downvote.uuid === hashedUUID);\n if (segmentDownvoteData) {\n segment.hidden = segmentDownvoteData.hidden;\n }\n }\n }\n\n hideTooShortSegments(sponsorTimes);\n\n if (!getVideo()) {\n //there is still no video here\n await waitForVideo();\n }\n\n startSkipScheduleCheckingForStartSponsors();\n\n if (!isNaN(getVideoDuration())) {\n updatePreviewBar();\n }\n }\n }\n\n notifyPopupOfSegments();\n importExistingChapters(true);\n\n if (Config.config.isVip) {\n lockedCategoriesLookup();\n }\n}\n\nfunction notifyPopupOfSegments(): void {\n // notify popup of segment changes\n chrome.runtime.sendMessage({\n message: \"infoUpdated\",\n found: sponsorDataFound,\n status: lastResponseStatus,\n sponsorTimes: sponsorTimes.filter((segment) => getCategorySelection(segment).option !== CategorySkipOption.Disabled),\n time: getCurrentTime() ?? 0,\n onMobileYouTube: isOnMobileYouTube(),\n videoID: getVideoID(),\n loopedChapter: loopedChapter?.UUID,\n channelID: getChannelIDInfo().id,\n channelAuthor: getChannelIDInfo().author,\n currentTabSkipProfileID: getSkipProfileIDForTab()\n });\n}\n\nfunction importExistingChapters(wait: boolean) {\n if (!existingChaptersImported && !importingChaptersWaiting && onVideoPage() && !isOnMobileYouTube()) {\n const waitCondition = () => getVideoDuration() && getExistingChapters(getVideoID(), getVideoDuration());\n\n if (wait && !document.hasFocus() && !importingChaptersWaitingForFocus && !waitCondition()) {\n importingChaptersWaitingForFocus = true;\n const listener = () => {\n importExistingChapters(wait);\n window.removeEventListener(\"focus\", listener);\n };\n window.addEventListener(\"focus\", listener);\n } else {\n importingChaptersWaiting = true;\n waitFor(waitCondition,\n wait ? 15000 : 0, 400, (c) => c?.length > 0).then((chapters) => {\n importingChaptersWaiting = false;\n\n if (!existingChaptersImported && chapters?.length > 0) {\n sponsorTimes = (sponsorTimes ?? []).concat(...chapters).sort((a, b) => a.segment[0] - b.segment[0]);\n existingChaptersImported = true;\n updatePreviewBar();\n }\n }).catch(() => { importingChaptersWaiting = false; });\n\n if (!getSkipProfileBool(\"showAutogeneratedChapters\")) {\n waitFor(() => hasAutogeneratedChapters(), wait ? 15000 : 0, 400).then(() => {\n updateActiveSegment(getCurrentTime());\n }).catch(() => { }); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n }\n }\n}\n\nfunction handleExistingChaptersChannelChange() {\n if (existingChaptersImported && hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\")) {\n sponsorTimes = sponsorTimes.filter((segment) => segment.source !== SponsorSourceType.Autogenerated);\n }\n}\n\nasync function lockedCategoriesLookup(): Promise {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n try {\n const response = await asyncRequestToServer(\"GET\", \"/api/lockCategories/\" + hashPrefix);\n\n if (response.ok) {\n const categoriesResponse = JSON.parse(response.responseText).filter((lockInfo) => lockInfo.videoID === getVideoID())[0]?.categories;\n if (Array.isArray(categoriesResponse)) {\n lockedCategories = categoriesResponse;\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"locked categories\")\n }\n } catch (e) {\n console.warn(`[SB] Caught error while looking up category locks for hashprefix ${hashPrefix}`, e)\n }\n}\n\n/**\n * Only should be used when it is okay to skip a sponsor when in the middle of it\n *\n * Ex. When segments are first loaded\n */\nfunction startSkipScheduleCheckingForStartSponsors() {\n\t// switchingVideos is ignored in Safari due to event fire order. See #1142\n if ((!switchingVideos || isSafari()) && sponsorTimes) {\n // See if there are any starting sponsors\n let startingSegmentTime = getStartTimeFromUrl(document.URL) || -1;\n let found = false;\n for (const time of sponsorTimes) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n if (!found) {\n for (const time of sponsorTimesSubmitting) {\n if (time.segment[0] <= getCurrentTime() && time.segment[0] > startingSegmentTime && time.segment[1] > getCurrentTime()\n && time.actionType !== ActionType.Poi) {\n startingSegmentTime = time.segment[0];\n found = true;\n break;\n }\n }\n }\n\n // For highlight category\n const poiSegments = sponsorTimes\n .filter((time) => time.segment[1] > getCurrentTime()\n && time.actionType === ActionType.Poi\n && time.hidden === SponsorHideType.Visible\n && getCategorySelection(time).option !== CategorySkipOption.Disabled)\n .sort((a, b) => b.segment[0] - a.segment[0]);\n for (const time of poiSegments) {\n const skipOption = getCategorySelection(time)?.option;\n if (skipOption !== CategorySkipOption.ShowOverlay) {\n skipToTime({\n v: getVideo(),\n skipTime: time.segment,\n skippingSegments: [time],\n openNotice: true,\n unskipTime: getCurrentTime()\n });\n if (skipOption === CategorySkipOption.AutoSkip) break;\n }\n }\n\n if (startingSegmentTime !== -1) {\n startSponsorSchedule(undefined, startingSegmentTime);\n } else {\n startSponsorSchedule();\n }\n }\n}\n\nfunction selectSegment(UUID: SegmentUUID): void {\n selectedSegment = UUID;\n updatePreviewBar();\n}\n\nfunction updatePreviewBar(): void {\n if (previewBar === null) return;\n\n if (getIsAdPlaying()) {\n previewBar.clear();\n return;\n }\n\n if (getVideo() === null) return;\n\n const hashParams = getHashParams();\n const requiredSegment = hashParams?.requiredSegment as SegmentUUID || undefined;\n const previewBarSegments: PreviewBarSegment[] = [];\n if (sponsorTimes) {\n sponsorTimes.forEach((segment) => {\n if (segment.hidden !== SponsorHideType.Visible || getCategorySelection(segment).option === CategorySkipOption.Disabled) return;\n\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: false,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source,\n requiredSegment: requiredSegment && (segment.UUID === requiredSegment || segment.UUID?.startsWith(requiredSegment) || requiredSegment.startsWith(segment.UUID)),\n selectedSegment: selectedSegment && segment.UUID === selectedSegment\n });\n });\n }\n\n sponsorTimesSubmitting.forEach((segment) => {\n if (segment.hidden === SponsorHideType.Visible\n && (segment.actionType !== ActionType.Chapter || segment.segment.length > 1)) {\n previewBarSegments.push({\n segment: segment.segment as [number, number],\n category: segment.category,\n actionType: segment.actionType,\n unsubmitted: true,\n showLarger: segment.actionType === ActionType.Poi,\n description: segment.description,\n source: segment.source\n });\n }\n });\n\n previewBar.set(previewBarSegments.filter((segment) => segment.actionType !== ActionType.Full), getVideoDuration())\n if (getVideo()) updateActiveSegment(getCurrentTime());\n\n if (Config.config.showTimeWithSkips) {\n const skippedDuration = utils.getTimestampsDuration(previewBarSegments\n .filter(({actionType}) => ![ActionType.Mute, ActionType.Chapter].includes(actionType))\n .map(({segment}) => segment));\n\n showTimeWithoutSkips(skippedDuration);\n }\n}\n\nfunction updateCategoryPill() {\n const fullVideoSegment = sponsorTimes.filter((time) => time.actionType === ActionType.Full)[0];\n if (fullVideoSegment && getSkipProfileBool(\"fullVideoSegments\")) {\n categoryPill?.setSegment(fullVideoSegment);\n } else {\n categoryPill?.setVisibility(false);\n }\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nasync function channelIDChange() {\n // check if the start of segments were missed\n if (Config.config.forceChannelCheck && sponsorTimes?.length > 0) startSkipScheduleCheckingForStartSponsors();\n\n hideTooShortSegments(sponsorTimes);\n handleExistingChaptersChannelChange();\n updatePreviewBar();\n updateCategoryPill();\n notifyPopupOfSegments();\n}\n\nfunction videoElementChange(newVideo: boolean, video: HTMLVideoElement): void {\n waitFor(() => Config.isReady()).then(() => {\n if (newVideo) {\n setupVideoListeners(video);\n setupSkipButtonControlBar();\n setupCategoryPill();\n }\n \n updatePreviewBar();\n checkPreviewbarState();\n \n // Incase the page is still transitioning, check again in a few seconds\n setTimeout(checkPreviewbarState, 100);\n setTimeout(checkPreviewbarState, 1000);\n setTimeout(checkPreviewbarState, 5000);\n })\n}\n\nlet checkingPreviewbarAgain = false;\nfunction checkPreviewbarState(): void {\n if (!getPreviewBarAttachElement() && !checkingPreviewbarAgain && getVideo() && getVideoID()) {\n checkingPreviewbarAgain = true;\n setTimeout(() => {\n checkingPreviewbarAgain = false;\n checkPreviewbarState();\n }, 500);\n\n return;\n }\n\n if (previewBar && !getPreviewBarAttachElement()?.contains(previewBar.container)) {\n previewBar.remove();\n previewBar = null;\n }\n\n createPreviewBar();\n}\n\n/**\n * Returns info about the next upcoming sponsor skip\n */\nfunction getNextSkipIndex(currentTime: number, includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean):\n {array: ScheduledTime[]; index: number; endIndex: number; extraIndexes: number[]; openNotice: boolean} {\n\n const autoSkipSorter = (segment: ScheduledTime) => {\n const skipOption = getCategorySelection(segment)?.option;\n if (segment.hidden !== SponsorHideType.Visible) {\n // Hidden segments sometimes end up here if another segment is at the same time, use them last\n return 3;\n } else if ((skipOption === CategorySkipOption.AutoSkip || shouldAutoSkip(segment))\n && (segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter)) {\n return 0;\n } else if (skipOption !== CategorySkipOption.ShowOverlay) {\n return 1;\n } else {\n return 2;\n }\n }\n\n const { includedTimes: submittedArray, scheduledTimes: sponsorStartTimes } =\n getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: sponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimes, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, true);\n\n // This is an array in-case multiple segments have the exact same start time\n const minSponsorTimeIndexes = GenericUtils.indexesOf(sponsorStartTimes, Math.min(...sponsorStartTimesAfterCurrentTime));\n // Find auto skipping segments if possible, sort by duration otherwise\n const minSponsorTimeIndex = minSponsorTimeIndexes.sort(\n (a, b) => ((autoSkipSorter(submittedArray[a]) - autoSkipSorter(submittedArray[b]))\n || (submittedArray[a].segment[1] - submittedArray[a].segment[0]) - (submittedArray[b].segment[1] - submittedArray[b].segment[0])))[0] ?? -1;\n // Store extra indexes for the non-auto skipping segments if others occur at the exact same start time\n const extraIndexes = minSponsorTimeIndexes.filter((i) => i !== minSponsorTimeIndex && autoSkipSorter(submittedArray[i]) !== 0);\n\n const endTimeIndex = getLatestEndTimeIndex(submittedArray, minSponsorTimeIndex);\n\n const { includedTimes: unsubmittedArray, scheduledTimes: unsubmittedSponsorStartTimes } =\n getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments);\n const { scheduledTimes: unsubmittedSponsorStartTimesAfterCurrentTime } = getStartTimes(sponsorTimesSubmitting, includeIntersectingSegments, includeNonIntersectingSegments, currentTime, false);\n\n const minUnsubmittedSponsorTimeIndex = unsubmittedSponsorStartTimes.indexOf(Math.min(...unsubmittedSponsorStartTimesAfterCurrentTime));\n const previewEndTimeIndex = getLatestEndTimeIndex(unsubmittedArray, minUnsubmittedSponsorTimeIndex);\n\n if ((minUnsubmittedSponsorTimeIndex === -1 && minSponsorTimeIndex !== -1) ||\n sponsorStartTimes[minSponsorTimeIndex] < unsubmittedSponsorStartTimes[minUnsubmittedSponsorTimeIndex]) {\n return {\n array: submittedArray,\n index: minSponsorTimeIndex,\n endIndex: endTimeIndex,\n extraIndexes, // Segments at same time that need separate notices\n openNotice: true\n };\n } else {\n return {\n array: unsubmittedArray,\n index: minUnsubmittedSponsorTimeIndex,\n endIndex: previewEndTimeIndex,\n extraIndexes: [], // No manual things for unsubmitted\n openNotice: false\n };\n }\n}\n\n/**\n * This returns index if the skip option is not AutoSkip\n *\n * Finds the last endTime that occurs in a segment that the given\n * segment skips into that is part of an AutoSkip category.\n *\n * Used to find where a segment should truely skip to if there are intersecting submissions due to\n * them having different categories.\n *\n * @param sponsorTimes\n * @param index Index of the given sponsor\n * @param hideHiddenSponsors\n */\nfunction getLatestEndTimeIndex(sponsorTimes: SponsorTime[], index: number, hideHiddenSponsors = true): number {\n // Only combine segments for AutoSkip\n if (index == -1 ||\n !shouldAutoSkip(sponsorTimes[index])\n || sponsorTimes[index].actionType !== ActionType.Skip) {\n return index;\n }\n\n let latestEndTimeIndex = -1;\n // Default to looped chapter if its end would have been skipped\n if (loopedChapter\n && (loopedChapter.segment[0] > sponsorTimes[index].segment[0]\n && loopedChapter.segment[0] <= sponsorTimes[index]?.segment[1])){\n latestEndTimeIndex = sponsorTimes.length - 1;\n } else {\n // or the normal end time otherwise \n latestEndTimeIndex = index;\n }\n\n for (let i = 0; i < sponsorTimes?.length; i++) {\n const currentSegment = sponsorTimes[i].segment;\n const latestEndTime = sponsorTimes[latestEndTimeIndex].segment[1];\n\n if (currentSegment[0] - skipBuffer <= latestEndTime && currentSegment[1] > latestEndTime\n && (!hideHiddenSponsors || sponsorTimes[i].hidden === SponsorHideType.Visible)\n && shouldAutoSkip(sponsorTimes[i])\n && sponsorTimes[i].actionType === ActionType.Skip) {\n // Overlapping segment\n latestEndTimeIndex = i;\n }\n }\n\n // Keep going if required\n if (latestEndTimeIndex !== index) {\n latestEndTimeIndex = getLatestEndTimeIndex(sponsorTimes, latestEndTimeIndex, hideHiddenSponsors);\n }\n\n return latestEndTimeIndex;\n}\n\n/**\n * Gets just the start times from a sponsor times array.\n * Optionally specify a minimum\n *\n * @param sponsorTimes\n * @param minimum\n * @param hideHiddenSponsors\n * @param includeIntersectingSegments If true, it will include segments that start before\n * the current time, but end after\n */\nfunction getStartTimes(sponsorTimes: SponsorTime[], includeIntersectingSegments: boolean, includeNonIntersectingSegments: boolean,\n minimum?: number, hideHiddenSponsors = false): {includedTimes: ScheduledTime[]; scheduledTimes: number[]} {\n if (!sponsorTimes) return {includedTimes: [], scheduledTimes: []};\n\n const includedTimes: ScheduledTime[] = [];\n const scheduledTimes: number[] = [];\n\n const shouldIncludeTime = (segment: ScheduledTime ) => (minimum === undefined\n || ((includeNonIntersectingSegments && segment.scheduledTime >= minimum)\n || (includeIntersectingSegments && segment.scheduledTime < minimum\n && ((segment.segment[1] > minimum && shouldSkip(segment)) // Only include intersecting skippable segments\n || isLoopedChapter(segment)))))\n && (!hideHiddenSponsors || segment.hidden === SponsorHideType.Visible)\n && segment.segment.length === 2\n && segment.actionType !== ActionType.Poi\n && segment.actionType !== ActionType.Full;\n\n const possibleTimes = sponsorTimes.map((sponsorTime) => ({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[0]\n }));\n\n // Schedule at the end time to know when to unmute and remove title from seek bar\n sponsorTimes.forEach(sponsorTime => {\n if (!possibleTimes.some((time) => sponsorTime.segment[1] === time.scheduledTime && shouldIncludeTime(time))\n && (minimum === undefined || sponsorTime.segment[1] > minimum)) {\n possibleTimes.push({\n ...sponsorTime,\n scheduledTime: sponsorTime.segment[1]\n });\n }\n });\n\n if (loopedChapter){\n possibleTimes.push({\n ...loopedChapter,\n scheduledTime: loopedChapter.segment[0]})\n }\n\n for (let i = 0; i < possibleTimes.length; i++) {\n if (shouldIncludeTime(possibleTimes[i])) {\n scheduledTimes.push(possibleTimes[i].scheduledTime);\n includedTimes.push(possibleTimes[i]);\n }\n }\n\n return { includedTimes, scheduledTimes };\n}\n\n/**\n * Skip to exact time in a video and autoskips\n *\n * @param time\n */\nfunction previewTime(time: number, unpause = true) {\n previewedSegment = true;\n setCurrentTime(time);\n\n // Unpause the video if needed\n if (unpause && getVideo().paused){\n getVideo().play();\n }\n}\n\n//send telemetry and count skip\nfunction sendTelemetryAndCount(skippingSegments: SponsorTime[], secondsSkipped: number, fullSkip: boolean) {\n for (const segment of skippingSegments) {\n if (!previewedSegment && sponsorTimesSubmitting.some((s) => s.segment === segment.segment)) {\n // Count that as a previewed segment\n previewedSegment = true;\n }\n }\n\n if (!Config.config.trackViewCount || (!Config.config.trackViewCountInPrivate && chrome.extension.inIncognitoContext)) return;\n\n let counted = false;\n for (const segment of skippingSegments) {\n const index = sponsorTimes?.findIndex((s) => s.segment === segment.segment);\n if (index !== -1 && !sponsorSkipped[index]) {\n sponsorSkipped[index] = true;\n if (!counted) {\n Config.config.minutesSaved = Config.config.minutesSaved + secondsSkipped / 60;\n if (segment.actionType !== ActionType.Chapter) {\n Config.config.skipCount = Config.config.skipCount + 1;\n }\n counted = true;\n }\n\n if (fullSkip) asyncRequestToServer(\"POST\", \"/api/viewedVideoSponsorTime?UUID=\" + segment.UUID + \"&videoID=\" + getVideoID())\n .then(r => {\n if (!r.ok) logRequest(r, \"SB\", \"segment skip log\");\n })\n .catch(e => console.warn(\"[SB] Caught error while attempting to log segment skip\", e));\n }\n }\n}\n\n//skip from the start time to the end time for a certain index sponsor time\nfunction skipToTime({v, skipTime, skippingSegments, openNotice, forceAutoSkip, unskipTime}: SkipToTimeParams): void {\n if (Config.config.disableSkipping) return;\n\n // There will only be one submission if it is manual skip\n const autoSkip: boolean = forceAutoSkip || shouldAutoSkip(skippingSegments[0]);\n const isSubmittingSegment = sponsorTimesSubmitting.some((time) => time.segment === skippingSegments[0].segment);\n\n if ((autoSkip || isSubmittingSegment)\n && getCurrentTime() !== skipTime[1]) {\n switch(skippingSegments[0].actionType) {\n case ActionType.Poi:\n case ActionType.Chapter:\n case ActionType.Skip: {\n // Fix for looped videos not working when skipping to the end #426\n // for some reason you also can't skip to 1 second before the end\n if (v.loop && getVideoDuration() > 1 && skipTime[1] >= getVideoDuration() - 1) {\n setCurrentTime(0);\n } else if (getVideoDuration() > 1 && skipTime[1] >= getVideoDuration()\n && (navigator.vendor === \"Apple Computer, Inc.\" || isPlayingPlaylist())) {\n // MacOS will loop otherwise #1027\n // Sometimes playlists loop too #1804\n setCurrentTime(getVideoDuration() - 0.001);\n } else if (getVideoDuration() > 1 && Math.abs(skipTime[1] - getVideoDuration()) < endTimeSkipBuffer\n && isFirefoxOrSafari() && !isSafari()) {\n setCurrentTime(getVideoDuration());\n } else {\n if (inMuteSegment(skipTime[1], true)) {\n // Make sure not to mute if skipping into a mute segment\n v.muted = true;\n videoMuted = true;\n }\n\n setCurrentTime(skipTime[1]);\n }\n\n break;\n }\n case ActionType.Mute: {\n if (!v.muted) {\n v.muted = true;\n videoMuted = true;\n }\n break;\n }\n }\n }\n\n if (autoSkip && Config.config.audioNotificationOnSkip\n && !isSubmittingSegment && !getVideo()?.muted) {\n const beep = new Audio(chrome.runtime.getURL(\"icons/beep.oga\"));\n beep.volume = getVideo().volume * 0.1;\n const oldMetadata = navigator.mediaSession.metadata\n beep.play();\n beep.addEventListener(\"ended\", () => {\n navigator.mediaSession.metadata = null;\n setTimeout(() => {\n navigator.mediaSession.metadata = oldMetadata;\n beep.remove();\n });\n })\n }\n\n if (!autoSkip\n && skippingSegments.length === 1\n && skippingSegments[0].actionType === ActionType.Poi) {\n waitFor(() => skipButtonControlBar).then(() => {\n skipButtonControlBar.enable(skippingSegments[0]);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) skipButtonControlBar.setShowKeybindHint(false);\n \n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = skipButtonControlBar;\n })\n } else {\n if (openNotice) {\n //send out the message saying that a sponsor message was skipped\n if (!Config.config.dontShowNotice || !autoSkip) {\n createSkipNotice(skippingSegments, autoSkip, unskipTime, false);\n } else if (autoSkip) {\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = {\n setShowKeybindHint: () => {}, //eslint-disable-line @typescript-eslint/no-empty-function\n toggleSkip: () => {\n unskipSponsorTime(skippingSegments[0], unskipTime);\n\n createSkipNotice(skippingSegments, autoSkip, unskipTime, true);\n }\n };\n }\n }\n }\n\n //send telemetry that a this sponsor was skipped\n if (autoSkip || isSubmittingSegment) sendTelemetryAndCount(skippingSegments, skipTime[1] - skipTime[0], true);\n}\n\nfunction createSkipNotice(skippingSegments: SponsorTime[], autoSkip: boolean, unskipTime: number, startReskip: boolean, voteNotice = false) {\n for (const skipNotice of skipNotices) {\n if (skippingSegments.length === skipNotice.segments.length\n && skippingSegments.every((segment) => skipNotice.segments.some((s) => s.UUID === segment.UUID))) {\n // Skip notice already exists\n return;\n }\n }\n\n const upcomingNoticeShown = !!upcomingNotice && !upcomingNotice.closed;\n\n const newSkipNotice = new SkipNotice(skippingSegments, autoSkip, skipNoticeContentContainer, () => {\n upcomingNotice?.close();\n upcomingNotice = null;\n }, unskipTime, startReskip, upcomingNoticeShown, voteNotice);\n if (isOnMobileYouTube() || Config.config.skipKeybind == null) newSkipNotice.setShowKeybindHint(false);\n skipNotices.push(newSkipNotice);\n\n activeSkipKeybindElement?.setShowKeybindHint(false);\n activeSkipKeybindElement = newSkipNotice;\n}\n\nfunction createUpcomingNotice(skippingSegments: SponsorTime[], timeLeft: number, autoSkip: boolean): void {\n if (upcomingNotice \n && !upcomingNotice.closed\n && upcomingNotice.sameNotice(skippingSegments)) {\n return;\n }\n\n upcomingNotice?.close();\n upcomingNotice = new UpcomingNotice(skippingSegments, skipNoticeContentContainer, timeLeft / 1000, autoSkip);\n}\n\nfunction unskipSponsorTime(segment: SponsorTime, unskipTime: number = null, forceSeek = false, voteNotice = false) {\n if (segment.actionType === ActionType.Mute) {\n getVideo().muted = false;\n videoMuted = false;\n }\n\n if (forceSeek || segment.actionType === ActionType.Skip || segment.actionType === ActionType.Chapter || voteNotice) {\n //add a tiny bit of time to make sure it is not skipped again\n setCurrentTime(unskipTime ?? segment.segment[0] + 0.001);\n }\n\n}\n\nfunction reskipSponsorTime(segment: SponsorTime, forceSeek = false) {\n if (segment.actionType === ActionType.Mute && !forceSeek) {\n getVideo().muted = true;\n videoMuted = true;\n } else {\n const skippedTime = Math.max(segment.segment[1] - getCurrentTime(), 0);\n const segmentDuration = segment.segment[1] - segment.segment[0];\n const fullSkip = skippedTime / segmentDuration > manualSkipPercentCount;\n\n setCurrentTime(segment.segment[1]);\n sendTelemetryAndCount([segment], segment.actionType !== ActionType.Chapter ? skippedTime : 0, fullSkip);\n startSponsorSchedule(true, segment.segment[1], false);\n }\n}\n\nfunction createButton(baseID: string, title: string, callback: () => void, imageName: string, isDraggable = false): HTMLElement {\n const existingElement = document.getElementById(baseID + \"Button\");\n if (existingElement !== null) return existingElement;\n\n // Button HTML\n const newButton = document.createElement(\"button\");\n newButton.draggable = isDraggable;\n newButton.id = baseID + \"Button\";\n newButton.classList.add(\"playerButton\");\n newButton.classList.add(\"ytp-button\");\n if (Config.config.prideTheme) newButton.classList.add(\"prideTheme\");\n if (isOnYTTV()) {\n // Some style needs to be set here, but the numbers don't matter \n newButton.setAttribute(\"style\", \"width: 40px; height: 40px\");\n }\n newButton.setAttribute(\"title\", chrome.i18n.getMessage(title));\n newButton.addEventListener(\"click\", () => {\n callback();\n });\n\n // Image HTML\n const newButtonImage = document.createElement(\"img\");\n newButton.draggable = isDraggable;\n newButtonImage.id = baseID + \"Image\";\n newButtonImage.className = \"playerButtonImage\";\n newButtonImage.src = chrome.runtime.getURL(\"icons/\" + imageName);\n\n // Append image to button\n newButton.appendChild(newButtonImage);\n\n // Add the button to player\n if (controls) controls.prepend(newButton);\n\n // Store the elements to prevent unnecessary querying\n playerButtons[baseID] = {\n button: newButton,\n image: newButtonImage,\n setupListener: false\n };\n\n return newButton;\n}\n\nfunction shouldAutoSkip(segment: SponsorTime): boolean {\n const canSkipNonMusic = !Config.config.skipNonMusicOnlyOnYoutubeMusic || isOnYouTubeMusic();\n if (segment.category === \"music_offtopic\" && !canSkipNonMusic) {\n return false;\n }\n\n return (!getSkipProfileBool(\"manualSkipOnFullVideo\") || !sponsorTimes?.some((s) => s.category === segment.category && s.actionType === ActionType.Full))\n && (getCategorySelection(segment)?.option === CategorySkipOption.AutoSkip ||\n (getSkipProfileBool(\"autoSkipOnMusicVideos\") && canSkipNonMusic && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || sponsorTimesSubmitting.some((s) => s.segment === segment.segment))\n || isLoopedChapter(segment);\n}\n\nfunction shouldSkip(segment: SponsorTime): boolean {\n return segment.hidden === SponsorHideType.Visible && (segment.actionType !== ActionType.Full\n && getCategorySelection(segment)?.option > CategorySkipOption.ShowOverlay)\n || (getSkipProfileBool(\"autoSkipOnMusicVideos\") && sponsorTimes?.some((s) => s.category === \"music_offtopic\")\n && segment.actionType === ActionType.Skip)\n || isLoopedChapter(segment);\n}\n\nfunction isLoopedChapter(segment: SponsorTime): boolean{\n return !!segment && !!loopedChapter && segment.segment[1] != undefined\n && segment.segment[0] === loopedChapter.segment[0] && segment.segment[1] === loopedChapter.segment[1];\n}\n\n/** Creates any missing buttons on the YouTube player if possible. */\nasync function createButtons(): Promise {\n controls = await utils.wait(getControls).catch();\n\n // Add button if does not already exist in html\n createButton(\"startSegment\", \"sponsorStart\", () => startOrEndTimingNewSegment(), \"PlayerStartIconSponsorBlocker.svg\");\n createButton(\"cancelSegment\", \"sponsorCancel\", () => cancelCreatingSegment(), \"PlayerCancelSegmentIconSponsorBlocker.svg\");\n createButton(\"delete\", \"clearTimes\", () => clearSponsorTimes(), \"PlayerDeleteIconSponsorBlocker.svg\");\n createButton(\"submit\", \"OpenSubmissionMenu\", () => openSubmissionMenu(), \"PlayerUploadIconSponsorBlocker.svg\");\n createButton(\"info\", \"openPopup\", () => openInfoMenu(), \"PlayerInfoIconSponsorBlocker.svg\");\n\n const controlsContainer = getControls();\n if (Config.config.autoHideInfoButton && !isOnInvidious() && controlsContainer\n && playerButtons[\"info\"]?.button && !controlsWithEventListeners.includes(controlsContainer)) {\n controlsWithEventListeners.push(controlsContainer);\n\n AnimationUtils.setupAutoHideAnimation(playerButtons[\"info\"].button, controlsContainer);\n }\n}\n\n/** Creates any missing buttons on the player and updates their visiblity. */\nasync function updateVisibilityOfPlayerControlsButton(): Promise {\n // Not on a proper video yet\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n await createButtons();\n\n updateEditButtonsOnPlayer();\n\n // Don't show the info button on embeds\n if (Config.config.hideInfoButtonPlayerControls || document.URL.includes(\"/embed/\") || isOnInvidious() || isOnYTTV()\n || document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n playerButtons.info.button.style.display = \"none\";\n } else {\n playerButtons.info.button.style.removeProperty(\"display\");\n }\n}\n\n/** Updates the visibility of buttons on the player related to creating segments. */\nfunction updateEditButtonsOnPlayer(): void {\n // Don't try to update the buttons if we aren't on a YouTube video page\n if (!getVideoID() || isOnMobileYouTube()) return;\n\n const buttonsEnabled = !(Config.config.hideVideoPlayerControls || isOnInvidious());\n\n let creatingSegment = false;\n let submitButtonVisible = false;\n let deleteButtonVisible = false;\n\n // Only check if buttons should be visible if they're enabled\n if (buttonsEnabled) {\n creatingSegment = isSegmentCreationInProgress();\n\n // Show only if there are any segments to submit\n submitButtonVisible = sponsorTimesSubmitting.length > 0;\n\n // Show only if there are any segments to delete\n deleteButtonVisible = sponsorTimesSubmitting.length > 1 || (sponsorTimesSubmitting.length > 0 && !creatingSegment);\n }\n\n // Update the elements\n playerButtons.startSegment.button.style.display = buttonsEnabled ? \"unset\" : \"none\";\n playerButtons.cancelSegment.button.style.display = buttonsEnabled && creatingSegment ? \"unset\" : \"none\";\n\n if (buttonsEnabled) {\n if (creatingSegment) {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStopIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorEnd\"));\n } else {\n playerButtons.startSegment.image.src = chrome.runtime.getURL(\"icons/PlayerStartIconSponsorBlocker.svg\");\n playerButtons.startSegment.button.setAttribute(\"title\", chrome.i18n.getMessage(\"sponsorStart\"));\n }\n }\n\n playerButtons.submit.button.style.display = submitButtonVisible && !Config.config.hideUploadButtonPlayerControls ? \"unset\" : \"none\";\n playerButtons.delete.button.style.display = deleteButtonVisible && !Config.config.hideDeleteButtonPlayerControls ? \"unset\" : \"none\";\n}\n\n/**\n * Used for submitting. This will use the HTML displayed number when required as the video's\n * current time is out of date while scrubbing or at the end of the getVideo(). This is not needed\n * for sponsor skipping as the video is not playing during these times.\n */\nfunction getRealCurrentTime(): number {\n // Used to check if replay button\n const playButtonSVGData = document.querySelector(\".ytp-play-button\")?.querySelector(\".ytp-svg-fill\")?.getAttribute(\"d\");\n const replaceSVGData = \"M 18,11 V 7 l -5,5 5,5 v -4 c 3.3,0 6,2.7 6,6 0,3.3 -2.7,6 -6,6 -3.3,0 -6,-2.7 -6,-6 h -2 c 0,4.4 3.6,8 8,8 4.4,0 8,-3.6 8,-8 0,-4.4 -3.6,-8 -8,-8 z\";\n\n if (playButtonSVGData === replaceSVGData) {\n // At the end of the video\n return getVideoDuration();\n } else {\n return getCurrentTime();\n }\n}\n\nfunction startOrEndTimingNewSegment() {\n if (isOnYTTV() && getIsLivePremiere()) {\n alert(chrome.i18n.getMessage(\"yttvLiveContentWarning\"));\n return;\n }\n\n verifyCurrentTime(getRealCurrentTime());\n const roundedTime = Math.round((getRealCurrentTime() + Number.EPSILON) * 1000) / 1000;\n if (!isSegmentCreationInProgress()) {\n sponsorTimesSubmitting.push({\n segment: [roundedTime],\n UUID: generateUserID() as SegmentUUID,\n category: Config.config.defaultCategory,\n actionType: ActionType.Skip,\n source: SponsorSourceType.Local\n });\n } else {\n // Finish creating the new segment\n const existingSegment = getIncompleteSegment();\n const existingTime = existingSegment.segment[0];\n const currentTime = roundedTime;\n\n // Swap timestamps if the user put the segment end before the start\n existingSegment.segment = [Math.min(existingTime, currentTime), Math.max(existingTime, currentTime)];\n }\n\n // Save the newly created segment\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Make sure they know if someone has already submitted something it while they were watching\n sponsorsLookup(true, true);\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n\n importExistingChapters(false);\n\n if (lastResponseStatus !== 200 && lastResponseStatus !== 404\n && !shownSegmentFailedToFetchWarning && Config.config.showSegmentFailedToFetchWarning) {\n alert(chrome.i18n.getMessage(\"segmentFetchFailureWarning\"));\n\n shownSegmentFailedToFetchWarning = true;\n }\n}\n\nfunction getIncompleteSegment(): SponsorTime {\n return sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1];\n}\n\n/** Is the latest submitting segment incomplete */\nfunction isSegmentCreationInProgress(): boolean {\n const segment = getIncompleteSegment();\n return segment && segment?.segment?.length !== 2;\n}\n\nfunction cancelCreatingSegment() {\n if (isSegmentCreationInProgress()) {\n if (sponsorTimesSubmitting.length > 1) { // If there's more than one segment: remove last\n sponsorTimesSubmitting.pop();\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n } else { // Otherwise delete the video entry & close submission menu\n resetSponsorSubmissionNotice();\n sponsorTimesSubmitting = [];\n delete Config.local.unsubmittedSegments[getVideoID()];\n }\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n\n updateEditButtonsOnPlayer();\n updateSponsorTimesSubmitting(false);\n}\n\nfunction updateSponsorTimesSubmitting(getFromConfig = true) {\n const segmentTimes = Config.local.unsubmittedSegments[getVideoID()];\n\n //see if this data should be saved in the sponsorTimesSubmitting variable\n if (getFromConfig && segmentTimes != undefined) {\n sponsorTimesSubmitting = [];\n\n for (const segmentTime of segmentTimes) {\n sponsorTimesSubmitting.push({\n segment: segmentTime.segment,\n UUID: segmentTime.UUID,\n category: segmentTime.category,\n actionType: segmentTime.actionType,\n description: segmentTime.description,\n hidden: segmentTime.hidden,\n source: segmentTime.source\n });\n }\n\n if (sponsorTimesSubmitting.length > 0) {\n // Assume they already previewed a segment\n previewedSegment = true;\n\n importExistingChapters(true);\n }\n }\n\n updatePreviewBar();\n\n // Restart skipping schedule\n if (getVideo() !== null) startSponsorSchedule();\n\n if (submissionNotice !== null) {\n submissionNotice.update();\n }\n\n checkForPreloadedSegment();\n}\n\nfunction openInfoMenu() {\n if (document.getElementById(\"sponsorBlockPopupContainer\") != null) {\n //it's already added\n return;\n }\n\n popupInitialised = false;\n\n //hide info button\n if (playerButtons.info) playerButtons.info.button.style.display = \"none\";\n\n const popup = document.createElement(\"div\");\n popup.id = \"sponsorBlockPopupContainer\";\n\n const frame = document.createElement(\"iframe\");\n frame.width = \"374\";\n frame.height = \"500\";\n frame.style.borderRadius = \"12px\";\n frame.addEventListener(\"load\", async () => {\n frame.contentWindow.postMessage(\"\", \"*\");\n\n // To support userstyles applying to the popup\n const stylusStyle = document.querySelector(\".stylus\");\n if (stylusStyle) {\n frame.contentWindow.postMessage({\n type: \"style\",\n css: stylusStyle.textContent\n }, \"*\");\n }\n\n const enhancerStyle = document.getElementById(\"efyt-theme\");\n if (enhancerStyle) {\n const enhancerStyleVariables = document.getElementById(\"efyt-theme-variables\");\n if (enhancerStyleVariables) {\n const enhancerCss = await fetch(enhancerStyle.getAttribute(\"href\")).then((response) => response.text());\n const enhancerVariablesCss = await fetch(enhancerStyleVariables.getAttribute(\"href\")).then((response) => response.text());\n\n if (enhancerCss && enhancerVariablesCss) {\n frame.contentWindow.postMessage({\n type: \"style\",\n // Image needs needs to reference the full url now\n css: enhancerCss.replace(\"./images/youtube-deep-dark/IconSponsorBlocker256px.png\",\n \"https://raw.githubusercontent.com/RaitaroH/YouTube-DeepDark/master/YT_Images/IconSponsorBlocker256px.png\")\n + enhancerVariablesCss\n }, \"*\");\n }\n }\n }\n });\n frame.src = chrome.runtime.getURL(\"popup.html\");\n popup.appendChild(frame);\n\n const elemHasChild = (elements: NodeListOf): Element => {\n let parentNode: Element;\n for (const node of elements) {\n if (node.firstElementChild !== null) {\n parentNode = node;\n }\n }\n return parentNode\n }\n\n const parentNodeOptions = [{\n // YouTube\n selector: \"#secondary-inner\",\n hasChildCheck: true\n }, {\n // old youtube theme\n selector: \"#watch7-sidebar-contents\",\n }];\n for (const option of parentNodeOptions) {\n const allElements = document.querySelectorAll(option.selector) as NodeListOf;\n const el = option.hasChildCheck ? elemHasChild(allElements) : allElements[0];\n\n if (el) {\n if (option.hasChildCheck) el.insertBefore(popup, el.firstChild);\n break;\n }\n }\n}\n\nfunction closeInfoMenu() {\n const popup = document.getElementById(\"sponsorBlockPopupContainer\");\n if (popup === null) return;\n\n popup.remove();\n\n // Show info button if it's not an embed\n if (!document.URL.includes(\"/embed/\") && playerButtons.info) {\n playerButtons.info.button.style.display = \"unset\";\n }\n}\n\nfunction clearSponsorTimes() {\n const currentVideoID = getVideoID();\n\n const sponsorTimes = Config.local.unsubmittedSegments[currentVideoID];\n\n if (sponsorTimes != undefined && sponsorTimes.length > 0) {\n const confirmMessage = chrome.i18n.getMessage(\"clearThis\") + getSegmentsMessage(sponsorTimes)\n + \"\\n\" + chrome.i18n.getMessage(\"confirmMSG\")\n if(!confirm(confirmMessage)) return;\n\n resetSponsorSubmissionNotice();\n\n //clear the sponsor times\n delete Config.local.unsubmittedSegments[currentVideoID];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n //clear sponsor times submitting\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateEditButtonsOnPlayer();\n }\n}\n\n//if skipNotice is null, it will not affect the UI\nasync function vote(type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent): Promise {\n if (skipNotice !== null && skipNotice !== undefined) {\n //add loading info\n skipNotice.addVoteButtonInfo(chrome.i18n.getMessage(\"Loading\"))\n skipNotice.setNoticeInfoMessage();\n }\n\n const response = await voteAsync(type, UUID, category);\n if (response != undefined) {\n //see if it was a success or failure\n if (skipNotice != null) {\n if (\"error\" in response) {\n skipNotice.setNoticeInfoMessage(formatJSErrorMessage(response.error))\n skipNotice.resetVoteButtonInfo();\n } else if (response.ok || response.status === 429) {\n //success (treat rate limits as a success)\n skipNotice.afterVote(utils.getSponsorTimeFromUUID(sponsorTimes, UUID), type, category);\n } else {\n logRequest({headers: null, ...response}, \"SB\", \"vote on segment\");\n if (response.status === 403 && response.responseText.startsWith(\"Vote rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n skipNotice.setNoticeInfoMessage(getLongErrorMessage(response.status, response.responseText))\n }\n\n skipNotice.resetVoteButtonInfo();\n }\n }\n }\n\n return response;\n}\n\nasync function voteAsync(type: number, UUID: SegmentUUID, category?: Category): Promise {\n const sponsorIndex = utils.getSponsorIndexFromUUID(sponsorTimes, UUID);\n\n // Don't vote for preview sponsors\n if (sponsorIndex == -1 || sponsorTimes[sponsorIndex].source !== SponsorSourceType.Server) return Promise.resolve(undefined);\n\n // See if the local time saved count and skip count should be saved\n if (type === 0 && sponsorSkipped[sponsorIndex] || type === 1 && !sponsorSkipped[sponsorIndex]) {\n let factor = 1;\n if (type == 0) {\n factor = -1;\n\n sponsorSkipped[sponsorIndex] = false;\n }\n\n // Count this as a skip\n Config.config.minutesSaved = Config.config.minutesSaved + factor * (sponsorTimes[sponsorIndex].segment[1] - sponsorTimes[sponsorIndex].segment[0]) / 60;\n\n Config.config.skipCount = Config.config.skipCount + factor;\n }\n\n return new Promise((resolve) => {\n chrome.runtime.sendMessage({\n message: \"submitVote\",\n type: type,\n UUID: UUID,\n category: category,\n videoID: getVideoID()\n }, (response) => {\n if (response.ok === true) {\n // Change the sponsor locally\n const segment = utils.getSponsorTimeFromUUID(sponsorTimes, UUID);\n if (segment) {\n if (type === 0) {\n segment.hidden = SponsorHideType.Downvoted;\n } else if (category) {\n segment.category = category;\n } else if (type === 1) {\n segment.hidden = SponsorHideType.Visible;\n }\n\n if (!category && !Config.config.isVip) {\n utils.addHiddenSegment(getVideoID(), segment.UUID, segment.hidden);\n }\n\n updatePreviewBar();\n }\n }\n\n resolve(response);\n });\n });\n}\n\n//Closes all notices that tell the user that a sponsor was just skipped\nfunction closeAllSkipNotices(){\n const notices = document.getElementsByClassName(\"sponsorSkipNotice\");\n for (let i = 0; i < notices.length; i++) {\n notices[i].remove();\n }\n}\n\nfunction dontShowNoticeAgain() {\n Config.config.dontShowNotice = true;\n closeAllSkipNotices();\n}\n\n/**\n * Helper method for the submission notice to clear itself when it closes\n */\nfunction resetSponsorSubmissionNotice(callRef = true) {\n submissionNotice?.close(callRef);\n submissionNotice = null;\n}\n\nfunction closeSubmissionMenu() {\n submissionNotice?.close();\n submissionNotice = null;\n}\n\nfunction openSubmissionMenu() {\n if (submissionNotice !== null){\n closeSubmissionMenu();\n return;\n }\n\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n submissionNotice = new SubmissionNotice(skipNoticeContentContainer, sendSubmitMessage);\n }\n}\n\nfunction previewRecentSegment() {\n if (sponsorTimesSubmitting !== undefined && sponsorTimesSubmitting.length > 0) {\n previewTime(sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment[0] - defaultPreviewTime);\n \n if (submissionNotice) {\n submissionNotice.scrollToBottom();\n }\n }\n}\n\nfunction submitSegments() {\n if (sponsorTimesSubmitting !== undefined\n && sponsorTimesSubmitting.length > 0\n && submissionNotice !== null) {\n submissionNotice.submit();\n }\n\n}\n\n//send the message to the background js\n//called after all the checks have been made that it's okay to do so\nasync function sendSubmitMessage(): Promise {\n // check if all segments are full video\n const onlyFullVideo = sponsorTimesSubmitting.every((segment) => segment.actionType === ActionType.Full);\n // Block if submitting on a running livestream or premiere\n if (!onlyFullVideo && (getIsLivePremiere() || isVisible(document.querySelector(\".ytp-live-badge\")))) {\n alert(chrome.i18n.getMessage(\"liveOrPremiere\"));\n return false;\n }\n\n if (!previewedSegment \n && !sponsorTimesSubmitting.every((segment) => \n [ActionType.Full, ActionType.Chapter, ActionType.Poi].includes(segment.actionType) \n || segment.segment[1] >= getVideoDuration()\n || segment.segment[0] === 0)) {\n alert(`${chrome.i18n.getMessage(\"previewSegmentRequired\")} ${keybindToString(Config.config.previewKeybind)}`);\n return false;\n }\n\n // Add loading animation\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadIconSponsorBlocker.svg\");\n const stopAnimation = AnimationUtils.applyLoadingAnimation(playerButtons.submit.button, 1, () => updateEditButtonsOnPlayer());\n\n //check if a sponsor exceeds the duration of the video\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n if (sponsorTimesSubmitting[i].segment[1] > getVideoDuration()) {\n sponsorTimesSubmitting[i].segment[1] = getVideoDuration();\n }\n }\n\n //update sponsorTimes\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n // Check to see if any of the submissions are below the minimum duration set\n if (Config.config.minDuration > 0) {\n for (let i = 0; i < sponsorTimesSubmitting.length; i++) {\n const duration = sponsorTimesSubmitting[i].segment[1] - sponsorTimesSubmitting[i].segment[0];\n if (duration > 0 && duration < Config.config.minDuration) {\n const confirmShort = chrome.i18n.getMessage(\"shortCheck\") + \"\\n\\n\" +\n getSegmentsMessage(sponsorTimesSubmitting);\n\n if(!confirm(confirmShort)) return false;\n }\n }\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"POST\", \"/api/skipSegments\", {\n videoID: getVideoID(),\n userID: Config.config.userID,\n segments: sponsorTimesSubmitting,\n videoDuration: getVideoDuration(),\n userAgent: extensionUserAgent(),\n });\n } catch (e) {\n console.error(\"[SB] Caught error while attempting to submit segments\", e);\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n alert(formatJSErrorMessage(e));\n return false;\n }\n\n if (response.status === 200) {\n stopAnimation();\n\n // Remove segments from storage since they've already been submitted\n delete Config.local.unsubmittedSegments[getVideoID()];\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n\n const newSegments = sponsorTimesSubmitting;\n try {\n const receivedNewSegments = JSON.parse(response.responseText);\n if (receivedNewSegments?.length === newSegments.length) {\n for (let i = 0; i < receivedNewSegments.length; i++) {\n newSegments[i].UUID = receivedNewSegments[i].UUID;\n newSegments[i].source = SponsorSourceType.Server;\n }\n }\n } catch(e) {} // eslint-disable-line no-empty\n\n // Add submissions to current sponsors list\n sponsorTimes = (sponsorTimes || []).concat(newSegments).sort((a, b) => a.segment[0] - b.segment[0]);\n\n // Increase contribution count\n Config.config.sponsorTimesContributed = Config.config.sponsorTimesContributed + sponsorTimesSubmitting.length;\n\n // New count just used to see if a warning \"Read The Guidelines!!\" message needs to be shown\n // One per time submitting\n Config.config.submissionCountSinceCategories = Config.config.submissionCountSinceCategories + 1;\n\n // Empty the submitting times\n sponsorTimesSubmitting = [];\n\n updatePreviewBar();\n updateCategoryPill();\n\n return true;\n } else {\n // Show that the upload failed\n playerButtons.submit.button.style.animation = \"unset\";\n playerButtons.submit.image.src = chrome.runtime.getURL(\"icons/PlayerUploadFailedIconSponsorBlocker.svg\");\n\n if (response.status === 403 && response.responseText.startsWith(\"Submission rejected due to a tip from a moderator.\")) {\n openWarningDialog(skipNoticeContentContainer);\n } else {\n logRequest(response, \"SB\", \"segment submission\");\n alert(getLongErrorMessage(response.status, response.responseText));\n }\n }\n\n return false;\n}\n\n//get the message that visually displays the video times\nfunction getSegmentsMessage(sponsorTimes: SponsorTime[]): string {\n let sponsorTimesMessage = \"\";\n\n for (let i = 0; i < sponsorTimes.length; i++) {\n for (let s = 0; s < sponsorTimes[i].segment.length; s++) {\n let timeMessage = getFormattedTime(sponsorTimes[i].segment[s]);\n //if this is an end time\n if (s == 1) {\n timeMessage = \" \" + chrome.i18n.getMessage(\"to\") + \" \" + timeMessage;\n } else if (i > 0) {\n //add commas if necessary\n timeMessage = \", \" + timeMessage;\n }\n\n sponsorTimesMessage += timeMessage;\n }\n }\n\n return sponsorTimesMessage;\n}\n\nfunction updateActiveSegment(currentTime: number): void {\n if (!chrome.runtime?.id) return;\n\n previewBar?.updateChapterText(sponsorTimes, sponsorTimesSubmitting, currentTime);\n\n chrome.runtime.sendMessage({\n message: \"time\",\n time: currentTime\n });\n}\n\nfunction nextChapter(): void {\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) return;\n\n lastNextChapterKeybind.time = getCurrentTime();\n lastNextChapterKeybind.date = Date.now();\n\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime());\n if (nextChapter !== -1) {\n setCurrentTime(chapters[nextChapter].segment[0]);\n } else {\n setCurrentTime(getVideoDuration());\n }\n}\n\nfunction previousChapter(): void {\n if (Date.now() - lastNextChapterKeybind.date < 3000) {\n setCurrentTime(lastNextChapterKeybind.time);\n lastNextChapterKeybind.date = 0;\n return;\n }\n\n const chapters = previewBar.unfilteredChapterGroups?.filter((time) => [ActionType.Chapter, null].includes(time.actionType));\n if (!chapters || chapters.length <= 0) {\n setCurrentTime(0);\n return;\n }\n\n // subtract 5 seconds to allow skipping back to the previous chapter if close to start of\n // the current one\n const nextChapter = chapters.findIndex((time) => time.segment[0] > getCurrentTime() - Math.min(5, time.segment[1] - time.segment[0]));\n const previousChapter = nextChapter !== -1 ? (nextChapter - 1) : (chapters.length - 1);\n if (previousChapter !== -1) {\n setCurrentTime(chapters[previousChapter].segment[0]);\n } else {\n setCurrentTime(0);\n }\n}\n\nasync function handleKeybindVote(type: number): Promise{\n let lastSkipNotice = skipNotices[0]?.skipNoticeRef.current;\n lastSkipNotice?.onMouseEnter();\n\n if (!lastSkipNotice) {\n const lastSegment = [...sponsorTimes].reverse()?.find((s) => s.source == SponsorSourceType.Server && (s.segment[0] <= getCurrentTime() && getCurrentTime() - (s.segment[1] || s.segment[0]) <= Config.config.skipNoticeDuration));\n if (!lastSegment) return;\n\n createSkipNotice([lastSegment], shouldAutoSkip(lastSegment), lastSegment?.segment[0] + 0.001,false, true);\n lastSkipNotice = await skipNotices[0].waitForSkipNoticeRef();\n lastSkipNotice?.reskippedMode(0);\n }\n\n vote(type,lastSkipNotice?.segments[0]?.UUID, undefined, lastSkipNotice);\n return;\n}\n\nfunction addHotkeyListener(): void {\n document.addEventListener(\"keydown\", hotkeyListener, true);\n document.addEventListener(\"keyup\", hotkeyPropagationListener, true);\n\n addCleanupListener(() => {\n document.body.removeEventListener(\"keydown\", hotkeyListener, true);\n document.body.removeEventListener(\"keyup\", hotkeyPropagationListener, true);\n });\n}\n\nfunction hotkeyListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const skipKey = Config.config.skipKeybind;\n const skipToHighlightKey = Config.config.skipToHighlightKeybind;\n const closeSkipNoticeKey = Config.config.closeSkipNoticeKeybind;\n const startSponsorKey = Config.config.startSponsorKeybind;\n const submitKey = Config.config.actuallySubmitKeybind;\n const previewKey = Config.config.previewKeybind;\n const openSubmissionMenuKey = Config.config.submitKeybind;\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n const upvoteKey = Config.config.upvoteKeybind;\n const downvoteKey = Config.config.downvoteKeybind;\n\n if (keybindEquals(key, skipKey)) {\n if (activeSkipKeybindElement && !(activeSkipKeybindElement instanceof SkipButtonControlBar)) {\n activeSkipKeybindElement.toggleSkip.call(activeSkipKeybindElement);\n }\n\n return;\n } else if (keybindEquals(key, skipToHighlightKey)) {\n if (skipButtonControlBar) {\n skipButtonControlBar.toggleSkip.call(skipButtonControlBar);\n }\n\n return;\n } else if (keybindEquals(key, closeSkipNoticeKey)) {\n for (let i = 0; i < skipNotices.length; i++) {\n skipNotices.pop().close();\n }\n \n upcomingNotice?.close();\n upcomingNotice = null;\n return;\n } else if (keybindEquals(key, startSponsorKey)) {\n startOrEndTimingNewSegment();\n return;\n } else if (keybindEquals(key, submitKey)) {\n submitSegments();\n return;\n } else if (keybindEquals(key, openSubmissionMenuKey)) {\n e.preventDefault();\n\n openSubmissionMenu();\n return;\n } else if (keybindEquals(key, previewKey)) {\n previewRecentSegment();\n return;\n } else if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n nextChapter();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n previousChapter();\n return;\n } else if (keybindEquals(key, upvoteKey)) {\n handleKeybindVote(1);\n return;\n } else if (keybindEquals(key, downvoteKey)) {\n handleKeybindVote(0);\n return;\n }\n}\n\nfunction hotkeyPropagationListener(e: KeyboardEvent): void {\n if (([\"textarea\", \"input\"].includes(document.activeElement?.tagName?.toLowerCase())\n || (document.activeElement as HTMLElement)?.isContentEditable\n || document.activeElement?.id?.toLowerCase()?.match(/editable|input/))\n && document.hasFocus()) return;\n\n const key: Keybind = {\n key: e.key,\n code: e.code,\n alt: e.altKey,\n ctrl: e.ctrlKey,\n shift: e.shiftKey\n };\n\n const nextChapterKey = Config.config.nextChapterKeybind;\n const previousChapterKey = Config.config.previousChapterKeybind;\n\n if (keybindEquals(key, nextChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n } else if (keybindEquals(key, previousChapterKey)) {\n if (sponsorTimes.length > 0) e.stopPropagation();\n return;\n }\n}\n\n/**\n * Adds the CSS to the page if needed. Required on optional sites with Chrome.\n */\nfunction addCSS() {\n if (!isFirefoxOrSafari() && Config.config.invidiousInstances.includes(new URL(document.URL).hostname)) {\n const onLoad = () => {\n const head = document.getElementsByTagName(\"head\")[0];\n\n for (const file of utils.css) {\n const fileref = document.createElement(\"link\");\n\n fileref.rel = \"stylesheet\";\n fileref.type = \"text/css\";\n fileref.href = chrome.runtime.getURL(file);\n\n head.appendChild(fileref);\n }\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n document.addEventListener(\"DOMContentLoaded\", onLoad);\n }\n }\n}\n\n/**\n * Update the isAdPlaying flag and hide preview bar/controls if ad is playing\n */\nfunction updateAdFlag(): void {\n const wasAdPlaying = getIsAdPlaying();\n setIsAdPlaying(document.getElementsByClassName('ad-showing').length > 0);\n if(wasAdPlaying != getIsAdPlaying()) {\n updatePreviewBar();\n updateVisibilityOfPlayerControlsButton();\n }\n}\n\nfunction showTimeWithoutSkips(skippedDuration: number): void {\n if (isNaN(skippedDuration) || skippedDuration < 0) {\n skippedDuration = 0;\n }\n\n // YouTube player time display\n const selector =\n isOnInvidious() ? \".vjs-duration\" :\n isOnYTTV() ? \".ypl-full-controls .ypmcs-control .time-info-bar\" :\n isOnMobileYouTube() ? \".ytwPlayerTimeDisplayContent\" :\n \".ytp-time-display.notranslate .ytp-time-wrapper .ytp-time-contents\";\n const display = document.querySelector(selector);\n if (!display) return;\n\n const durationID = \"sponsorBlockDurationAfterSkips\";\n let duration = document.getElementById(durationID);\n\n // Create span if needed\n if (duration === null) {\n duration = document.createElement('span');\n duration.id = durationID;\n\n if (isOnMobileYouTube()) {\n duration.style.paddingLeft = \"4px\";\n display.insertBefore(duration, display.lastChild);\n } else {\n display.appendChild(duration);\n }\n }\n\n const durationAfterSkips = getFormattedTime(getVideoDuration() - skippedDuration);\n\n duration.innerText = (durationAfterSkips == null || skippedDuration <= 0) ? \"\" : \" (\" + durationAfterSkips + \")\";\n}\n\nfunction checkForPreloadedSegment() {\n if (loadedPreloadedSegment) return;\n\n loadedPreloadedSegment = true;\n const hashParams = getHashParams();\n\n let pushed = false;\n const segments = hashParams.segments;\n if (Array.isArray(segments)) {\n for (const segment of segments) {\n if (Array.isArray(segment.segment)) {\n if (!sponsorTimesSubmitting.some((s) => s.segment[0] === segment.segment[0] && s.segment[1] === s.segment[1])) {\n sponsorTimesSubmitting.push({\n segment: segment.segment,\n UUID: generateUserID() as SegmentUUID,\n category: segment.category ? segment.category : Config.config.defaultCategory,\n actionType: segment.actionType ? segment.actionType : ActionType.Skip,\n description: segment.description ?? \"\",\n source: SponsorSourceType.Local\n });\n\n pushed = true;\n }\n }\n }\n }\n\n if (pushed) {\n Config.local.unsubmittedSegments[getVideoID()] = sponsorTimesSubmitting;\n Config.forceLocalUpdate(\"unsubmittedSegments\");\n }\n}\n\n// Generate and inject a stylesheet that creates CSS variables with configured category colors\nfunction setCategoryColorCSSVariables() {\n let styleContainer = document.getElementById(\"sbCategoryColorStyle\");\n if (!styleContainer) {\n styleContainer = document.createElement(\"style\");\n styleContainer.id = \"sbCategoryColorStyle\";\n if (isVorapisInstalled()) {\n // Vorapi deletes styles\n styleContainer.className = 'stylus';\n }\n\n const head = (document.head || document.documentElement);\n head.appendChild(styleContainer)\n }\n\n let css = \":root {\"\n for (const [category, config] of Object.entries(Config.config.barTypes)) {\n css += `--sb-category-${category}: ${config.color};`;\n css += `--darkreader-bg--sb-category-${category}: ${config.color};`;\n\n const luminance = GenericUtils.getLuminance(config.color);\n css += `--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n css += `--darkreader-text--sb-category-text-${category}: ${luminance > 128 ? \"black\" : \"white\"};`;\n }\n css += \"}\";\n\n styleContainer.innerText = css;\n}\n\n/**\n * If mini player starts playing, then videoID change might have to be called\n */\nfunction checkForMiniplayerPlaying() {\n const miniPlayerUI = document.querySelector(\".miniplayer\") as HTMLElement;\n if (!onVideoPage() && isVisible(miniPlayerUI)) {\n const videoID = getLastNonInlineVideoID();\n if (videoID) {\n triggerVideoIDChange(videoID);\n\n // treat as if video element has changed\n const video = miniPlayerUI.querySelector(\"video\") as HTMLVideoElement;\n if (video && getVideo() !== video) {\n triggerVideoElementChange(video);\n }\n }\n }\n}\n","import { waitFor } from \"../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../maze-utils/src/elements\";\nimport { getHash } from \"../maze-utils/src/hash\";\nimport { getVideoID, isOnInvidious, isOnMobileYouTube } from \"../maze-utils/src/video\";\nimport Config from \"./config\";\nimport { Tooltip } from \"./render/Tooltip\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\nimport { isVisible } from \"./utils/pageUtils\";\nimport { asyncRequestToServer } from \"./utils/requests\";\n\nlet tooltip: Tooltip = null;\nconst showDeArrowPromotion = false;\nexport async function tryShowingDeArrowPromotion() {\n if (showDeArrowPromotion\n && Config.config.showDeArrowPromotion\n && !isOnMobileYouTube()\n && !isOnInvidious()\n && document.URL.includes(\"watch\")\n && Config.config.showUpsells \n && Config.config.showNewFeaturePopups\n && (Config.config.skipCount > 30 || !Config.config.trackViewCount)) {\n\n if (!await isDeArrowInstalled()) {\n try {\n const element = await waitFor(() => getYouTubeTitleNode(), 5000, 500, (e) => isVisible(e)) as HTMLElement;\n if (element && element.innerText && badTitle(element.innerText)) {\n const hashPrefix = (await getHash(getVideoID(), 1)).slice(0, 4);\n const deArrowData = await asyncRequestToServer(\"GET\", \"/api/branding/\" + hashPrefix);\n if (!deArrowData.ok) return;\n\n const deArrowDataJson = JSON.parse(deArrowData.responseText);\n const title = deArrowDataJson?.[getVideoID()]?.titles?.[0];\n if (title && title.title && (title.locked || title.votes > 0)) {\n Config.config.showDeArrowPromotion = false;\n\n tooltip = new Tooltip({\n text: chrome.i18n.getMessage(\"DeArrowTitleReplacementSuggestion\") + \"\\n\\n\" + title.title,\n linkOnClick: () => {\n window.open(\"https://dearrow.ajay.app\");\n Config.config.shownDeArrowPromotion = true;\n },\n secondButtonText: chrome.i18n.getMessage(\"hideNewFeatureUpdates\"),\n referenceNode: element,\n prependElement: element.firstElementChild as HTMLElement,\n timeout: 15000,\n positionRealtive: false,\n containerAbsolute: true,\n bottomOffset: \"inherit\",\n topOffset: \"55px\",\n leftOffset: \"0\",\n rightOffset: \"0\",\n topTriangle: true,\n center: true,\n opacity: 1\n });\n }\n }\n } catch { } // eslint-disable-line no-empty\n } else {\n Config.config.showDeArrowPromotion = false;\n }\n }\n}\n\n/**\n * Two upper case words (at least 2 letters long)\n */\nfunction badTitle(title: string): boolean {\n return !!title.match(/\\p{Lu}{2,} \\p{Lu}{2,}[.!? ]/u);\n}\n\nexport function hideDeArrowPromotion(): void {\n if (tooltip) tooltip.close();\n}\n","/*\nBased on code from\nhttps://github.com/videosegments/videosegments/commits/f1e111bdfe231947800c6efdd51f62a4e7fef4d4/segmentsbar/segmentsbar.js\n*/\n\nimport Config from \"../config\";\nimport { ChapterVote } from \"../render/ChapterVote\";\nimport { ActionType, Category, CategorySkipOption, SegmentContainer, SponsorHideType, SponsorSourceType, SponsorTime } from \"../types\";\nimport { partition } from \"../utils/arrayUtils\";\nimport { DEFAULT_CATEGORY, shortCategoryName } from \"../utils/categoryUtils\";\nimport { normalizeChapterName } from \"../utils/exporter\";\nimport { findNonEmptyElement, findValidElement } from \"../../maze-utils/src/dom\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\nimport { hasAutogeneratedChapters, isVisible } from \"../utils/pageUtils\";\nimport { isVorapisInstalled } from \"../utils/compatibility\";\nimport { isOnYTTV } from \"../../maze-utils/src/video\";\nimport { getCategorySelection } from \"../utils/skipRule\";\nimport { getSkipProfileBool } from \"../utils/skipProfiles\";\n\nconst TOOLTIP_VISIBLE_CLASS = 'sponsorCategoryTooltipVisible';\nconst MIN_CHAPTER_SIZE = 0.003;\n\nexport interface PreviewBarSegment {\n segment: [number, number];\n category: Category;\n actionType: ActionType;\n unsubmitted: boolean;\n showLarger: boolean;\n description: string;\n source: SponsorSourceType;\n requiredSegment?: boolean;\n selectedSegment?: boolean;\n}\n\ninterface ChapterGroup extends SegmentContainer {\n originalDuration: number;\n actionType: ActionType;\n}\n\nclass PreviewBar {\n container: HTMLUListElement;\n categoryTooltip?: HTMLDivElement;\n categoryTooltipContainer?: HTMLElement;\n chapterTooltip?: HTMLDivElement;\n\n // ScrubTooltips for YTTV only\n categoryScrubTooltip?: HTMLDivElement;\n categoryScrubTooltipContainer?: HTMLElement;\n chapterScrubTooltip?: HTMLDivElement;\n\n lastSmallestSegment: Record = {};\n\n parent: HTMLElement;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n onYTTV: boolean;\n progressBar: HTMLElement;\n\n segments: PreviewBarSegment[] = [];\n hasYouTubeChapters = false;\n existingChapters: PreviewBarSegment[] = [];\n videoDuration = 0;\n updateExistingChapters: () => void;\n lastChapterUpdate = 0;\n\n // For chapter bar\n hoveredSection: HTMLElement;\n customChaptersBar: HTMLElement;\n chaptersBarSegments: PreviewBarSegment[];\n chapterVote: ChapterVote;\n originalChapterBar: HTMLElement;\n originalChapterBarBlocks: NodeListOf;\n chapterMargin: number;\n lastRenderedSegments: PreviewBarSegment[];\n unfilteredChapterGroups: ChapterGroup[];\n chapterGroups: ChapterGroup[];\n\n constructor(parent: HTMLElement, onMobileYouTube: boolean, onInvidious: boolean, onYTTV: boolean, chapterVote: ChapterVote, updateExistingChapters: () => void, test=false) {\n if (test) return;\n this.container = document.createElement('ul');\n this.container.id = 'previewbar';\n\n if (onYTTV) {\n this.container.classList.add(\"sponsorblock-yttv-container\");\n }\n\n this.parent = parent;\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.onYTTV = onYTTV;\n this.chapterVote = chapterVote;\n this.updateExistingChapters = updateExistingChapters;\n\n this.updatePageElements();\n this.createElement(parent);\n this.createChapterMutationObservers();\n\n this.setupHoverText();\n }\n\n setupHoverText(): void {\n if (this.onMobileYouTube || this.onInvidious) return;\n\n // delete old ones\n document.querySelectorAll(`.sponsorCategoryTooltip`)\n .forEach((e) => e.remove());\n\n // Create label placeholder\n this.categoryTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.categoryTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.categoryTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n this.chapterTooltip = document.createElement(\"div\");\n if (isOnYTTV()) {\n this.chapterTooltip.className = \"sponsorCategoryTooltip\";\n } else {\n this.chapterTooltip.className = \"ytp-tooltip-title sponsorCategoryTooltip\";\n }\n\n if (isOnYTTV()) {\n this.categoryScrubTooltip = document.createElement(\"div\");\n this.categoryScrubTooltip.className = \"sponsorCategoryTooltip\";\n this.chapterScrubTooltip = document.createElement(\"div\");\n this.chapterScrubTooltip.className = \"sponsorCategoryTooltip\";\n }\n\n // global chapter tooltip or duration tooltip\n // YT, Vorapis, unknown, YTTV\n const tooltipTextWrapper = document.querySelector(\".ytp-tooltip-text-wrapper, .ytp-progress-tooltip-text-container, .yssi-slider .ys-seek-details .time-info-bar\") ?? document.querySelector(\"#progress-bar-container.ytk-player > #hover-time-info\");\n const defaultTooltipSelector = \".ytp-tooltip-title:not(.sponsorCategoryTooltip), .ytp-tooltip-title:not(.sponsorCategoryTooltip) span, .ytp-progress-tooltip-text:not(.sponsorCategoryTooltip), .current-time:not(.sponsorCategoryTooltip)\";\n const originalTooltip = findNonEmptyElement([\n defaultTooltipSelector,\n \".ytp-tooltip-progress-bar-pill-title\"\n ]) ?? document.querySelector(defaultTooltipSelector);\n if (!tooltipTextWrapper || !tooltipTextWrapper.parentElement) return;\n\n // Grab the tooltip from the text wrapper as the tooltip doesn't have its classes on init\n this.categoryTooltipContainer = tooltipTextWrapper.parentElement;\n // YT, Vorapis, YTTV\n const titleTooltip = tooltipTextWrapper.querySelector(\".ytp-tooltip-title, .ytp-progress-tooltip-text, .current-time\") as HTMLElement;\n if (!this.categoryTooltipContainer || !titleTooltip) return;\n\n tooltipTextWrapper.insertBefore(this.categoryTooltip, titleTooltip.nextSibling);\n tooltipTextWrapper.insertBefore(this.chapterTooltip, titleTooltip.nextSibling);\n\n if (isOnYTTV()) {\n const scrubTooltipTextWrapper = document.querySelector(\".yssi-slider .ysl-filmstrip-lens .time-info-bar\")\n if (!this.categoryTooltipContainer) return;\n \n scrubTooltipTextWrapper.appendChild(this.categoryScrubTooltip);\n scrubTooltipTextWrapper.appendChild(this.chapterScrubTooltip);\n }\n\n const seekBar = (document.querySelector(\".ytp-progress-bar-container, .ypcs-scrub-slider-slot.ytu-player-controls\"));\n if (!seekBar) return;\n\n let mouseOnSeekBar = false;\n\n seekBar.addEventListener(\"mouseenter\", () => {\n mouseOnSeekBar = true;\n });\n\n seekBar.addEventListener(\"mouseleave\", () => {\n mouseOnSeekBar = false;\n });\n\n seekBar.addEventListener(\"mousemove\", (e: MouseEvent) => {\n if (!mouseOnSeekBar || !this.categoryTooltip || !this.categoryTooltipContainer || !chrome.runtime?.id) return;\n\n let noYoutubeChapters = !!tooltipTextWrapper.querySelector(\".ytp-tooltip-text.ytp-tooltip-text-no-title, .ytp-progress-tooltip-timestamp\");\n const timeInSeconds = this.decimalToTime((e.clientX - seekBar.getBoundingClientRect().x) / seekBar.clientWidth);\n\n // Find the segment at that location, using the shortest if multiple found\n const [normalSegments, chapterSegments] =\n partition(this.segments,\n (segment) => segment.actionType !== ActionType.Chapter);\n let mainSegment = this.getSmallestSegment(timeInSeconds, normalSegments, \"normal\");\n let secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments, \"chapter\");\n if (mainSegment === null && secondarySegment !== null) {\n mainSegment = secondarySegment;\n secondarySegment = this.getSmallestSegment(timeInSeconds, chapterSegments.filter((s) => s !== secondarySegment));\n }\n\n const hasAYouTubeChapterRemoved = this.hasYouTubeChapters\n || (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters());\n if (hasAYouTubeChapterRemoved) {\n // Hide original tooltip if some chapter has been filtered out\n originalTooltip.style.display = \"none\";\n noYoutubeChapters = true;\n }\n\n if (mainSegment === null && secondarySegment === null) {\n if (!hasAYouTubeChapterRemoved) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n originalTooltip.style.removeProperty(\"display\");\n }\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n } else {\n this.categoryTooltipContainer.classList.add(TOOLTIP_VISIBLE_CLASS);\n const hasTwoTooltips = mainSegment !== null && secondarySegment !== null;\n if (hasTwoTooltips) {\n this.categoryTooltipContainer.classList.add(\"sponsorTwoTooltips\");\n } else {\n this.categoryTooltipContainer.classList.remove(\"sponsorTwoTooltips\");\n }\n\n this.setTooltipTitle(mainSegment, this.categoryTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterTooltip);\n if (this.onYTTV) {\n this.setTooltipTitle(mainSegment, this.categoryScrubTooltip);\n this.setTooltipTitle(secondarySegment, this.chapterScrubTooltip);\n }\n\n if (isVorapisInstalled()) {\n const tooltipParent = tooltipTextWrapper.parentElement!;\n tooltipParent.classList.add(\"with-text\");\n }\n\n if (normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.categoryTooltip.textContent)\n || normalizeChapterName(originalTooltip.textContent) === normalizeChapterName(this.chapterTooltip.textContent)\n || !originalTooltip.textContent) {\n if (originalTooltip.style.display !== \"none\") originalTooltip.style.display = \"none\";\n this.categoryTooltipContainer.classList.remove(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = true;\n } else if (originalTooltip.style.display === \"none\") {\n originalTooltip.style.removeProperty(\"display\");\n this.categoryTooltipContainer.classList.add(\"sponsorHasOriginalTooltip\");\n noYoutubeChapters = false;\n }\n\n // To prevent offset issue\n this.categoryTooltip.style.right = titleTooltip.style.right;\n this.chapterTooltip.style.right = titleTooltip.style.right;\n this.categoryTooltip.style.textAlign = titleTooltip.style.textAlign;\n this.chapterTooltip.style.textAlign = titleTooltip.style.textAlign;\n }\n\n // Used to prevent overlapping\n this.categoryTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n this.chapterTooltip.classList.toggle(\"ytp-tooltip-text-no-title\", noYoutubeChapters);\n });\n }\n\n private setTooltipTitle(segment: PreviewBarSegment, tooltip: HTMLElement): void {\n if (segment) {\n const name = segment.description || shortCategoryName(segment.category);\n if (segment.unsubmitted) {\n tooltip.textContent = chrome.i18n.getMessage(\"unsubmitted\") + \" \" + name;\n } else {\n tooltip.textContent = name;\n }\n\n tooltip.style.removeProperty(\"display\");\n\n // For July 2025 test layout\n if (document.querySelector(\".ytp-delhi-modern\")) {\n tooltip.style.display = \"inline-block\";\n\n // Class gets added back, so grab the top value for when the class is removed\n tooltip.style.removeProperty(\"top\");\n tooltip.classList.remove(\"ytp-tooltip-text-no-title\");\n\n if (tooltip === this.chapterTooltip) {\n tooltip.style.top = `calc(${window.getComputedStyle(tooltip).getPropertyValue(\"top\")} + 5px)`;\n } else {\n tooltip.style.top = window.getComputedStyle(tooltip).getPropertyValue(\"top\");\n }\n }\n } else {\n tooltip.style.display = \"none\";\n }\n }\n\n createElement(parent?: HTMLElement): void {\n if (parent) this.parent = parent;\n\n if (this.onMobileYouTube) {\n this.container.style.transform = \"none\";\n } else if (!this.onInvidious) {\n this.container.classList.add(\"sbNotInvidious\");\n }\n\n // On the seek bar\n if (this.onYTTV) {\n // order of sibling elements matters on YTTV\n this.parent.insertBefore(this.container, this.parent.firstChild.nextSibling.nextSibling);\n } else {\n this.parent.prepend(this.container);\n }\n }\n\n clear(): void {\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild);\n }\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar?.style?.removeProperty(\"display\");\n this.chapterVote?.setVisibility(false);\n\n document.querySelectorAll(`.sponsorBlockChapterBar`).forEach((e) => {\n if (e !== this.customChaptersBar) {\n e.remove();\n }\n });\n }\n\n set(segments: PreviewBarSegment[], videoDuration: number): void {\n this.segments = segments ?? [];\n this.videoDuration = videoDuration ?? 0;\n this.hasYouTubeChapters = segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source));\n\n // Remove unnecessary original chapters if submitted replacements exist\n for (const chapter of this.segments.filter((s) => s.actionType === ActionType.Chapter && s.source === SponsorSourceType.Server)) {\n const segmentDuration = chapter.segment[1] - chapter.segment[0];\n \n const duplicate = this.segments.find((s) => s.actionType === ActionType.Chapter \n && [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source) \n && Math.abs(s.segment[0] - chapter.segment[0]) < Math.min(3, segmentDuration / 3)\n && Math.abs(s.segment[1] - chapter.segment[1]) < Math.min(3, segmentDuration / 3));\n \n if (duplicate) {\n const index = this.segments.indexOf(duplicate);\n this.segments.splice(index, 1);\n }\n }\n\n this.updatePageElements();\n // Sometimes video duration is inaccurate, pull from accessibility info\n const ariaDuration = parseInt(this.progressBar?.getAttribute('aria-valuemax')) ?? 0;\n const multipleActiveVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v)).length > 1;\n if (!multipleActiveVideos && ariaDuration && Math.abs(ariaDuration - this.videoDuration) > 3) {\n this.videoDuration = ariaDuration;\n }\n\n this.update();\n }\n\n private updatePageElements(): void {\n // YT, Vorapis v3\n const allProgressBars = document.querySelectorAll(\".ytp-progress-bar, .ytp-progress-bar-container > .html5-progress-bar > .ytp-progress-list\") as NodeListOf;\n this.progressBar = findValidElement(allProgressBars) ?? allProgressBars?.[0];\n\n if (this.progressBar) {\n const newChapterBar = this.progressBar.querySelector(\".ytp-chapters-container:not(.sponsorBlockChapterBar)\") as HTMLElement;\n if (this.originalChapterBar !== newChapterBar) {\n // Make sure changes are undone on old bar\n this.originalChapterBar?.style?.removeProperty(\"display\");\n\n this.originalChapterBar = newChapterBar;\n }\n }\n }\n\n private update(): void {\n this.clear();\n const chapterChevron = this.getChapterChevron();\n\n if (!this.segments) {\n chapterChevron?.style?.removeProperty(\"display\");\n }\n\n this.chapterMargin = 2;\n if (this.originalChapterBar) {\n this.originalChapterBarBlocks = this.originalChapterBar.querySelectorAll(\":scope > div\") as NodeListOf\n this.existingChapters = this.segments.filter((s) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(s.source)).sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (this.existingChapters?.length > 0) {\n const margin = parseFloat(this.originalChapterBarBlocks?.[0]?.style?.marginRight?.replace(\"px\", \"\"));\n if (margin) this.chapterMargin = margin;\n }\n }\n\n const sortedSegments = this.segments.sort(({ segment: a }, { segment: b }) => {\n // Sort longer segments before short segments to make shorter segments render later\n return (b[1] - b[0]) - (a[1] - a[0]);\n });\n for (const segment of sortedSegments) {\n if (segment.actionType === ActionType.Chapter) continue;\n const bar = this.createBar(segment);\n\n this.container.appendChild(bar);\n }\n\n this.createChaptersBar(this.segments.sort((a, b) => a.segment[0] - b.segment[0]));\n\n if (chapterChevron) {\n if (this.segments.some((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))) {\n chapterChevron.style.removeProperty(\"display\");\n } else if (this.segments) {\n chapterChevron.style.display = \"none\";\n }\n }\n }\n\n createBar(barSegment: PreviewBarSegment): HTMLLIElement {\n const { category, unsubmitted, segment, showLarger } = barSegment;\n\n const bar = document.createElement('li');\n bar.classList.add('previewbar');\n if (barSegment.requiredSegment) bar.classList.add(\"requiredSegment\");\n if (barSegment.selectedSegment) bar.classList.add(\"selectedSegment\");\n bar.innerHTML = showLarger ? '  ' : ' ';\n\n const fullCategoryName = (unsubmitted ? 'preview-' : '') + category;\n bar.setAttribute('sponsorblock-category', fullCategoryName);\n\n // Handled by setCategoryColorCSSVariables() of content.ts\n bar.style.backgroundColor = `var(--sb-category-${fullCategoryName})`;\n if (!this.onMobileYouTube) bar.style.opacity = Config.config.barTypes[fullCategoryName]?.opacity;\n\n bar.style.position = \"absolute\";\n const duration = Math.min(segment[1], this.videoDuration) - segment[0];\n const startTime = segment[1] ? Math.min(this.videoDuration, segment[0]) : segment[0];\n const endTime = Math.min(this.videoDuration, segment[1]);\n bar.style.left = this.timeToPercentage(startTime);\n\n if (duration > 0) {\n bar.style.right = this.timeToRightPercentage(endTime);\n }\n if (this.chapterFilter(barSegment) && segment[1] < this.videoDuration) {\n bar.style.marginRight = `${this.chapterMargin}px`;\n }\n\n if (this.onYTTV) {\n bar.classList.add(\"previewbar-yttv\");\n }\n\n return bar;\n }\n\n createChaptersBar(segments: PreviewBarSegment[]): void {\n if (!this.progressBar || !this.originalChapterBar || this.originalChapterBar.childElementCount <= 0) {\n if (this.originalChapterBar) this.originalChapterBar.style.removeProperty(\"display\");\n\n // Make sure other video types lose their chapter bar\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n this.customChaptersBar = null;\n return;\n }\n\n const remakingBar = segments !== this.lastRenderedSegments;\n if (remakingBar) {\n this.lastRenderedSegments = segments;\n\n // Merge overlapping chapters\n this.unfilteredChapterGroups = this.createChapterRenderGroups(segments);\n }\n \n if ((segments.every((segment) => [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))\n || (!Config.config.renderSegmentsAsChapters\n && segments.every((segment) => segment.actionType !== ActionType.Chapter\n || [SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source))))\n && !(hasAutogeneratedChapters() && !getSkipProfileBool(\"showAutogeneratedChapters\"))) {\n\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n const filteredSegments = segments?.filter((segment) => this.chapterFilter(segment));\n if (filteredSegments) {\n let groups = this.unfilteredChapterGroups;\n if (filteredSegments.length !== segments.length) {\n groups = this.createChapterRenderGroups(filteredSegments);\n }\n this.chapterGroups = groups.filter((segment) => this.chapterGroupFilter(segment));\n\n if (groups.length !== this.chapterGroups.length) {\n // Fix missing sections due to filtered segments\n for (let i = 1; i < this.chapterGroups.length; i++) {\n if (this.chapterGroups[i].segment[0] !== this.chapterGroups[i - 1].segment[1]) {\n this.chapterGroups[i - 1].segment[1] = this.chapterGroups[i].segment[0]\n }\n }\n }\n } else {\n this.chapterGroups = this.unfilteredChapterGroups;\n }\n\n if (this.chapterGroups.length === 0 && !getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Add placeholder chapter group for whole video\n this.chapterGroups = [{\n segment: [0, this.videoDuration],\n originalDuration: 0,\n actionType: null\n }];\n }\n\n if (!this.chapterGroups || this.chapterGroups.length <= 0) {\n if (this.customChaptersBar) this.customChaptersBar.style.display = \"none\";\n this.originalChapterBar.style.removeProperty(\"display\");\n return;\n }\n\n // Create it from cloning\n let createFromScratch = false;\n if (!this.customChaptersBar || !this.progressBar.contains(this.customChaptersBar)) {\n // Clear anything remaining\n document.querySelectorAll(\".sponsorBlockChapterBar\").forEach((element) => element.remove());\n\n createFromScratch = true;\n this.customChaptersBar = this.originalChapterBar.cloneNode(true) as HTMLElement;\n this.customChaptersBar.classList.add(\"sponsorBlockChapterBar\");\n }\n\n this.customChaptersBar.style.display = \"none\";\n const originalSections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\");\n const originalSection = originalSections[0];\n\n // For switching to a video with less chapters\n if (originalSections.length > this.chapterGroups.length) {\n for (let i = originalSections.length - 1; i >= this.chapterGroups.length; i--) {\n this.customChaptersBar.removeChild(originalSections[i]);\n }\n }\n\n // Modify it to have sections for each segment\n for (let i = 0; i < this.chapterGroups.length; i++) {\n const chapter = this.chapterGroups[i].segment;\n let newSection = originalSections[i] as HTMLElement;\n if (!newSection) {\n newSection = originalSection.cloneNode(true) as HTMLElement;\n\n this.firstTimeSetupChapterSection(newSection);\n this.customChaptersBar.appendChild(newSection);\n } else if (createFromScratch) {\n this.firstTimeSetupChapterSection(newSection);\n }\n\n this.setupChapterSection(newSection, chapter[0], chapter[1], i !== this.chapterGroups.length - 1);\n }\n\n // Hide old bar\n this.originalChapterBar.style.display = \"none\";\n this.customChaptersBar.style.removeProperty(\"display\");\n\n if (createFromScratch) {\n if (this.container?.parentElement === this.progressBar) {\n this.progressBar.insertBefore(this.customChaptersBar, this.container.nextSibling);\n } else {\n this.progressBar.prepend(this.customChaptersBar);\n }\n }\n\n if (remakingBar) {\n this.updateChapterAllMutation(this.originalChapterBar, this.progressBar, true);\n }\n }\n\n createChapterRenderGroups(segments: PreviewBarSegment[]): ChapterGroup[] {\n const result: ChapterGroup[] = [];\n\n segments?.forEach((segment, index) => {\n const latestChapter = result[result.length - 1];\n if (latestChapter && latestChapter.segment[1] > segment.segment[0]) {\n const segmentDuration = segment.segment[1] - segment.segment[0];\n if (segment.segment[0] < latestChapter.segment[0]\n || segmentDuration < latestChapter.originalDuration) {\n // Remove latest if it starts too late\n let latestValidChapter = latestChapter;\n const chaptersToAddBack: ChapterGroup[] = []\n while (latestValidChapter?.segment[0] >= segment.segment[0]) {\n const invalidChapter = result.pop();\n if (invalidChapter.segment[1] > segment.segment[1]) {\n if (invalidChapter.segment[0] === segment.segment[0]) {\n invalidChapter.segment[0] = segment.segment[1];\n }\n\n chaptersToAddBack.push(invalidChapter);\n }\n latestValidChapter = result[result.length - 1];\n }\n\n const priorityActionType = this.getActionTypePrioritized([segment.actionType, latestChapter?.actionType]);\n\n // Split the latest chapter if smaller\n result.push({\n segment: [segment.segment[0], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: priorityActionType\n });\n if (latestValidChapter?.segment[1] > segment.segment[1]) {\n result.push({\n segment: [segment.segment[1], latestValidChapter.segment[1]],\n originalDuration: latestValidChapter.originalDuration,\n actionType: latestValidChapter.actionType\n });\n }\n\n chaptersToAddBack.reverse();\n let lastChapterChecked: number[] = segment.segment;\n for (const chapter of chaptersToAddBack) {\n if (chapter.segment[0] < lastChapterChecked[1]) {\n chapter.segment[0] = lastChapterChecked[1];\n }\n\n lastChapterChecked = chapter.segment;\n }\n result.push(...chaptersToAddBack);\n if (latestValidChapter) latestValidChapter.segment[1] = segment.segment[0];\n } else {\n // Start at end of old one otherwise\n result.push({\n segment: [latestChapter.segment[1], segment.segment[1]],\n originalDuration: segmentDuration,\n actionType: segment.actionType\n });\n }\n } else {\n // Add empty buffer before segment if needed\n const lastTime = latestChapter?.segment[1] || 0;\n if (segment.segment[0] > lastTime) {\n result.push({\n segment: [lastTime, segment.segment[0]],\n originalDuration: 0,\n actionType: null\n });\n }\n\n // Normal case\n const endTime = Math.min(segment.segment[1], this.videoDuration);\n result.push({\n segment: [segment.segment[0], endTime],\n originalDuration: endTime - segment.segment[0],\n actionType: segment.actionType\n });\n }\n\n // Add empty buffer after segment if needed\n if (index === segments.length - 1) {\n const nextSegment = segments[index + 1];\n const nextTime = nextSegment ? nextSegment.segment[0] : this.videoDuration;\n const lastTime = result[result.length - 1]?.segment[1] || segment.segment[1];\n if (this.intervalToDecimal(lastTime, nextTime) > MIN_CHAPTER_SIZE) {\n result.push({\n segment: [lastTime, nextTime],\n originalDuration: 0,\n actionType: null\n });\n }\n }\n });\n\n return result;\n }\n\n private getActionTypePrioritized(actionTypes: ActionType[]): ActionType {\n if (actionTypes.includes(ActionType.Skip)) {\n return ActionType.Skip;\n } else if (actionTypes.includes(ActionType.Mute)) {\n return ActionType.Mute;\n } else {\n return actionTypes.find(a => a) ?? actionTypes[0];\n }\n }\n\n private setupChapterSection(section: HTMLElement, startTime: number, endTime: number, addMargin: boolean): void {\n const sizePercent = this.intervalToPercentage(startTime, endTime);\n if (addMargin) {\n section.style.marginRight = `${this.chapterMargin}px`;\n section.style.width = `calc(${sizePercent} - ${this.chapterMargin}px)`;\n } else {\n section.style.marginRight = \"0\";\n section.style.width = sizePercent;\n }\n\n section.setAttribute(\"decimal-width\", String(this.intervalToDecimal(startTime, endTime)));\n }\n\n private firstTimeSetupChapterSection(section: HTMLElement): void {\n section.addEventListener(\"mouseenter\", () => {\n this.hoveredSection?.classList.remove(\"ytp-exp-chapter-hover-effect\");\n section.classList.add(\"ytp-exp-chapter-hover-effect\");\n this.hoveredSection = section;\n });\n }\n\n private createChapterMutationObservers(): void {\n if (!this.progressBar || !this.originalChapterBar) return;\n\n const attributeObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n const currentElement = mutation.target as HTMLElement;\n if (mutation.type === \"attributes\"\n && currentElement.parentElement?.classList.contains(\"ytp-progress-list\")) {\n changes[currentElement.classList[0]] = mutation.target as HTMLElement;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n attributeObserver.observe(this.originalChapterBar, {\n subtree: true,\n attributes: true,\n attributeFilter: [\"style\", \"class\"]\n });\n\n const childListObserver = new MutationObserver((mutations) => {\n const changes: Record = {};\n for (const mutation of mutations) {\n if (mutation.type === \"childList\") {\n this.update();\n break;\n }\n }\n\n this.updateChapterMutation(changes, this.progressBar);\n });\n\n // Only direct children, no subtree\n childListObserver.observe(this.originalChapterBar, {\n childList: true\n });\n\n addCleanupListener(() => {\n attributeObserver.disconnect();\n childListObserver.disconnect();\n });\n }\n\n private updateChapterAllMutation(originalChapterBar: HTMLElement, progressBar: HTMLElement, firstUpdate = false): void {\n const elements = originalChapterBar.querySelectorAll(\".ytp-progress-list > *\");\n const changes: Record = {};\n for (const element of elements) {\n changes[element.classList[0]] = element as HTMLElement;\n }\n\n this.updateChapterMutation(changes, progressBar, firstUpdate);\n }\n\n private updateChapterMutation(changes: Record, progressBar: HTMLElement, firstUpdate = false): void {\n // Go through each newly generated chapter bar and update the width based on changes array\n if (this.customChaptersBar) {\n // Width reached so far in decimal percent\n let cursor = 0;\n\n const sections = this.customChaptersBar.querySelectorAll(\".ytp-chapter-hover-container\") as NodeListOf;\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i];\n\n const sectionWidthDecimal = parseFloat(section.getAttribute(\"decimal-width\"));\n const sectionWidthDecimalNoMargin = sectionWidthDecimal - this.chapterMargin / progressBar.clientWidth;\n\n for (const className in changes) {\n const selector = `.${className}`\n const customChangedElement = section.querySelector(selector) as HTMLElement;\n if (customChangedElement) {\n const fullSectionWidth = i === sections.length - 1 ? sectionWidthDecimal : sectionWidthDecimalNoMargin;\n const changedElement = changes[className];\n const changedData = this.findLeftAndScale(selector, changedElement, progressBar);\n\n const left = (changedData.left) / progressBar.clientWidth;\n const calculatedLeft = Math.max(0, Math.min(1, (left - cursor) / fullSectionWidth));\n if (!isNaN(left) && !isNaN(calculatedLeft)) {\n customChangedElement.style.left = `${calculatedLeft * 100}%`;\n customChangedElement.style.removeProperty(\"display\");\n }\n\n if (changedData.scale !== null) {\n const transformScale = (changedData.scale) / progressBar.clientWidth;\n\n const scale = Math.max(0, Math.min(1 - calculatedLeft, (transformScale - cursor) / fullSectionWidth - calculatedLeft));\n customChangedElement.style.transform =\n `scaleX(${scale})`;\n if (customChangedElement.style.backgroundSize) {\n const backgroundSize = Math.max(changedData.scale / scale, fullSectionWidth * progressBar.clientWidth);\n customChangedElement.style.backgroundSize = `${backgroundSize}px`;\n\n if (changedData.scale < (cursor + fullSectionWidth) * progressBar.clientWidth) {\n customChangedElement.style.backgroundPosition = `-${backgroundSize - fullSectionWidth * progressBar.clientWidth}px`;\n } else {\n // Passed this section\n customChangedElement.style.backgroundPosition = `-${cursor * progressBar.clientWidth}px`;\n }\n }\n\n if (firstUpdate) {\n customChangedElement.style.transition = \"none\";\n setTimeout(() => customChangedElement.style.removeProperty(\"transition\"), 50);\n }\n }\n\n if (customChangedElement.className !== changedElement.className) {\n customChangedElement.className = changedElement.className;\n }\n }\n }\n\n cursor += sectionWidthDecimal;\n }\n\n if (sections.length !== 0 && sections.length !== this.existingChapters?.length\n && Date.now() - this.lastChapterUpdate > 3000) {\n this.lastChapterUpdate = Date.now();\n this.updateExistingChapters();\n }\n }\n }\n\n private findLeftAndScale(selector: string, currentElement: HTMLElement, progressBar: HTMLElement):\n { left: number; scale: number } {\n const sections = currentElement.parentElement.parentElement.parentElement.children;\n let currentWidth = 0;\n let lastWidth = 0;\n\n let left = 0;\n let leftPosition = 0;\n\n let scale = null;\n let scalePosition = 0;\n let scaleWidth = 0;\n let lastScalePosition = 0;\n\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i] as HTMLElement;\n const checkElement = section.querySelector(selector) as HTMLElement;\n const currentSectionWidthNoMargin = this.getPartialChapterSectionStyle(section, \"width\") ?? progressBar.clientWidth;\n const currentSectionWidth = currentSectionWidthNoMargin\n + this.getPartialChapterSectionStyle(section, \"marginRight\");\n\n // First check for left\n const checkLeft = parseFloat(checkElement.style.left.replace(\"px\", \"\"));\n if (checkLeft !== 0) {\n left = checkLeft;\n leftPosition = currentWidth;\n }\n\n // Then check for scale\n const transformMatch = checkElement.style.transform.match(/scaleX\\(([0-9.]+?)\\)/);\n if (transformMatch) {\n const transformScale = parseFloat(transformMatch[1]);\n const endPosition = transformScale + checkLeft / currentSectionWidthNoMargin;\n\n if (lastScalePosition > 0.99999 && endPosition === 0) {\n // Last one was an end section that was fully filled\n scalePosition = currentWidth - lastWidth;\n break;\n }\n\n lastScalePosition = endPosition;\n\n scale = transformScale;\n scaleWidth = currentSectionWidthNoMargin;\n\n if ((i === sections.length - 1 || endPosition < 0.99999) && endPosition > 0) {\n // reached the end of this section for sure\n // if the scale is always zero, then it will go through all sections but still return 0\n\n scalePosition = currentWidth;\n if (checkLeft !== 0) {\n scalePosition += left;\n }\n break;\n }\n }\n\n lastWidth = currentSectionWidth;\n currentWidth += lastWidth;\n }\n\n return {\n left: left + leftPosition,\n scale: scale !== null ? scale * scaleWidth + scalePosition : null\n };\n }\n\n private getPartialChapterSectionStyle(element: HTMLElement, param: string): number {\n const data = element.style[param];\n if (data?.includes(\"%\")) {\n return this.customChaptersBar.clientWidth * (parseFloat(data.replace(\"%\", \"\")) / 100);\n } else {\n return parseInt(element.style[param].match(/\\d+/g)?.[0]) || 0;\n }\n }\n\n updateChapterText(segments: SponsorTime[], submittingSegments: SponsorTime[], currentTime: number): SponsorTime[] {\n if (!Config.config.showSegmentNameInChapterBar\n || Config.config.disableSkipping\n || ((!segments || segments.length <= 0) && submittingSegments?.length <= 0 \n && (getSkipProfileBool(\"showAutogeneratedChapters\") || !hasAutogeneratedChapters()))) {\n const chaptersContainer = this.getChaptersContainer();\n if (chaptersContainer) {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n \n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n }\n\n return [];\n }\n\n segments ??= [];\n if (submittingSegments?.length > 0) segments = segments.concat(submittingSegments);\n const activeSegments = segments.filter((segment) => {\n return segment.hidden === SponsorHideType.Visible\n && segment.segment[0] <= currentTime && segment.segment[1] > currentTime\n && segment.category !== DEFAULT_CATEGORY\n && getCategorySelection(segment).option !== CategorySkipOption.Disabled\n });\n\n this.setActiveSegments(activeSegments);\n return activeSegments;\n }\n\n /**\n * Adds the text to the chapters slot if not filled by default\n */\n private setActiveSegments(segments: SponsorTime[]): void {\n const chaptersContainer = this.getChaptersContainer();\n\n if (chaptersContainer) {\n if (segments.length > 0) {\n chaptersContainer.classList.add(\"sponsorblock-chapter-visible\");\n\n const chosenSegment = segments.sort((a, b) => {\n if (a.actionType === ActionType.Chapter && b.actionType !== ActionType.Chapter) {\n return -1;\n } else if (a.actionType !== ActionType.Chapter && b.actionType === ActionType.Chapter) {\n return 1;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source === SponsorSourceType.Server && b.source !== SponsorSourceType.Server) {\n return -0.5;\n } else if (a.actionType === ActionType.Chapter && b.actionType === ActionType.Chapter\n && a.source !== SponsorSourceType.Server && b.source === SponsorSourceType.Server) {\n return 0.5;\n } else {\n return (b.segment[0] - a.segment[0]) * 4;\n }\n })[0];\n\n const chapterButton = this.getChapterButton(chaptersContainer);\n if (chapterButton) {\n chapterButton.classList.remove(\"ytp-chapter-container-disabled\");\n chapterButton.disabled = false;\n }\n\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n chapterTitle.style.display = \"none\";\n\n const chapterCustomText = (chapterTitle.parentElement.querySelector(\".sponsorChapterText\") || (() => {\n const elem = document.createElement(\"div\");\n chapterTitle.parentElement.insertBefore(elem, chapterTitle);\n elem.classList.add(\"sponsorChapterText\");\n if (document.location.host === \"tv.youtube.com\") {\n elem.style.lineHeight = \"initial\";\n }\n return elem;\n })()) as HTMLDivElement;\n chapterCustomText.innerText = chosenSegment.description || shortCategoryName(chosenSegment.category);\n\n if (chosenSegment.actionType !== ActionType.Chapter) {\n chapterTitle.classList.add(\"sponsorBlock-segment-title\");\n } else {\n chapterTitle.classList.remove(\"sponsorBlock-segment-title\");\n }\n\n if (chosenSegment.source === SponsorSourceType.Server) {\n const chapterVoteContainer = this.chapterVote.getContainer();\n if (document.location.host === \"tv.youtube.com\") {\n if (!chaptersContainer.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n chaptersContainer.appendChild(chapterVoteContainer);\n }\n } else if (!chapterButton.contains(chapterVoteContainer)) {\n const oldVoteContainers = document.querySelectorAll(\"#chapterVote\");\n if (oldVoteContainers.length > 0) {\n oldVoteContainers.forEach((oldVoteContainer) => oldVoteContainer.remove());\n }\n\n chapterButton.insertBefore(chapterVoteContainer, this.getChapterChevron());\n }\n\n this.chapterVote.setVisibility(true);\n this.chapterVote.setSegment(chosenSegment);\n } else {\n this.chapterVote.setVisibility(false);\n }\n } else if (!getSkipProfileBool(\"showAutogeneratedChapters\") && hasAutogeneratedChapters()) {\n // Keep original hidden\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.display = \"none\";\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n\n const titlePrefixDot = chaptersContainer.querySelector(\".ytp-chapter-title-prefix\") as HTMLElement;\n if (titlePrefixDot) titlePrefixDot.style.display = \"none\";\n \n this.chapterVote.setVisibility(false);\n } else {\n chaptersContainer.querySelector(\".sponsorChapterText\")?.remove();\n const chapterTitle = chaptersContainer.querySelector(\".ytp-chapter-title-content\") as HTMLDivElement;\n\n chapterTitle.style.removeProperty(\"display\");\n chaptersContainer.classList.remove(\"sponsorblock-chapter-visible\");\n \n this.chapterVote.setVisibility(false);\n }\n }\n }\n\n private getChaptersContainer(): HTMLElement {\n if (document.location.host === \"tv.youtube.com\") {\n if (!document.querySelector(\".ytp-chapter-container\")) {\n const dest = document.querySelector(\".ypcs-control-buttons-left\");\n if (!dest) return null;\n const sbChapterContainer = document.createElement(\"div\");\n sbChapterContainer.className = \"ytp-chapter-container\";\n const sbChapterTitleContent = document.createElement(\"div\");\n sbChapterTitleContent.className = \"ytp-chapter-title-content\";\n sbChapterContainer.appendChild(sbChapterTitleContent);\n dest.appendChild(sbChapterContainer);\n }\n }\n return document.querySelector(\".ytp-chapter-container\") as HTMLElement;\n }\n\n private getChapterButton(chaptersContainer: HTMLElement): HTMLButtonElement {\n return (chaptersContainer ?? this.getChaptersContainer())\n ?.querySelector(\"button.ytp-chapter-title\") as HTMLButtonElement;\n }\n\n remove(): void {\n this.container.remove();\n\n if (this.categoryTooltip) {\n this.categoryTooltip.remove();\n this.categoryTooltip = undefined;\n }\n\n if (this.categoryTooltipContainer) {\n this.categoryTooltipContainer.classList.remove(TOOLTIP_VISIBLE_CLASS);\n this.categoryTooltipContainer = undefined;\n }\n }\n\n private chapterFilter(segment: PreviewBarSegment): boolean {\n return (Config.config.renderSegmentsAsChapters || segment.actionType === ActionType.Chapter)\n && segment.actionType !== ActionType.Poi\n && this.chapterGroupFilter(segment);\n }\n\n private chapterGroupFilter(segment: SegmentContainer): boolean {\n return segment.segment.length === 2 && this.intervalToDecimal(segment.segment[0], segment.segment[1]) > MIN_CHAPTER_SIZE;\n }\n\n intervalToPercentage(startTime: number, endTime: number) {\n return `${this.intervalToDecimal(startTime, endTime) * 100}%`;\n }\n\n intervalToDecimal(startTime: number, endTime: number) {\n return (this.timeToDecimal(endTime) - this.timeToDecimal(startTime));\n }\n\n timeToPercentage(time: number): string {\n return `${this.timeToDecimal(time) * 100}%`\n }\n\n timeToRightPercentage(time: number): string {\n return `${(1 - this.timeToDecimal(time)) * 100}%`\n }\n\n timeToDecimal(time: number): number {\n return this.decimalTimeConverter(time, true);\n }\n\n decimalToTime(decimal: number): number {\n return this.decimalTimeConverter(decimal, false);\n }\n\n /**\n * Decimal to time or time to decimal\n */\n decimalTimeConverter(value: number, isTime: boolean): number {\n if (this.originalChapterBarBlocks?.length > 1 && this.existingChapters.length === this.originalChapterBarBlocks?.length) {\n // Parent element to still work when display: none\n const totalPixels = this.originalChapterBar.parentElement.clientWidth;\n let pixelOffset = 0;\n let lastCheckedChapter = -1;\n for (let i = 0; i < this.originalChapterBarBlocks.length; i++) {\n const chapterElement = this.originalChapterBarBlocks[i];\n const widthPixels = parseFloat(chapterElement.style.width.replace(\"px\", \"\"));\n\n const marginPixels = chapterElement.style.marginRight ? parseFloat(chapterElement.style.marginRight.replace(\"px\", \"\")) : 0;\n if ((isTime && value >= this.existingChapters[i].segment[1])\n || (!isTime && value >= (pixelOffset + widthPixels + marginPixels) / totalPixels)) {\n pixelOffset += widthPixels + marginPixels;\n lastCheckedChapter = i;\n } else {\n break;\n }\n }\n\n // The next chapter is the one we are currently inside of\n const latestChapter = this.existingChapters[lastCheckedChapter + 1];\n if (latestChapter) {\n const latestWidth = parseFloat(this.originalChapterBarBlocks[lastCheckedChapter + 1].style.width.replace(\"px\", \"\"));\n const latestChapterDuration = latestChapter.segment[1] - latestChapter.segment[0];\n\n if (isTime) {\n const percentageInCurrentChapter = (value - latestChapter.segment[0]) / latestChapterDuration;\n const sizeOfCurrentChapter = latestWidth / totalPixels;\n return Math.min(1, ((pixelOffset / totalPixels) + (percentageInCurrentChapter * sizeOfCurrentChapter)));\n } else {\n const percentageInCurrentChapter = (value * totalPixels - pixelOffset) / latestWidth;\n return Math.max(0, latestChapter.segment[0] + (percentageInCurrentChapter * latestChapterDuration));\n }\n }\n }\n\n if (isTime) {\n return Math.min(1, value / this.videoDuration);\n } else {\n return Math.max(0, value * this.videoDuration);\n }\n }\n\n /*\n * Approximate size on preview bar for smallest element (due to  )\n */\n getMinimumSize(showLarger = false): number {\n return this.videoDuration * (showLarger ? 0.006 : 0.003);\n }\n\n // Name parameter used for cache\n private getSmallestSegment(timeInSeconds: number, segments: PreviewBarSegment[], name?: string): PreviewBarSegment | null {\n const proposedIndex = name ? this.lastSmallestSegment[name]?.index : null;\n const startSearchIndex = proposedIndex && segments[proposedIndex] === this.lastSmallestSegment[name].segment ? proposedIndex : 0;\n const direction = startSearchIndex > 0 && timeInSeconds < this.lastSmallestSegment[name].segment.segment[0] ? -1 : 1;\n\n let segment: PreviewBarSegment | null = null;\n let index = -1;\n let currentSegmentLength = Infinity;\n\n for (let i = startSearchIndex; i < segments.length && i >= 0; i += direction) {\n const seg = segments[i];\n const segmentLength = seg.segment[1] - seg.segment[0];\n const minSize = this.getMinimumSize(seg.showLarger);\n\n const startTime = segmentLength !== 0 ? seg.segment[0] : Math.floor(seg.segment[0]);\n const endTime = segmentLength > minSize ? seg.segment[1] : Math.ceil(seg.segment[0] + minSize);\n if (startTime <= timeInSeconds && endTime >= timeInSeconds) {\n if (segmentLength < currentSegmentLength) {\n currentSegmentLength = segmentLength;\n segment = seg;\n index = i;\n }\n }\n\n if (direction === 1 && seg.segment[0] > timeInSeconds) {\n break;\n }\n }\n\n if (segment) {\n this.lastSmallestSegment[name] = {\n index: index,\n segment: segment\n };\n }\n\n return segment;\n }\n\n private getChapterChevron(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-chevron\");\n }\n}\n\nexport default PreviewBar;\n","import Config from \"../config\";\nimport { SegmentUUID, SponsorTime } from \"../types\";\nimport { getSkippingText } from \"../utils/categoryUtils\";\nimport { AnimationUtils } from \"../../maze-utils/src/animationUtils\";\nimport { keybindToString } from \"../../maze-utils/src/config\";\nimport { isMobileControlsOpen } from \"../utils/mobileUtils\";\n\nexport interface SkipButtonControlBarProps {\n skip: (segment: SponsorTime) => void;\n selectSegment: (UUID: SegmentUUID) => void;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n}\n\nexport class SkipButtonControlBar {\n\n container: HTMLElement;\n skipIcon: HTMLImageElement;\n textContainer: HTMLElement;\n chapterText: HTMLElement;\n segment: SponsorTime;\n\n showKeybindHint = true;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n\n enabled = false;\n\n timeout: NodeJS.Timeout;\n duration = 0;\n\n skip: (segment: SponsorTime) => void;\n\n // Used if on mobile page\n hideButton: () => void;\n showButton: () => void;\n\n // Used by mobile only for swiping away\n left = 0;\n swipeStart = 0;\n\n constructor(props: SkipButtonControlBarProps) {\n this.skip = props.skip;\n this.onMobileYouTube = props.onMobileYouTube;\n this.onYTTV = props.onYTTV;\n\n this.container = document.createElement(\"div\");\n this.container.classList.add(\"skipButtonControlBarContainer\");\n this.container.classList.add(\"sbhidden\");\n if (this.onMobileYouTube) this.container.classList.add(\"mobile\");\n\n this.skipIcon = document.createElement(\"img\");\n this.skipIcon.src = chrome.runtime.getURL(\"icons/skipIcon.svg\");\n this.skipIcon.classList.add(\"ytp-button\");\n this.skipIcon.id = \"sbSkipIconControlBarImage\";\n if (this.onYTTV) {\n this.skipIcon.style.width = \"24px\";\n this.skipIcon.style.height = \"24px\";\n }\n\n this.textContainer = document.createElement(\"div\");\n\n this.container.appendChild(this.skipIcon);\n this.container.appendChild(this.textContainer);\n this.container.addEventListener(\"click\", () => this.toggleSkip());\n this.container.addEventListener(\"mouseenter\", () => {\n this.stopTimer();\n\n if (this.segment) {\n props.selectSegment(this.segment.UUID);\n }\n });\n this.container.addEventListener(\"mouseleave\", () => {\n this.startTimer();\n\n props.selectSegment(null);\n });\n if (this.onMobileYouTube) {\n this.container.addEventListener(\"touchstart\", (e) => this.handleTouchStart(e));\n this.container.addEventListener(\"touchmove\", (e) => this.handleTouchMove(e));\n this.container.addEventListener(\"touchend\", () => this.handleTouchEnd());\n }\n }\n\n getElement(): HTMLElement {\n return this.container;\n }\n\n attachToPage(): void {\n const mountingContainer = this.getMountingContainer();\n this.chapterText = document.querySelector(\".ytp-chapter-container\");\n\n if (mountingContainer && !mountingContainer.contains(this.container)) {\n if (this.onMobileYouTube || this.onYTTV) {\n mountingContainer.appendChild(this.container);\n } else {\n mountingContainer.insertBefore(this.container, this.chapterText);\n }\n\n if (!this.onMobileYouTube) {\n AnimationUtils.setupAutoHideAnimation(this.skipIcon, mountingContainer, false, false);\n } else {\n const { hide, show } = AnimationUtils.setupCustomHideAnimation(this.skipIcon, mountingContainer, false, false);\n this.hideButton = hide;\n this.showButton = show;\n }\n }\n }\n\n private getMountingContainer(): HTMLElement {\n if (!this.onMobileYouTube && !this.onYTTV) {\n return document.querySelector(\".ytp-left-controls\");\n } else if (this.onYTTV) {\n return document.querySelector(\".ypcs-control-buttons-left\");\n } else {\n return document.getElementById(\"player-container-id\");\n }\n }\n\n enable(segment: SponsorTime, duration?: number): void {\n if (duration) this.duration = duration;\n this.segment = segment;\n this.enabled = true;\n\n this.refreshText();\n this.container?.classList?.remove(\"textDisabled\");\n this.textContainer?.classList?.remove(\"sbhidden\");\n AnimationUtils.disableAutoHideAnimation(this.skipIcon);\n\n this.startTimer();\n }\n\n refreshText(): void {\n if (this.segment) {\n this.chapterText?.classList?.add(\"sbhidden\");\n this.container.classList.remove(\"sbhidden\");\n this.textContainer.innerText = this.getTitle();\n this.skipIcon.setAttribute(\"title\", this.getTitle());\n }\n }\n\n setShowKeybindHint(show: boolean): void {\n this.showKeybindHint = show;\n\n this.refreshText();\n }\n\n stopTimer(): void {\n if (this.timeout) clearTimeout(this.timeout);\n }\n\n startTimer(): void {\n this.stopTimer();\n this.timeout = setTimeout(() => this.disableText(), Math.max(Config.config.skipNoticeDuration, this.duration) * 1000);\n }\n\n disable(): void {\n this.container.classList.add(\"sbhidden\");\n\n this.chapterText?.classList?.remove(\"sbhidden\");\n this.getChapterPrefix()?.classList?.remove(\"sbhidden\");\n\n this.enabled = false;\n }\n\n isEnabled(): boolean {\n return this.enabled;\n }\n\n toggleSkip(): void {\n if (this.segment && this.enabled) {\n this.skip(this.segment);\n this.disableText();\n }\n }\n\n disableText(): void {\n if (Config.config.hideSkipButtonPlayerControls) {\n this.disable();\n return;\n }\n\n this.container.classList.add(\"textDisabled\");\n this.textContainer?.classList?.add(\"sbhidden\");\n this.chapterText?.classList?.remove(\"sbhidden\");\n\n this.getChapterPrefix()?.classList?.add(\"sbhidden\");\n\n AnimationUtils.enableAutoHideAnimation(this.skipIcon);\n if (this.onMobileYouTube) {\n this.hideButton();\n }\n }\n\n updateMobileControls(): void {\n if (this.enabled) {\n if (isMobileControlsOpen()) {\n this.showButton();\n } else {\n this.hideButton();\n }\n }\n }\n\n private getTitle(): string {\n return getSkippingText([this.segment], false) + (this.showKeybindHint ? \" (\" + keybindToString(Config.config.skipToHighlightKeybind) + \")\" : \"\");\n }\n\n private getChapterPrefix(): HTMLElement {\n return document.querySelector(\".ytp-chapter-title-prefix\");\n }\n\n // Swiping away on mobile\n private handleTouchStart(event: TouchEvent): void {\n this.swipeStart = event.touches[0].clientX;\n }\n\n // Swiping away on mobile\n private handleTouchMove(event: TouchEvent): void {\n const distanceMoved = this.swipeStart - event.touches[0].clientX;\n this.left = Math.min(-distanceMoved, 0);\n\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private handleTouchEnd(): void {\n if (this.left < -this.container.offsetWidth / 2) {\n this.disableText();\n\n // Don't let animation play\n this.skipIcon.style.display = \"none\";\n setTimeout(() => this.skipIcon.style.removeProperty(\"display\"), 200);\n }\n\n this.left = 0;\n this.updateLeftStyle();\n }\n\n // Swiping away on mobile\n private updateLeftStyle() {\n this.container.style.left = this.left + \"px\";\n }\n}\n","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport CategoryPillComponent, { CategoryPillState } from \"../components/CategoryPillComponent\";\nimport Config from \"../config\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\nimport { Tooltip } from \"./Tooltip\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport { getYouTubeTitleNode } from \"../../maze-utils/src/elements\";\nimport { addCleanupListener } from \"../../maze-utils/src/cleanup\";\n\nconst id = \"categoryPill\";\n\nexport class CategoryPill {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n lastState: CategoryPillState;\n\n mutationObserver?: MutationObserver;\n onMobileYouTube: boolean;\n onInvidious: boolean;\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise;\n \n constructor() {\n this.ref = React.createRef();\n\n addCleanupListener(() => {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n });\n }\n\n async attachToPage(onMobileYouTube: boolean, onInvidious: boolean,\n vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise): Promise {\n this.onMobileYouTube = onMobileYouTube;\n this.onInvidious = onInvidious;\n this.vote = vote;\n\n this.attachToPageInternal();\n }\n\n private async attachToPageInternal(): Promise {\n let referenceNode =\n await waitFor(() => getYouTubeTitleNode());\n\n // Experimental YouTube layout with description on right\n const isOnDescriptionOnRightLayout = document.querySelector(\"#title #description\");\n if (isOnDescriptionOnRightLayout) {\n referenceNode = referenceNode.parentElement;\n }\n\n if (referenceNode && !referenceNode.contains(this.container)) {\n if (!this.container) {\n this.container = document.createElement('span');\n this.container.id = id;\n this.container.style.display = \"relative\";\n\n this.root = createRoot(this.container);\n this.ref = React.createRef();\n this.root.render();\n\n if (this.onMobileYouTube) {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n \n this.mutationObserver = new MutationObserver((changes) => {\n if (changes.some((change) => change.removedNodes.length > 0)) {\n this.attachToPageInternal();\n }\n });\n \n this.mutationObserver.observe(referenceNode, { \n childList: true,\n subtree: true\n });\n }\n }\n\n if (this.lastState) {\n waitFor(() => this.ref.current).then(() => {\n this.ref.current?.setState(this.lastState);\n });\n }\n\n // Use a parent because YouTube does weird things to the top level object\n // react would have to rerender if container was the top level\n const parent = document.createElement(\"span\");\n parent.id = \"categoryPillParent\";\n parent.appendChild(this.container);\n\n referenceNode.prepend(parent);\n if (!isOnDescriptionOnRightLayout) {\n referenceNode.style.display = \"flex\";\n }\n }\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n open: show ? this.ref.current?.state.open : false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n }\n\n async setSegment(segment: SponsorTime): Promise {\n await waitFor(() => this.ref.current);\n\n if (this.ref.current?.state?.segment !== segment || !this.ref.current?.state?.show) {\n const newState = {\n segment,\n show: true,\n open: false\n };\n\n this.ref.current?.setState(newState);\n this.lastState = newState;\n\n if (!Config.config.categoryPillUpdate) {\n Config.config.categoryPillUpdate = true;\n\n const watchDiv = await waitFor(() => document.querySelector(\"#info.ytd-watch-flexy\") as HTMLElement);\n if (watchDiv) {\n new Tooltip({\n text: chrome.i18n.getMessage(\"categoryPillNewFeature\"),\n link: \"https://blog.ajay.app/full-video-sponsorblock\",\n referenceNode: watchDiv,\n prependElement: watchDiv.firstChild as HTMLElement,\n bottomOffset: \"-10px\",\n opacity: 0.95,\n timeout: 50000\n });\n }\n }\n }\n\n if (this.onMobileYouTube && !document.contains(this.container)) {\n this.attachToPageInternal();\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport ChapterVoteComponent, { ChapterVoteState } from \"../components/ChapterVoteComponent\";\nimport { VoteResponse } from \"../messageTypes\";\nimport { Category, SegmentUUID, SponsorTime } from \"../types\";\n\nexport class ChapterVote {\n container: HTMLElement;\n ref: React.RefObject;\n root: Root;\n\n unsavedState: ChapterVoteState;\n\n mutationObserver?: MutationObserver;\n \n constructor(vote: (type: number, UUID: SegmentUUID, category?: Category) => Promise) {\n this.ref = React.createRef();\n\n this.container = document.createElement('span');\n this.container.id = \"chapterVote\";\n this.container.style.height = \"100%\";\n\n if (document.location.host === \"tv.youtube.com\") {\n this.container.style.lineHeight = \"initial\";\n }\n\n this.root = createRoot(this.container);\n this.root.render();\n }\n\n getContainer(): HTMLElement {\n return this.container;\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n }\n\n setVisibility(show: boolean): void {\n const newState = {\n show,\n ...(!show ? { segment: null } : {})\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n\n async setSegment(segment: SponsorTime): Promise {\n if (this.ref.current?.state?.segment !== segment) {\n const newState = {\n segment,\n show: true\n };\n\n if (this.ref.current) {\n this.ref.current?.setState(newState);\n } else {\n this.unsavedState = newState;\n }\n }\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nexport interface RectangleTooltipProps {\n text: string; \n link?: string;\n referenceNode: HTMLElement;\n prependElement?: HTMLElement; // Element to append before\n bottomOffset?: string;\n leftOffset?: string;\n timeout?: number;\n htmlId?: string;\n maxHeight?: string;\n maxWidth?: string;\n backgroundColor?: string;\n fontSize?: string;\n buttonFunction?: () => void;\n}\n\nexport class RectangleTooltip {\n text: string; \n container: HTMLDivElement;\n root: Root;\n timer: NodeJS.Timeout;\n \n constructor(props: RectangleTooltipProps) {\n props.bottomOffset ??= \"0px\";\n props.leftOffset ??= \"0px\";\n props.maxHeight ??= \"100px\";\n props.maxWidth ??= \"300px\";\n props.backgroundColor ??= \"rgba(28, 28, 28, 0.7)\";\n this.text = props.text;\n props.fontSize ??= \"10px\";\n\n this.container = document.createElement('div');\n props.htmlId ??= \"sponsorRectangleTooltip\" + props.text;\n this.container.id = props.htmlId;\n this.container.style.display = \"relative\";\n\n if (props.prependElement) {\n props.referenceNode.insertBefore(this.container, props.prependElement);\n } else {\n props.referenceNode.appendChild(this.container);\n }\n\n if (props.timeout) {\n this.timer = setTimeout(() => this.close(), props.timeout * 1000);\n }\n\n this.root = createRoot(this.container);\n this.root.render(\n
\n
\n \n \n \n {this.text + (props.link ? \". \" : \"\")}\n {props.link ? \n \n {chrome.i18n.getMessage(\"LearnMore\")}\n \n : null}\n \n
\n \n
\n )\n }\n\n close(): void {\n this.root.unmount();\n this.container.remove();\n\n if (this.timer) clearTimeout(this.timer);\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nimport { SponsorTime, ContentContainer, NoticeVisibilityMode } from \"../types\";\nimport Config from \"../config\";\nimport { SkipNoticeAction } from \"../utils/noticeUtils\";\n\nclass SkipNotice {\n segments: SponsorTime[];\n autoSkip: boolean;\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n skipNoticeRef: React.MutableRefObject;\n root: Root;\n\n constructor(segments: SponsorTime[], autoSkip = false, contentContainer: ContentContainer, componentDidMount: () => void, unskipTime: number = null, startReskip = false, upcomingNoticeShown: boolean, voteNotice = false) {\n this.skipNoticeRef = React.createRef();\n\n this.segments = segments;\n this.autoSkip = autoSkip;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n \n const amountOfPreviousNotices = document.getElementsByClassName(\"sponsorSkipNotice\").length;\n //this is the suffix added at the end of every id\n let idSuffix = \"\";\n for (const segment of this.segments) {\n idSuffix += segment.UUID;\n }\n idSuffix += amountOfPreviousNotices;\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={!voteNotice && (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAll \n || (Config.config.noticeVisibilityMode >= NoticeVisibilityMode.MiniForAutoSkip && autoSkip))}\n fadeIn={!upcomingNoticeShown && !voteNotice}\n unskipTime={unskipTime}\n componentDidMount={componentDidMount} />\n );\n }\n\n setShowKeybindHint(value: boolean): void {\n this.skipNoticeRef?.current?.setState({\n showKeybindHint: value\n });\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n\n const skipNotices = this.contentContainer().skipNotices;\n skipNotices.splice(skipNotices.indexOf(this), 1);\n }\n\n toggleSkip(): void {\n this.skipNoticeRef?.current?.prepAction(SkipNoticeAction.Unskip0);\n }\n\n unmutedListener(time: number): void {\n this.skipNoticeRef?.current?.unmutedListener(time);\n }\n\n async waitForSkipNoticeRef(): Promise {\n const waitForRef = () => new Promise((resolve) => {\n const observer = new MutationObserver(() => {\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n observer.observe(document.getElementsByClassName(\"sponsorSkipNoticeContainer\")[0], { childList: true, subtree: true});\n\n if (this.skipNoticeRef.current) {\n observer.disconnect();\n resolve(this.skipNoticeRef.current);\n }\n });\n\n return this.skipNoticeRef?.current || await waitForRef();\n }\n}\n\nexport default SkipNotice;","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport SubmissionNoticeComponent from \"../components/SubmissionNoticeComponent\";\nimport { ContentContainer } from \"../types\";\n\nclass SubmissionNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: () => unknown;\n\n callback: () => Promise;\n\n noticeRef: React.MutableRefObject;\n\n noticeElement: HTMLDivElement;\n\n root: Root;\n\n constructor(contentContainer: ContentContainer, callback: () => Promise) {\n this.noticeRef = React.createRef();\n\n this.contentContainer = contentContainer;\n this.callback = callback;\n\n const referenceNode = utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.id = \"submissionNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close(false)} />\n );\n }\n\n update(): void {\n this.noticeRef.current.forceUpdate();\n }\n\n close(callRef = true): void {\n if (callRef) this.noticeRef.current.cancel();\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n\n submit(): void {\n this.noticeRef.current?.submit?.();\n }\n\n scrollToBottom(): void {\n this.noticeRef.current?.scrollToBottom?.();\n }\n}\n\nexport default SubmissionNotice;","import { GenericTooltip, TooltipProps } from \"../../maze-utils/src/components/Tooltip\";\n\nexport class Tooltip extends GenericTooltip {\n constructor(props: TooltipProps) {\n super(props, \"icons/IconSponsorBlocker256px.png\")\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { ContentContainer, SponsorTime } from \"../types\";\n\nimport Utils from \"../utils\";\nimport SkipNoticeComponent from \"../components/SkipNoticeComponent\";\nconst utils = new Utils();\n\nclass UpcomingNotice {\n segments: SponsorTime[];\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n\n upcomingNoticeRef: React.MutableRefObject;\n root: Root;\n\n closed = false;\n\n constructor(segments: SponsorTime[], contentContainer: ContentContainer, timeLeft: number, autoSkip: boolean) {\n this.upcomingNoticeRef = React.createRef();\n\n this.segments = segments;\n this.contentContainer = contentContainer;\n\n const referenceNode = utils.findReferenceNode();\n\n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n this.root.render(\n this.close()}\n smaller={true}\n fadeIn={true}\n maxCountdownTime={timeLeft} />\n );\n }\n\n close(): void {\n this.root.unmount();\n this.noticeElement.remove();\n\n this.closed = true;\n }\n\n sameNotice(segments: SponsorTime[]): boolean {\n if (segments.length !== this.segments.length) return false;\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i].UUID !== this.segments[i].UUID) return false;\n }\n\n return true;\n }\n}\n\nexport default UpcomingNotice;","import * as React from \"react\";\n\nconst pencilSvg = ({\n fill = \"#ffffff\"\n }): JSX.Element => (\n \n \n \n );\n\nexport default pencilSvg;\n","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import * as React from \"react\";\n\nconst thumbsDownSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n \n
\n
\n \n );\n\nexport default thumbsDownSvg;\n","import * as React from \"react\";\n\nconst thumbsUpSvg = ({\n fill = \"#ffffff\",\n className = \"\",\n width = \"18\",\n height = \"18\"\n }): JSX.Element => (\n \n
\n
\n \n );\n\nexport default thumbsUpSvg;\n","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","export function partition(array: T[], filter: (element: T) => boolean): [T[], T[]] {\n const pass = [], fail = [];\n array.forEach((element) => (filter(element) ? pass : fail).push(element));\n \n return [pass, fail];\n}","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function runCompatibilityChecks() {\n if (Config.config.showZoomToFillError2 && document.URL.includes(\"watch?v=\")) {\n setTimeout(() => {\n const zoomToFill = document.querySelector(\".zoomtofillBtn\");\n \n if (zoomToFill) {\n alert(chrome.i18n.getMessage(\"zoomToFillUnsupported\"));\n }\n\n Config.config.showZoomToFillError2 = false;\n }, 10000);\n }\n}\n\nexport function isVorapisInstalled() {\n return document.querySelector(`.v3`);\n}","import { TextBox } from \"../render/GenericNotice\";\nimport { Category } from \"../types\";\n\nexport function getGuidelineInfo(category: Category): TextBox[] {\n switch (category) {\n case \"sponsor\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"selfpromo\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"exclusive_access\":\n return [{\n icon: \"icons/money.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }];\n case \"interaction\":\n return [{\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/lightbulb.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"intro\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"outro\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"preview\":\n return [{\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"hook\":\n return [{\n icon: \"icons/campaign.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"filler\":\n return [{\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/stopwatch.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }, {\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"music_offtopic\":\n return [{\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/music-note.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n case \"poi_highlight\":\n return [{\n icon: \"icons/star.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/bolt.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n case \"chapter\":\n return [{\n icon: \"icons/close-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline1`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline2`)\n }, {\n icon: \"icons/check-smaller.svg\",\n text: chrome.i18n.getMessage(`category_${category}_guideline3`)\n }];\n default:\n return [{\n icon: \"icons/segway.png\",\n text: chrome.i18n.getMessage(`generic_guideline1`)\n }, {\n icon: \"icons/right-arrow.svg\",\n text: chrome.i18n.getMessage(`generic_guideline2`)\n }];\n }\n}\n\nexport const defaultPreviewTime = 2;","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","/* Gets percieved luminance of a color */\nfunction getLuminance(color: string): number {\n const {r, g, b} = hexToRgb(color);\n return Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\n}\n\n/* Converts hex color to rgb color */\nconst hexChars = \"0123456789abcdef\";\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n if (hex.length == 4)\n hex = \"#\" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\n return /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n ? {\n r: hexChars.indexOf(hex[1]) * 16 + hexChars.indexOf(hex[2]),\n g: hexChars.indexOf(hex[3]) * 16 + hexChars.indexOf(hex[4]),\n b: hexChars.indexOf(hex[5]) * 16 + hexChars.indexOf(hex[6]),\n }: null;\n}\n\n/**\n * List of all indexes that have the specified value\n * https://stackoverflow.com/a/54954694/1985387\n */\nfunction indexesOf(array: T[], value: T): number[] {\n return array.map((v, i) => v === value ? i : -1).filter(i => i !== -1);\n}\n\nexport const GenericUtils = {\n getLuminance,\n indexesOf\n}\n","if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"] = {\n debug: [],\n warn: []\n };\n}\n\nexport function logDebug(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].debug.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.log(`[${new Date().toISOString()}] ${message}`)\n }\n}\n\nexport function logWarn(message: string) {\n if (typeof (window) !== \"undefined\") {\n window[\"SBLogs\"].warn.push(`[${new Date().toISOString()}] ${message}`);\n } else {\n console.warn(`[${new Date().toISOString()}] ${message}`)\n }\n}","export function isMobileControlsOpen(): boolean {\n const overlay = document.getElementById(\"player-control-overlay\");\n\n if (overlay) {\n return !!overlay?.classList?.contains(\"fadein\");\n }\n\n return false;\n}","import Config from \"../config\";\nimport { SponsorTime } from \"../types\";\n\nexport enum SkipNoticeAction {\n None,\n Upvote,\n Downvote,\n CategoryVote,\n CopyDownvote,\n Unskip0,\n Unskip1\n}\n\nexport function downvoteButtonColor(segments: SponsorTime[], actionState: SkipNoticeAction, downvoteType: SkipNoticeAction): string {\n // Also used for \"Copy and Downvote\"\n if (segments?.length > 1) {\n return (actionState === downvoteType) ? Config.config.colorPalette.red : Config.config.colorPalette.white;\n } else {\n // You dont have segment selectors so the lockbutton needs to be colored and cannot be selected.\n return Config.config.isVip && segments?.[0].locked === 1 ? Config.config.colorPalette.locked : Config.config.colorPalette.white;\n }\n}","export function cleanPage() {\n // For live-updates\n if (document.readyState === \"complete\") {\n for (const element of document.querySelectorAll(\"#categoryPillParent, .playerButton, .sponsorThumbnailLabel, #submissionNoticeContainer, .sponsorSkipNoticeContainer, #sponsorBlockPopupContainer, .skipButtonControlBarContainer, #previewbar, .sponsorBlockChapterBar\")) {\n element.remove();\n }\n }\n}","import { ActionType, Category, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { getSkipProfileBool } from \"./skipProfiles\";\n\nexport function getControls(): HTMLElement {\n const controlsSelectors = [\n // YouTube\n \".ytp-right-controls\",\n // Mobile YouTube\n \".player-controls-top\",\n // Invidious/videojs video element's controls element\n \".vjs-control-bar\",\n // Piped shaka player\n \".shaka-bottom-controls\",\n // Vorapis v3\n \".html5-player-chrome\",\n // tv.youtube.com\n \".ypcs-control-buttons-right\"\n ];\n\n for (const controlsSelector of controlsSelectors) {\n const controls = Array.from(document.querySelectorAll(controlsSelector)).filter(el => !isInPreviewPlayer(el));\n\n if (controls.length > 0) {\n return controls[controls.length - 1];\n }\n }\n\n return null;\n}\n\nexport function isInPreviewPlayer(element: Element): boolean {\n return !!element.closest(\"#inline-preview-player\");\n}\n\nexport function isVisible(element: HTMLElement): boolean {\n return element && element.offsetWidth > 0 && element.offsetHeight > 0;\n}\n\nexport function getHashParams(): Record {\n const windowHash = window.location.hash.slice(1);\n if (windowHash) {\n const params: Record = windowHash.split('&').reduce((acc, param) => {\n const [key, value] = param.split('=');\n const decoded = decodeURIComponent(value);\n try {\n acc[key] = decoded?.match(/{|\\[/) ? JSON.parse(decoded) : value;\n } catch (e) {\n console.error(`Failed to parse hash parameter ${key}: ${value}`);\n }\n\n return acc;\n }, {});\n\n return params;\n }\n\n return {};\n}\n\nexport function hasAutogeneratedChapters(): boolean {\n return !!document.querySelector(\"ytd-engagement-panel-section-list-renderer ytd-macro-markers-list-renderer #menu\");\n}\n\nexport function getExistingChapters(currentVideoID: VideoID, duration: number): SponsorTime[] {\n const chaptersBox = document.querySelector(\"ytd-macro-markers-list-renderer\");\n const title = chaptersBox?.closest(\"ytd-engagement-panel-section-list-renderer\")?.querySelector(\"#title-text.ytd-engagement-panel-title-header-renderer\");\n if (title?.textContent?.includes(\"Key moment\")) return [];\n\n const autogenerated = hasAutogeneratedChapters();\n if (!getSkipProfileBool(\"showAutogeneratedChapters\") && autogenerated) return [];\n\n const chapters: SponsorTime[] = [];\n // .ytp-timed-markers-container indicates that key-moments are present, which should not be divided\n if (chaptersBox) {\n let lastSegment: SponsorTime = null;\n const links = chaptersBox.querySelectorAll(\"ytd-macro-markers-list-item-renderer > a\");\n for (const link of links) {\n const timeElement = link.querySelector(\"#time\") as HTMLElement;\n const description = link.querySelector(\"#details h4\") as HTMLElement;\n if (timeElement && description?.innerText?.length > 0 && link.getAttribute(\"href\")?.includes(currentVideoID)) {\n const time = getFormattedTimeToSeconds(timeElement.innerText.replace(/\\./g, \":\"));\n if (time === null) return [];\n\n if (lastSegment) {\n lastSegment.segment[1] = time;\n chapters.push(lastSegment);\n }\n\n lastSegment = {\n segment: [time, null],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: description.innerText,\n source: autogenerated ? SponsorSourceType.Autogenerated : SponsorSourceType.YouTube,\n UUID: null\n };\n }\n }\n\n if (lastSegment) {\n lastSegment.segment[1] = duration;\n chapters.push(lastSegment);\n }\n }\n\n return chapters;\n}\n\nexport function isPlayingPlaylist() {\n return !!document.URL.includes(\"&list=\");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { DataCache } from \"../../maze-utils/src/cache\";\nimport { getHash, HashedValue } from \"../../maze-utils/src/hash\";\nimport Config, { } from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { ActionTypes, SponsorSourceType, SponsorTime, VideoID } from \"../types\";\nimport { getHashParams } from \"./pageUtils\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { extensionUserAgent } from \"../../maze-utils/src\";\nimport { logRequest, serializeOrStringify } from \"../../maze-utils/src/background-request-proxy\";\n\nconst segmentDataCache = new DataCache(() => {\n return {\n segments: null,\n status: 200\n };\n}, 5);\n\nconst pendingList: Record> = {};\n\nexport interface SegmentResponse {\n segments: SponsorTime[] | null;\n status: number | Error | string;\n}\n\nexport async function getSegmentsForVideo(videoID: VideoID, ignoreCache: boolean): Promise {\n if (!ignoreCache) {\n const cachedData = segmentDataCache.getFromCache(videoID);\n if (cachedData) {\n segmentDataCache.cacheUsed(videoID);\n return cachedData;\n }\n }\n\n if (pendingList[videoID]) {\n return await pendingList[videoID];\n }\n\n const pendingData = fetchSegmentsForVideo(videoID);\n pendingList[videoID] = pendingData;\n\n let result: Awaited;\n try {\n result = await pendingData;\n } catch (e) {\n console.error(\"[SB] Caught error while fetching segments\", e);\n return {\n segments: null,\n status: serializeOrStringify(e),\n }\n } finally {\n delete pendingList[videoID];\n }\n\n return result;\n}\n\nasync function fetchSegmentsForVideo(videoID: VideoID): Promise {\n const extraRequestData: Record = {};\n const hashParams = getHashParams();\n if (hashParams.requiredSegment) extraRequestData.requiredSegment = hashParams.requiredSegment;\n\n const hashPrefix = (await getHash(videoID, 1)).slice(0, 5) as VideoID & HashedValue;\n const hasDownvotedSegments = !!Config.local.downvotedSegments[hashPrefix.slice(0, 4)];\n const response = await asyncRequestToServer('GET', \"/api/skipSegments/\" + hashPrefix, {\n categories: CompileConfig.categoryList,\n actionTypes: ActionTypes,\n trimUUIDs: hasDownvotedSegments ? null : 5,\n ...extraRequestData\n }, {\n \"X-CLIENT-NAME\": extensionUserAgent(),\n });\n\n if (response.ok) {\n const receivedSegments: SponsorTime[] = JSON.parse(response.responseText)\n ?.filter((video) => video.videoID === videoID)\n ?.map((video) => video.segments)?.[0]\n ?.map((segment) => ({\n ...segment,\n source: SponsorSourceType.Server\n }))\n ?.sort((a, b) => a.segment[0] - b.segment[0]);\n\n if (receivedSegments && receivedSegments.length) {\n const result = {\n segments: receivedSegments,\n status: response.status\n };\n\n segmentDataCache.setupCache(videoID).segments = result.segments;\n return result;\n } else {\n // Setup with null data\n segmentDataCache.setupCache(videoID);\n }\n } else if (response.status !== 404) {\n logRequest(response, \"SB\", \"skip segments\");\n }\n\n return {\n segments: null,\n status: response.status\n };\n}","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","import { getCurrentPageTitle } from \"../../maze-utils/src/elements\";\nimport { getChannelIDInfo, getVideoDuration } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { CategorySelection, CategorySkipOption, SponsorSourceType, SponsorTime } from \"../types\";\nimport { getSkipProfile, getSkipProfileBool } from \"./skipProfiles\";\nimport { VideoLabelsCacheData } from \"./videoLabels\";\n\nexport interface Permission {\n canSubmit: boolean;\n}\n\nexport enum SkipRuleAttribute {\n StartTime = \"time.start\",\n EndTime = \"time.end\",\n Duration = \"time.duration\",\n StartTimePercent = \"time.startPercent\",\n EndTimePercent = \"time.endPercent\",\n DurationPercent = \"time.durationPercent\",\n Category = \"category\",\n ActionType = \"actionType\",\n Description = \"chapter.name\",\n Source = \"chapter.source\",\n ChannelID = \"channel.id\",\n ChannelName = \"channel.name\",\n VideoDuration = \"video.duration\",\n Title = \"video.title\"\n}\n\nexport enum SkipRuleOperator {\n Less = \"<\",\n LessOrEqual = \"<=\",\n Greater = \">\",\n GreaterOrEqual = \">=\",\n Equal = \"==\",\n NotEqual = \"!=\",\n Contains = \"*=\",\n NotContains = \"!*=\",\n Regex = \"~=\",\n RegexIgnoreCase = \"~i=\",\n NotRegex = \"!~=\",\n NotRegexIgnoreCase = \"!~i=\"\n}\n\nexport interface AdvancedSkipRule {\n attribute: SkipRuleAttribute;\n operator: SkipRuleOperator;\n value: string | number;\n}\n\nexport interface AdvancedSkipRuleSet {\n rules: AdvancedSkipRule[];\n skipOption: CategorySkipOption;\n comment: string;\n}\n\nexport function getCategorySelection(segment: SponsorTime | VideoLabelsCacheData): CategorySelection {\n // First check skip rules\n for (const ruleSet of Config.local.skipRules) {\n if (ruleSet.rules.every((rule) => isSkipRulePassing(segment, rule))) {\n return { name: segment.category, option: ruleSet.skipOption } as CategorySelection;\n }\n }\n\n // Action type filters\n if (\"actionType\" in segment && (segment as SponsorTime).actionType === \"mute\" && !getSkipProfileBool(\"muteSegments\")) {\n return { name: segment.category, option: CategorySkipOption.Disabled } as CategorySelection;\n }\n\n // Then check skip profile\n const profile = getSkipProfile();\n if (profile) {\n const profileSelection = profile.categorySelections.find(selection => selection.name === segment.category);\n if (profileSelection) {\n return profileSelection;\n }\n }\n\n // Then fallback to default\n for (const selection of Config.config.categorySelections) {\n if (selection.name === segment.category) {\n return selection;\n }\n }\n return { name: segment.category, option: CategorySkipOption.Disabled} as CategorySelection;\n}\n\nfunction getSkipRuleValue(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): string | number | undefined {\n switch (rule.attribute) {\n case SkipRuleAttribute.StartTime:\n return (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.EndTime:\n return (segment as SponsorTime).segment?.[1];\n case SkipRuleAttribute.Duration:\n return (segment as SponsorTime).segment?.[1] - (segment as SponsorTime).segment?.[0];\n case SkipRuleAttribute.StartTimePercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n if (startTime === undefined) return undefined;\n\n return startTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.EndTimePercent: {\n const endTime = (segment as SponsorTime).segment?.[1];\n if (endTime === undefined) return undefined;\n\n return endTime / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.DurationPercent: {\n const startTime = (segment as SponsorTime).segment?.[0];\n const endTime = (segment as SponsorTime).segment?.[1];\n if (startTime === undefined || endTime === undefined) return undefined;\n\n return (endTime - startTime) / getVideoDuration() * 100;\n }\n case SkipRuleAttribute.Category:\n return segment.category;\n case SkipRuleAttribute.ActionType:\n return (segment as SponsorTime).actionType;\n case SkipRuleAttribute.Description:\n return (segment as SponsorTime).description || \"\";\n case SkipRuleAttribute.Source:\n switch ((segment as SponsorTime).source) {\n case SponsorSourceType.Local:\n return \"local\";\n case SponsorSourceType.YouTube:\n return \"youtube\";\n case SponsorSourceType.Autogenerated:\n return \"autogenerated\";\n case SponsorSourceType.Server:\n return \"server\";\n default:\n return undefined;\n }\n case SkipRuleAttribute.ChannelID:\n return getChannelIDInfo().id;\n case SkipRuleAttribute.ChannelName:\n return getChannelIDInfo().author;\n case SkipRuleAttribute.VideoDuration:\n return getVideoDuration();\n case SkipRuleAttribute.Title:\n return getCurrentPageTitle() || \"\";\n default:\n return undefined;\n }\n}\n\nfunction isSkipRulePassing(segment: SponsorTime | VideoLabelsCacheData, rule: AdvancedSkipRule): boolean {\n const value = getSkipRuleValue(segment, rule);\n \n switch (rule.operator) {\n case SkipRuleOperator.Less:\n return typeof value === \"number\" && value < (rule.value as number);\n case SkipRuleOperator.LessOrEqual:\n return typeof value === \"number\" && value <= (rule.value as number);\n case SkipRuleOperator.Greater:\n return typeof value === \"number\" && value > (rule.value as number);\n case SkipRuleOperator.GreaterOrEqual:\n return typeof value === \"number\" && value >= (rule.value as number);\n case SkipRuleOperator.Equal:\n return value === rule.value;\n case SkipRuleOperator.NotEqual:\n return value !== rule.value;\n case SkipRuleOperator.Contains:\n return String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.NotContains:\n return !String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase());\n case SkipRuleOperator.Regex:\n return new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.RegexIgnoreCase:\n return new RegExp(rule.value as string, \"i\").test(String(value));\n case SkipRuleOperator.NotRegex:\n return !new RegExp(rule.value as string).test(String(value));\n case SkipRuleOperator.NotRegexIgnoreCase:\n return !new RegExp(rule.value as string, \"i\").test(String(value));\n default:\n return false;\n }\n}\n\nexport function getCategoryDefaultSelection(category: string): CategorySelection {\n for (const selection of Config.config.categorySelections) {\n if (selection.name === category) {\n return selection;\n }\n }\n return { name: category, option: CategorySkipOption.Disabled} as CategorySelection;\n}","import { extractVideoID, isOnInvidious } from \"../../maze-utils/src/video\";\nimport Config from \"../config\";\nimport { getHasStartSegment, getVideoLabel } from \"./videoLabels\";\nimport { getThumbnailSelector, setThumbnailListener } from \"../../maze-utils/src/thumbnailManagement\";\nimport { VideoID } from \"../types\";\nimport { getSegmentsForVideo } from \"./segmentData\";\nimport { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport async function handleThumbnails(thumbnails: HTMLImageElement[]): Promise {\n await Promise.all(thumbnails.map((t) => {\n labelThumbnail(t);\n setupThumbnailHover(t);\n }));\n}\n\nexport async function labelThumbnail(thumbnail: HTMLImageElement): Promise {\n if (!Config.config?.fullVideoSegments || !Config.config?.fullVideoLabelsOnThumbnails) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n \n const videoID = await extractVideoIDFromElement(thumbnail);\n if (!videoID) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const category = await getVideoLabel(videoID);\n if (!category) {\n hideThumbnailLabel(thumbnail);\n return null;\n }\n\n const { overlay, text } = createOrGetThumbnail(thumbnail);\n\n overlay.style.setProperty('--category-color', `var(--sb-category-preview-${category}, var(--sb-category-${category}))`);\n overlay.style.setProperty('--category-text-color', `var(--sb-category-text-preview-${category}, var(--sb-category-text-${category}))`);\n text.innerText = chrome.i18n.getMessage(`category_${category}`);\n overlay.classList.add(\"sponsorThumbnailLabelVisible\");\n\n return overlay;\n}\n\nexport async function setupThumbnailHover(thumbnail: HTMLImageElement): Promise {\n // Cache would be reset every load due to no SPA\n if (isOnInvidious()) return;\n\n const mainElement = thumbnail.closest(\"#dismissible\") as HTMLElement;\n if (mainElement) {\n mainElement.removeEventListener(\"mouseenter\", thumbnailHoverListener);\n mainElement.addEventListener(\"mouseenter\", thumbnailHoverListener);\n }\n}\n\nfunction thumbnailHoverListener(e: MouseEvent) {\n if (!chrome.runtime?.id) return;\n\n const thumbnail = (e.target as HTMLElement).querySelector(getThumbnailSelector()) as HTMLImageElement;\n if (!thumbnail) return;\n\n // Pre-fetch data for this video\n let fetched = false;\n const preFetch = async () => {\n fetched = true;\n const videoID = await extractVideoIDFromElement(thumbnail);\n if (videoID && await getHasStartSegment(videoID)) {\n void getSegmentsForVideo(videoID, false);\n }\n };\n const timeout = setTimeout(preFetch, 100);\n const onMouseDown = () => {\n clearTimeout(timeout);\n if (!fetched) {\n preFetch();\n }\n };\n\n e.target.addEventListener(\"mousedown\", onMouseDown, { once: true });\n e.target.addEventListener(\"mouseleave\", () => {\n clearTimeout(timeout);\n e.target.removeEventListener(\"mousedown\", onMouseDown);\n }, { once: true });\n}\n\nfunction getLink(thumbnail: HTMLImageElement): HTMLAnchorElement | null {\n if (isOnInvidious()) {\n return thumbnail.parentElement as HTMLAnchorElement | null;\n } else if (!onMobile()) {\n const link = thumbnail.querySelector(\"a#thumbnail, a.reel-item-endpoint, a.yt-lockup-metadata-view-model__title, a.yt-lockup-metadata-view-model__title-link, a.yt-lockup-view-model__content-image, a.yt-lockup-metadata-view-model-wiz__title\") as HTMLAnchorElement;\n if (link) {\n return link;\n } else if (thumbnail.nodeName === \"YTD-HERO-PLAYLIST-THUMBNAIL-RENDERER\"\n || thumbnail.nodeName === \"YT-THUMBNAIL-VIEW-MODEL\"\n ) {\n return thumbnail.closest(\"a\") as HTMLAnchorElement;\n } else {\n return null;\n }\n } else {\n // Big thumbnails, compact thumbnails, shorts, channel feature, playlist header\n return thumbnail.querySelector(\"a.media-item-thumbnail-container, a.compact-media-item-image, a.reel-item-endpoint, :scope > a, .amsterdam-playlist-thumbnail-wrapper > a\") as HTMLAnchorElement;\n }\n}\n\nasync function extractVideoIDFromElement(thumbnail: HTMLImageElement): Promise {\n const link = getLink(thumbnail);\n if (!link || link.nodeName !== \"A\" || !link.href) return null; // no link found\n\n return await extractVideoID(link);\n}\n\nfunction getOldThumbnailLabel(thumbnail: HTMLImageElement): HTMLElement | null {\n return thumbnail.querySelector(\".sponsorThumbnailLabel\") as HTMLElement | null;\n} \n\nfunction hideThumbnailLabel(thumbnail: HTMLImageElement): void {\n const oldLabel = getOldThumbnailLabel(thumbnail);\n if (oldLabel) {\n oldLabel.classList.remove(\"sponsorThumbnailLabelVisible\");\n }\n}\n\nfunction createOrGetThumbnail(thumbnail: HTMLImageElement): { overlay: HTMLElement; text: HTMLElement } {\n const oldElement = getOldThumbnailLabel(thumbnail);\n if (oldElement) {\n return {\n overlay: oldElement as HTMLElement,\n text: oldElement.querySelector(\"span\") as HTMLElement\n };\n }\n\n const overlay = document.createElement(\"div\") as HTMLElement;\n overlay.classList.add(\"sponsorThumbnailLabel\");\n // Disable hover autoplay\n overlay.addEventListener(\"pointerenter\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerleave\", { bubbles: true }));\n });\n overlay.addEventListener(\"pointerleave\", (e) => {\n e.stopPropagation();\n thumbnail.dispatchEvent(new PointerEvent(\"pointerenter\", { bubbles: true }));\n });\n\n const icon = createSBIconElement();\n const text = document.createElement(\"span\");\n overlay.appendChild(icon);\n overlay.appendChild(text);\n thumbnail.appendChild(overlay);\n\n return {\n overlay,\n text\n };\n}\n\nfunction createSBIconElement(): SVGSVGElement {\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"viewBox\", \"0 0 565.15 568\");\n const use = document.createElementNS(\"http://www.w3.org/2000/svg\", \"use\");\n use.setAttribute(\"href\", \"#SponsorBlockIcon\");\n svg.appendChild(use);\n return svg;\n}\n\n\n// Inserts the icon svg definition, so it can be used elsewhere\nfunction insertSBIconDefinition() {\n const container = document.createElement(\"span\");\n\n // svg from /public/icons/PlayerStartIconSponsorBlocker.svg, with useless stuff removed\n container.innerHTML = `\n\n \n \n \n \n \n \n`;\n document.body.appendChild(container.children[0]);\n}\n\nexport function setupThumbnailListener(): void {\n setThumbnailListener(handleThumbnails, () => {\n insertSBIconDefinition();\n }, () => Config.isReady());\n}","\nexport function getStartTimeFromUrl(url: string): number {\n const urlParams = new URLSearchParams(url);\n const time = urlParams?.get('t') || urlParams?.get('time_continue');\n\n return urlTimeToSeconds(time);\n}\n\nexport function urlTimeToSeconds(time: string): number {\n if (!time) {\n return 0;\n }\n\n const re = /(?:(\\d{1,3})h)?(?:(\\d{1,2})m)?(\\d+)s?/;\n const match = re.exec(time);\n\n if (match) {\n const hours = parseInt(match[1] ?? '0', 10);\n const minutes = parseInt(match[2] ?? '0', 10);\n const seconds = parseInt(match[3] ?? '0', 10);\n\n return hours * 3600 + minutes * 60 + seconds;\n } else if (/\\d+/.test(time)) {\n return parseInt(time, 10);\n } else {\n return 0;\n }\n}","import { Category, CategorySkipOption, VideoID } from \"../types\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { logWarn } from \"./logger\";\nimport { asyncRequestToServer } from \"./requests\";\nimport { getCategorySelection } from \"./skipRule\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport interface VideoLabelsCacheData {\n category: Category;\n hasStartSegment: boolean;\n}\n\nexport interface LabelCacheEntry {\n timestamp: number;\n videos: Record;\n}\n\nconst labelCache: Record = {};\nconst cacheLimit = 1000;\n\nasync function getLabelHashBlock(hashPrefix: string): Promise {\n // Check cache\n const cachedEntry = labelCache[hashPrefix];\n if (cachedEntry) {\n return cachedEntry;\n }\n\n let response: FetchResponse;\n try {\n response = await asyncRequestToServer(\"GET\", `/api/videoLabels/${hashPrefix}?hasStartSegment=true`);\n } catch (e) {\n console.error(\"[SB] Caught error while fetching video labels\", e)\n return null;\n }\n if (response.status !== 200) {\n logRequest(response, \"SB\", \"video labels\");\n // No video labels or server down\n labelCache[hashPrefix] = {\n timestamp: Date.now(),\n videos: {},\n };\n return null;\n }\n\n try {\n const data = JSON.parse(response.responseText);\n\n const newEntry: LabelCacheEntry = {\n timestamp: Date.now(),\n videos: Object.fromEntries(data.map(video => [video.videoID, {\n category: video.segments[0]?.category,\n hasStartSegment: video.hasStartSegment\n }])),\n };\n labelCache[hashPrefix] = newEntry;\n\n if (Object.keys(labelCache).length > cacheLimit) {\n // Remove oldest entry\n const oldestEntry = Object.entries(labelCache).reduce((a, b) => a[1].timestamp < b[1].timestamp ? a : b);\n delete labelCache[oldestEntry[0]];\n }\n\n return newEntry;\n } catch (e) {\n logWarn(`Error parsing video labels: ${e}`);\n\n return null;\n }\n}\n\nexport async function getVideoLabel(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n const category = result.videos[videoID]?.category;\n if (category && getCategorySelection(result.videos[videoID]).option !== CategorySkipOption.Disabled) {\n return category;\n } else {\n return null;\n }\n }\n\n return null;\n}\n\nexport async function getHasStartSegment(videoID: VideoID): Promise {\n const prefix = (await getHash(videoID, 1)).slice(0, 4);\n const result = await getLabelHashBlock(prefix);\n\n if (result) {\n return result?.videos[videoID]?.hasStartSegment ?? false;\n }\n\n return null;\n}\n","import { objectToURI } from \"../../maze-utils/src\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../../maze-utils/src/formating\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport Config from \"../config\";\nimport GenericNotice, { NoticeOptions } from \"../render/GenericNotice\";\nimport { ContentContainer } from \"../types\";\nimport { asyncRequestToServer } from \"./requests\";\n\nexport interface ChatConfig {\n displayName: string;\n composerInitialValue?: string;\n customDescription?: string;\n}\n\nexport async function openWarningDialog(contentContainer: ContentContainer): Promise {\n let userInfo: FetchResponse;\n try {\n userInfo = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config.userID),\n values: [\"warningReason\"]\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to fetch user's active warnings\", e)\n return;\n }\n\n if (userInfo.ok) {\n const warningReason = JSON.parse(userInfo.responseText)?.warningReason;\n let userName = \"\";\n try {\n const userNameData = await asyncRequestToServer(\"GET\", \"/api/getUsername?userID=\" + Config.config.userID);\n userName = userNameData.ok ? JSON.parse(userNameData.responseText).userName : \"\";\n } catch (e) {\n console.warn(\"[SB] Caught non-fatal error while trying to resolve user's username\", e);\n }\n const publicUserID = await getHash(Config.config.userID);\n\n let notice: GenericNotice = null;\n const options: NoticeOptions = {\n title: chrome.i18n.getMessage(\"deArrowMessageRecieved\"),\n textBoxes: [{\n text: chrome.i18n.getMessage(\"warningChatInfo\"),\n icon: null\n }, ...warningReason.split(\"\\n\").map((reason) => ({\n text: reason,\n icon: null\n }))],\n buttons: [{\n name: chrome.i18n.getMessage(\"questionButton\"),\n listener: () => openChat({\n displayName: `${userName ? userName : ``}${userName !== publicUserID ? ` | ${publicUserID}` : ``}`\n })\n },\n {\n name: chrome.i18n.getMessage(\"warningConfirmButton\"),\n listener: async () => {\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"POST\", \"/api/warnUser\", {\n userID: Config.config.userID,\n enabled: false\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to acknowledge user's active warning\", e);\n alert(formatJSErrorMessage(e));\n }\n\n if (result.ok) {\n notice?.close();\n } else {\n logRequest(result, \"SB\", \"warning acknowledgement\");\n alert(getLongErrorMessage(result.status, result.responseText));\n }\n }\n }],\n timed: false\n };\n\n notice = new GenericNotice(contentContainer, \"warningNotice\", options);\n } else {\n logRequest(userInfo, \"SB\", \"user's active warnings\");\n }\n}\n\nexport function openChat(config: ChatConfig): void {\n window.open(\"https://chat.sponsor.ajay.app/#\" + objectToURI(\"\", config, false));\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(6069);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","logoUrl","bottomOffset","topOffset","leftOffset","rightOffset","innerBottomMargin","displayTriangle","topTriangle","extraClass","showLogo","showGotIt","positionRealtive","containerAbsolute","center","elements","buttonsAtBottom","textBoxes","textBoxMaxHeight","position","prependElement","referenceNode","timeout","timer","close","backgroundColor","root","bottom","right","margin","undefined","className","marginBottom","maxHeight","overflowY","getURL","getTextElements","textDecoration","rel","i18n","getMessage","linkOnClick","marginLeft","cursor","onAuxClick","getButtons","float","secondButtonText","secondButtonOnClick","result","line","padding","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","fetchConfig","all","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","getYouTubeTitleNode","titleNode","formattedText","innerText","elem","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CategoryPillComponent","React","mainRef","segment","open","getColor","getTextColor","toggle","showTextByDefault","getTitleText","toggleOpen","onMouseEnter","openTooltip","onMouseLeave","closeTooltip","prideTheme","category","vote","fill","colorPalette","white","downvoteButtonColor","SkipNoticeAction","Downvote","showTooltipOnClick","stopAnimation","UUID","formatJSErrorMessage","logRequest","getLongErrorMessage","tooltip","tooltipMount","Tooltip","firstElementChild","shortDescription","ChapterVoteComponent","draggable","chapterNode","actionType","ActionType","Chapter","outerBounding","buttonBounding","CountdownMode","bounds","NoticeComponent","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","showInSecondSlot","startCountdown","noticeStyle","userSelect","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","limitWidth","hideLogo","logoFill","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","icon","textParts","textPart","SelectorComponent","getOptions","option","onChange","label","utils","SkipButtonState","SkipNoticeComponent","noticeRef","categoryOptionRef","segments","autoSkip","contentContainer","voteNotice","getVoteText","upcomingNotice","getUpcomingText","getSkippingText","previousSkipNotices","selectedColor","red","unselectedColor","lockedColor","locked","isMuteSegment","Mute","getFullDurationCountdown","defaultSkipButtonState","startReskip","Redo","Undo","skipButtonStates","Start","defaultSkipButtonCallback","reskip","unskip","skipButtonCallbacks","messages","messageOnClick","countdownText","showSkipButton","editing","choosingCategory","actionState","None","showKeybindHint","voted","copied","getUnskippedModeInfo","transform","getSkipButton","noticeVisibilityMode","NoticeVisibilityMode","FadedForAll","FadedForAutoSkip","barTypes","getMessageBoxes","getBottomRow","prepAction","Upvote","openEditingOptions","CopyDownvote","dontShowNoticeAgain","CategoryVote","resetStateToStart","getCategoryOptions","getSubmissionChooser","buttonIndex","Poi","unskipTime","forceSeek","Unskip0","Unskip1","minWidth","getSkipButtonText","Skip","keybindToString","skipKeybind","getSubmissionChooserOpacity","getSubmissionChooserColor","performAction","getFormattedTime","isUpvote","isDownvote","isCopyDownvote","isVip","noAction","upvote","downvote","categoryVote","copyDownvote","unskipAction","sponsorVideoID","sponsorTimesSubmitting","generateUserID","SponsorSourceType","Local","segmentTimes","unsubmittedSegments","updatePreviewBar","resetSponsorSubmissionNotice","updateEditButtonsOnPlayer","categories","CompileConfig","categoryList","cat","categorySupport","getCategoryNameClass","lockedCategories","unskipSponsorTime","unskippedMode","reskipSponsorTime","reskippedMode","newState","skipButtonState","sponsorTime","round","playbackRate","afterVote","getSponsorIndexFromUUID","wikiLinkText","wikiLinks","clearConfigListener","setNoticeInfoMessageWithOnClick","addVoteButtonInfo","setNoticeInfoMessage","resetVoteButtonInfo","configListener","unmutedListener","forceType","getUndoText","getRedoText","getStartText","categoryNamesGrams","SponsorTimeEditComponent","timesBeforeChanging","fullVideoWarningShown","categoryNameWarningShown","lastEditTime","editTimeTimeout","actionTypeOptionRef","descriptionOptionRef","previousSkipType","sponsorTimeEdits","selectedCategory","DEFAULT_CATEGORY","selectedActionType","description","suggestedNames","chapterNameSelectorOpen","chapterNameSelectorHovering","configUpdateListener","configUpdate","checkToShowFullVideoWarning","checkToShowChapterWarning","textAlign","marginTop","borderColor","timeDisplay","timeDisplayStyle","Full","setTimeTo","setTimeToNow","onKeyDown","onKeyUp","handleOnChange","onWheel","changeTimesWhenScrolling","setTimeToEnd","toggleEditTime","categorySelectionChange","actionTypeSelectionChange","getActionTypeOptions","hidden","SponsorHideType","Hidden","Visible","saveEditTimes","onBlur","onContextMenu","descriptionUpdate","onFocus","deleteTime","previewTime","inspectTime","targetValue","before","getFormattedTimeToSeconds","after","difference","abs","showScrollToEditToolTip","allowScrollingToEdit","step","timeAsNumber","scrollToEditTimeUpdate","showToolTip","buttonFunction","htmlId","RectangleTooltip","fontSize","getVideoDuration","defaultBlockCategories","permission","showCategoryWithoutPermission","permissions","getCategoryLockedClass","chosenCategory","categorySelections","confirm","hash","hookUpdate","handleReplacingLostTimes","categoryChangeListener","getNextActionType","getRealCurrentTime","addedTime","getFormattedSponsorTimesEdits","timeSinceLastEdit","endTime","addingTime","ctrlPressed","shiftPressed","skipToEndTime","sponsorTimes","seekTime","defaultPreviewTime","skipTime","removingIncomplete","submissionNotice","cancel","fetchingSuggestions","fetchSuggestions","asyncRequestToServer","names","parse","SubmissionNoticeComponent","lastSegmentCount","videoObserver","currentSegmentCount","scrollToBottom","scrollElement","scrollTo","scrollHeight","sortButton","sortSegments","exportButton","exportSegments","getSponsorTimeMessages","submissionCountSinceCategories","submit","timeEditRefs","timeRef","guidelinesReminder","isCurrentTimeWrong","videoInfo","microformat","playerMicroformatRenderer","success","clipboard","writeText","exportTimes","dialogWidth","showCategoryGuidelines","getGuidelineInfo","update","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","categoryPillUpdate","showChapterInfoMessage","darkMode","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","downvotedSegments","alreadyInstalled","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","cleanPage","wait","getElementsByTagName","fileref","addCSS","setCategoryColorCSSVariables","runCompatibilityChecks","skipBuffer","endTimeSkipBuffer","sponsorDataFound","existingChaptersImported","importingChaptersWaitingForFocus","importingChaptersWaiting","loopedChapter","skipNotices","activeSkipKeybindElement","shownSegmentFailedToFetchWarning","selectedSegment","previewedSegment","lastKnownVideoTime","videoTime","preciseTime","fromPause","approximateDelay","lastTimeFromWaitingEvent","lastNextChapterKeybind","currentSkipSchedule","currentSkipInterval","currentVirtualTimeInterval","currentUpcomingSchedule","sponsorSkipped","videoMuted","controlsWithEventListeners","setupVideoModule","previewBar","isOnMobileYouTube","handleMobileControlsMutations","controlsContainer","getControls","createPreviewBar","getVideoID","getChannelIDInfo","channelAuthor","sponsorsLookup","updateVisibilityOfPlayerControlsButton","updateSponsorTimesSubmitting","tryShowingDeArrowPromotion","logWarn","checkPreviewbarState","getIsInline","videoOnReadyListener","durationChangeListener","setupVideoListenersFirstTime","switchingVideos","startedWaiting","lastPausedAtZero","lastVideoDataChange","rateChangeListener","updateVirtualTime","clearWaitingTime","startSponsorSchedule","playListener","firstPlay","miniPlayerUI","onVideoPage","getLastNonInlineVideoID","triggerVideoIDChange","triggerVideoElementChange","checkForMiniplayerPlaying","logDebug","startSkipScheduleCheckingForStartSponsors","updateAdFlag","lastCheckVideoTime","lastCheckTime","playingListener","playbackRateCheckInterval","lastPlaybackSpeed","seekingListener","updateActiveSegment","loop","stoppedPlayback","updateWaitingTime","cancelSponsorSchedule","pauseListener","waitingListener","emptyListener","metadataLoadedListener","setupVideoListeners","skipButtonControlBar","SkipButtonControlBar","skip","skipToTime","skippingSegments","openNotice","forceAutoSkip","selectSegment","isOnYTTV","attachToPage","categoryPill","CategoryPill","voteAsync","lastResponseStatus","disable","setVisibility","hideDeArrowPromotion","manifest_version","setupThumbnailListener","controls","playerButtons","hotkeyListener","hotkeyPropagationListener","loadedPreloadedSegment","popupInitialised","skipNoticeContentContainer","sponsorSubmissionNotice","manualSkipPercentCount","contentConfigUpdateListener","updateAll","contentLocalConfigUpdateListener","updateMobileControls","isMobileControlsOpen","isConnected","getPreviewBarAttachElement","progressElementOptions","isVisibleCheck","allElements","chapterVote","ChapterVote","importExistingChapters","includeIntersectingSegments","includeNonIntersectingSegments","getIsAdPlaying","checkIfNewVideoID","getVirtualTime","skipInfo","autoSkipSorter","skipOption","getCategorySelection","shouldAutoSkip","includedTimes","submittedArray","scheduledTimes","sponsorStartTimes","getStartTimes","sponsorStartTimesAfterCurrentTime","minSponsorTimeIndexes","GenericUtils","indexesOf","minSponsorTimeIndex","extraIndexes","endTimeIndex","getLatestEndTimeIndex","unsubmittedArray","unsubmittedSponsorStartTimes","unsubmittedSponsorStartTimesAfterCurrentTime","minUnsubmittedSponsorTimeIndex","previewEndTimeIndex","array","endIndex","getNextSkipIndex","currentSkip","scheduledTime","timeUntilSponsor","inMuteSegment","muted","incorrectVideoCheck","shouldSkip","skippingFunction","forceVideoTime","forcedSkipTime","forcedIncludeIntersectingSegments","forcedIncludeNonIntersectingSegments","extra","extraSkip","delayTime","forceStartIntervalTime","once","startIntervalTime","startVideoTime","startWaitingForReportedTimeToChange","reportedVideoTimeAtStart","intervalDuration","offsetDelayTime","maxPopupTime","timeUntilPopup","popupTime","createUpcomingNotice","virtualTime","includeOverlap","checkFunction","currentVideoID","recordedVideoID","isLoopedChapter","checkVideoIDChange","sendResponse","startOrEndTimingNewSegment","creatingSegment","isSegmentCreationInProgress","Disabled","currentTabSkipProfileID","getSkipProfileIDForTab","updating","closeInfoMenu","isYTTV","openSubmissionMenu","hasVideo","getSponsorTimeFromUUID","addHiddenSegment","isEnabled","every","importedSegments","importTimes","addedSegments","hasChaptersPermission","getCategoryDefaultSelection","KeyboardEvent","setCurrentTabSkipProfile","configID","rawCount","lastTime","lastPerformanceTime","frameTime","keepOldSubmissions","segmentData","getSegmentsForVideo","receivedSegments","oldSegments","otherSegment","other","hashPrefix","downvotedData","hashedUUID","segmentDownvoteData","uuid","hideTooShortSegments","waitForVideo","notifyPopupOfSegments","categoriesResponse","lockInfo","lockedCategoriesLookup","waitCondition","getExistingChapters","hasFocus","chapters","getSkipProfileBool","hasAutogeneratedChapters","startingSegmentTime","getStartTimeFromUrl","poiSegments","hashParams","getHashParams","requiredSegment","previewBarSegments","unsubmitted","showLarger","skippedDuration","durationID","paddingLeft","durationAfterSkips","showTimeWithoutSkips","getTimestampsDuration","updateCategoryPill","fullVideoSegment","setSegment","Autogenerated","checkingPreviewbarAgain","hideHiddenSponsors","latestEndTimeIndex","currentSegment","latestEndTime","minimum","shouldIncludeTime","possibleTimes","unpause","setCurrentTime","play","sendTelemetryAndCount","secondsSkipped","fullSkip","extension","inIncognitoContext","counted","isSubmittingSegment","isPlayingPlaylist","beep","Audio","volume","oldMetadata","mediaSession","setShowKeybindHint","toggleSkip","createSkipNotice","enable","skipNotice","upcomingNoticeShown","closed","newSkipNotice","timeLeft","sameNotice","skippedTime","createButton","baseID","imageName","isDraggable","existingElement","newButton","newButtonImage","prepend","setupListener","canSkipNonMusic","isOnYouTubeMusic","confirmMessage","getSegmentsMessage","clearSponsorTimes","info","popup","frame","borderRadius","stylusStyle","enhancerStyle","enhancerStyleVariables","enhancerCss","enhancerVariablesCss","elemHasChild","parentNodeOptions","hasChildCheck","openInfoMenu","createButtons","buttonsEnabled","submitButtonVisible","deleteButtonVisible","startSegment","cancelSegment","getIsLivePremiere","verifyCurrentTime","roundedTime","Number","EPSILON","existingSegment","getIncompleteSegment","existingTime","getFromConfig","segmentTime","pushed","checkForPreloadedSegment","openWarningDialog","sponsorIndex","Server","factor","Downvoted","notices","getElementsByClassName","closeAllSkipNotices","callRef","sendSubmitMessage","confirmShort","videoDuration","extensionUserAgent","newSegments","receivedNewSegments","sponsorTimesMessage","timeMessage","updateChapterText","handleKeybindVote","lastSkipNotice","skipNoticeRef","lastSegment","waitForSkipNoticeRef","isContentEditable","skipKey","skipToHighlightKey","closeSkipNoticeKey","startSponsorKey","submitKey","previewKey","openSubmissionMenuKey","nextChapterKey","previousChapterKey","upvoteKey","downvoteKey","unfilteredChapterGroups","nextChapter","previousChapter","wasAdPlaying","setIsAdPlaying","styleContainer","isVorapisInstalled","luminance","getLuminance","TOOLTIP_VISIBLE_CLASS","updateExistingChapters","lastSmallestSegment","hasYouTubeChapters","existingChapters","lastChapterUpdate","updatePageElements","createChapterMutationObservers","setupHoverText","categoryTooltip","chapterTooltip","categoryScrubTooltip","chapterScrubTooltip","tooltipTextWrapper","defaultTooltipSelector","originalTooltip","findNonEmptyElement","categoryTooltipContainer","titleTooltip","scrubTooltipTextWrapper","seekBar","mouseOnSeekBar","noYoutubeChapters","timeInSeconds","decimalToTime","normalSegments","chapterSegments","partition","mainSegment","getSmallestSegment","secondarySegment","hasAYouTubeChapterRemoved","setTooltipTitle","normalizeChapterName","shortCategoryName","getComputedStyle","getPropertyValue","customChaptersBar","originalChapterBar","YouTube","chapter","segmentDuration","duplicate","ariaDuration","progressBar","allProgressBars","newChapterBar","chapterChevron","getChapterChevron","chapterMargin","originalChapterBarBlocks","sortedSegments","bar","createBar","createChaptersBar","barSegment","fullCategoryName","timeToPercentage","timeToRightPercentage","chapterFilter","childElementCount","remakingBar","lastRenderedSegments","createChapterRenderGroups","filteredSegments","groups","chapterGroups","chapterGroupFilter","originalDuration","createFromScratch","cloneNode","originalSections","originalSection","newSection","firstTimeSetupChapterSection","setupChapterSection","updateChapterAllMutation","latestChapter","latestValidChapter","chaptersToAddBack","invalidChapter","priorityActionType","getActionTypePrioritized","lastChapterChecked","nextSegment","nextTime","intervalToDecimal","actionTypes","section","addMargin","sizePercent","intervalToPercentage","hoveredSection","attributeObserver","currentElement","updateChapterMutation","attributeFilter","childListObserver","firstUpdate","sections","sectionWidthDecimal","sectionWidthDecimalNoMargin","customChangedElement","fullSectionWidth","changedElement","changedData","findLeftAndScale","calculatedLeft","scale","transformScale","backgroundSize","backgroundPosition","currentWidth","lastWidth","leftPosition","scalePosition","scaleWidth","lastScalePosition","checkElement","currentSectionWidthNoMargin","getPartialChapterSectionStyle","currentSectionWidth","checkLeft","transformMatch","endPosition","submittingSegments","chaptersContainer","getChaptersContainer","activeSegments","setActiveSegments","chosenSegment","chapterButton","getChapterButton","chapterTitle","chapterVoteContainer","getContainer","oldVoteContainers","oldVoteContainer","titlePrefixDot","dest","sbChapterContainer","sbChapterTitleContent","timeToDecimal","decimalTimeConverter","decimal","isTime","totalPixels","pixelOffset","lastCheckedChapter","chapterElement","widthPixels","marginPixels","latestWidth","latestChapterDuration","percentageInCurrentChapter","sizeOfCurrentChapter","getMinimumSize","proposedIndex","startSearchIndex","direction","currentSegmentLength","seg","segmentLength","minSize","swipeStart","skipIcon","textContainer","stopTimer","startTimer","handleTouchStart","handleTouchMove","handleTouchEnd","mountingContainer","getMountingContainer","chapterText","hideButton","showButton","refreshText","getTitle","disableText","getChapterPrefix","distanceMoved","updateLeftStyle","mutationObserver","attachToPageInternal","isOnDescriptionOnRightLayout","change","removedNodes","lastState","watchDiv","unsavedState","findReferenceNode","noticeElement","maxWidth","MiniForAll","MiniForAutoSkip","waitForRef","GenericTooltip","upcomingNoticeRef","xmlns","viewBox","points","ActionTypes","backgroundScriptContainer","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","endOverlaps","other1","other2","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","segmentUUID","segmentIDData","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","pass","fail","categoryName","messageId","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","inTest","chapterNames","exportTime","removeIf","matchers","matcher","lines","timeRegex","anyLineHasTime","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","hashparamSegments","hexChars","hex","sqrt","toISOString","overlay","downvoteType","isInPreviewPlayer","controlsSelectors","controlsSelector","windowHash","decoded","decodeURIComponent","chaptersBox","autogenerated","links","timeElement","address","testingServerAddress","sendRequestToCustomServer","segmentDataCache","pendingList","pendingData","extraRequestData","hasDownvotedSegments","trimUUIDs","fetchSegmentsForVideo","currentTabSkipProfile","getSkipProfileIDForTime","getSkipProfileIDForVideo","getSkipProfileIDForChannel","getSkipProfileID","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","MinimumDuration","SkipRuleAttribute","SkipRuleOperator","isSkipRulePassing","rule","attribute","StartTime","EndTime","Duration","StartTimePercent","EndTimePercent","DurationPercent","Category","Description","Source","ChannelID","ChannelName","VideoDuration","Title","getCurrentPageTitle","getSkipRuleValue","operator","Less","LessOrEqual","Greater","GreaterOrEqual","Equal","NotEqual","Contains","toLocaleLowerCase","NotContains","Regex","RegExp","RegexIgnoreCase","NotRegex","NotRegexIgnoreCase","ruleSet","rules","profileSelection","handleThumbnails","labelThumbnail","setupThumbnailHover","hideThumbnailLabel","extractVideoIDFromElement","getVideoLabel","oldElement","getOldThumbnailLabel","PointerEvent","svg","use","createSBIconElement","createOrGetThumbnail","mainElement","thumbnailHoverListener","fetched","preFetch","getHasStartSegment","getLink","extractVideoID","oldLabel","setThumbnailListener","insertSBIconDefinition","urlTimeToSeconds","urlParams","URLSearchParams","labelCache","getLabelHashBlock","cachedEntry","timestamp","videos","newEntry","fromEntries","hasStartSegment","oldestEntry","openChat","userInfo","publicUserID","warningReason","userName","userNameData","reason","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/safari/6.0.3/help.js.map b/safari/6.0.3/help.js.map new file mode 100644 index 00000000..ca9403e3 --- /dev/null +++ b/safari/6.0.3/help.js.map @@ -0,0 +1 @@ +{"version":3,"file":"help.js","mappings":"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","sources":["webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./src/config.ts","webpack:///./src/help.ts","webpack:///./src/types.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import * as CompileConfig from \"../config.json\";\nimport * as invidiousList from \"../ci/invidiouslist.json\";\nimport { Category, CategorySelection, CategorySkipOption, NoticeVisibilityMode, PreviewBarOption, SponsorTime, VideoID, SponsorHideType, SegmentListDefaultTab } from \"./types\";\nimport { Keybind, ProtoConfig, keybindEquals } from \"../maze-utils/src/config\";\nimport { HashedValue } from \"../maze-utils/src/hash\";\nimport { Permission, AdvancedSkipRuleSet } from \"./utils/skipRule\";\n\ninterface SBConfig {\n userID: string;\n isVip: boolean;\n permissions: Record;\n defaultCategory: Category;\n segmentListDefaultTab: SegmentListDefaultTab;\n renderSegmentsAsChapters: boolean;\n forceChannelCheck: boolean;\n minutesSaved: number;\n skipCount: number;\n sponsorTimesContributed: number;\n submissionCountSinceCategories: number; // New count used to show the \"Read The Guidelines!!\" message\n showTimeWithSkips: boolean;\n disableSkipping: boolean;\n muteSegments: boolean;\n fullVideoSegments: boolean;\n fullVideoLabelsOnThumbnails: boolean;\n manualSkipOnFullVideo: boolean;\n trackViewCount: boolean;\n trackViewCountInPrivate: boolean;\n trackDownvotes: boolean;\n trackDownvotesInPrivate: boolean;\n dontShowNotice: boolean;\n showUpcomingNotice: boolean;\n noticeVisibilityMode: NoticeVisibilityMode;\n hideVideoPlayerControls: boolean;\n hideInfoButtonPlayerControls: boolean;\n hideDeleteButtonPlayerControls: boolean;\n hideUploadButtonPlayerControls: boolean;\n hideSkipButtonPlayerControls: boolean;\n hideDiscordLaunches: number;\n hideDiscordLink: boolean;\n invidiousInstances: string[];\n supportInvidious: boolean;\n serverAddress: string;\n minDuration: number;\n skipNoticeDuration: number;\n audioNotificationOnSkip: boolean;\n checkForUnlistedVideos: boolean;\n testingServer: boolean;\n ytInfoPermissionGranted: boolean;\n allowExpirements: boolean;\n showDonationLink: boolean;\n showPopupDonationCount: number;\n showUpsells: boolean;\n showNewFeaturePopups: boolean;\n donateClicked: number;\n autoHideInfoButton: boolean;\n autoSkipOnMusicVideos: boolean;\n skipNonMusicOnlyOnYoutubeMusic: boolean;\n colorPalette: {\n red: string;\n white: string;\n locked: string;\n };\n scrollToEditTimeUpdate: boolean;\n categoryPillUpdate: boolean;\n hookUpdate: boolean;\n showChapterInfoMessage: boolean;\n darkMode: boolean;\n showCategoryGuidelines: boolean;\n showCategoryWithoutPermission: boolean;\n showSegmentNameInChapterBar: boolean;\n showAutogeneratedChapters: boolean;\n useVirtualTime: boolean;\n showSegmentFailedToFetchWarning: boolean;\n allowScrollingToEdit: boolean;\n deArrowInstalled: boolean;\n showDeArrowPromotion: boolean;\n showDeArrowInSettings: boolean;\n shownDeArrowPromotion: boolean;\n showZoomToFillError2: boolean;\n cleanPopup: boolean;\n hideSegmentCreationInPopup: boolean;\n prideTheme: boolean;\n\n // Used to cache calculated text color info\n categoryPillColors: {\n [key in Category]: {\n lastColor: string;\n textColor: string;\n }\n };\n\n skipKeybind: Keybind;\n skipToHighlightKeybind: Keybind;\n startSponsorKeybind: Keybind;\n submitKeybind: Keybind;\n actuallySubmitKeybind: Keybind;\n previewKeybind: Keybind;\n nextChapterKeybind: Keybind;\n previousChapterKeybind: Keybind;\n closeSkipNoticeKeybind: Keybind;\n upvoteKeybind: Keybind;\n downvoteKeybind: Keybind;\n\n // What categories should be skipped\n categorySelections: CategorySelection[];\n\n payments: {\n licenseKey: string;\n lastCheck: number;\n lastFreeCheck: number;\n freeAccess: boolean;\n chaptersAllowed: boolean;\n };\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": PreviewBarOption;\n \"sponsor\": PreviewBarOption;\n \"preview-sponsor\": PreviewBarOption;\n \"selfpromo\": PreviewBarOption;\n \"preview-selfpromo\": PreviewBarOption;\n \"exclusive_access\": PreviewBarOption;\n \"interaction\": PreviewBarOption;\n \"preview-interaction\": PreviewBarOption;\n \"intro\": PreviewBarOption;\n \"preview-intro\": PreviewBarOption;\n \"outro\": PreviewBarOption;\n \"preview-outro\": PreviewBarOption;\n \"preview\": PreviewBarOption;\n \"preview-preview\": PreviewBarOption;\n \"music_offtopic\": PreviewBarOption;\n \"preview-music_offtopic\": PreviewBarOption;\n \"poi_highlight\": PreviewBarOption;\n \"preview-poi_highlight\": PreviewBarOption;\n \"filler\": PreviewBarOption;\n \"preview-filler\": PreviewBarOption;\n };\n}\n\nexport type VideoDownvotes = { segments: { uuid: HashedValue; hidden: SponsorHideType }[]; lastAccess: number };\n\nexport type ConfigurationID = string & { __configurationID: never };\n\nexport interface CustomConfiguration {\n name: string;\n categorySelections: CategorySelection[];\n showAutogeneratedChapters: boolean | null;\n autoSkipOnMusicVideos: boolean | null;\n skipNonMusicOnlyOnYoutubeMusic: boolean | null;\n muteSegments: boolean | null;\n fullVideoSegments: boolean | null;\n manualSkipOnFullVideo: boolean | null;\n minDuration: number | null;\n}\n\ninterface SBStorage {\n /* VideoID prefixes to UUID prefixes */\n downvotedSegments: Record;\n navigationApiAvailable: boolean;\n \n // Used when sync storage disabled\n alreadyInstalled: boolean;\n\n /* Contains unsubmitted segments that the user has created. */\n unsubmittedSegments: Record;\n\n channelSkipProfileIDs: Record;\n skipProfileTemp: { time: number; configID: ConfigurationID } | null;\n skipProfiles: Record;\n\n skipRules: AdvancedSkipRuleSet[];\n}\n\nclass ConfigClass extends ProtoConfig {\n resetToDefault() {\n chrome.storage.sync.set({\n ...this.syncDefaults,\n userID: this.config.userID,\n minutesSaved: this.config.minutesSaved,\n skipCount: this.config.skipCount,\n sponsorTimesContributed: this.config.sponsorTimesContributed\n });\n\n chrome.storage.local.set({\n ...this.localDefaults,\n });\n }\n}\n\nfunction migrateOldSyncFormats(config: SBConfig, local: SBStorage) {\n if (config[\"whitelistedChannels\"]) {\n // convert to skipProfiles\n const whitelistedChannels = config[\"whitelistedChannels\"] as string[];\n const skipProfileID: ConfigurationID = \"default-whitelist\" as ConfigurationID;\n\n local.skipProfiles[skipProfileID] = {\n name: chrome.i18n.getMessage(\"WhitelistedChannels\"),\n categorySelections: config.categorySelections\n .filter((s) => ![\"exclusive_access\", \"chapter\"].includes(s.name))\n .map(s => ({\n name: s.name,\n option: CategorySkipOption.ShowOverlay\n })),\n showAutogeneratedChapters: null,\n autoSkipOnMusicVideos: null,\n skipNonMusicOnlyOnYoutubeMusic: null,\n muteSegments: null,\n fullVideoSegments: null,\n manualSkipOnFullVideo: null,\n minDuration: null\n };\n local.skipProfiles = local.skipProfiles;\n\n for (const channelID of whitelistedChannels) {\n local.channelSkipProfileIDs[channelID] = skipProfileID;\n }\n local.channelSkipProfileIDs = local.channelSkipProfileIDs; \n\n chrome.storage.sync.remove(\"whitelistedChannels\");\n }\n\n if (!config[\"changeChapterColor\"]) {\n config.barTypes[\"chapter\"].color = \"#ffd983\";\n config[\"changeChapterColor\"] = true;\n chrome.storage.sync.set({\n \"changeChapterColor\": true,\n \"barTypes\": config.barTypes\n });\n }\n\n if (config[\"showZoomToFillError\"]) {\n chrome.storage.sync.remove(\"showZoomToFillError\");\n }\n\n if (config[\"unsubmittedSegments\"] && Object.keys(config[\"unsubmittedSegments\"]).length > 0) {\n chrome.storage.local.set({\n unsubmittedSegments: config[\"unsubmittedSegments\"]\n }, () => {\n chrome.storage.sync.remove(\"unsubmittedSegments\");\n });\n }\n\n if (!config[\"chapterCategoryAdded\"]) {\n config[\"chapterCategoryAdded\"] = true;\n\n if (!config.categorySelections.some((s) => s.name === \"chapter\")) {\n config.categorySelections.push({\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n });\n \n config.categorySelections = config.categorySelections;\n }\n }\n\n if (config[\"exclusive_accessCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"exclusive_accessCategoryAdded\");\n }\n\n if (config[\"fillerUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"fillerUpdate\");\n }\n if (config[\"highlightCategoryAdded\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryAdded\");\n }\n if (config[\"highlightCategoryUpdate\"] !== undefined) {\n chrome.storage.sync.remove(\"highlightCategoryUpdate\");\n }\n\n if (config[\"askAboutUnlistedVideos\"]) {\n chrome.storage.sync.remove(\"askAboutUnlistedVideos\");\n }\n\n if (!config[\"autoSkipOnMusicVideosUpdate\"]) {\n config[\"autoSkipOnMusicVideosUpdate\"] = true;\n for (const selection of config.categorySelections) {\n if (selection.name === \"music_offtopic\"\n && selection.option === CategorySkipOption.AutoSkip) {\n\n config.autoSkipOnMusicVideos = true;\n break;\n }\n }\n }\n\n if (config[\"disableAutoSkip\"]) {\n for (const selection of config.categorySelections) {\n if (selection.name === \"sponsor\") {\n selection.option = CategorySkipOption.ManualSkip;\n\n chrome.storage.sync.remove(\"disableAutoSkip\");\n }\n }\n }\n\n if (typeof config[\"skipKeybind\"] == \"string\") {\n config[\"skipKeybind\"] = { key: config[\"skipKeybind\"] };\n }\n\n if (typeof config[\"startSponsorKeybind\"] == \"string\") {\n config[\"startSponsorKeybind\"] = { key: config[\"startSponsorKeybind\"] };\n }\n\n if (typeof config[\"submitKeybind\"] == \"string\") {\n config[\"submitKeybind\"] = { key: config[\"submitKeybind\"] };\n }\n\n // Unbind key if it matches a previous one set by the user (should be ordered oldest to newest)\n const keybinds = [\"skipKeybind\", \"startSponsorKeybind\", \"submitKeybind\"];\n for (let i = keybinds.length - 1; i >= 0; i--) {\n for (let j = 0; j < keybinds.length; j++) {\n if (i == j)\n continue;\n if (keybindEquals(config[keybinds[i]], config[keybinds[j]]))\n config[keybinds[i]] = null;\n }\n }\n\n // Remove some old unused options\n if (config[\"sponsorVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"sponsorVideoID\");\n }\n if (config[\"previousVideoID\"] !== undefined) {\n chrome.storage.sync.remove(\"previousVideoID\");\n }\n\n // populate invidiousInstances with new instances if 3p support is **DISABLED**\n if (!config[\"supportInvidious\"] && config[\"invidiousInstances\"].length < invidiousList.length) {\n config[\"invidiousInstances\"] = [...new Set([...invidiousList, ...config[\"invidiousInstances\"]])];\n }\n\n if (config[\"lastIsVipUpdate\"]) {\n chrome.storage.sync.remove(\"lastIsVipUpdate\");\n }\n}\n\nconst syncDefaults = {\n userID: null,\n isVip: false,\n permissions: {},\n defaultCategory: \"chooseACategory\" as Category,\n segmentListDefaultTab: SegmentListDefaultTab.Segments,\n renderSegmentsAsChapters: false,\n forceChannelCheck: false,\n minutesSaved: 0,\n skipCount: 0,\n sponsorTimesContributed: 0,\n submissionCountSinceCategories: 0,\n showTimeWithSkips: true,\n disableSkipping: false,\n muteSegments: true,\n fullVideoSegments: true,\n fullVideoLabelsOnThumbnails: true,\n manualSkipOnFullVideo: false,\n trackViewCount: true,\n trackViewCountInPrivate: true,\n trackDownvotes: true,\n trackDownvotesInPrivate: false,\n dontShowNotice: false,\n showUpcomingNotice: false,\n noticeVisibilityMode: NoticeVisibilityMode.FadedForAutoSkip,\n hideVideoPlayerControls: false,\n hideInfoButtonPlayerControls: false,\n hideDeleteButtonPlayerControls: false,\n hideUploadButtonPlayerControls: false,\n hideSkipButtonPlayerControls: false,\n hideDiscordLaunches: 0,\n hideDiscordLink: false,\n invidiousInstances: [],\n supportInvidious: false,\n serverAddress: CompileConfig.serverAddress,\n minDuration: 0,\n skipNoticeDuration: 4,\n audioNotificationOnSkip: false,\n checkForUnlistedVideos: false,\n testingServer: false,\n ytInfoPermissionGranted: false,\n allowExpirements: true,\n showDonationLink: true,\n showPopupDonationCount: 0,\n showUpsells: true,\n showNewFeaturePopups: true,\n donateClicked: 0,\n autoHideInfoButton: true,\n autoSkipOnMusicVideos: false,\n skipNonMusicOnlyOnYoutubeMusic: false,\n scrollToEditTimeUpdate: false, // false means the tooltip will be shown\n categoryPillUpdate: false,\n hookUpdate: false,\n showChapterInfoMessage: true,\n darkMode: true,\n showCategoryGuidelines: true,\n showCategoryWithoutPermission: false,\n showSegmentNameInChapterBar: true,\n showAutogeneratedChapters: true,\n useVirtualTime: true,\n showSegmentFailedToFetchWarning: true,\n allowScrollingToEdit: true,\n deArrowInstalled: false,\n showDeArrowPromotion: true,\n showDeArrowInSettings: true,\n shownDeArrowPromotion: false,\n showZoomToFillError2: true,\n cleanPopup: false,\n hideSegmentCreationInPopup: false,\n prideTheme: false,\n\n categoryPillColors: {},\n\n /**\n * Default keybinds should not set \"code\" as that's gonna be different based on the user's locale. They should also only use EITHER ctrl OR alt modifiers (or none).\n * Using ctrl+alt, or shift may produce a different character that we will not be able to recognize in different locales.\n * The exception for shift is letters, where it only capitalizes. So shift+A is fine, but shift+1 isn't.\n * Don't forget to add the new keybind to the checks in \"KeybindDialogComponent.isKeybindAvailable()\" and in \"migrateOldFormats()\"!\n * TODO: Find a way to skip having to update these checks. Maybe storing keybinds in a Map?\n */\n skipKeybind: { key: \"Enter\" },\n skipToHighlightKeybind: { key: \"Enter\", ctrl: true },\n startSponsorKeybind: { key: \";\" },\n submitKeybind: { key: \"'\" },\n actuallySubmitKeybind: { key: \"'\", ctrl: true },\n previewKeybind: { key: \";\", ctrl: true },\n nextChapterKeybind: { key: \"ArrowRight\", ctrl: true },\n previousChapterKeybind: { key: \"ArrowLeft\", ctrl: true },\n closeSkipNoticeKeybind: { key: \"Backspace\" },\n downvoteKeybind: { key: \"h\", shift: true },\n upvoteKeybind: { key: \"g\", shift: true },\n\n categorySelections: [{\n name: \"sponsor\" as Category,\n option: CategorySkipOption.AutoSkip\n }, {\n name: \"poi_highlight\" as Category,\n option: CategorySkipOption.ManualSkip\n }, {\n name: \"exclusive_access\" as Category,\n option: CategorySkipOption.ShowOverlay\n }, {\n name: \"chapter\" as Category,\n option: CategorySkipOption.ShowOverlay\n }],\n\n payments: {\n licenseKey: null,\n lastCheck: 0,\n lastFreeCheck: 0,\n freeAccess: false,\n chaptersAllowed: false\n },\n\n colorPalette: {\n red: \"#780303\",\n white: \"#ffffff\",\n locked: \"#ffc83d\"\n },\n\n // Preview bar\n barTypes: {\n \"preview-chooseACategory\": {\n color: \"#ffffff\",\n opacity: \"0.7\"\n },\n \"sponsor\": {\n color: \"#00d400\",\n opacity: \"0.7\"\n },\n \"preview-sponsor\": {\n color: \"#007800\",\n opacity: \"0.7\"\n },\n \"selfpromo\": {\n color: \"#ffff00\",\n opacity: \"0.7\"\n },\n \"preview-selfpromo\": {\n color: \"#bfbf35\",\n opacity: \"0.7\"\n },\n \"exclusive_access\": {\n color: \"#008a5c\",\n opacity: \"0.7\"\n },\n \"interaction\": {\n color: \"#cc00ff\",\n opacity: \"0.7\"\n },\n \"preview-interaction\": {\n color: \"#6c0087\",\n opacity: \"0.7\"\n },\n \"intro\": {\n color: \"#00ffff\",\n opacity: \"0.7\"\n },\n \"preview-intro\": {\n color: \"#008080\",\n opacity: \"0.7\"\n },\n \"outro\": {\n color: \"#0202ed\",\n opacity: \"0.7\"\n },\n \"preview-outro\": {\n color: \"#000070\",\n opacity: \"0.7\"\n },\n \"preview\": {\n color: \"#008fd6\",\n opacity: \"0.7\"\n },\n \"preview-preview\": {\n color: \"#005799\",\n opacity: \"0.7\"\n },\n \"hook\": {\n color: \"#395699\",\n opacity: \"0.8\"\n },\n \"preview-hook\": {\n color: \"#273963\",\n opacity: \"0.7\"\n },\n \"music_offtopic\": {\n color: \"#ff9900\",\n opacity: \"0.7\"\n },\n \"preview-music_offtopic\": {\n color: \"#a6634a\",\n opacity: \"0.7\"\n },\n \"poi_highlight\": {\n color: \"#ff1684\",\n opacity: \"0.7\"\n },\n \"preview-poi_highlight\": {\n color: \"#9b044c\",\n opacity: \"0.7\"\n },\n \"filler\": {\n color: \"#7300FF\",\n opacity: \"0.9\"\n },\n \"preview-filler\": {\n color: \"#2E0066\",\n opacity: \"0.7\"\n },\n \"chapter\": {\n color: \"#ffd983\",\n opacity: \"0\"\n },\n }\n};\n\nconst localDefaults = {\n downvotedSegments: {},\n navigationApiAvailable: null,\n alreadyInstalled: false,\n\n unsubmittedSegments: {},\n skipRules: [],\n\n channelSkipProfileIDs: {},\n skipProfiles: {},\n skipProfileTemp: null\n};\n\nconst Config = new ConfigClass(syncDefaults, localDefaults, migrateOldSyncFormats);\nexport default Config;\n\nexport function generateDebugDetails(): string {\n // Build output debug information object\n const output = {\n debug: {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n language: navigator.language,\n extensionVersion: chrome.runtime.getManifest().version\n },\n config: JSON.parse(JSON.stringify(Config.cachedSyncConfig)) // Deep clone config object\n };\n\n // Sanitise sensitive user config values\n delete output.config.userID;\n output.config.serverAddress = (output.config.serverAddress === CompileConfig.serverAddress)\n ? \"Default server address\" : \"Custom server address\";\n output.config.invidiousInstances = output.config.invidiousInstances.length;\n output.config.skipRules = output.config.skipRules.length;\n\n return JSON.stringify(output, null, 4);\n}\n","import { localizeHtmlPage } from \"../maze-utils/src/setup\";\nimport Config from \"./config\";\nimport { showDonationLink } from \"./utils/configUtils\";\n\nimport { waitFor } from \"../maze-utils/src\";\nimport { isDeArrowInstalled } from \"./utils/crossExtension\";\n\nif (document.readyState === \"complete\") {\n init();\n} else {\n document.addEventListener(\"DOMContentLoaded\", init);\n}\n\n// DeArrow promotion\nwaitFor(() => Config.isReady()).then(() => {\n if (Config.config.showNewFeaturePopups && Config.config.showUpsells) {\n isDeArrowInstalled().then((installed) => {\n if (!installed) {\n const deArrowPromotion = document.getElementById(\"dearrow-link\");\n deArrowPromotion.classList.remove(\"hidden\");\n\n deArrowPromotion.addEventListener(\"click\", () => Config.config.showDeArrowPromotion = false);\n\n const text = deArrowPromotion.querySelector(\"#dearrow-link-text\");\n text.textContent = `${chrome.i18n.getMessage(\"DeArrowPromotionMessage2\").split(\"?\")[0]}? ${chrome.i18n.getMessage(\"DeArrowPromotionMessage3\")}`;\n\n const closeButton = deArrowPromotion.querySelector(\".close-button\");\n closeButton.addEventListener(\"click\", (e) => {\n e.preventDefault();\n\n deArrowPromotion.classList.add(\"hidden\");\n Config.config.showDeArrowPromotion = false;\n Config.config.showDeArrowInSettings = false;\n });\n }\n });\n }\n});\n\nasync function init() {\n localizeHtmlPage();\n\n await waitFor(() => Config.config !== null);\n\n if (!Config.config.darkMode) {\n document.documentElement.setAttribute(\"data-theme\", \"light\");\n }\n\n if (!showDonationLink()) {\n document.getElementById(\"donate-component\").style.display = \"none\";\n }\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import * as CompileConfig from \"../../config.json\";\n\nimport Config from \"../config\";\nimport { isSafari } from \"../../maze-utils/src/config\";\nimport { isFirefoxOrSafari } from \"../../maze-utils/src\";\n\nexport function isDeArrowInstalled(): Promise {\n if (Config.config.deArrowInstalled) {\n return Promise.resolve(true);\n } else {\n return new Promise((resolve) => {\n const extensionIds = getExtensionIdsToImportFrom();\n\n let count = 0;\n for (const id of extensionIds) {\n chrome.runtime.sendMessage(id, { message: \"isInstalled\" }, (response) => {\n if (chrome.runtime.lastError) {\n count++;\n\n if (count === extensionIds.length) {\n resolve(false);\n }\n return;\n }\n\n resolve(response);\n if (response) {\n Config.config.deArrowInstalled = true;\n }\n });\n }\n });\n }\n}\n\nexport function getExtensionIdsToImportFrom(): string[] {\n if (isSafari()) {\n return CompileConfig.extensionImportList.safari;\n } else if (isFirefoxOrSafari()) {\n return CompileConfig.extensionImportList.firefox;\n } else {\n return CompileConfig.extensionImportList.chromium;\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(3105);\n"],"names":["isSafari","navigator","vendor","formatKey","key","length","toUpperCase","constructor","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","this","setupConfig","then","result","sync","configProxy","chrome","storage","onChanged","addListener","changes","areaName","newValue","callback","lastSet","nextToUpdate","Set","activeTimeout","self","syncHandler","set","obj","prop","value","Date","now","add","delayUpdate","items","clear","map","v","reduce","acc","k","setTimeout","get","data","deleteProperty","remove","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","error","runtime","lastError","alert","i18n","getMessage","fetchConfig","Promise","all","resolve","undefined","window","location","href","includes","isFirefoxOrSafari","addDefaults","Object","prototype","hasOwnProperty","call","key2","isReady","first","second","Boolean","alt","ctrl","shift","code","keybind","ret","condition","timeout","check","predicate","reject","interval","intervalCheck","clearInterval","toString","Error","stack","setInterval","url","includeQuestionMark","counter","seperator","JSON","stringify","encodeURIComponent","PromiseTimeoutError","promise","super","cachedUserAgent","id","getManifest","version","getLocalizedMessage","text","valNewH","replace","match","v1","charset","cryptoFuncs","crypto","getRandomValues","values","Uint32Array","i","Math","floor","random","localizedTitle","document","title","body","querySelector","localizedMessage","innerHTML","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","invidiousInstances","supportInvidious","serverAddress","CompileConfig","minDuration","skipNoticeDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","prideTheme","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","name","option","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","color","opacity","downvotedSegments","navigationApiAvailable","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","filter","s","channelID","keys","some","push","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","init","localizeHtmlPage","waitFor","documentElement","setAttribute","getElementById","style","display","readyState","addEventListener","isDeArrowInstalled","installed","deArrowPromotion","classList","textContent","split","e","preventDefault","ActionType","ChannelIDStatus","SponsorSourceType","SponsorHideType","ActionTypes","Skip","Mute","Chapter","Full","Poi","getExtensionIdsToImportFrom","extensionImportList","safari","firefox","chromium","extensionIds","count","sendMessage","message","response","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/safari/6.0.3/options.js.LICENSE.txt b/safari/6.0.3/options.js.LICENSE.txt new file mode 100644 index 00000000..4419a709 --- /dev/null +++ b/safari/6.0.3/options.js.LICENSE.txt @@ -0,0 +1,29 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/safari/6.0.3/options.js.map b/safari/6.0.3/options.js.map new file mode 100644 index 00000000..9b985b31 --- /dev/null +++ b/safari/6.0.3/options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"options.js","mappings":";yCAYa,IAAIA,EAAG,EAAQ,MAASC,EAAG,EAAQ,MAAa,SAASC,EAAEC,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEE,EAAE,EAAEA,EAAEC,UAAUC,OAAOF,IAAID,GAAG,WAAWI,mBAAmBF,UAAUD,IAAI,MAAM,yBAAyBF,EAAE,WAAWC,EAAE,gHAAgH,CAAC,IAAIK,EAAG,IAAIC,IAAIC,EAAG,CAAC,EAAE,SAASC,EAAGT,EAAEC,GAAGS,EAAGV,EAAEC,GAAGS,EAAGV,EAAE,UAAUC,EAAE,CACxb,SAASS,EAAGV,EAAEC,GAAW,IAARO,EAAGR,GAAGC,EAAMD,EAAE,EAAEA,EAAEC,EAAEG,OAAOJ,IAAIM,EAAGK,IAAIV,EAAED,GAAG,CAC5D,IAAIY,IAAK,oBAAqBC,aAAQ,IAAqBA,OAAOC,eAAU,IAAqBD,OAAOC,SAASC,eAAeC,EAAGC,OAAOC,UAAUC,eAAeC,EAAG,8VAA8VC,EACpgB,CAAC,EAAEC,EAAG,CAAC,EACiN,SAASC,EAAEvB,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,GAAGC,KAAKC,gBAAgB,IAAI5B,GAAG,IAAIA,GAAG,IAAIA,EAAE2B,KAAKE,cAAcN,EAAEI,KAAKG,mBAAmBN,EAAEG,KAAKI,gBAAgB9B,EAAE0B,KAAKK,aAAajC,EAAE4B,KAAKM,KAAKjC,EAAE2B,KAAKO,YAAYT,EAAEE,KAAKQ,kBAAkBT,CAAC,CAAC,IAAIU,EAAE,CAAC,EACpb,uIAAuIC,MAAM,KAAKC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAeuC,SAAQ,SAASvC,GAAG,IAAIC,EAAED,EAAE,GAAGqC,EAAEpC,GAAG,IAAIsB,EAAEtB,EAAE,GAAE,EAAGD,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAASuC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAEwC,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiBD,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8OsC,MAAM,KAAKC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAEwC,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAYD,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAYuC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQuC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAASuC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAEwC,cAAc,MAAK,GAAG,EAAG,IAAG,IAAIC,EAAG,gBAAgB,SAASC,EAAG1C,GAAG,OAAOA,EAAE,GAAG2C,aAAa,CAIxZ,SAASC,EAAG5C,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAEY,EAAElB,eAAelB,GAAGoC,EAAEpC,GAAG,MAAQ,OAAOwB,EAAE,IAAIA,EAAES,KAAKV,KAAK,EAAEvB,EAAEG,SAAS,MAAMH,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,MAP9I,SAAYD,EAAEC,EAAEC,EAAEsB,GAAG,GAAG,MAAOvB,GAD6F,SAAYD,EAAEC,EAAEC,EAAEsB,GAAG,GAAG,OAAOtB,GAAG,IAAIA,EAAEgC,KAAK,OAAM,EAAG,cAAcjC,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGuB,IAAc,OAAOtB,GAASA,EAAE2B,gBAAmD,WAAnC7B,EAAEA,EAAEwC,cAAcK,MAAM,EAAE,KAAsB,UAAU7C,GAAE,QAAQ,OAAM,EAAG,CAC/T8C,CAAG9C,EAAEC,EAAEC,EAAEsB,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOtB,EAAE,OAAOA,EAAEgC,MAAM,KAAK,EAAE,OAAOjC,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAO8C,MAAM9C,GAAG,KAAK,EAAE,OAAO8C,MAAM9C,IAAI,EAAEA,EAAE,OAAM,CAAE,CAOtE+C,CAAG/C,EAAEC,EAAEuB,EAAED,KAAKtB,EAAE,MAAMsB,GAAG,OAAOC,EARxK,SAAYzB,GAAG,QAAGgB,EAAGiC,KAAK3B,EAAGtB,KAAegB,EAAGiC,KAAK5B,EAAGrB,KAAeoB,EAAG8B,KAAKlD,GAAUsB,EAAGtB,IAAG,GAAGqB,EAAGrB,IAAG,GAAS,GAAE,CAQwDmD,CAAGlD,KAAK,OAAOC,EAAEF,EAAEoD,gBAAgBnD,GAAGD,EAAEqD,aAAapD,EAAE,GAAGC,IAAIuB,EAAEO,gBAAgBhC,EAAEyB,EAAEQ,cAAc,OAAO/B,EAAE,IAAIuB,EAAES,MAAQ,GAAGhC,GAAGD,EAAEwB,EAAEK,cAAcN,EAAEC,EAAEM,mBAAmB,OAAO7B,EAAEF,EAAEoD,gBAAgBnD,IAAaC,EAAE,KAAXuB,EAAEA,EAAES,OAAc,IAAIT,IAAG,IAAKvB,EAAE,GAAG,GAAGA,EAAEsB,EAAExB,EAAEsD,eAAe9B,EAAEvB,EAAEC,GAAGF,EAAEqD,aAAapD,EAAEC,KAAI,CAHjd,0jCAA0jCoC,MAAM,KAAKC,SAAQ,SAASvC,GAAG,IAAIC,EAAED,EAAEuD,QAAQd,EACzmCC,GAAIL,EAAEpC,GAAG,IAAIsB,EAAEtB,EAAE,GAAE,EAAGD,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2EsC,MAAM,KAAKC,SAAQ,SAASvC,GAAG,IAAIC,EAAED,EAAEuD,QAAQd,EAAGC,GAAIL,EAAEpC,GAAG,IAAIsB,EAAEtB,EAAE,GAAE,EAAGD,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAauC,SAAQ,SAASvC,GAAG,IAAIC,EAAED,EAAEuD,QAAQd,EAAGC,GAAIL,EAAEpC,GAAG,IAAIsB,EAAEtB,EAAE,GAAE,EAAGD,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAeuC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAEwC,cAAc,MAAK,GAAG,EAAG,IACldH,EAAEmB,UAAU,IAAIjC,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAcgB,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAEwC,cAAc,MAAK,GAAG,EAAG,IAE5L,IAAIiB,EAAG5D,EAAG6D,mDAAmDC,EAAGC,OAAOC,IAAI,iBAAiBC,EAAGF,OAAOC,IAAI,gBAAgBE,EAAGH,OAAOC,IAAI,kBAAkBG,EAAGJ,OAAOC,IAAI,qBAAqBI,EAAGL,OAAOC,IAAI,kBAAkBK,EAAGN,OAAOC,IAAI,kBAAkBM,EAAGP,OAAOC,IAAI,iBAAiBO,EAAGR,OAAOC,IAAI,qBAAqBQ,EAAGT,OAAOC,IAAI,kBAAkBS,EAAGV,OAAOC,IAAI,uBAAuBU,EAAGX,OAAOC,IAAI,cAAcW,EAAGZ,OAAOC,IAAI,cAAcD,OAAOC,IAAI,eAAeD,OAAOC,IAAI,0BACje,IAAIY,EAAGb,OAAOC,IAAI,mBAAmBD,OAAOC,IAAI,uBAAuBD,OAAOC,IAAI,eAAeD,OAAOC,IAAI,wBAAwB,IAAIa,EAAGd,OAAOe,SAAS,SAASC,EAAG5E,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAwC,mBAAnCA,EAAE0E,GAAI1E,EAAE0E,IAAK1E,EAAE,eAA0CA,EAAE,IAAI,CAAC,IAAoB6E,EAAhBC,EAAE7D,OAAO8D,OAAU,SAASC,EAAGhF,GAAG,QAAG,IAAS6E,EAAG,IAAI,MAAMI,OAAQ,CAAC,MAAM/E,GAAG,IAAID,EAAEC,EAAEgF,MAAMC,OAAOC,MAAM,gBAAgBP,EAAG5E,GAAGA,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK4E,EAAG7E,CAAC,CAAC,IAAIqF,GAAG,EACzb,SAASC,EAAGtF,EAAEC,GAAG,IAAID,GAAGqF,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAInF,EAAE+E,MAAMM,kBAAkBN,MAAMM,uBAAkB,EAAO,IAAI,GAAGtF,EAAE,GAAGA,EAAE,WAAW,MAAMgF,OAAQ,EAAEhE,OAAOuE,eAAevF,EAAEiB,UAAU,QAAQ,CAACuE,IAAI,WAAW,MAAMR,OAAQ,IAAI,iBAAkBS,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAU1F,EAAE,GAAG,CAAC,MAAM2F,GAAG,IAAIpE,EAAEoE,CAAC,CAACF,QAAQC,UAAU3F,EAAE,GAAGC,EAAE,KAAK,CAAC,IAAIA,EAAEgD,MAAM,CAAC,MAAM2C,GAAGpE,EAAEoE,CAAC,CAAC5F,EAAEiD,KAAKhD,EAAEiB,UAAU,KAAK,CAAC,IAAI,MAAM+D,OAAQ,CAAC,MAAMW,GAAGpE,EAAEoE,CAAC,CAAC5F,GAAG,CAAC,CAAC,MAAM4F,GAAG,GAAGA,GAAGpE,GAAG,iBAAkBoE,EAAEV,MAAM,CAAC,IAAI,IAAIzD,EAAEmE,EAAEV,MAAM5C,MAAM,MACnfZ,EAAEF,EAAE0D,MAAM5C,MAAM,MAAMX,EAAEF,EAAErB,OAAO,EAAEyF,EAAEnE,EAAEtB,OAAO,EAAE,GAAGuB,GAAG,GAAGkE,GAAGpE,EAAEE,KAAKD,EAAEmE,IAAIA,IAAI,KAAK,GAAGlE,GAAG,GAAGkE,EAAElE,IAAIkE,IAAI,GAAGpE,EAAEE,KAAKD,EAAEmE,GAAG,CAAC,GAAG,IAAIlE,GAAG,IAAIkE,EAAG,MAAMlE,IAAQ,IAAJkE,GAASpE,EAAEE,KAAKD,EAAEmE,GAAG,CAAC,IAAIC,EAAE,KAAKrE,EAAEE,GAAG4B,QAAQ,WAAW,QAA6F,OAArFvD,EAAE+F,aAAaD,EAAEE,SAAS,iBAAiBF,EAAEA,EAAEvC,QAAQ,cAAcvD,EAAE+F,cAAqBD,CAAC,QAAO,GAAGnE,GAAG,GAAGkE,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQR,GAAG,EAAGJ,MAAMM,kBAAkBrF,CAAC,CAAC,OAAOF,EAAEA,EAAEA,EAAE+F,aAAa/F,EAAEiG,KAAK,IAAIjB,EAAGhF,GAAG,EAAE,CAC9Z,SAASkG,EAAGlG,GAAG,OAAOA,EAAEmG,KAAK,KAAK,EAAE,OAAOnB,EAAGhF,EAAEkC,MAAM,KAAK,GAAG,OAAO8C,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAASM,EAAGtF,EAAEkC,MAAK,GAAM,KAAK,GAAG,OAASoD,EAAGtF,EAAEkC,KAAKkE,QAAO,GAAM,KAAK,EAAE,OAASd,EAAGtF,EAAEkC,MAAK,GAAM,QAAQ,MAAM,GAAG,CACxR,SAASmE,EAAGrG,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,mBAAoBA,EAAE,OAAOA,EAAE+F,aAAa/F,EAAEiG,MAAM,KAAK,GAAG,iBAAkBjG,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK+D,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,iBAAkBtE,EAAE,OAAOA,EAAEsG,UAAU,KAAKnC,EAAG,OAAOnE,EAAE+F,aAAa,WAAW,YAAY,KAAK7B,EAAG,OAAOlE,EAAEuG,SAASR,aAAa,WAAW,YAAY,KAAK3B,EAAG,IAAInE,EAAED,EAAEoG,OAC7Z,OADoapG,EAAEA,EAAE+F,eACnd/F,EAAE,MADieA,EAAEC,EAAE8F,aAClf9F,EAAEgG,MAAM,IAAY,cAAcjG,EAAE,IAAI,cAAqBA,EAAE,KAAKuE,EAAG,OAA6B,QAAtBtE,EAAED,EAAE+F,aAAa,MAAc9F,EAAEoG,EAAGrG,EAAEkC,OAAO,OAAO,KAAKsC,EAAGvE,EAAED,EAAEwG,SAASxG,EAAEA,EAAEyG,MAAM,IAAI,OAAOJ,EAAGrG,EAAEC,GAAG,CAAC,MAAMC,GAAG,EAAE,OAAO,IAAI,CAC3M,SAASwG,EAAG1G,GAAG,IAAIC,EAAED,EAAEkC,KAAK,OAAOlC,EAAEmG,KAAK,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE,OAAOlG,EAAE8F,aAAa,WAAW,YAAY,KAAK,GAAG,OAAO9F,EAAEsG,SAASR,aAAa,WAAW,YAAY,KAAK,GAAG,MAAM,qBAAqB,KAAK,GAAG,OAAkB/F,GAAXA,EAAEC,EAAEmG,QAAWL,aAAa/F,EAAEiG,MAAM,GAAGhG,EAAE8F,cAAc,KAAK/F,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK,EAAE,MAAM,WAAW,KAAK,EAAE,OAAOC,EAAE,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,OAAOoG,EAAGpG,GAAG,KAAK,EAAE,OAAOA,IAAI+D,EAAG,aAAa,OAAO,KAAK,GAAG,MAAM,YACtf,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,eAAe,KAAK,GAAG,MAAM,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,mBAAoB/D,EAAE,OAAOA,EAAE8F,aAAa9F,EAAEgG,MAAM,KAAK,GAAG,iBAAkBhG,EAAE,OAAOA,EAAE,OAAO,IAAI,CAAC,SAAS0G,EAAG3G,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,YAAqB,IAAK,SAAS,OAAOA,EAAE,QAAQ,MAAM,GAAG,CACra,SAAS4G,EAAG5G,GAAG,IAAIC,EAAED,EAAEkC,KAAK,OAAOlC,EAAEA,EAAE6G,WAAW,UAAU7G,EAAEwC,gBAAgB,aAAavC,GAAG,UAAUA,EAAE,CAEtF,SAAS6G,EAAG9G,GAAGA,EAAE+G,gBAAgB/G,EAAE+G,cADvD,SAAY/G,GAAG,IAAIC,EAAE2G,EAAG5G,GAAG,UAAU,QAAQE,EAAEe,OAAO+F,yBAAyBhH,EAAEiH,YAAY/F,UAAUjB,GAAGuB,EAAE,GAAGxB,EAAEC,GAAG,IAAID,EAAEmB,eAAelB,SAAI,IAAqBC,GAAG,mBAAoBA,EAAEgH,KAAK,mBAAoBhH,EAAEuF,IAAI,CAAC,IAAIhE,EAAEvB,EAAEgH,IAAIxF,EAAExB,EAAEuF,IAAiL,OAA7KxE,OAAOuE,eAAexF,EAAEC,EAAE,CAACkH,cAAa,EAAGD,IAAI,WAAW,OAAOzF,EAAEwB,KAAKrB,KAAK,EAAE6D,IAAI,SAASzF,GAAGwB,EAAE,GAAGxB,EAAE0B,EAAEuB,KAAKrB,KAAK5B,EAAE,IAAIiB,OAAOuE,eAAexF,EAAEC,EAAE,CAACmH,WAAWlH,EAAEkH,aAAmB,CAACC,SAAS,WAAW,OAAO7F,CAAC,EAAE8F,SAAS,SAAStH,GAAGwB,EAAE,GAAGxB,CAAC,EAAEuH,aAAa,WAAWvH,EAAE+G,cACxf,YAAY/G,EAAEC,EAAE,EAAE,CAAC,CAAkDuH,CAAGxH,GAAG,CAAC,SAASyH,EAAGzH,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAE+G,cAAc,IAAI9G,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEoH,WAAe7F,EAAE,GAAqD,OAAlDxB,IAAIwB,EAAEoF,EAAG5G,GAAGA,EAAE0H,QAAQ,OAAO,QAAQ1H,EAAE2H,QAAO3H,EAAEwB,KAAatB,IAAGD,EAAEqH,SAAStH,IAAG,EAAM,CAAC,SAAS4H,EAAG5H,GAAwD,QAAG,KAAxDA,EAAEA,IAAI,oBAAqBc,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOd,EAAE6H,eAAe7H,EAAE8H,IAAI,CAAC,MAAM7H,GAAG,OAAOD,EAAE8H,IAAI,CAAC,CACpa,SAASC,EAAG/H,EAAEC,GAAG,IAAIC,EAAED,EAAEyH,QAAQ,OAAO5C,EAAE,CAAC,EAAE7E,EAAE,CAAC+H,oBAAe,EAAOC,kBAAa,EAAON,WAAM,EAAOD,QAAQ,MAAMxH,EAAEA,EAAEF,EAAEkI,cAAcC,gBAAgB,CAAC,SAASC,EAAGpI,EAAEC,GAAG,IAAIC,EAAE,MAAMD,EAAEgI,aAAa,GAAGhI,EAAEgI,aAAazG,EAAE,MAAMvB,EAAEyH,QAAQzH,EAAEyH,QAAQzH,EAAE+H,eAAe9H,EAAEyG,EAAG,MAAM1G,EAAE0H,MAAM1H,EAAE0H,MAAMzH,GAAGF,EAAEkI,cAAc,CAACC,eAAe3G,EAAE6G,aAAanI,EAAEoI,WAAW,aAAarI,EAAEiC,MAAM,UAAUjC,EAAEiC,KAAK,MAAMjC,EAAEyH,QAAQ,MAAMzH,EAAE0H,MAAM,CAAC,SAASY,EAAGvI,EAAEC,GAAe,OAAZA,EAAEA,EAAEyH,UAAiB9E,EAAG5C,EAAE,UAAUC,GAAE,EAAG,CAC9d,SAASuI,EAAGxI,EAAEC,GAAGsI,EAAGvI,EAAEC,GAAG,IAAIC,EAAEyG,EAAG1G,EAAE0H,OAAOnG,EAAEvB,EAAEiC,KAAK,GAAG,MAAMhC,EAAK,WAAWsB,GAAM,IAAItB,GAAG,KAAKF,EAAE2H,OAAO3H,EAAE2H,OAAOzH,KAAEF,EAAE2H,MAAM,GAAGzH,GAAOF,EAAE2H,QAAQ,GAAGzH,IAAIF,EAAE2H,MAAM,GAAGzH,QAAQ,GAAG,WAAWsB,GAAG,UAAUA,EAA8B,YAA3BxB,EAAEoD,gBAAgB,SAAgBnD,EAAEkB,eAAe,SAASsH,GAAGzI,EAAEC,EAAEiC,KAAKhC,GAAGD,EAAEkB,eAAe,iBAAiBsH,GAAGzI,EAAEC,EAAEiC,KAAKyE,EAAG1G,EAAEgI,eAAe,MAAMhI,EAAEyH,SAAS,MAAMzH,EAAE+H,iBAAiBhI,EAAEgI,iBAAiB/H,EAAE+H,eAAe,CACla,SAASU,EAAG1I,EAAEC,EAAEC,GAAG,GAAGD,EAAEkB,eAAe,UAAUlB,EAAEkB,eAAe,gBAAgB,CAAC,IAAIK,EAAEvB,EAAEiC,KAAK,KAAK,WAAWV,GAAG,UAAUA,QAAG,IAASvB,EAAE0H,OAAO,OAAO1H,EAAE0H,OAAO,OAAO1H,EAAE,GAAGD,EAAEkI,cAAcG,aAAanI,GAAGD,IAAID,EAAE2H,QAAQ3H,EAAE2H,MAAM1H,GAAGD,EAAEiI,aAAahI,CAAC,CAAU,MAATC,EAAEF,EAAEiG,QAAcjG,EAAEiG,KAAK,IAAIjG,EAAEgI,iBAAiBhI,EAAEkI,cAAcC,eAAe,KAAKjI,IAAIF,EAAEiG,KAAK/F,EAAE,CACzV,SAASuI,GAAGzI,EAAEC,EAAEC,GAAM,WAAWD,GAAG2H,EAAG5H,EAAE2I,iBAAiB3I,IAAE,MAAME,EAAEF,EAAEiI,aAAa,GAAGjI,EAAEkI,cAAcG,aAAarI,EAAEiI,eAAe,GAAG/H,IAAIF,EAAEiI,aAAa,GAAG/H,GAAE,CAAC,IAAI0I,GAAGC,MAAMC,QAC7K,SAASC,GAAG/I,EAAEC,EAAEC,EAAEsB,GAAe,GAAZxB,EAAEA,EAAEgJ,QAAW/I,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAIwB,EAAE,EAAEA,EAAEvB,EAAEE,OAAOqB,IAAIxB,EAAE,IAAIC,EAAEuB,KAAI,EAAG,IAAIvB,EAAE,EAAEA,EAAEF,EAAEI,OAAOF,IAAIuB,EAAExB,EAAEkB,eAAe,IAAInB,EAAEE,GAAGyH,OAAO3H,EAAEE,GAAG+I,WAAWxH,IAAIzB,EAAEE,GAAG+I,SAASxH,GAAGA,GAAGD,IAAIxB,EAAEE,GAAGgJ,iBAAgB,EAAG,KAAK,CAAmB,IAAlBhJ,EAAE,GAAGyG,EAAGzG,GAAGD,EAAE,KAASwB,EAAE,EAAEA,EAAEzB,EAAEI,OAAOqB,IAAI,CAAC,GAAGzB,EAAEyB,GAAGkG,QAAQzH,EAAiD,OAA9CF,EAAEyB,GAAGwH,UAAS,OAAGzH,IAAIxB,EAAEyB,GAAGyH,iBAAgB,IAAW,OAAOjJ,GAAGD,EAAEyB,GAAG0H,WAAWlJ,EAAED,EAAEyB,GAAG,CAAC,OAAOxB,IAAIA,EAAEgJ,UAAS,EAAG,CAAC,CACxY,SAASG,GAAGpJ,EAAEC,GAAG,GAAG,MAAMA,EAAEoJ,wBAAwB,MAAMpE,MAAMlF,EAAE,KAAK,OAAO+E,EAAE,CAAC,EAAE7E,EAAE,CAAC0H,WAAM,EAAOM,kBAAa,EAAOqB,SAAS,GAAGtJ,EAAEkI,cAAcG,cAAc,CAAC,SAASkB,GAAGvJ,EAAEC,GAAG,IAAIC,EAAED,EAAE0H,MAAM,GAAG,MAAMzH,EAAE,CAA+B,GAA9BA,EAAED,EAAEqJ,SAASrJ,EAAEA,EAAEgI,aAAgB,MAAM/H,EAAE,CAAC,GAAG,MAAMD,EAAE,MAAMgF,MAAMlF,EAAE,KAAK,GAAG6I,GAAG1I,GAAG,CAAC,GAAG,EAAEA,EAAEE,OAAO,MAAM6E,MAAMlF,EAAE,KAAKG,EAAEA,EAAE,EAAE,CAACD,EAAEC,CAAC,CAAC,MAAMD,IAAIA,EAAE,IAAIC,EAAED,CAAC,CAACD,EAAEkI,cAAc,CAACG,aAAa1B,EAAGzG,GAAG,CACnY,SAASsJ,GAAGxJ,EAAEC,GAAG,IAAIC,EAAEyG,EAAG1G,EAAE0H,OAAOnG,EAAEmF,EAAG1G,EAAEgI,cAAc,MAAM/H,KAAIA,EAAE,GAAGA,KAAMF,EAAE2H,QAAQ3H,EAAE2H,MAAMzH,GAAG,MAAMD,EAAEgI,cAAcjI,EAAEiI,eAAe/H,IAAIF,EAAEiI,aAAa/H,IAAI,MAAMsB,IAAIxB,EAAEiI,aAAa,GAAGzG,EAAE,CAAC,SAASiI,GAAGzJ,GAAG,IAAIC,EAAED,EAAE0J,YAAYzJ,IAAID,EAAEkI,cAAcG,cAAc,KAAKpI,GAAG,OAAOA,IAAID,EAAE2H,MAAM1H,EAAE,CAAC,SAAS0J,GAAG3J,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAA+B,CAC7c,SAAS4J,GAAG5J,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAE2J,GAAG1J,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,CAAC,CAChK,IAAI6J,GAAe7J,GAAZ8J,IAAY9J,GAAsJ,SAASA,EAAEC,GAAG,GAAG,+BAA+BD,EAAE+J,cAAc,cAAc/J,EAAEA,EAAEgK,UAAU/J,MAAM,CAA2F,KAA1F4J,GAAGA,IAAI/I,SAASC,cAAc,QAAUiJ,UAAU,QAAQ/J,EAAEgK,UAAUC,WAAW,SAAajK,EAAE4J,GAAGM,WAAWnK,EAAEmK,YAAYnK,EAAEoK,YAAYpK,EAAEmK,YAAY,KAAKlK,EAAEkK,YAAYnK,EAAEqK,YAAYpK,EAAEkK,WAAW,CAAC,EAAvb,oBAAqBG,OAAOA,MAAMC,wBAAwB,SAAStK,EAAEC,EAAEsB,EAAEC,GAAG6I,MAAMC,yBAAwB,WAAW,OAAOvK,GAAEC,EAAEC,EAAM,GAAE,EAAEF,IACtK,SAASwK,GAAGxK,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAEF,EAAEmK,WAAW,GAAGjK,GAAGA,IAAIF,EAAEyK,WAAW,IAAIvK,EAAEwK,SAAwB,YAAdxK,EAAEyK,UAAU1K,EAAS,CAACD,EAAE0J,YAAYzJ,CAAC,CACtH,IAAI2K,GAAG,CAACC,yBAAwB,EAAGC,aAAY,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGC,YAAW,EAAGC,WAAU,EAAGC,YAAW,EAAGC,SAAQ,EAAGC,OAAM,EAAGC,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAClfC,MAAK,EAAGC,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGzN,EAAEC,EAAEC,GAAG,OAAO,MAAMD,GAAG,kBAAmBA,GAAG,KAAKA,EAAE,GAAGC,GAAG,iBAAkBD,GAAG,IAAIA,GAAG2K,GAAGzJ,eAAenB,IAAI4K,GAAG5K,IAAI,GAAGC,GAAGkF,OAAOlF,EAAE,IAAI,CACzb,SAASyN,GAAG1N,EAAEC,GAAa,IAAI,IAAIC,KAAlBF,EAAEA,EAAE2N,MAAmB1N,EAAE,GAAGA,EAAEkB,eAAejB,GAAG,CAAC,IAAIsB,EAAE,IAAItB,EAAE0N,QAAQ,MAAMnM,EAAEgM,GAAGvN,EAAED,EAAEC,GAAGsB,GAAG,UAAUtB,IAAIA,EAAE,YAAYsB,EAAExB,EAAE6N,YAAY3N,EAAEuB,GAAGzB,EAAEE,GAAGuB,CAAC,CAAC,CADYR,OAAO6M,KAAKlD,IAAIrI,SAAQ,SAASvC,GAAGwN,GAAGjL,SAAQ,SAAStC,GAAGA,EAAEA,EAAED,EAAE+N,OAAO,GAAGpL,cAAc3C,EAAEgO,UAAU,GAAGpD,GAAG3K,GAAG2K,GAAG5K,EAAE,GAAE,IAChI,IAAIiO,GAAGnJ,EAAE,CAACoJ,UAAS,GAAI,CAACC,MAAK,EAAGC,MAAK,EAAGC,IAAG,EAAGC,KAAI,EAAGC,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAGC,OAAM,EAAGC,QAAO,EAAGC,MAAK,EAAGC,MAAK,EAAGC,OAAM,EAAGC,QAAO,EAAGC,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAGlP,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAGgO,GAAGjO,KAAK,MAAMC,EAAEqJ,UAAU,MAAMrJ,EAAEoJ,yBAAyB,MAAMpE,MAAMlF,EAAE,IAAIC,IAAI,GAAG,MAAMC,EAAEoJ,wBAAwB,CAAC,GAAG,MAAMpJ,EAAEqJ,SAAS,MAAMrE,MAAMlF,EAAE,KAAK,GAAG,iBAAkBE,EAAEoJ,2BAA2B,WAAWpJ,EAAEoJ,yBAAyB,MAAMpE,MAAMlF,EAAE,IAAK,CAAC,GAAG,MAAME,EAAE0N,OAAO,iBAAkB1N,EAAE0N,MAAM,MAAM1I,MAAMlF,EAAE,IAAK,CAAC,CAClW,SAASoP,GAAGnP,EAAEC,GAAG,IAAI,IAAID,EAAE4N,QAAQ,KAAK,MAAM,iBAAkB3N,EAAEmP,GAAG,OAAOpP,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,IAAIqP,GAAG,KAAK,SAASC,GAAGtP,GAA6F,OAA1FA,EAAEA,EAAEuP,QAAQvP,EAAEwP,YAAY3O,QAAS4O,0BAA0BzP,EAAEA,EAAEyP,yBAAgC,IAAIzP,EAAE0K,SAAS1K,EAAE0P,WAAW1P,CAAC,CAAC,IAAI2P,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACpc,SAASC,GAAG9P,GAAG,GAAGA,EAAE+P,GAAG/P,GAAG,CAAC,GAAG,mBAAoB2P,GAAG,MAAM1K,MAAMlF,EAAE,MAAM,IAAIE,EAAED,EAAEgQ,UAAU/P,IAAIA,EAAEgQ,GAAGhQ,GAAG0P,GAAG3P,EAAEgQ,UAAUhQ,EAAEkC,KAAKjC,GAAG,CAAC,CAAC,SAASiQ,GAAGlQ,GAAG4P,GAAGC,GAAGA,GAAGM,KAAKnQ,GAAG6P,GAAG,CAAC7P,GAAG4P,GAAG5P,CAAC,CAAC,SAASoQ,KAAK,GAAGR,GAAG,CAAC,IAAI5P,EAAE4P,GAAG3P,EAAE4P,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAG9P,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAEG,OAAOJ,IAAI8P,GAAG7P,EAAED,GAAG,CAAC,CAAC,SAASqQ,GAAGrQ,EAAEC,GAAG,OAAOD,EAAEC,EAAE,CAAC,SAASqQ,KAAK,CAAC,IAAIC,IAAG,EAAG,SAASC,GAAGxQ,EAAEC,EAAEC,GAAG,GAAGqQ,GAAG,OAAOvQ,EAAEC,EAAEC,GAAGqQ,IAAG,EAAG,IAAI,OAAOF,GAAGrQ,EAAEC,EAAEC,EAAE,CAAC,QAAWqQ,IAAG,GAAG,OAAOX,IAAI,OAAOC,MAAGS,KAAKF,KAAI,CAAC,CAChb,SAASK,GAAGzQ,EAAEC,GAAG,IAAIC,EAAEF,EAAEgQ,UAAU,GAAG,OAAO9P,EAAE,OAAO,KAAK,IAAIsB,EAAEyO,GAAG/P,GAAG,GAAG,OAAOsB,EAAE,OAAO,KAAKtB,EAAEsB,EAAEvB,GAAGD,EAAE,OAAOC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBuB,GAAGA,EAAE2H,YAAqB3H,IAAI,YAAbxB,EAAEA,EAAEkC,OAAuB,UAAUlC,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGwB,EAAE,MAAMxB,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGE,GAAG,mBACleA,EAAE,MAAM+E,MAAMlF,EAAE,IAAIE,SAASC,IAAI,OAAOA,CAAC,CAAC,IAAIwQ,IAAG,EAAG,GAAG9P,EAAG,IAAI,IAAI+P,GAAG,CAAC,EAAE1P,OAAOuE,eAAemL,GAAG,UAAU,CAACzJ,IAAI,WAAWwJ,IAAG,CAAE,IAAI7P,OAAO+P,iBAAiB,OAAOD,GAAGA,IAAI9P,OAAOgQ,oBAAoB,OAAOF,GAAGA,GAAG,CAAC,MAAM3Q,IAAG0Q,IAAG,CAAE,CAAC,SAASI,GAAG9Q,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,EAAEkE,EAAEC,GAAG,IAAIF,EAAEiD,MAAM3H,UAAU2B,MAAMI,KAAK9C,UAAU,GAAG,IAAIF,EAAE8Q,MAAM7Q,EAAE0F,EAAE,CAAC,MAAMoL,GAAGpP,KAAKqP,QAAQD,EAAE,CAAC,CAAC,IAAIE,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAACL,QAAQ,SAASjR,GAAGkR,IAAG,EAAGC,GAAGnR,CAAC,GAAG,SAASuR,GAAGvR,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,EAAEkE,EAAEC,GAAGoL,IAAG,EAAGC,GAAG,KAAKL,GAAGC,MAAMO,GAAGnR,UAAU,CACjW,SAASqR,GAAGxR,GAAG,IAAIC,EAAED,EAAEE,EAAEF,EAAE,GAAGA,EAAEyR,UAAU,KAAKxR,EAAEyR,QAAQzR,EAAEA,EAAEyR,WAAW,CAAC1R,EAAEC,EAAE,MAAoB,MAAjBA,EAAED,GAAS2R,SAAczR,EAAED,EAAEyR,QAAQ1R,EAAEC,EAAEyR,aAAa1R,EAAE,CAAC,OAAO,IAAIC,EAAEkG,IAAIjG,EAAE,IAAI,CAAC,SAAS0R,GAAG5R,GAAG,GAAG,KAAKA,EAAEmG,IAAI,CAAC,IAAIlG,EAAED,EAAE6R,cAAsE,GAAxD,OAAO5R,GAAkB,QAAdD,EAAEA,EAAEyR,aAAqBxR,EAAED,EAAE6R,eAAmB,OAAO5R,EAAE,OAAOA,EAAE6R,UAAU,CAAC,OAAO,IAAI,CAAC,SAASC,GAAG/R,GAAG,GAAGwR,GAAGxR,KAAKA,EAAE,MAAMiF,MAAMlF,EAAE,KAAM,CAE1S,SAASiS,GAAGhS,GAAW,OAAO,QAAfA,EADtN,SAAYA,GAAG,IAAIC,EAAED,EAAEyR,UAAU,IAAIxR,EAAE,CAAS,GAAG,QAAXA,EAAEuR,GAAGxR,IAAe,MAAMiF,MAAMlF,EAAE,MAAM,OAAOE,IAAID,EAAE,KAAKA,CAAC,CAAC,IAAI,IAAIE,EAAEF,EAAEwB,EAAEvB,IAAI,CAAC,IAAIwB,EAAEvB,EAAEwR,OAAO,GAAG,OAAOjQ,EAAE,MAAM,IAAIC,EAAED,EAAEgQ,UAAU,GAAG,OAAO/P,EAAE,CAAY,GAAG,QAAdF,EAAEC,EAAEiQ,QAAmB,CAACxR,EAAEsB,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAGC,EAAEwQ,QAAQvQ,EAAEuQ,MAAM,CAAC,IAAIvQ,EAAED,EAAEwQ,MAAMvQ,GAAG,CAAC,GAAGA,IAAIxB,EAAE,OAAO6R,GAAGtQ,GAAGzB,EAAE,GAAG0B,IAAIF,EAAE,OAAOuQ,GAAGtQ,GAAGxB,EAAEyB,EAAEA,EAAEwQ,OAAO,CAAC,MAAMjN,MAAMlF,EAAE,KAAM,CAAC,GAAGG,EAAEwR,SAASlQ,EAAEkQ,OAAOxR,EAAEuB,EAAED,EAAEE,MAAM,CAAC,IAAI,IAAIC,GAAE,EAAGkE,EAAEpE,EAAEwQ,MAAMpM,GAAG,CAAC,GAAGA,IAAI3F,EAAE,CAACyB,GAAE,EAAGzB,EAAEuB,EAAED,EAAEE,EAAE,KAAK,CAAC,GAAGmE,IAAIrE,EAAE,CAACG,GAAE,EAAGH,EAAEC,EAAEvB,EAAEwB,EAAE,KAAK,CAACmE,EAAEA,EAAEqM,OAAO,CAAC,IAAIvQ,EAAE,CAAC,IAAIkE,EAAEnE,EAAEuQ,MAAMpM,GAAG,CAAC,GAAGA,IAC5f3F,EAAE,CAACyB,GAAE,EAAGzB,EAAEwB,EAAEF,EAAEC,EAAE,KAAK,CAAC,GAAGoE,IAAIrE,EAAE,CAACG,GAAE,EAAGH,EAAEE,EAAExB,EAAEuB,EAAE,KAAK,CAACoE,EAAEA,EAAEqM,OAAO,CAAC,IAAIvQ,EAAE,MAAMsD,MAAMlF,EAAE,KAAM,CAAC,CAAC,GAAGG,EAAEuR,YAAYjQ,EAAE,MAAMyD,MAAMlF,EAAE,KAAM,CAAC,GAAG,IAAIG,EAAEiG,IAAI,MAAMlB,MAAMlF,EAAE,MAAM,OAAOG,EAAE8P,UAAUmC,UAAUjS,EAAEF,EAAEC,CAAC,CAAkBmS,CAAGpS,IAAmBqS,GAAGrS,GAAG,IAAI,CAAC,SAASqS,GAAGrS,GAAG,GAAG,IAAIA,EAAEmG,KAAK,IAAInG,EAAEmG,IAAI,OAAOnG,EAAE,IAAIA,EAAEA,EAAEiS,MAAM,OAAOjS,GAAG,CAAC,IAAIC,EAAEoS,GAAGrS,GAAG,GAAG,OAAOC,EAAE,OAAOA,EAAED,EAAEA,EAAEkS,OAAO,CAAC,OAAO,IAAI,CAC1X,IAAII,GAAGxS,EAAGyS,0BAA0BC,GAAG1S,EAAG2S,wBAAwBC,GAAG5S,EAAG6S,qBAAqBC,GAAG9S,EAAG+S,sBAAsBC,GAAEhT,EAAGiT,aAAaC,GAAGlT,EAAGmT,iCAAiCC,GAAGpT,EAAGqT,2BAA2BC,GAAGtT,EAAGuT,8BAA8BC,GAAGxT,EAAGyT,wBAAwBC,GAAG1T,EAAG2T,qBAAqBC,GAAG5T,EAAG6T,sBAAsBC,GAAG,KAAKC,GAAG,KACnVC,GAAGC,KAAKC,MAAMD,KAAKC,MAAiC,SAAYhU,GAAU,OAAO,KAAdA,KAAK,GAAe,GAAG,IAAIiU,GAAGjU,GAAGkU,GAAG,GAAG,CAAC,EAA/ED,GAAGF,KAAKI,IAAID,GAAGH,KAAKK,IAAgEC,GAAG,GAAGC,GAAG,QAC7H,SAASC,GAAGvU,GAAG,OAAOA,GAAGA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,QAAFA,EAAU,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,OAAS,UAAFA,EAAY,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,WAAW,OAAO,WACzgB,QAAQ,OAAOA,EAAE,CAAC,SAASwU,GAAGxU,EAAEC,GAAG,IAAIC,EAAEF,EAAEyU,aAAa,GAAG,IAAIvU,EAAE,OAAO,EAAE,IAAIsB,EAAE,EAAEC,EAAEzB,EAAE0U,eAAehT,EAAE1B,EAAE2U,YAAYhT,EAAI,UAAFzB,EAAY,GAAG,IAAIyB,EAAE,CAAC,IAAIkE,EAAElE,GAAGF,EAAE,IAAIoE,EAAErE,EAAE+S,GAAG1O,GAAS,IAALnE,GAAGC,KAAUH,EAAE+S,GAAG7S,GAAI,MAAa,IAAPC,EAAEzB,GAAGuB,GAAQD,EAAE+S,GAAG5S,GAAG,IAAID,IAAIF,EAAE+S,GAAG7S,IAAI,GAAG,IAAIF,EAAE,OAAO,EAAE,GAAG,IAAIvB,GAAGA,IAAIuB,KAAQvB,EAAEwB,MAAKA,EAAED,GAAGA,KAAEE,EAAEzB,GAAGA,IAAQ,KAAKwB,GAAU,QAAFC,GAAY,OAAOzB,EAA0C,GAAjC,EAAFuB,IAAOA,GAAK,GAAFtB,GAA4B,KAAtBD,EAAED,EAAE4U,gBAAwB,IAAI5U,EAAEA,EAAE6U,cAAc5U,GAAGuB,EAAE,EAAEvB,GAAcwB,EAAE,IAAbvB,EAAE,GAAG4T,GAAG7T,IAAUuB,GAAGxB,EAAEE,GAAGD,IAAIwB,EAAE,OAAOD,CAAC,CACvc,SAASsT,GAAG9U,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAOC,EAAE,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,EAAE,IAAuJ,QAAQ,OAAO,EAAE,CACrN,SAAS8U,GAAG/U,GAAgC,OAAO,IAApCA,GAAkB,WAAhBA,EAAEyU,cAAsCzU,EAAI,WAAFA,EAAa,WAAW,CAAC,CAAC,SAASgV,KAAK,IAAIhV,EAAEqU,GAAoC,QAAlB,SAAfA,KAAK,MAAqBA,GAAG,IAAWrU,CAAC,CAAC,SAASiV,GAAGjV,GAAG,IAAI,IAAIC,EAAE,GAAGC,EAAE,EAAE,GAAGA,EAAEA,IAAID,EAAEkQ,KAAKnQ,GAAG,OAAOC,CAAC,CAC3a,SAASiV,GAAGlV,EAAEC,EAAEC,GAAGF,EAAEyU,cAAcxU,EAAE,YAAYA,IAAID,EAAE0U,eAAe,EAAE1U,EAAE2U,YAAY,IAAG3U,EAAEA,EAAEmV,YAAWlV,EAAE,GAAG6T,GAAG7T,IAAQC,CAAC,CACzH,SAASkV,GAAGpV,EAAEC,GAAG,IAAIC,EAAEF,EAAE4U,gBAAgB3U,EAAE,IAAID,EAAEA,EAAE6U,cAAc3U,GAAG,CAAC,IAAIsB,EAAE,GAAGsS,GAAG5T,GAAGuB,EAAE,GAAGD,EAAEC,EAAExB,EAAED,EAAEwB,GAAGvB,IAAID,EAAEwB,IAAIvB,GAAGC,IAAIuB,CAAC,CAAC,CAAC,IAAI4T,GAAE,EAAE,SAASC,GAAGtV,GAAS,OAAO,GAAbA,IAAIA,GAAa,EAAEA,EAAS,UAAFA,EAAa,GAAG,UAAU,EAAE,CAAC,CAAC,IAAIuV,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAIC,IAAIC,GAAG,IAAID,IAAIE,GAAG,GAAGC,GAAG,6PAA6P/T,MAAM,KAChiB,SAASgU,GAAGtW,EAAEC,GAAG,OAAOD,GAAG,IAAK,UAAU,IAAK,WAAW8V,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGM,OAAOtW,EAAEuW,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBL,GAAGI,OAAOtW,EAAEuW,WAAW,CACnT,SAASC,GAAGzW,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,GAAG,OAAG,OAAO1B,GAAGA,EAAE0W,cAAchV,GAAS1B,EAAE,CAAC2W,UAAU1W,EAAE2W,aAAa1W,EAAE2W,iBAAiBrV,EAAEkV,YAAYhV,EAAEoV,iBAAiB,CAACrV,IAAI,OAAOxB,GAAY,QAARA,EAAE8P,GAAG9P,KAAauV,GAAGvV,GAAID,IAAEA,EAAE6W,kBAAkBrV,EAAEvB,EAAED,EAAE8W,iBAAiB,OAAOrV,IAAI,IAAIxB,EAAE2N,QAAQnM,IAAIxB,EAAEkQ,KAAK1O,GAAUzB,EAAC,CAEpR,SAAS+W,GAAG/W,GAAG,IAAIC,EAAE+W,GAAGhX,EAAEuP,QAAQ,GAAG,OAAOtP,EAAE,CAAC,IAAIC,EAAEsR,GAAGvR,GAAG,GAAG,OAAOC,EAAE,GAAW,MAARD,EAAEC,EAAEiG,MAAY,GAAW,QAARlG,EAAE2R,GAAG1R,IAA4D,OAA/CF,EAAE2W,UAAU1W,OAAE0V,GAAG3V,EAAEiX,UAAS,WAAWxB,GAAGvV,EAAE,SAAgB,GAAG,IAAID,GAAGC,EAAE8P,UAAUmC,QAAQN,cAAcqF,aAAmE,YAArDlX,EAAE2W,UAAU,IAAIzW,EAAEiG,IAAIjG,EAAE8P,UAAUmH,cAAc,KAAY,CAACnX,EAAE2W,UAAU,IAAI,CAClT,SAASS,GAAGpX,GAAG,GAAG,OAAOA,EAAE2W,UAAU,OAAM,EAAG,IAAI,IAAI1W,EAAED,EAAE8W,iBAAiB,EAAE7W,EAAEG,QAAQ,CAAC,IAAIF,EAAEmX,GAAGrX,EAAE4W,aAAa5W,EAAE6W,iBAAiB5W,EAAE,GAAGD,EAAE0W,aAAa,GAAG,OAAOxW,EAAiG,OAAe,QAARD,EAAE8P,GAAG7P,KAAasV,GAAGvV,GAAGD,EAAE2W,UAAUzW,GAAE,EAA3H,IAAIsB,EAAE,IAAtBtB,EAAEF,EAAE0W,aAAwBzP,YAAY/G,EAAEgC,KAAKhC,GAAGmP,GAAG7N,EAAEtB,EAAEqP,OAAO+H,cAAc9V,GAAG6N,GAAG,KAA0DpP,EAAEsX,OAAO,CAAC,OAAM,CAAE,CAAC,SAASC,GAAGxX,EAAEC,EAAEC,GAAGkX,GAAGpX,IAAIE,EAAEqW,OAAOtW,EAAE,CAAC,SAASwX,KAAK7B,IAAG,EAAG,OAAOE,IAAIsB,GAAGtB,MAAMA,GAAG,MAAM,OAAOC,IAAIqB,GAAGrB,MAAMA,GAAG,MAAM,OAAOC,IAAIoB,GAAGpB,MAAMA,GAAG,MAAMC,GAAG1T,QAAQiV,IAAIrB,GAAG5T,QAAQiV,GAAG,CACnf,SAASE,GAAG1X,EAAEC,GAAGD,EAAE2W,YAAY1W,IAAID,EAAE2W,UAAU,KAAKf,KAAKA,IAAG,EAAG9V,EAAGyS,0BAA0BzS,EAAGyT,wBAAwBkE,KAAK,CAC5H,SAASE,GAAG3X,GAAG,SAASC,EAAEA,GAAG,OAAOyX,GAAGzX,EAAED,EAAE,CAAC,GAAG,EAAE6V,GAAGzV,OAAO,CAACsX,GAAG7B,GAAG,GAAG7V,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAE2V,GAAGzV,OAAOF,IAAI,CAAC,IAAIsB,EAAEqU,GAAG3V,GAAGsB,EAAEmV,YAAY3W,IAAIwB,EAAEmV,UAAU,KAAK,CAAC,CAAyF,IAAxF,OAAOb,IAAI4B,GAAG5B,GAAG9V,GAAG,OAAO+V,IAAI2B,GAAG3B,GAAG/V,GAAG,OAAOgW,IAAI0B,GAAG1B,GAAGhW,GAAGiW,GAAG1T,QAAQtC,GAAGkW,GAAG5T,QAAQtC,GAAOC,EAAE,EAAEA,EAAEkW,GAAGhW,OAAOF,KAAIsB,EAAE4U,GAAGlW,IAAKyW,YAAY3W,IAAIwB,EAAEmV,UAAU,MAAM,KAAK,EAAEP,GAAGhW,QAAiB,QAARF,EAAEkW,GAAG,IAAYO,WAAYI,GAAG7W,GAAG,OAAOA,EAAEyW,WAAWP,GAAGmB,OAAO,CAAC,IAAIK,GAAGnU,EAAGoU,wBAAwBC,IAAG,EAC5a,SAASC,GAAG/X,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAE4T,GAAE3T,EAAEkW,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAI3C,GAAE,EAAE4C,GAAGjY,EAAEC,EAAEC,EAAEsB,EAAE,CAAC,QAAQ6T,GAAE5T,EAAEmW,GAAGI,WAAWtW,CAAC,CAAC,CAAC,SAASwW,GAAGlY,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAE4T,GAAE3T,EAAEkW,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAI3C,GAAE,EAAE4C,GAAGjY,EAAEC,EAAEC,EAAEsB,EAAE,CAAC,QAAQ6T,GAAE5T,EAAEmW,GAAGI,WAAWtW,CAAC,CAAC,CACjO,SAASuW,GAAGjY,EAAEC,EAAEC,EAAEsB,GAAG,GAAGsW,GAAG,CAAC,IAAIrW,EAAE4V,GAAGrX,EAAEC,EAAEC,EAAEsB,GAAG,GAAG,OAAOC,EAAE0W,GAAGnY,EAAEC,EAAEuB,EAAE4W,GAAGlY,GAAGoW,GAAGtW,EAAEwB,QAAQ,GANtF,SAAYxB,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,OAAOxB,GAAG,IAAK,UAAU,OAAO6V,GAAGW,GAAGX,GAAG9V,EAAEC,EAAEC,EAAEsB,EAAEC,IAAG,EAAG,IAAK,YAAY,OAAOsU,GAAGU,GAAGV,GAAG/V,EAAEC,EAAEC,EAAEsB,EAAEC,IAAG,EAAG,IAAK,YAAY,OAAOuU,GAAGS,GAAGT,GAAGhW,EAAEC,EAAEC,EAAEsB,EAAEC,IAAG,EAAG,IAAK,cAAc,IAAIC,EAAED,EAAE+U,UAAkD,OAAxCP,GAAGxQ,IAAI/D,EAAE+U,GAAGR,GAAG/O,IAAIxF,IAAI,KAAK1B,EAAEC,EAAEC,EAAEsB,EAAEC,KAAU,EAAG,IAAK,oBAAoB,OAAOC,EAAED,EAAE+U,UAAUL,GAAG1Q,IAAI/D,EAAE+U,GAAGN,GAAGjP,IAAIxF,IAAI,KAAK1B,EAAEC,EAAEC,EAAEsB,EAAEC,KAAI,EAAG,OAAM,CAAE,CAM1Q4W,CAAG5W,EAAEzB,EAAEC,EAAEC,EAAEsB,GAAGA,EAAE8W,uBAAuB,GAAGhC,GAAGtW,EAAEwB,GAAK,EAAFvB,IAAM,EAAEoW,GAAGzI,QAAQ5N,GAAG,CAAC,KAAK,OAAOyB,GAAG,CAAC,IAAIC,EAAEqO,GAAGtO,GAA0D,GAAvD,OAAOC,GAAG6T,GAAG7T,GAAiB,QAAdA,EAAE2V,GAAGrX,EAAEC,EAAEC,EAAEsB,KAAa2W,GAAGnY,EAAEC,EAAEuB,EAAE4W,GAAGlY,GAAMwB,IAAID,EAAE,MAAMA,EAAEC,CAAC,CAAC,OAAOD,GAAGD,EAAE8W,iBAAiB,MAAMH,GAAGnY,EAAEC,EAAEuB,EAAE,KAAKtB,EAAE,CAAC,CAAC,IAAIkY,GAAG,KACpU,SAASf,GAAGrX,EAAEC,EAAEC,EAAEsB,GAA2B,GAAxB4W,GAAG,KAAwB,QAAXpY,EAAEgX,GAAVhX,EAAEsP,GAAG9N,KAAuB,GAAW,QAARvB,EAAEuR,GAAGxR,IAAYA,EAAE,UAAU,GAAW,MAARE,EAAED,EAAEkG,KAAW,CAAS,GAAG,QAAXnG,EAAE4R,GAAG3R,IAAe,OAAOD,EAAEA,EAAE,IAAI,MAAM,GAAG,IAAIE,EAAE,CAAC,GAAGD,EAAE+P,UAAUmC,QAAQN,cAAcqF,aAAa,OAAO,IAAIjX,EAAEkG,IAAIlG,EAAE+P,UAAUmH,cAAc,KAAKnX,EAAE,IAAI,MAAMC,IAAID,IAAIA,EAAE,MAAW,OAALoY,GAAGpY,EAAS,IAAI,CAC7S,SAASuY,GAAGvY,GAAG,OAAOA,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,QAAQ,IAAK,cAAc,IAAK,OAAO,IAAK,MAAM,IAAK,WAAW,IAAK,WAAW,IAAK,UAAU,IAAK,YAAY,IAAK,OAAO,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,UAAU,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,YAAY,IAAK,UAAU,IAAK,QAAQ,IAAK,QAAQ,IAAK,OAAO,IAAK,gBAAgB,IAAK,cAAc,IAAK,YAAY,IAAK,aAAa,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,cAAc,IAAK,WAAW,IAAK,aAAa,IAAK,eAAe,IAAK,SAAS,IAAK,kBAAkB,IAAK,YAAY,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,oBAAoB,IAAK,aAAa,IAAK,YAAY,IAAK,cAAc,IAAK,OAAO,IAAK,mBAAmB,IAAK,QAAQ,IAAK,aAAa,IAAK,WAAW,IAAK,SAAS,IAAK,cAAc,OAAO,EAAE,IAAK,OAAO,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,IAAK,QAAQ,IAAK,aAAa,IAAK,aAAa,IAAK,eAAe,IAAK,eAAe,OAAO,EACpqC,IAAK,UAAU,OAAOgT,MAAM,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,UAAU,QAAQ,OAAO,GAAG,QAAQ,OAAO,GAAG,CAAC,IAAI8E,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAI1Y,EAAkBwB,EAAhBvB,EAAEwY,GAAGvY,EAAED,EAAEG,OAASqB,EAAE,UAAU+W,GAAGA,GAAG7Q,MAAM6Q,GAAG9O,YAAYhI,EAAED,EAAErB,OAAO,IAAIJ,EAAE,EAAEA,EAAEE,GAAGD,EAAED,KAAKyB,EAAEzB,GAAGA,KAAK,IAAI2B,EAAEzB,EAAEF,EAAE,IAAIwB,EAAE,EAAEA,GAAGG,GAAG1B,EAAEC,EAAEsB,KAAKC,EAAEC,EAAEF,GAAGA,KAAK,OAAOkX,GAAGjX,EAAEoB,MAAM7C,EAAE,EAAEwB,EAAE,EAAEA,OAAE,EAAO,CACxY,SAASoX,GAAG5Y,GAAG,IAAIC,EAAED,EAAE6Y,QAA+E,MAAvE,aAAa7Y,EAAgB,KAAbA,EAAEA,EAAE8Y,WAAgB,KAAK7Y,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAC,CAAC,SAAS+Y,KAAK,OAAM,CAAE,CAAC,SAASC,KAAK,OAAM,CAAE,CAC5K,SAASC,GAAGjZ,GAAG,SAASC,EAAEA,EAAEuB,EAAEC,EAAEC,EAAEC,GAA6G,IAAI,IAAIzB,KAAlH0B,KAAKsX,WAAWjZ,EAAE2B,KAAKuX,YAAY1X,EAAEG,KAAKM,KAAKV,EAAEI,KAAK8U,YAAYhV,EAAEE,KAAK2N,OAAO5N,EAAEC,KAAKwX,cAAc,KAAkBpZ,EAAEA,EAAEmB,eAAejB,KAAKD,EAAED,EAAEE,GAAG0B,KAAK1B,GAAGD,EAAEA,EAAEyB,GAAGA,EAAExB,IAAgI,OAA5H0B,KAAKyX,oBAAoB,MAAM3X,EAAE4X,iBAAiB5X,EAAE4X,kBAAiB,IAAK5X,EAAE6X,aAAaR,GAAGC,GAAGpX,KAAK4X,qBAAqBR,GAAUpX,IAAI,CAC9E,OAD+EkD,EAAE7E,EAAEiB,UAAU,CAACuY,eAAe,WAAW7X,KAAK0X,kBAAiB,EAAG,IAAItZ,EAAE4B,KAAK8U,YAAY1W,IAAIA,EAAEyZ,eAAezZ,EAAEyZ,iBAAiB,kBAAmBzZ,EAAEuZ,cAC7evZ,EAAEuZ,aAAY,GAAI3X,KAAKyX,mBAAmBN,GAAG,EAAET,gBAAgB,WAAW,IAAItY,EAAE4B,KAAK8U,YAAY1W,IAAIA,EAAEsY,gBAAgBtY,EAAEsY,kBAAkB,kBAAmBtY,EAAE0Z,eAAe1Z,EAAE0Z,cAAa,GAAI9X,KAAK4X,qBAAqBT,GAAG,EAAEY,QAAQ,WAAW,EAAEC,aAAab,KAAY9Y,CAAC,CACjR,IAAoL4Z,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,UAAU,SAASpa,GAAG,OAAOA,EAAEoa,WAAWC,KAAKC,KAAK,EAAEhB,iBAAiB,EAAEiB,UAAU,GAAGC,GAAGvB,GAAGe,IAAIS,GAAG3V,EAAE,CAAC,EAAEkV,GAAG,CAACU,KAAK,EAAEC,OAAO,IAAIC,GAAG3B,GAAGwB,IAAaI,GAAG/V,EAAE,CAAC,EAAE2V,GAAG,CAACK,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,iBAAiBC,GAAGC,OAAO,EAAEC,QAAQ,EAAEC,cAAc,SAAS5b,GAAG,YAAO,IAASA,EAAE4b,cAAc5b,EAAE6b,cAAc7b,EAAEwP,WAAWxP,EAAE8b,UAAU9b,EAAE6b,YAAY7b,EAAE4b,aAAa,EAAEG,UAAU,SAAS/b,GAAG,MAAG,cAC3eA,EAASA,EAAE+b,WAAU/b,IAAI+Z,KAAKA,IAAI,cAAc/Z,EAAEkC,MAAM2X,GAAG7Z,EAAE8a,QAAQf,GAAGe,QAAQhB,GAAG9Z,EAAE+a,QAAQhB,GAAGgB,SAASjB,GAAGD,GAAG,EAAEE,GAAG/Z,GAAU6Z,GAAE,EAAEmC,UAAU,SAAShc,GAAG,MAAM,cAAcA,EAAEA,EAAEgc,UAAUlC,EAAE,IAAImC,GAAGhD,GAAG4B,IAAiCqB,GAAGjD,GAA7BnU,EAAE,CAAC,EAAE+V,GAAG,CAACsB,aAAa,KAA4CC,GAAGnD,GAA9BnU,EAAE,CAAC,EAAE2V,GAAG,CAACmB,cAAc,KAA0ES,GAAGpD,GAA5DnU,EAAE,CAAC,EAAEkV,GAAG,CAACsC,cAAc,EAAEC,YAAY,EAAEC,cAAc,KAAcC,GAAG3X,EAAE,CAAC,EAAEkV,GAAG,CAAC0C,cAAc,SAAS1c,GAAG,MAAM,kBAAkBA,EAAEA,EAAE0c,cAAc7b,OAAO6b,aAAa,IAAIC,GAAG1D,GAAGwD,IAAyBG,GAAG3D,GAArBnU,EAAE,CAAC,EAAEkV,GAAG,CAAC6C,KAAK,KAAcC,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGje,GAAG,IAAIC,EAAE2B,KAAK8U,YAAY,OAAOzW,EAAEub,iBAAiBvb,EAAEub,iBAAiBxb,MAAIA,EAAE4d,GAAG5d,OAAMC,EAAED,EAAK,CAAC,SAASyb,KAAK,OAAOwC,EAAE,CAChS,IAAIC,GAAGpZ,EAAE,CAAC,EAAE2V,GAAG,CAAC0D,IAAI,SAASne,GAAG,GAAGA,EAAEme,IAAI,CAAC,IAAIle,EAAE6c,GAAG9c,EAAEme,MAAMne,EAAEme,IAAI,GAAG,iBAAiBle,EAAE,OAAOA,CAAC,CAAC,MAAM,aAAaD,EAAEkC,KAAc,MAARlC,EAAE4Y,GAAG5Y,IAAU,QAAQoe,OAAOC,aAAare,GAAI,YAAYA,EAAEkC,MAAM,UAAUlC,EAAEkC,KAAKyb,GAAG3d,EAAE6Y,UAAU,eAAe,EAAE,EAAEyF,KAAK,EAAEC,SAAS,EAAEnD,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEiD,OAAO,EAAEC,OAAO,EAAEjD,iBAAiBC,GAAG3C,SAAS,SAAS9Y,GAAG,MAAM,aAAaA,EAAEkC,KAAK0W,GAAG5Y,GAAG,CAAC,EAAE6Y,QAAQ,SAAS7Y,GAAG,MAAM,YAAYA,EAAEkC,MAAM,UAAUlC,EAAEkC,KAAKlC,EAAE6Y,QAAQ,CAAC,EAAE6F,MAAM,SAAS1e,GAAG,MAAM,aAC7eA,EAAEkC,KAAK0W,GAAG5Y,GAAG,YAAYA,EAAEkC,MAAM,UAAUlC,EAAEkC,KAAKlC,EAAE6Y,QAAQ,CAAC,IAAI8F,GAAG1F,GAAGiF,IAAiIU,GAAG3F,GAA7HnU,EAAE,CAAC,EAAE+V,GAAG,CAACrE,UAAU,EAAEqI,MAAM,EAAEC,OAAO,EAAEC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEC,UAAU,KAAmIC,GAAGrG,GAArHnU,EAAE,CAAC,EAAE2V,GAAG,CAAC8E,QAAQ,EAAEC,cAAc,EAAEC,eAAe,EAAEnE,OAAO,EAAEC,QAAQ,EAAEH,QAAQ,EAAEC,SAAS,EAAEG,iBAAiBC,MAA0EiE,GAAGzG,GAA3DnU,EAAE,CAAC,EAAEkV,GAAG,CAAC/X,aAAa,EAAEsa,YAAY,EAAEC,cAAc,KAAcmD,GAAG7a,EAAE,CAAC,EAAE+V,GAAG,CAAC+E,OAAO,SAAS5f,GAAG,MAAM,WAAWA,EAAEA,EAAE4f,OAAO,gBAAgB5f,GAAGA,EAAE6f,YAAY,CAAC,EACnfC,OAAO,SAAS9f,GAAG,MAAM,WAAWA,EAAEA,EAAE8f,OAAO,gBAAgB9f,GAAGA,EAAE+f,YAAY,eAAe/f,GAAGA,EAAEggB,WAAW,CAAC,EAAEC,OAAO,EAAEC,UAAU,IAAIC,GAAGlH,GAAG0G,IAAIS,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAGzf,GAAI,qBAAqBC,OAAOyf,GAAG,KAAK1f,GAAI,iBAAiBE,WAAWwf,GAAGxf,SAASyf,cAAc,IAAIC,GAAG5f,GAAI,cAAcC,SAASyf,GAAGG,GAAG7f,KAAMyf,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAII,GAAGtC,OAAOC,aAAa,IAAIsC,IAAG,EAC1W,SAASC,GAAG5gB,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAIogB,GAAGxS,QAAQ3N,EAAE4Y,SAAS,IAAK,UAAU,OAAO,MAAM5Y,EAAE4Y,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAASgI,GAAG7gB,GAAc,MAAM,iBAAjBA,EAAEA,EAAE2a,SAAkC,SAAS3a,EAAEA,EAAE6c,KAAK,IAAI,CAAC,IAAIiE,IAAG,EAE1QC,GAAG,CAACC,OAAM,EAAGC,MAAK,EAAGC,UAAS,EAAG,kBAAiB,EAAGC,OAAM,EAAGC,OAAM,EAAGC,QAAO,EAAGC,UAAS,EAAGC,OAAM,EAAGC,QAAO,EAAGC,KAAI,EAAGC,MAAK,EAAGC,MAAK,EAAGC,KAAI,EAAGC,MAAK,GAAI,SAASC,GAAG9hB,GAAG,IAAIC,EAAED,GAAGA,EAAE6G,UAAU7G,EAAE6G,SAASrE,cAAc,MAAM,UAAUvC,IAAI8gB,GAAG/gB,EAAEkC,MAAM,aAAajC,CAAO,CAAC,SAAS8hB,GAAG/hB,EAAEC,EAAEC,EAAEsB,GAAG0O,GAAG1O,GAAsB,GAAnBvB,EAAE+hB,GAAG/hB,EAAE,aAAgBG,SAASF,EAAE,IAAIsa,GAAG,WAAW,SAAS,KAAKta,EAAEsB,GAAGxB,EAAEmQ,KAAK,CAAC8R,MAAM/hB,EAAEgiB,UAAUjiB,IAAI,CAAC,IAAIkiB,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGriB,GAAGsiB,GAAGtiB,EAAE,EAAE,CAAC,SAASuiB,GAAGviB,GAAe,GAAGyH,EAAT+a,GAAGxiB,IAAY,OAAOA,CAAC,CACpe,SAASyiB,GAAGziB,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,CAAC,CAAC,IAAIyiB,IAAG,EAAG,GAAG9hB,EAAG,CAAC,IAAI+hB,GAAG,GAAG/hB,EAAG,CAAC,IAAIgiB,GAAG,YAAY9hB,SAAS,IAAI8hB,GAAG,CAAC,IAAIC,GAAG/hB,SAASC,cAAc,OAAO8hB,GAAGxf,aAAa,UAAU,WAAWuf,GAAG,mBAAoBC,GAAGC,OAAO,CAACH,GAAGC,EAAE,MAAMD,IAAG,EAAGD,GAAGC,MAAM7hB,SAASyf,cAAc,EAAEzf,SAASyf,aAAa,CAAC,SAASwC,KAAKZ,KAAKA,GAAGa,YAAY,mBAAmBC,IAAIb,GAAGD,GAAG,KAAK,CAAC,SAASc,GAAGjjB,GAAG,GAAG,UAAUA,EAAEiC,cAAcsgB,GAAGH,IAAI,CAAC,IAAIniB,EAAE,GAAG8hB,GAAG9hB,EAAEmiB,GAAGpiB,EAAEsP,GAAGtP,IAAIwQ,GAAG6R,GAAGpiB,EAAE,CAAC,CAC/b,SAASijB,GAAGljB,EAAEC,EAAEC,GAAG,YAAYF,GAAG+iB,KAAUX,GAAGliB,GAARiiB,GAAGliB,GAAUkjB,YAAY,mBAAmBF,KAAK,aAAajjB,GAAG+iB,IAAI,CAAC,SAASK,GAAGpjB,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOuiB,GAAGH,GAAG,CAAC,SAASiB,GAAGrjB,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAOuiB,GAAGtiB,EAAE,CAAC,SAASqjB,GAAGtjB,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAOuiB,GAAGtiB,EAAE,CAAiE,IAAIsjB,GAAG,mBAAoBtiB,OAAOmO,GAAGnO,OAAOmO,GAA5G,SAAYpP,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,GAAI,EAAEC,IAAID,GAAIA,GAAGC,GAAIA,CAAC,EACtW,SAASujB,GAAGxjB,EAAEC,GAAG,GAAGsjB,GAAGvjB,EAAEC,GAAG,OAAM,EAAG,GAAG,iBAAkBD,GAAG,OAAOA,GAAG,iBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIC,EAAEe,OAAO6M,KAAK9N,GAAGwB,EAAEP,OAAO6M,KAAK7N,GAAG,GAAGC,EAAEE,SAASoB,EAAEpB,OAAO,OAAM,EAAG,IAAIoB,EAAE,EAAEA,EAAEtB,EAAEE,OAAOoB,IAAI,CAAC,IAAIC,EAAEvB,EAAEsB,GAAG,IAAIR,EAAGiC,KAAKhD,EAAEwB,KAAK8hB,GAAGvjB,EAAEyB,GAAGxB,EAAEwB,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,SAASgiB,GAAGzjB,GAAG,KAAKA,GAAGA,EAAEmK,YAAYnK,EAAEA,EAAEmK,WAAW,OAAOnK,CAAC,CACtU,SAAS0jB,GAAG1jB,EAAEC,GAAG,IAAwBuB,EAApBtB,EAAEujB,GAAGzjB,GAAO,IAAJA,EAAE,EAAYE,GAAG,CAAC,GAAG,IAAIA,EAAEwK,SAAS,CAA0B,GAAzBlJ,EAAExB,EAAEE,EAAEwJ,YAAYtJ,OAAUJ,GAAGC,GAAGuB,GAAGvB,EAAE,MAAM,CAAC0jB,KAAKzjB,EAAE0jB,OAAO3jB,EAAED,GAAGA,EAAEwB,CAAC,CAACxB,EAAE,CAAC,KAAKE,GAAG,CAAC,GAAGA,EAAE2jB,YAAY,CAAC3jB,EAAEA,EAAE2jB,YAAY,MAAM7jB,CAAC,CAACE,EAAEA,EAAEwP,UAAU,CAACxP,OAAE,CAAM,CAACA,EAAEujB,GAAGvjB,EAAE,CAAC,CAAC,SAAS4jB,GAAG9jB,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAE0K,YAAYzK,GAAG,IAAIA,EAAEyK,SAASoZ,GAAG9jB,EAAEC,EAAEyP,YAAY,aAAa1P,EAAEA,EAAE+jB,SAAS9jB,KAAGD,EAAEgkB,4BAAwD,GAA7BhkB,EAAEgkB,wBAAwB/jB,KAAY,CAC9Z,SAASgkB,KAAK,IAAI,IAAIjkB,EAAEa,OAAOZ,EAAE2H,IAAK3H,aAAaD,EAAEkkB,mBAAmB,CAAC,IAAI,IAAIhkB,EAAE,iBAAkBD,EAAEkkB,cAAc5F,SAAS6F,IAAI,CAAC,MAAM5iB,GAAGtB,GAAE,CAAE,CAAC,IAAGA,EAAyB,MAAMD,EAAE2H,GAA/B5H,EAAEC,EAAEkkB,eAAgCrjB,SAAS,CAAC,OAAOb,CAAC,CAAC,SAASokB,GAAGrkB,GAAG,IAAIC,EAAED,GAAGA,EAAE6G,UAAU7G,EAAE6G,SAASrE,cAAc,OAAOvC,IAAI,UAAUA,IAAI,SAASD,EAAEkC,MAAM,WAAWlC,EAAEkC,MAAM,QAAQlC,EAAEkC,MAAM,QAAQlC,EAAEkC,MAAM,aAAalC,EAAEkC,OAAO,aAAajC,GAAG,SAASD,EAAEskB,gBAAgB,CACxa,SAASC,GAAGvkB,GAAG,IAAIC,EAAEgkB,KAAK/jB,EAAEF,EAAEwkB,YAAYhjB,EAAExB,EAAEykB,eAAe,GAAGxkB,IAAIC,GAAGA,GAAGA,EAAEyI,eAAemb,GAAG5jB,EAAEyI,cAAc+b,gBAAgBxkB,GAAG,CAAC,GAAG,OAAOsB,GAAG6iB,GAAGnkB,GAAG,GAAGD,EAAEuB,EAAEmjB,WAAc,KAAR3kB,EAAEwB,EAAEojB,OAAiB5kB,EAAEC,GAAG,mBAAmBC,EAAEA,EAAE2kB,eAAe5kB,EAAEC,EAAE4kB,aAAa/Q,KAAKgR,IAAI/kB,EAAEE,EAAEyH,MAAMvH,aAAa,IAAGJ,GAAGC,EAAEC,EAAEyI,eAAe7H,WAAWb,EAAE+kB,aAAankB,QAASokB,aAAa,CAACjlB,EAAEA,EAAEilB,eAAe,IAAIxjB,EAAEvB,EAAEwJ,YAAYtJ,OAAOsB,EAAEqS,KAAKgR,IAAIvjB,EAAEmjB,MAAMljB,GAAGD,OAAE,IAASA,EAAEojB,IAAIljB,EAAEqS,KAAKgR,IAAIvjB,EAAEojB,IAAInjB,IAAIzB,EAAEklB,QAAQxjB,EAAEF,IAAIC,EAAED,EAAEA,EAAEE,EAAEA,EAAED,GAAGA,EAAEiiB,GAAGxjB,EAAEwB,GAAG,IAAIC,EAAE+hB,GAAGxjB,EACvfsB,GAAGC,GAAGE,IAAI,IAAI3B,EAAEmlB,YAAYnlB,EAAEolB,aAAa3jB,EAAEkiB,MAAM3jB,EAAEqlB,eAAe5jB,EAAEmiB,QAAQ5jB,EAAEslB,YAAY3jB,EAAEgiB,MAAM3jB,EAAEulB,cAAc5jB,EAAEiiB,WAAU3jB,EAAEA,EAAEulB,eAAgBC,SAAShkB,EAAEkiB,KAAKliB,EAAEmiB,QAAQ5jB,EAAE0lB,kBAAkBhkB,EAAEF,GAAGxB,EAAE2lB,SAAS1lB,GAAGD,EAAEklB,OAAOvjB,EAAEgiB,KAAKhiB,EAAEiiB,UAAU3jB,EAAE2lB,OAAOjkB,EAAEgiB,KAAKhiB,EAAEiiB,QAAQ5jB,EAAE2lB,SAAS1lB,IAAI,CAAM,IAALA,EAAE,GAAOD,EAAEE,EAAEF,EAAEA,EAAE0P,YAAY,IAAI1P,EAAE0K,UAAUzK,EAAEkQ,KAAK,CAAC0V,QAAQ7lB,EAAE8lB,KAAK9lB,EAAE+lB,WAAWC,IAAIhmB,EAAEimB,YAAmD,IAAvC,mBAAoB/lB,EAAEgmB,OAAOhmB,EAAEgmB,QAAYhmB,EAAE,EAAEA,EAAED,EAAEG,OAAOF,KAAIF,EAAEC,EAAEC,IAAK2lB,QAAQE,WAAW/lB,EAAE8lB,KAAK9lB,EAAE6lB,QAAQI,UAAUjmB,EAAEgmB,GAAG,CAAC,CACzf,IAAIG,GAAGvlB,GAAI,iBAAiBE,UAAU,IAAIA,SAASyf,aAAa6F,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGxmB,EAAEC,EAAEC,GAAG,IAAIsB,EAAEtB,EAAEW,SAASX,EAAEA,EAAEY,SAAS,IAAIZ,EAAEwK,SAASxK,EAAEA,EAAEyI,cAAc4d,IAAI,MAAMH,IAAIA,KAAKxe,EAAGpG,KAAsCA,EAA5B,mBAALA,EAAE4kB,KAAyB/B,GAAG7iB,GAAK,CAACmjB,MAAMnjB,EAAEqjB,eAAeD,IAAIpjB,EAAEsjB,cAAyF,CAACM,YAA3E5jB,GAAGA,EAAEmH,eAAenH,EAAEmH,cAAcqc,aAAankB,QAAQokB,gBAA+BG,WAAWC,aAAa7jB,EAAE6jB,aAAaC,UAAU9jB,EAAE8jB,UAAUC,YAAY/jB,EAAE+jB,aAAce,IAAI9C,GAAG8C,GAAG9kB,KAAK8kB,GAAG9kB,EAAsB,GAApBA,EAAEwgB,GAAGqE,GAAG,aAAgBjmB,SAASH,EAAE,IAAIua,GAAG,WAAW,SAAS,KAAKva,EAAEC,GAAGF,EAAEmQ,KAAK,CAAC8R,MAAMhiB,EAAEiiB,UAAU1gB,IAAIvB,EAAEsP,OAAO6W,KAAK,CACtf,SAASK,GAAGzmB,EAAEC,GAAG,IAAIC,EAAE,CAAC,EAAiF,OAA/EA,EAAEF,EAAEwC,eAAevC,EAAEuC,cAActC,EAAE,SAASF,GAAG,SAASC,EAAEC,EAAE,MAAMF,GAAG,MAAMC,EAASC,CAAC,CAAC,IAAIwmB,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAGjnB,GAAG,GAAG+mB,GAAG/mB,GAAG,OAAO+mB,GAAG/mB,GAAG,IAAI0mB,GAAG1mB,GAAG,OAAOA,EAAE,IAAYE,EAARD,EAAEymB,GAAG1mB,GAAK,IAAIE,KAAKD,EAAE,GAAGA,EAAEkB,eAAejB,IAAIA,KAAK8mB,GAAG,OAAOD,GAAG/mB,GAAGC,EAAEC,GAAG,OAAOF,CAAC,CAA/XY,IAAKomB,GAAGlmB,SAASC,cAAc,OAAO4M,MAAM,mBAAmB9M,gBAAgB6lB,GAAGC,aAAaO,iBAAiBR,GAAGE,mBAAmBM,iBAAiBR,GAAGG,eAAeK,WAAW,oBAAoBrmB,eAAe6lB,GAAGI,cAAc9O,YAAwJ,IAAImP,GAAGF,GAAG,gBAAgBG,GAAGH,GAAG,sBAAsBI,GAAGJ,GAAG,kBAAkBK,GAAGL,GAAG,iBAAiBM,GAAG,IAAIrR,IAAIsR,GAAG,smBAAsmBllB,MAAM,KAC/lC,SAASmlB,GAAGznB,EAAEC,GAAGsnB,GAAG9hB,IAAIzF,EAAEC,GAAGQ,EAAGR,EAAE,CAACD,GAAG,CAAC,IAAI,IAAI0nB,GAAG,EAAEA,GAAGF,GAAGpnB,OAAOsnB,KAAK,CAAC,IAAIC,GAAGH,GAAGE,IAA2DD,GAApDE,GAAGnlB,cAAuD,MAAtCmlB,GAAG,GAAGhlB,cAAcglB,GAAG9kB,MAAM,IAAiB,CAAC4kB,GAAGN,GAAG,kBAAkBM,GAAGL,GAAG,wBAAwBK,GAAGJ,GAAG,oBAAoBI,GAAG,WAAW,iBAAiBA,GAAG,UAAU,WAAWA,GAAG,WAAW,UAAUA,GAAGH,GAAG,mBAAmB5mB,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAC7cA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoE6B,MAAM,MAAM7B,EAAG,WAAW,uFAAuF6B,MAAM,MAAM7B,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2D6B,MAAM,MAAM7B,EAAG,qBAAqB,6DAA6D6B,MAAM,MAC/f7B,EAAG,sBAAsB,8DAA8D6B,MAAM,MAAM,IAAIslB,GAAG,6NAA6NtlB,MAAM,KAAKulB,GAAG,IAAItnB,IAAI,0CAA0C+B,MAAM,KAAKwlB,OAAOF,KACzZ,SAASG,GAAG/nB,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEkC,MAAM,gBAAgBlC,EAAEoZ,cAAclZ,EAlDjE,SAAYF,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,EAAEkE,EAAEC,GAA4B,GAAzByL,GAAGR,MAAMnP,KAAKzB,WAAc+Q,GAAG,CAAC,IAAGA,GAAgC,MAAMjM,MAAMlF,EAAE,MAA1C,IAAI6F,EAAEuL,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAGzL,EAAE,CAAC,CAkDpEoiB,CAAGxmB,EAAEvB,OAAE,EAAOD,GAAGA,EAAEoZ,cAAc,IAAI,CACxG,SAASkJ,GAAGtiB,EAAEC,GAAGA,KAAS,EAAFA,GAAK,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAEI,OAAOF,IAAI,CAAC,IAAIsB,EAAExB,EAAEE,GAAGuB,EAAED,EAAEygB,MAAMzgB,EAAEA,EAAE0gB,UAAUliB,EAAE,CAAC,IAAI0B,OAAE,EAAO,GAAGzB,EAAE,IAAI,IAAI0B,EAAEH,EAAEpB,OAAO,EAAE,GAAGuB,EAAEA,IAAI,CAAC,IAAIkE,EAAErE,EAAEG,GAAGmE,EAAED,EAAEoiB,SAASriB,EAAEC,EAAEuT,cAA2B,GAAbvT,EAAEA,EAAEqiB,SAAYpiB,IAAIpE,GAAGD,EAAE+X,uBAAuB,MAAMxZ,EAAE+nB,GAAGtmB,EAAEoE,EAAED,GAAGlE,EAAEoE,CAAC,MAAM,IAAInE,EAAE,EAAEA,EAAEH,EAAEpB,OAAOuB,IAAI,CAAoD,GAA5CmE,GAAPD,EAAErE,EAAEG,IAAOsmB,SAASriB,EAAEC,EAAEuT,cAAcvT,EAAEA,EAAEqiB,SAAYpiB,IAAIpE,GAAGD,EAAE+X,uBAAuB,MAAMxZ,EAAE+nB,GAAGtmB,EAAEoE,EAAED,GAAGlE,EAAEoE,CAAC,CAAC,CAAC,CAAC,GAAGsL,GAAG,MAAMpR,EAAEqR,GAAGD,IAAG,EAAGC,GAAG,KAAKrR,CAAE,CAC5a,SAASmoB,GAAEnoB,EAAEC,GAAG,IAAIC,EAAED,EAAEmoB,SAAI,IAASloB,IAAIA,EAAED,EAAEmoB,IAAI,IAAI7nB,KAAK,IAAIiB,EAAExB,EAAE,WAAWE,EAAEmoB,IAAI7mB,KAAK8mB,GAAGroB,EAAED,EAAE,GAAE,GAAIE,EAAES,IAAIa,GAAG,CAAC,SAAS+mB,GAAGvoB,EAAEC,EAAEC,GAAG,IAAIsB,EAAE,EAAEvB,IAAIuB,GAAG,GAAG8mB,GAAGpoB,EAAEF,EAAEwB,EAAEvB,EAAE,CAAC,IAAIuoB,GAAG,kBAAkBzU,KAAK0U,SAASve,SAAS,IAAIrH,MAAM,GAAG,SAAS6lB,GAAG1oB,GAAG,IAAIA,EAAEwoB,IAAI,CAACxoB,EAAEwoB,KAAI,EAAGloB,EAAGiC,SAAQ,SAAStC,GAAG,oBAAoBA,IAAI4nB,GAAGQ,IAAIpoB,IAAIsoB,GAAGtoB,GAAE,EAAGD,GAAGuoB,GAAGtoB,GAAE,EAAGD,GAAG,IAAG,IAAIC,EAAE,IAAID,EAAE0K,SAAS1K,EAAEA,EAAE2I,cAAc,OAAO1I,GAAGA,EAAEuoB,MAAMvoB,EAAEuoB,KAAI,EAAGD,GAAG,mBAAkB,EAAGtoB,GAAG,CAAC,CACjb,SAASqoB,GAAGtoB,EAAEC,EAAEC,EAAEsB,GAAG,OAAO+W,GAAGtY,IAAI,KAAK,EAAE,IAAIwB,EAAEsW,GAAG,MAAM,KAAK,EAAEtW,EAAEyW,GAAG,MAAM,QAAQzW,EAAEwW,GAAG/X,EAAEuB,EAAEknB,KAAK,KAAK1oB,EAAEC,EAAEF,GAAGyB,OAAE,GAAQiP,IAAI,eAAezQ,GAAG,cAAcA,GAAG,UAAUA,IAAIwB,GAAE,GAAID,OAAE,IAASC,EAAEzB,EAAE4Q,iBAAiB3Q,EAAEC,EAAE,CAAC0oB,SAAQ,EAAGC,QAAQpnB,IAAIzB,EAAE4Q,iBAAiB3Q,EAAEC,GAAE,QAAI,IAASuB,EAAEzB,EAAE4Q,iBAAiB3Q,EAAEC,EAAE,CAAC2oB,QAAQpnB,IAAIzB,EAAE4Q,iBAAiB3Q,EAAEC,GAAE,EAAG,CAClV,SAASiY,GAAGnY,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,IAAIC,EAAEF,EAAE,KAAU,EAAFvB,GAAa,EAAFA,GAAM,OAAOuB,GAAExB,EAAE,OAAO,CAAC,GAAG,OAAOwB,EAAE,OAAO,IAAIG,EAAEH,EAAE2E,IAAI,GAAG,IAAIxE,GAAG,IAAIA,EAAE,CAAC,IAAIkE,EAAErE,EAAEwO,UAAUmH,cAAc,GAAGtR,IAAIpE,GAAG,IAAIoE,EAAE6E,UAAU7E,EAAE6J,aAAajO,EAAE,MAAM,GAAG,IAAIE,EAAE,IAAIA,EAAEH,EAAEkQ,OAAO,OAAO/P,GAAG,CAAC,IAAImE,EAAEnE,EAAEwE,IAAI,IAAG,IAAIL,GAAG,IAAIA,MAAKA,EAAEnE,EAAEqO,UAAUmH,iBAAkB1V,GAAG,IAAIqE,EAAE4E,UAAU5E,EAAE4J,aAAajO,GAAE,OAAOE,EAAEA,EAAE+P,MAAM,CAAC,KAAK,OAAO7L,GAAG,CAAS,GAAG,QAAXlE,EAAEqV,GAAGnR,IAAe,OAAe,GAAG,KAAXC,EAAEnE,EAAEwE,MAAc,IAAIL,EAAE,CAACtE,EAAEE,EAAEC,EAAE,SAAS3B,CAAC,CAAC6F,EAAEA,EAAE6J,UAAU,CAAC,CAAClO,EAAEA,EAAEkQ,MAAM,CAAClB,IAAG,WAAW,IAAIhP,EAAEE,EAAED,EAAE6N,GAAGpP,GAAGyB,EAAE,GACpf3B,EAAE,CAAC,IAAI6F,EAAE0hB,GAAGrgB,IAAIlH,GAAG,QAAG,IAAS6F,EAAE,CAAC,IAAIC,EAAE0U,GAAGsO,EAAE9oB,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAI4Y,GAAG1Y,GAAG,MAAMF,EAAE,IAAK,UAAU,IAAK,QAAQ8F,EAAE6Y,GAAG,MAAM,IAAK,UAAUmK,EAAE,QAAQhjB,EAAEsW,GAAG,MAAM,IAAK,WAAW0M,EAAE,OAAOhjB,EAAEsW,GAAG,MAAM,IAAK,aAAa,IAAK,YAAYtW,EAAEsW,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIlc,EAAEwb,OAAO,MAAM1b,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc8F,EAAEmW,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOnW,EAC1iBoW,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAapW,EAAEwZ,GAAG,MAAM,KAAK6H,GAAG,KAAKC,GAAG,KAAKC,GAAGvhB,EAAEuW,GAAG,MAAM,KAAKiL,GAAGxhB,EAAE4Z,GAAG,MAAM,IAAK,SAAS5Z,EAAE8U,GAAG,MAAM,IAAK,QAAQ9U,EAAEqa,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQra,EAAE6W,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAY7W,EAAE8Y,GAAG,IAAImK,KAAS,EAAF9oB,GAAK+oB,GAAGD,GAAG,WAAW/oB,EAAEipB,EAAEF,EAAE,OAAOljB,EAAEA,EAAE,UAAU,KAAKA,EAAEkjB,EAAE,GAAG,IAAI,IAAQG,EAAJC,EAAE3nB,EAAI,OAC/e2nB,GAAG,CAAK,IAAIC,GAARF,EAAEC,GAAUnZ,UAAsF,GAA5E,IAAIkZ,EAAE/iB,KAAK,OAAOijB,IAAIF,EAAEE,EAAE,OAAOH,GAAc,OAAVG,EAAE3Y,GAAG0Y,EAAEF,KAAYF,EAAE5Y,KAAKkZ,GAAGF,EAAEC,EAAEF,KAASF,EAAE,MAAMG,EAAEA,EAAEzX,MAAM,CAAC,EAAEqX,EAAE3oB,SAASyF,EAAE,IAAIC,EAAED,EAAEijB,EAAE,KAAK5oB,EAAEuB,GAAGE,EAAEwO,KAAK,CAAC8R,MAAMpc,EAAEqc,UAAU6G,IAAI,CAAC,CAAC,KAAU,EAAF9oB,GAAK,CAA4E,GAAnC6F,EAAE,aAAa9F,GAAG,eAAeA,KAAtE6F,EAAE,cAAc7F,GAAG,gBAAgBA,IAA2CE,IAAImP,MAAKyZ,EAAE5oB,EAAE0b,eAAe1b,EAAE2b,eAAe7E,GAAG8R,KAAIA,EAAEQ,OAAgBxjB,GAAGD,KAAGA,EAAEpE,EAAEZ,SAASY,EAAEA,GAAGoE,EAAEpE,EAAEkH,eAAe9C,EAAEmf,aAAanf,EAAE0jB,aAAa1oB,OAAUiF,GAAqCA,EAAEtE,EAAiB,QAAfsnB,GAAnCA,EAAE5oB,EAAE0b,eAAe1b,EAAE4b,WAAkB9E,GAAG8R,GAAG,QAC9dA,KAARE,EAAExX,GAAGsX,KAAU,IAAIA,EAAE3iB,KAAK,IAAI2iB,EAAE3iB,OAAK2iB,EAAE,QAAUhjB,EAAE,KAAKgjB,EAAEtnB,GAAKsE,IAAIgjB,GAAE,CAAgU,GAA/TC,EAAE9M,GAAGmN,EAAE,eAAeH,EAAE,eAAeE,EAAE,QAAW,eAAenpB,GAAG,gBAAgBA,IAAE+oB,EAAEnK,GAAGwK,EAAE,iBAAiBH,EAAE,iBAAiBE,EAAE,WAAUH,EAAE,MAAMljB,EAAED,EAAE2c,GAAG1c,GAAGojB,EAAE,MAAMJ,EAAEjjB,EAAE2c,GAAGsG,IAAGjjB,EAAE,IAAIkjB,EAAEK,EAAED,EAAE,QAAQrjB,EAAE5F,EAAEuB,IAAK8N,OAAOyZ,EAAEnjB,EAAE+V,cAAcsN,EAAEE,EAAE,KAAKpS,GAAGvV,KAAKD,KAAIunB,EAAE,IAAIA,EAAEE,EAAEE,EAAE,QAAQL,EAAE5oB,EAAEuB,IAAK8N,OAAO2Z,EAAEH,EAAEnN,cAAcoN,EAAEI,EAAEL,GAAGC,EAAEI,EAAKtjB,GAAGgjB,EAAE7oB,EAAE,CAAa,IAARgpB,EAAEH,EAAEK,EAAE,EAAMD,EAAhBH,EAAEjjB,EAAkBojB,EAAEA,EAAEM,GAAGN,GAAGC,IAAQ,IAAJD,EAAE,EAAME,EAAEH,EAAEG,EAAEA,EAAEI,GAAGJ,GAAGF,IAAI,KAAK,EAAEC,EAAED,GAAGH,EAAES,GAAGT,GAAGI,IAAI,KAAK,EAAED,EAAEC,GAAGF,EACpfO,GAAGP,GAAGC,IAAI,KAAKC,KAAK,CAAC,GAAGJ,IAAIE,GAAG,OAAOA,GAAGF,IAAIE,EAAExX,UAAU,MAAMxR,EAAE8oB,EAAES,GAAGT,GAAGE,EAAEO,GAAGP,EAAE,CAACF,EAAE,IAAI,MAAMA,EAAE,KAAK,OAAOjjB,GAAG2jB,GAAG9nB,EAAEkE,EAAEC,EAAEijB,GAAE,GAAI,OAAOD,GAAG,OAAOE,GAAGS,GAAG9nB,EAAEqnB,EAAEF,EAAEC,GAAE,EAAG,CAA8D,GAAG,YAA1CjjB,GAAjBD,EAAErE,EAAEghB,GAAGhhB,GAAGX,QAAWgG,UAAUhB,EAAEgB,SAASrE,gBAA+B,UAAUsD,GAAG,SAASD,EAAE3D,KAAK,IAAIwnB,EAAGjH,QAAQ,GAAGX,GAAGjc,GAAG,GAAG6c,GAAGgH,EAAGpG,OAAO,CAACoG,EAAGtG,GAAG,IAAIuG,EAAGzG,EAAE,MAAMpd,EAAED,EAAEgB,WAAW,UAAUf,EAAEtD,gBAAgB,aAAaqD,EAAE3D,MAAM,UAAU2D,EAAE3D,QAAQwnB,EAAGrG,IACrV,OAD4VqG,IAAKA,EAAGA,EAAG1pB,EAAEwB,IAAKugB,GAAGpgB,EAAE+nB,EAAGxpB,EAAEuB,IAAWkoB,GAAIA,EAAG3pB,EAAE6F,EAAErE,GAAG,aAAaxB,IAAI2pB,EAAG9jB,EAAEqC,gBAClfyhB,EAAGrhB,YAAY,WAAWzC,EAAE3D,MAAMuG,GAAG5C,EAAE,SAASA,EAAE8B,QAAOgiB,EAAGnoB,EAAEghB,GAAGhhB,GAAGX,OAAcb,GAAG,IAAK,WAAa8hB,GAAG6H,IAAK,SAASA,EAAGrF,mBAAgB8B,GAAGuD,EAAGtD,GAAG7kB,EAAE8kB,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAG7kB,EAAEzB,EAAEuB,GAAG,MAAM,IAAK,kBAAkB,GAAG0kB,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAG7kB,EAAEzB,EAAEuB,GAAG,IAAImoB,EAAG,GAAGvJ,GAAGpgB,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmB,IAAI6pB,EAAG,qBAAqB,MAAM5pB,EAAE,IAAK,iBAAiB4pB,EAAG,mBACpe,MAAM5pB,EAAE,IAAK,oBAAoB4pB,EAAG,sBAAsB,MAAM5pB,EAAE4pB,OAAG,CAAM,MAAM/I,GAAGF,GAAG5gB,EAAEE,KAAK2pB,EAAG,oBAAoB,YAAY7pB,GAAG,MAAME,EAAE2Y,UAAUgR,EAAG,sBAAsBA,IAAKpJ,IAAI,OAAOvgB,EAAEue,SAASqC,IAAI,uBAAuB+I,EAAG,qBAAqBA,GAAI/I,KAAK8I,EAAGjR,OAAYF,GAAG,UAARD,GAAG/W,GAAkB+W,GAAG7Q,MAAM6Q,GAAG9O,YAAYoX,IAAG,IAAiB,GAAZ6I,EAAG3H,GAAGxgB,EAAEqoB,IAASzpB,SAASypB,EAAG,IAAIjN,GAAGiN,EAAG7pB,EAAE,KAAKE,EAAEuB,GAAGE,EAAEwO,KAAK,CAAC8R,MAAM4H,EAAG3H,UAAUyH,KAAKC,GAAwB,QAATA,EAAG/I,GAAG3gB,OAAlB2pB,EAAGhN,KAAK+M,MAA2CA,EAAGpJ,GA5BhM,SAAYxgB,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAO6gB,GAAG5gB,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEye,MAAa,MAAKiC,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAO1gB,EAAEC,EAAE4c,QAAS6D,IAAIC,GAAG,KAAK3gB,EAAE,QAAQ,OAAO,KAAK,CA4BE8pB,CAAG9pB,EAAEE,GA3Bzd,SAAYF,EAAEC,GAAG,GAAG6gB,GAAG,MAAM,mBAAmB9gB,IAAIqgB,IAAIO,GAAG5gB,EAAEC,IAAID,EAAE2Y,KAAKD,GAAGD,GAAGD,GAAG,KAAKsI,IAAG,EAAG9gB,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKC,EAAEmb,SAASnb,EAAEqb,QAAQrb,EAAEsb,UAAUtb,EAAEmb,SAASnb,EAAEqb,OAAO,CAAC,GAAGrb,EAAE8pB,MAAM,EAAE9pB,EAAE8pB,KAAK3pB,OAAO,OAAOH,EAAE8pB,KAAK,GAAG9pB,EAAEye,MAAM,OAAON,OAAOC,aAAape,EAAEye,MAAM,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAO+B,IAAI,OAAOxgB,EAAEwe,OAAO,KAAKxe,EAAE4c,KAAyB,CA2BqFmN,CAAGhqB,EAAEE,KACje,GADoesB,EAAEwgB,GAAGxgB,EAAE,kBACvepB,SAASqB,EAAE,IAAImb,GAAG,gBAAgB,cAAc,KAAK1c,EAAEuB,GAAGE,EAAEwO,KAAK,CAAC8R,MAAMxgB,EAAEygB,UAAU1gB,IAAIC,EAAEob,KAAK+M,EAAG,CAACtH,GAAG3gB,EAAE1B,EAAE,GAAE,CAAC,SAASopB,GAAGrpB,EAAEC,EAAEC,GAAG,MAAM,CAAC+nB,SAASjoB,EAAEkoB,SAASjoB,EAAEmZ,cAAclZ,EAAE,CAAC,SAAS8hB,GAAGhiB,EAAEC,GAAG,IAAI,IAAIC,EAAED,EAAE,UAAUuB,EAAE,GAAG,OAAOxB,GAAG,CAAC,IAAIyB,EAAEzB,EAAE0B,EAAED,EAAEuO,UAAU,IAAIvO,EAAE0E,KAAK,OAAOzE,IAAID,EAAEC,EAAY,OAAVA,EAAE+O,GAAGzQ,EAAEE,KAAYsB,EAAEyoB,QAAQZ,GAAGrpB,EAAE0B,EAAED,IAAc,OAAVC,EAAE+O,GAAGzQ,EAAEC,KAAYuB,EAAE2O,KAAKkZ,GAAGrpB,EAAE0B,EAAED,KAAKzB,EAAEA,EAAE0R,MAAM,CAAC,OAAOlQ,CAAC,CAAC,SAASgoB,GAAGxpB,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAE0R,aAAa1R,GAAG,IAAIA,EAAEmG,KAAK,OAAOnG,GAAI,IAAI,CACnd,SAASypB,GAAGzpB,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,IAAI,IAAIC,EAAEzB,EAAEiZ,WAAWvX,EAAE,GAAG,OAAOzB,GAAGA,IAAIsB,GAAG,CAAC,IAAIqE,EAAE3F,EAAE4F,EAAED,EAAE4L,UAAU7L,EAAEC,EAAEmK,UAAU,GAAG,OAAOlK,GAAGA,IAAItE,EAAE,MAAM,IAAIqE,EAAEM,KAAK,OAAOP,IAAIC,EAAED,EAAEnE,EAAa,OAAVqE,EAAE2K,GAAGvQ,EAAEwB,KAAYC,EAAEsoB,QAAQZ,GAAGnpB,EAAE4F,EAAED,IAAKpE,GAAc,OAAVqE,EAAE2K,GAAGvQ,EAAEwB,KAAYC,EAAEwO,KAAKkZ,GAAGnpB,EAAE4F,EAAED,KAAM3F,EAAEA,EAAEwR,MAAM,CAAC,IAAI/P,EAAEvB,QAAQJ,EAAEmQ,KAAK,CAAC8R,MAAMhiB,EAAEiiB,UAAUvgB,GAAG,CAAC,IAAIuoB,GAAG,SAASC,GAAG,iBAAiB,SAASC,GAAGpqB,GAAG,OAAO,iBAAkBA,EAAEA,EAAE,GAAGA,GAAGuD,QAAQ2mB,GAAG,MAAM3mB,QAAQ4mB,GAAG,GAAG,CAAC,SAASE,GAAGrqB,EAAEC,EAAEC,GAAW,GAARD,EAAEmqB,GAAGnqB,GAAMmqB,GAAGpqB,KAAKC,GAAGC,EAAE,MAAM+E,MAAMlF,EAAE,KAAM,CAAC,SAASuqB,KAAK,CAC9e,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGzqB,EAAEC,GAAG,MAAM,aAAaD,GAAG,aAAaA,GAAG,iBAAkBC,EAAEqJ,UAAU,iBAAkBrJ,EAAEqJ,UAAU,iBAAkBrJ,EAAEoJ,yBAAyB,OAAOpJ,EAAEoJ,yBAAyB,MAAMpJ,EAAEoJ,wBAAwBqhB,MAAM,CAC5P,IAAIC,GAAG,mBAAoBC,WAAWA,gBAAW,EAAOC,GAAG,mBAAoBC,aAAaA,kBAAa,EAAOC,GAAG,mBAAoBC,QAAQA,aAAQ,EAAOC,GAAG,mBAAoBC,eAAeA,oBAAe,IAAqBH,GAAG,SAAS/qB,GAAG,OAAO+qB,GAAGI,QAAQ,MAAMC,KAAKprB,GAAGqrB,MAAMC,GAAG,EAAEX,GAAG,SAASW,GAAGtrB,GAAG4qB,YAAW,WAAW,MAAM5qB,CAAE,GAAE,CACpV,SAASurB,GAAGvrB,EAAEC,GAAG,IAAIC,EAAED,EAAEuB,EAAE,EAAE,EAAE,CAAC,IAAIC,EAAEvB,EAAE2jB,YAA6B,GAAjB7jB,EAAEoK,YAAYlK,GAAMuB,GAAG,IAAIA,EAAEiJ,SAAS,GAAY,QAATxK,EAAEuB,EAAEob,MAAc,CAAC,GAAG,IAAIrb,EAA0B,OAAvBxB,EAAEoK,YAAY3I,QAAGkW,GAAG1X,GAAUuB,GAAG,KAAK,MAAMtB,GAAG,OAAOA,GAAG,OAAOA,GAAGsB,IAAItB,EAAEuB,CAAC,OAAOvB,GAAGyX,GAAG1X,EAAE,CAAC,SAASurB,GAAGxrB,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAE6jB,YAAY,CAAC,IAAI5jB,EAAED,EAAE0K,SAAS,GAAG,IAAIzK,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIA,EAAE,CAAU,GAAG,OAAZA,EAAED,EAAE6c,OAAiB,OAAO5c,GAAG,OAAOA,EAAE,MAAM,GAAG,OAAOA,EAAE,OAAO,IAAI,CAAC,CAAC,OAAOD,CAAC,CACjY,SAASyrB,GAAGzrB,GAAGA,EAAEA,EAAE0rB,gBAAgB,IAAI,IAAIzrB,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE0K,SAAS,CAAC,IAAIxK,EAAEF,EAAE6c,KAAK,GAAG,MAAM3c,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAID,EAAE,OAAOD,EAAEC,GAAG,KAAK,OAAOC,GAAGD,GAAG,CAACD,EAAEA,EAAE0rB,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIC,GAAG5X,KAAK0U,SAASve,SAAS,IAAIrH,MAAM,GAAG+oB,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGrC,GAAG,oBAAoBqC,GAAGvD,GAAG,iBAAiBuD,GAAGG,GAAG,oBAAoBH,GAAGI,GAAG,kBAAkBJ,GAClX,SAAS3U,GAAGhX,GAAG,IAAIC,EAAED,EAAE4rB,IAAI,GAAG3rB,EAAE,OAAOA,EAAE,IAAI,IAAIC,EAAEF,EAAE0P,WAAWxP,GAAG,CAAC,GAAGD,EAAEC,EAAEopB,KAAKppB,EAAE0rB,IAAI,CAAe,GAAd1rB,EAAED,EAAEwR,UAAa,OAAOxR,EAAEgS,OAAO,OAAO/R,GAAG,OAAOA,EAAE+R,MAAM,IAAIjS,EAAEyrB,GAAGzrB,GAAG,OAAOA,GAAG,CAAC,GAAGE,EAAEF,EAAE4rB,IAAI,OAAO1rB,EAAEF,EAAEyrB,GAAGzrB,EAAE,CAAC,OAAOC,CAAC,CAAKC,GAAJF,EAAEE,GAAMwP,UAAU,CAAC,OAAO,IAAI,CAAC,SAASK,GAAG/P,GAAkB,QAAfA,EAAEA,EAAE4rB,KAAK5rB,EAAEspB,MAAc,IAAItpB,EAAEmG,KAAK,IAAInG,EAAEmG,KAAK,KAAKnG,EAAEmG,KAAK,IAAInG,EAAEmG,IAAI,KAAKnG,CAAC,CAAC,SAASwiB,GAAGxiB,GAAG,GAAG,IAAIA,EAAEmG,KAAK,IAAInG,EAAEmG,IAAI,OAAOnG,EAAEgQ,UAAU,MAAM/K,MAAMlF,EAAE,IAAK,CAAC,SAASkQ,GAAGjQ,GAAG,OAAOA,EAAE6rB,KAAK,IAAI,CAAC,IAAIG,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAGlsB,GAAG,MAAM,CAACmS,QAAQnS,EAAE,CACve,SAASmsB,GAAEnsB,GAAG,EAAEisB,KAAKjsB,EAAEmS,QAAQ6Z,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAK,CAAC,SAASG,GAAEpsB,EAAEC,GAAGgsB,KAAKD,GAAGC,IAAIjsB,EAAEmS,QAAQnS,EAAEmS,QAAQlS,CAAC,CAAC,IAAIosB,GAAG,CAAC,EAAEC,GAAEJ,GAAGG,IAAIE,GAAGL,IAAG,GAAIM,GAAGH,GAAG,SAASI,GAAGzsB,EAAEC,GAAG,IAAIC,EAAEF,EAAEkC,KAAKwqB,aAAa,IAAIxsB,EAAE,OAAOmsB,GAAG,IAAI7qB,EAAExB,EAAEgQ,UAAU,GAAGxO,GAAGA,EAAEmrB,8CAA8C1sB,EAAE,OAAOuB,EAAEorB,0CAA0C,IAASlrB,EAALD,EAAE,CAAC,EAAI,IAAIC,KAAKxB,EAAEuB,EAAEC,GAAGzB,EAAEyB,GAAoH,OAAjHF,KAAIxB,EAAEA,EAAEgQ,WAAY2c,4CAA4C1sB,EAAED,EAAE4sB,0CAA0CnrB,GAAUA,CAAC,CAC9d,SAASorB,GAAG7sB,GAAyB,OAAO,MAA3BA,EAAE8sB,iBAA6C,CAAC,SAASC,KAAKZ,GAAEI,IAAIJ,GAAEG,GAAE,CAAC,SAASU,GAAGhtB,EAAEC,EAAEC,GAAG,GAAGosB,GAAEna,UAAUka,GAAG,MAAMpnB,MAAMlF,EAAE,MAAMqsB,GAAEE,GAAErsB,GAAGmsB,GAAEG,GAAGrsB,EAAE,CAAC,SAAS+sB,GAAGjtB,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEgQ,UAAgC,GAAtB/P,EAAEA,EAAE6sB,kBAAqB,mBAAoBtrB,EAAE0rB,gBAAgB,OAAOhtB,EAAwB,IAAI,IAAIuB,KAA9BD,EAAEA,EAAE0rB,kBAAiC,KAAKzrB,KAAKxB,GAAG,MAAMgF,MAAMlF,EAAE,IAAI2G,EAAG1G,IAAI,UAAUyB,IAAI,OAAOqD,EAAE,CAAC,EAAE5E,EAAEsB,EAAE,CACxX,SAAS2rB,GAAGntB,GAA2G,OAAxGA,GAAGA,EAAEA,EAAEgQ,YAAYhQ,EAAEotB,2CAA2Cf,GAAGG,GAAGF,GAAEna,QAAQia,GAAEE,GAAEtsB,GAAGosB,GAAEG,GAAGA,GAAGpa,UAAe,CAAE,CAAC,SAASkb,GAAGrtB,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEgQ,UAAU,IAAIxO,EAAE,MAAMyD,MAAMlF,EAAE,MAAMG,GAAGF,EAAEitB,GAAGjtB,EAAEC,EAAEusB,IAAIhrB,EAAE4rB,0CAA0CptB,EAAEmsB,GAAEI,IAAIJ,GAAEG,IAAGF,GAAEE,GAAEtsB,IAAImsB,GAAEI,IAAIH,GAAEG,GAAGrsB,EAAE,CAAC,IAAIotB,GAAG,KAAKC,IAAG,EAAGC,IAAG,EAAG,SAASC,GAAGztB,GAAG,OAAOstB,GAAGA,GAAG,CAACttB,GAAGstB,GAAGnd,KAAKnQ,EAAE,CAChW,SAAS0tB,KAAK,IAAIF,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAIxtB,EAAE,EAAEC,EAAEoV,GAAE,IAAI,IAAInV,EAAEotB,GAAG,IAAIjY,GAAE,EAAErV,EAAEE,EAAEE,OAAOJ,IAAI,CAAC,IAAIwB,EAAEtB,EAAEF,GAAG,GAAGwB,EAAEA,GAAE,SAAU,OAAOA,EAAE,CAAC8rB,GAAG,KAAKC,IAAG,CAAE,CAAC,MAAM9rB,GAAG,MAAM,OAAO6rB,KAAKA,GAAGA,GAAGzqB,MAAM7C,EAAE,IAAIsS,GAAGY,GAAGwa,IAAIjsB,CAAE,CAAC,QAAQ4T,GAAEpV,EAAEutB,IAAG,CAAE,CAAC,CAAC,OAAO,IAAI,CAAC,IAAIG,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAG,SAASC,GAAGpuB,EAAEC,GAAG0tB,GAAGC,MAAME,GAAGH,GAAGC,MAAMC,GAAGA,GAAG7tB,EAAE8tB,GAAG7tB,CAAC,CACjV,SAASouB,GAAGruB,EAAEC,EAAEC,GAAG6tB,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGA,GAAGjuB,EAAE,IAAIwB,EAAE0sB,GAAGluB,EAAEmuB,GAAG,IAAI1sB,EAAE,GAAGqS,GAAGtS,GAAG,EAAEA,KAAK,GAAGC,GAAGvB,GAAG,EAAE,IAAIwB,EAAE,GAAGoS,GAAG7T,GAAGwB,EAAE,GAAG,GAAGC,EAAE,CAAC,IAAIC,EAAEF,EAAEA,EAAE,EAAEC,GAAGF,GAAG,GAAGG,GAAG,GAAGuI,SAAS,IAAI1I,IAAIG,EAAEF,GAAGE,EAAEusB,GAAG,GAAG,GAAGpa,GAAG7T,GAAGwB,EAAEvB,GAAGuB,EAAED,EAAE2sB,GAAGzsB,EAAE1B,CAAC,MAAMkuB,GAAG,GAAGxsB,EAAExB,GAAGuB,EAAED,EAAE2sB,GAAGnuB,CAAC,CAAC,SAASsuB,GAAGtuB,GAAG,OAAOA,EAAE0R,SAAS0c,GAAGpuB,EAAE,GAAGquB,GAAGruB,EAAE,EAAE,GAAG,CAAC,SAASuuB,GAAGvuB,GAAG,KAAKA,IAAI6tB,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,KAAK,KAAK5tB,IAAIiuB,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKG,GAAGJ,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,IAAI,CAAC,IAAIQ,GAAG,KAAKC,GAAG,KAAKC,IAAE,EAAGC,GAAG,KACje,SAASC,GAAG5uB,EAAEC,GAAG,IAAIC,EAAE2uB,GAAG,EAAE,KAAK,KAAK,GAAG3uB,EAAE4uB,YAAY,UAAU5uB,EAAE8P,UAAU/P,EAAEC,EAAEwR,OAAO1R,EAAgB,QAAdC,EAAED,EAAE+uB,YAAoB/uB,EAAE+uB,UAAU,CAAC7uB,GAAGF,EAAE2R,OAAO,IAAI1R,EAAEkQ,KAAKjQ,EAAE,CACxJ,SAAS8uB,GAAGhvB,EAAEC,GAAG,OAAOD,EAAEmG,KAAK,KAAK,EAAE,IAAIjG,EAAEF,EAAEkC,KAAyE,OAAO,QAA3EjC,EAAE,IAAIA,EAAEyK,UAAUxK,EAAEsC,gBAAgBvC,EAAE4G,SAASrE,cAAc,KAAKvC,KAAmBD,EAAEgQ,UAAU/P,EAAEuuB,GAAGxuB,EAAEyuB,GAAGjD,GAAGvrB,EAAEkK,aAAY,GAAO,KAAK,EAAE,OAAoD,QAA7ClK,EAAE,KAAKD,EAAEivB,cAAc,IAAIhvB,EAAEyK,SAAS,KAAKzK,KAAYD,EAAEgQ,UAAU/P,EAAEuuB,GAAGxuB,EAAEyuB,GAAG,MAAK,GAAO,KAAK,GAAG,OAA+B,QAAxBxuB,EAAE,IAAIA,EAAEyK,SAAS,KAAKzK,KAAYC,EAAE,OAAO+tB,GAAG,CAAC7V,GAAG8V,GAAGgB,SAASf,IAAI,KAAKnuB,EAAE6R,cAAc,CAACC,WAAW7R,EAAEkvB,YAAYjvB,EAAEkvB,UAAU,aAAYlvB,EAAE2uB,GAAG,GAAG,KAAK,KAAK,IAAK7e,UAAU/P,EAAEC,EAAEwR,OAAO1R,EAAEA,EAAEiS,MAAM/R,EAAEsuB,GAAGxuB,EAAEyuB,GAClf,MAAK,GAAO,QAAQ,OAAM,EAAG,CAAC,SAASY,GAAGrvB,GAAG,UAAmB,EAAPA,EAAEsvB,OAAsB,IAARtvB,EAAE2R,MAAU,CAAC,SAAS4d,GAAGvvB,GAAG,GAAG0uB,GAAE,CAAC,IAAIzuB,EAAEwuB,GAAG,GAAGxuB,EAAE,CAAC,IAAIC,EAAED,EAAE,IAAI+uB,GAAGhvB,EAAEC,GAAG,CAAC,GAAGovB,GAAGrvB,GAAG,MAAMiF,MAAMlF,EAAE,MAAME,EAAEurB,GAAGtrB,EAAE2jB,aAAa,IAAIriB,EAAEgtB,GAAGvuB,GAAG+uB,GAAGhvB,EAAEC,GAAG2uB,GAAGptB,EAAEtB,IAAIF,EAAE2R,OAAe,KAAT3R,EAAE2R,MAAY,EAAE+c,IAAE,EAAGF,GAAGxuB,EAAE,CAAC,KAAK,CAAC,GAAGqvB,GAAGrvB,GAAG,MAAMiF,MAAMlF,EAAE,MAAMC,EAAE2R,OAAe,KAAT3R,EAAE2R,MAAY,EAAE+c,IAAE,EAAGF,GAAGxuB,CAAC,CAAC,CAAC,CAAC,SAASwvB,GAAGxvB,GAAG,IAAIA,EAAEA,EAAE0R,OAAO,OAAO1R,GAAG,IAAIA,EAAEmG,KAAK,IAAInG,EAAEmG,KAAK,KAAKnG,EAAEmG,KAAKnG,EAAEA,EAAE0R,OAAO8c,GAAGxuB,CAAC,CACha,SAASyvB,GAAGzvB,GAAG,GAAGA,IAAIwuB,GAAG,OAAM,EAAG,IAAIE,GAAE,OAAOc,GAAGxvB,GAAG0uB,IAAE,GAAG,EAAG,IAAIzuB,EAAkG,IAA/FA,EAAE,IAAID,EAAEmG,QAAQlG,EAAE,IAAID,EAAEmG,OAAgBlG,EAAE,UAAXA,EAAED,EAAEkC,OAAmB,SAASjC,IAAIwqB,GAAGzqB,EAAEkC,KAAKlC,EAAE0vB,gBAAmBzvB,IAAIA,EAAEwuB,IAAI,CAAC,GAAGY,GAAGrvB,GAAG,MAAM2vB,KAAK1qB,MAAMlF,EAAE,MAAM,KAAKE,GAAG2uB,GAAG5uB,EAAEC,GAAGA,EAAEurB,GAAGvrB,EAAE4jB,YAAY,CAAO,GAAN2L,GAAGxvB,GAAM,KAAKA,EAAEmG,IAAI,CAAgD,KAA7BnG,EAAE,QAApBA,EAAEA,EAAE6R,eAAyB7R,EAAE8R,WAAW,MAAW,MAAM7M,MAAMlF,EAAE,MAAMC,EAAE,CAAiB,IAAhBA,EAAEA,EAAE6jB,YAAgB5jB,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE0K,SAAS,CAAC,IAAIxK,EAAEF,EAAE6c,KAAK,GAAG,OAAO3c,EAAE,CAAC,GAAG,IAAID,EAAE,CAACwuB,GAAGjD,GAAGxrB,EAAE6jB,aAAa,MAAM7jB,CAAC,CAACC,GAAG,KAAK,MAAMC,GAAG,OAAOA,GAAG,OAAOA,GAAGD,GAAG,CAACD,EAAEA,EAAE6jB,WAAW,CAAC4K,GACjgB,IAAI,CAAC,MAAMA,GAAGD,GAAGhD,GAAGxrB,EAAEgQ,UAAU6T,aAAa,KAAK,OAAM,CAAE,CAAC,SAAS8L,KAAK,IAAI,IAAI3vB,EAAEyuB,GAAGzuB,GAAGA,EAAEwrB,GAAGxrB,EAAE6jB,YAAY,CAAC,SAAS+L,KAAKnB,GAAGD,GAAG,KAAKE,IAAE,CAAE,CAAC,SAASmB,GAAG7vB,GAAG,OAAO2uB,GAAGA,GAAG,CAAC3uB,GAAG2uB,GAAGxe,KAAKnQ,EAAE,CAAC,IAAI8vB,GAAGrsB,EAAGoU,wBAAwB,SAASkY,GAAG/vB,EAAEC,GAAG,GAAGD,GAAGA,EAAEgwB,aAAa,CAA4B,IAAI,IAAI9vB,KAAnCD,EAAE6E,EAAE,CAAC,EAAE7E,GAAGD,EAAEA,EAAEgwB,kBAA4B,IAAS/vB,EAAEC,KAAKD,EAAEC,GAAGF,EAAEE,IAAI,OAAOD,CAAC,CAAC,OAAOA,CAAC,CAAC,IAAIgwB,GAAG/D,GAAG,MAAMgE,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAI,CAAC,SAASI,GAAGtwB,GAAG,IAAIC,EAAEgwB,GAAG9d,QAAQga,GAAE8D,IAAIjwB,EAAEuwB,cAActwB,CAAC,CACjd,SAASuwB,GAAGxwB,EAAEC,EAAEC,GAAG,KAAK,OAAOF,GAAG,CAAC,IAAIwB,EAAExB,EAAEyR,UAA+H,IAApHzR,EAAEywB,WAAWxwB,KAAKA,GAAGD,EAAEywB,YAAYxwB,EAAE,OAAOuB,IAAIA,EAAEivB,YAAYxwB,IAAI,OAAOuB,IAAIA,EAAEivB,WAAWxwB,KAAKA,IAAIuB,EAAEivB,YAAYxwB,GAAMD,IAAIE,EAAE,MAAMF,EAAEA,EAAE0R,MAAM,CAAC,CAAC,SAASgf,GAAG1wB,EAAEC,GAAGiwB,GAAGlwB,EAAEowB,GAAGD,GAAG,KAAsB,QAAjBnwB,EAAEA,EAAE2wB,eAAuB,OAAO3wB,EAAE4wB,kBAAoB5wB,EAAE6wB,MAAM5wB,KAAK6wB,IAAG,GAAI9wB,EAAE4wB,aAAa,KAAK,CACtU,SAASG,GAAG/wB,GAAG,IAAIC,EAAED,EAAEuwB,cAAc,GAAGH,KAAKpwB,EAAE,GAAGA,EAAE,CAACgxB,QAAQhxB,EAAEixB,cAAchxB,EAAEixB,KAAK,MAAM,OAAOf,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMjrB,MAAMlF,EAAE,MAAMowB,GAAGnwB,EAAEkwB,GAAGS,aAAa,CAACE,MAAM,EAAED,aAAa5wB,EAAE,MAAMmwB,GAAGA,GAAGe,KAAKlxB,EAAE,OAAOC,CAAC,CAAC,IAAIkxB,GAAG,KAAK,SAASC,GAAGpxB,GAAG,OAAOmxB,GAAGA,GAAG,CAACnxB,GAAGmxB,GAAGhhB,KAAKnQ,EAAE,CAAC,SAASqxB,GAAGrxB,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAExB,EAAEqxB,YAA+E,OAAnE,OAAO7vB,GAAGvB,EAAEgxB,KAAKhxB,EAAEkxB,GAAGnxB,KAAKC,EAAEgxB,KAAKzvB,EAAEyvB,KAAKzvB,EAAEyvB,KAAKhxB,GAAGD,EAAEqxB,YAAYpxB,EAASqxB,GAAGvxB,EAAEwB,EAAE,CAChY,SAAS+vB,GAAGvxB,EAAEC,GAAGD,EAAE6wB,OAAO5wB,EAAE,IAAIC,EAAEF,EAAEyR,UAAqC,IAA3B,OAAOvR,IAAIA,EAAE2wB,OAAO5wB,GAAGC,EAAEF,EAAMA,EAAEA,EAAE0R,OAAO,OAAO1R,GAAGA,EAAEywB,YAAYxwB,EAAgB,QAAdC,EAAEF,EAAEyR,aAAqBvR,EAAEuwB,YAAYxwB,GAAGC,EAAEF,EAAEA,EAAEA,EAAE0R,OAAO,OAAO,IAAIxR,EAAEiG,IAAIjG,EAAE8P,UAAU,IAAI,CAAC,IAAIwhB,IAAG,EAAG,SAASC,GAAGzxB,GAAGA,EAAE0xB,YAAY,CAACC,UAAU3xB,EAAE6R,cAAc+f,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAACC,QAAQ,KAAKT,YAAY,KAAKT,MAAM,GAAGmB,QAAQ,KAAK,CACpX,SAASC,GAAGjyB,EAAEC,GAAGD,EAAEA,EAAE0xB,YAAYzxB,EAAEyxB,cAAc1xB,IAAIC,EAAEyxB,YAAY,CAACC,UAAU3xB,EAAE2xB,UAAUC,gBAAgB5xB,EAAE4xB,gBAAgBC,eAAe7xB,EAAE6xB,eAAeC,OAAO9xB,EAAE8xB,OAAOE,QAAQhyB,EAAEgyB,SAAS,CAAC,SAASE,GAAGlyB,EAAEC,GAAG,MAAM,CAACkyB,UAAUnyB,EAAEoyB,KAAKnyB,EAAEkG,IAAI,EAAEksB,QAAQ,KAAKC,SAAS,KAAKpB,KAAK,KAAK,CACtR,SAASqB,GAAGvyB,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAE0xB,YAAY,GAAG,OAAOlwB,EAAE,OAAO,KAAgB,GAAXA,EAAEA,EAAEswB,OAAiB,EAAFU,GAAK,CAAC,IAAI/wB,EAAED,EAAEuwB,QAA+D,OAAvD,OAAOtwB,EAAExB,EAAEixB,KAAKjxB,GAAGA,EAAEixB,KAAKzvB,EAAEyvB,KAAKzvB,EAAEyvB,KAAKjxB,GAAGuB,EAAEuwB,QAAQ9xB,EAASsxB,GAAGvxB,EAAEE,EAAE,CAAoF,OAAnE,QAAhBuB,EAAED,EAAE8vB,cAAsBrxB,EAAEixB,KAAKjxB,EAAEmxB,GAAG5vB,KAAKvB,EAAEixB,KAAKzvB,EAAEyvB,KAAKzvB,EAAEyvB,KAAKjxB,GAAGuB,EAAE8vB,YAAYrxB,EAASsxB,GAAGvxB,EAAEE,EAAE,CAAC,SAASuyB,GAAGzyB,EAAEC,EAAEC,GAAmB,GAAG,QAAnBD,EAAEA,EAAEyxB,eAA0BzxB,EAAEA,EAAE6xB,OAAc,QAAF5xB,GAAY,CAAC,IAAIsB,EAAEvB,EAAE4wB,MAAwB3wB,GAAlBsB,GAAGxB,EAAEyU,aAAkBxU,EAAE4wB,MAAM3wB,EAAEkV,GAAGpV,EAAEE,EAAE,CAAC,CACrZ,SAASwyB,GAAG1yB,EAAEC,GAAG,IAAIC,EAAEF,EAAE0xB,YAAYlwB,EAAExB,EAAEyR,UAAU,GAAG,OAAOjQ,GAAoBtB,KAAhBsB,EAAEA,EAAEkwB,aAAmB,CAAC,IAAIjwB,EAAE,KAAKC,EAAE,KAAyB,GAAG,QAAvBxB,EAAEA,EAAE0xB,iBAA4B,CAAC,EAAE,CAAC,IAAIjwB,EAAE,CAACwwB,UAAUjyB,EAAEiyB,UAAUC,KAAKlyB,EAAEkyB,KAAKjsB,IAAIjG,EAAEiG,IAAIksB,QAAQnyB,EAAEmyB,QAAQC,SAASpyB,EAAEoyB,SAASpB,KAAK,MAAM,OAAOxvB,EAAED,EAAEC,EAAEC,EAAED,EAAEA,EAAEwvB,KAAKvvB,EAAEzB,EAAEA,EAAEgxB,IAAI,OAAO,OAAOhxB,GAAG,OAAOwB,EAAED,EAAEC,EAAEzB,EAAEyB,EAAEA,EAAEwvB,KAAKjxB,CAAC,MAAMwB,EAAEC,EAAEzB,EAAiH,OAA/GC,EAAE,CAACyxB,UAAUnwB,EAAEmwB,UAAUC,gBAAgBnwB,EAAEowB,eAAenwB,EAAEowB,OAAOtwB,EAAEswB,OAAOE,QAAQxwB,EAAEwwB,cAAShyB,EAAE0xB,YAAYxxB,EAAQ,CAAoB,QAAnBF,EAAEE,EAAE2xB,gBAAwB3xB,EAAE0xB,gBAAgB3xB,EAAED,EAAEkxB,KACnfjxB,EAAEC,EAAE2xB,eAAe5xB,CAAC,CACpB,SAAS0yB,GAAG3yB,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAEzB,EAAE0xB,YAAYF,IAAG,EAAG,IAAI9vB,EAAED,EAAEmwB,gBAAgBjwB,EAAEF,EAAEowB,eAAehsB,EAAEpE,EAAEqwB,OAAOC,QAAQ,GAAG,OAAOlsB,EAAE,CAACpE,EAAEqwB,OAAOC,QAAQ,KAAK,IAAIjsB,EAAED,EAAED,EAAEE,EAAEorB,KAAKprB,EAAEorB,KAAK,KAAK,OAAOvvB,EAAED,EAAEkE,EAAEjE,EAAEuvB,KAAKtrB,EAAEjE,EAAEmE,EAAE,IAAIkL,EAAEhR,EAAEyR,UAAU,OAAOT,IAAoBnL,GAAhBmL,EAAEA,EAAE0gB,aAAgBG,kBAAmBlwB,IAAI,OAAOkE,EAAEmL,EAAE4gB,gBAAgBhsB,EAAEC,EAAEqrB,KAAKtrB,EAAEoL,EAAE6gB,eAAe/rB,EAAG,CAAC,GAAG,OAAOpE,EAAE,CAAC,IAAIkxB,EAAEnxB,EAAEkwB,UAA6B,IAAnBhwB,EAAE,EAAEqP,EAAEpL,EAAEE,EAAE,KAAKD,EAAEnE,IAAI,CAAC,IAAImxB,EAAEhtB,EAAEusB,KAAKU,EAAEjtB,EAAEssB,UAAU,IAAI3wB,EAAEqxB,KAAKA,EAAE,CAAC,OAAO7hB,IAAIA,EAAEA,EAAEkgB,KAAK,CAACiB,UAAUW,EAAEV,KAAK,EAAEjsB,IAAIN,EAAEM,IAAIksB,QAAQxsB,EAAEwsB,QAAQC,SAASzsB,EAAEysB,SACvfpB,KAAK,OAAOlxB,EAAE,CAAC,IAAI8oB,EAAE9oB,EAAE+oB,EAAEljB,EAAU,OAARgtB,EAAE5yB,EAAE6yB,EAAE5yB,EAAS6oB,EAAE5iB,KAAK,KAAK,EAAc,GAAG,mBAAf2iB,EAAEC,EAAEsJ,SAAiC,CAACO,EAAE9J,EAAE7lB,KAAK6vB,EAAEF,EAAEC,GAAG,MAAM7yB,CAAC,CAAC4yB,EAAE9J,EAAE,MAAM9oB,EAAE,KAAK,EAAE8oB,EAAEnX,OAAe,MAATmX,EAAEnX,MAAa,IAAI,KAAK,EAAsD,GAAG,OAA3CkhB,EAAE,mBAAd/J,EAAEC,EAAEsJ,SAAgCvJ,EAAE7lB,KAAK6vB,EAAEF,EAAEC,GAAG/J,GAA0B,MAAM9oB,EAAE4yB,EAAE9tB,EAAE,CAAC,EAAE8tB,EAAEC,GAAG,MAAM7yB,EAAE,KAAK,EAAEwxB,IAAG,EAAG,CAAC,OAAO3rB,EAAEysB,UAAU,IAAIzsB,EAAEusB,OAAOpyB,EAAE2R,OAAO,GAAe,QAAZkhB,EAAEpxB,EAAEuwB,SAAiBvwB,EAAEuwB,QAAQ,CAACnsB,GAAGgtB,EAAE1iB,KAAKtK,GAAG,MAAMitB,EAAE,CAACX,UAAUW,EAAEV,KAAKS,EAAE1sB,IAAIN,EAAEM,IAAIksB,QAAQxsB,EAAEwsB,QAAQC,SAASzsB,EAAEysB,SAASpB,KAAK,MAAM,OAAOlgB,GAAGpL,EAAEoL,EAAE8hB,EAAEhtB,EAAE8sB,GAAG5hB,EAAEA,EAAEkgB,KAAK4B,EAAEnxB,GAAGkxB,EAC3e,GAAG,QAAZhtB,EAAEA,EAAEqrB,MAAiB,IAAsB,QAAnBrrB,EAAEpE,EAAEqwB,OAAOC,SAAiB,MAAelsB,GAAJgtB,EAAEhtB,GAAMqrB,KAAK2B,EAAE3B,KAAK,KAAKzvB,EAAEowB,eAAegB,EAAEpxB,EAAEqwB,OAAOC,QAAQ,KAAI,CAAsG,GAA5F,OAAO/gB,IAAIlL,EAAE8sB,GAAGnxB,EAAEkwB,UAAU7rB,EAAErE,EAAEmwB,gBAAgBhsB,EAAEnE,EAAEowB,eAAe7gB,EAA4B,QAA1B/Q,EAAEwB,EAAEqwB,OAAOR,aAAwB,CAAC7vB,EAAExB,EAAE,GAAG0B,GAAGF,EAAE2wB,KAAK3wB,EAAEA,EAAEyvB,WAAWzvB,IAAIxB,EAAE,MAAM,OAAOyB,IAAID,EAAEqwB,OAAOjB,MAAM,GAAGkC,IAAIpxB,EAAE3B,EAAE6wB,MAAMlvB,EAAE3B,EAAE6R,cAAc+gB,CAAC,CAAC,CAC9V,SAASI,GAAGhzB,EAAEC,EAAEC,GAA8B,GAA3BF,EAAEC,EAAE+xB,QAAQ/xB,EAAE+xB,QAAQ,KAAQ,OAAOhyB,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAEI,OAAOH,IAAI,CAAC,IAAIuB,EAAExB,EAAEC,GAAGwB,EAAED,EAAE8wB,SAAS,GAAG,OAAO7wB,EAAE,CAAqB,GAApBD,EAAE8wB,SAAS,KAAK9wB,EAAEtB,EAAK,mBAAoBuB,EAAE,MAAMwD,MAAMlF,EAAE,IAAI0B,IAAIA,EAAEwB,KAAKzB,EAAE,CAAC,CAAC,CAAC,IAAIyxB,IAAG,IAAKpzB,EAAGqzB,WAAWC,KAAK,SAASC,GAAGpzB,EAAEC,EAAEC,EAAEsB,GAA8BtB,EAAE,OAAXA,EAAEA,EAAEsB,EAAtBvB,EAAED,EAAE6R,gBAA8C5R,EAAE6E,EAAE,CAAC,EAAE7E,EAAEC,GAAGF,EAAE6R,cAAc3R,EAAE,IAAIF,EAAE6wB,QAAQ7wB,EAAE0xB,YAAYC,UAAUzxB,EAAE,CAClX,IAAImzB,GAAG,CAACC,UAAU,SAAStzB,GAAG,SAAOA,EAAEA,EAAEuzB,kBAAiB/hB,GAAGxR,KAAKA,CAAI,EAAEwzB,gBAAgB,SAASxzB,EAAEC,EAAEC,GAAGF,EAAEA,EAAEuzB,gBAAgB,IAAI/xB,EAAEiyB,KAAIhyB,EAAEiyB,GAAG1zB,GAAG0B,EAAEwwB,GAAG1wB,EAAEC,GAAGC,EAAE2wB,QAAQpyB,EAAE,MAASC,IAAcwB,EAAE4wB,SAASpyB,GAAe,QAAZD,EAAEsyB,GAAGvyB,EAAE0B,EAAED,MAAckyB,GAAG1zB,EAAED,EAAEyB,EAAED,GAAGixB,GAAGxyB,EAAED,EAAEyB,GAAG,EAAEmyB,oBAAoB,SAAS5zB,EAAEC,EAAEC,GAAGF,EAAEA,EAAEuzB,gBAAgB,IAAI/xB,EAAEiyB,KAAIhyB,EAAEiyB,GAAG1zB,GAAG0B,EAAEwwB,GAAG1wB,EAAEC,GAAGC,EAAEyE,IAAI,EAAEzE,EAAE2wB,QAAQpyB,EAAE,MAASC,IAAcwB,EAAE4wB,SAASpyB,GAAe,QAAZD,EAAEsyB,GAAGvyB,EAAE0B,EAAED,MAAckyB,GAAG1zB,EAAED,EAAEyB,EAAED,GAAGixB,GAAGxyB,EAAED,EAAEyB,GAAG,EAAEoyB,mBAAmB,SAAS7zB,EAAEC,GAAGD,EAAEA,EAAEuzB,gBAAgB,IAAIrzB,EAAEuzB,KAAIjyB,EACnfkyB,GAAG1zB,GAAGyB,EAAEywB,GAAGhyB,EAAEsB,GAAGC,EAAE0E,IAAI,EAAE,MAASlG,IAAcwB,EAAE6wB,SAASryB,GAAe,QAAZA,EAAEsyB,GAAGvyB,EAAEyB,EAAED,MAAcmyB,GAAG1zB,EAAED,EAAEwB,EAAEtB,GAAGuyB,GAAGxyB,EAAED,EAAEwB,GAAG,GAAG,SAASsyB,GAAG9zB,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,GAAiB,MAAM,mBAApB3B,EAAEA,EAAEgQ,WAAsC+jB,sBAAsB/zB,EAAE+zB,sBAAsBvyB,EAAEE,EAAEC,KAAG1B,EAAEiB,WAAWjB,EAAEiB,UAAU8yB,sBAAsBxQ,GAAGtjB,EAAEsB,IAAKgiB,GAAG/hB,EAAEC,GAAK,CAC1S,SAASuyB,GAAGj0B,EAAEC,EAAEC,GAAG,IAAIsB,GAAE,EAAGC,EAAE4qB,GAAO3qB,EAAEzB,EAAEi0B,YAA2W,MAA/V,iBAAkBxyB,GAAG,OAAOA,EAAEA,EAAEqvB,GAAGrvB,IAAID,EAAEorB,GAAG5sB,GAAGusB,GAAGF,GAAEna,QAAyBzQ,GAAGF,EAAE,OAAtBA,EAAEvB,EAAEysB,eAAwCD,GAAGzsB,EAAEyB,GAAG4qB,IAAIpsB,EAAE,IAAIA,EAAEC,EAAEwB,GAAG1B,EAAE6R,cAAc,OAAO5R,EAAEk0B,YAAO,IAASl0B,EAAEk0B,MAAMl0B,EAAEk0B,MAAM,KAAKl0B,EAAEm0B,QAAQf,GAAGrzB,EAAEgQ,UAAU/P,EAAEA,EAAEszB,gBAAgBvzB,EAAEwB,KAAIxB,EAAEA,EAAEgQ,WAAY2c,4CAA4ClrB,EAAEzB,EAAE4sB,0CAA0ClrB,GAAUzB,CAAC,CAC5Z,SAASo0B,GAAGr0B,EAAEC,EAAEC,EAAEsB,GAAGxB,EAAEC,EAAEk0B,MAAM,mBAAoBl0B,EAAEq0B,2BAA2Br0B,EAAEq0B,0BAA0Bp0B,EAAEsB,GAAG,mBAAoBvB,EAAEs0B,kCAAkCt0B,EAAEs0B,iCAAiCr0B,EAAEsB,GAAGvB,EAAEk0B,QAAQn0B,GAAGqzB,GAAGO,oBAAoB3zB,EAAEA,EAAEk0B,MAAM,KAAK,CACpQ,SAASK,GAAGx0B,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAEzB,EAAEgQ,UAAUvO,EAAEgzB,MAAMv0B,EAAEuB,EAAE0yB,MAAMn0B,EAAE6R,cAAcpQ,EAAE0xB,KAAKF,GAAGxB,GAAGzxB,GAAG,IAAI0B,EAAEzB,EAAEi0B,YAAY,iBAAkBxyB,GAAG,OAAOA,EAAED,EAAEuvB,QAAQD,GAAGrvB,IAAIA,EAAEmrB,GAAG5sB,GAAGusB,GAAGF,GAAEna,QAAQ1Q,EAAEuvB,QAAQvE,GAAGzsB,EAAE0B,IAAID,EAAE0yB,MAAMn0B,EAAE6R,cAA2C,mBAA7BnQ,EAAEzB,EAAEy0B,4BAAiDtB,GAAGpzB,EAAEC,EAAEyB,EAAExB,GAAGuB,EAAE0yB,MAAMn0B,EAAE6R,eAAe,mBAAoB5R,EAAEy0B,0BAA0B,mBAAoBjzB,EAAEkzB,yBAAyB,mBAAoBlzB,EAAEmzB,2BAA2B,mBAAoBnzB,EAAEozB,qBAAqB50B,EAAEwB,EAAE0yB,MACrf,mBAAoB1yB,EAAEozB,oBAAoBpzB,EAAEozB,qBAAqB,mBAAoBpzB,EAAEmzB,2BAA2BnzB,EAAEmzB,4BAA4B30B,IAAIwB,EAAE0yB,OAAOd,GAAGO,oBAAoBnyB,EAAEA,EAAE0yB,MAAM,MAAMxB,GAAG3yB,EAAEE,EAAEuB,EAAED,GAAGC,EAAE0yB,MAAMn0B,EAAE6R,eAAe,mBAAoBpQ,EAAEqzB,oBAAoB90B,EAAE2R,OAAO,QAAQ,CACpS,SAASojB,GAAG/0B,EAAEC,EAAEC,GAAW,GAAG,QAAXF,EAAEE,EAAE80B,MAAiB,mBAAoBh1B,GAAG,iBAAkBA,EAAE,CAAC,GAAGE,EAAE+0B,OAAO,CAAY,GAAX/0B,EAAEA,EAAE+0B,OAAY,CAAC,GAAG,IAAI/0B,EAAEiG,IAAI,MAAMlB,MAAMlF,EAAE,MAAM,IAAIyB,EAAEtB,EAAE8P,SAAS,CAAC,IAAIxO,EAAE,MAAMyD,MAAMlF,EAAE,IAAIC,IAAI,IAAIyB,EAAED,EAAEE,EAAE,GAAG1B,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAE+0B,KAAK,mBAAoB/0B,EAAE+0B,KAAK/0B,EAAE+0B,IAAIE,aAAaxzB,EAASzB,EAAE+0B,KAAI/0B,EAAE,SAASD,GAAG,IAAIC,EAAEwB,EAAE0xB,KAAKlzB,IAAIgzB,KAAKhzB,EAAEwB,EAAE0xB,KAAK,CAAC,GAAG,OAAOnzB,SAASC,EAAEyB,GAAGzB,EAAEyB,GAAG1B,CAAC,EAAEC,EAAEi1B,WAAWxzB,EAASzB,EAAC,CAAC,GAAG,iBAAkBD,EAAE,MAAMiF,MAAMlF,EAAE,MAAM,IAAIG,EAAE+0B,OAAO,MAAMhwB,MAAMlF,EAAE,IAAIC,GAAI,CAAC,OAAOA,CAAC,CACre,SAASm1B,GAAGn1B,EAAEC,GAAuC,MAApCD,EAAEiB,OAAOC,UAAUgJ,SAASjH,KAAKhD,GAASgF,MAAMlF,EAAE,GAAG,oBAAoBC,EAAE,qBAAqBiB,OAAO6M,KAAK7N,GAAGm1B,KAAK,MAAM,IAAIp1B,GAAI,CAAC,SAASq1B,GAAGr1B,GAAiB,OAAOC,EAAfD,EAAEyG,OAAezG,EAAEwG,SAAS,CACrM,SAAS8uB,GAAGt1B,GAAG,SAASC,EAAEA,EAAEC,GAAG,GAAGF,EAAE,CAAC,IAAIwB,EAAEvB,EAAE8uB,UAAU,OAAOvtB,GAAGvB,EAAE8uB,UAAU,CAAC7uB,GAAGD,EAAE0R,OAAO,IAAInQ,EAAE2O,KAAKjQ,EAAE,CAAC,CAAC,SAASA,EAAEA,EAAEsB,GAAG,IAAIxB,EAAE,OAAO,KAAK,KAAK,OAAOwB,GAAGvB,EAAEC,EAAEsB,GAAGA,EAAEA,EAAE0Q,QAAQ,OAAO,IAAI,CAAC,SAAS1Q,EAAExB,EAAEC,GAAG,IAAID,EAAE,IAAIkW,IAAI,OAAOjW,GAAG,OAAOA,EAAEke,IAAIne,EAAEyF,IAAIxF,EAAEke,IAAIle,GAAGD,EAAEyF,IAAIxF,EAAEs1B,MAAMt1B,GAAGA,EAAEA,EAAEiS,QAAQ,OAAOlS,CAAC,CAAC,SAASyB,EAAEzB,EAAEC,GAAsC,OAAnCD,EAAEw1B,GAAGx1B,EAAEC,IAAKs1B,MAAM,EAAEv1B,EAAEkS,QAAQ,KAAYlS,CAAC,CAAC,SAAS0B,EAAEzB,EAAEC,EAAEsB,GAAa,OAAVvB,EAAEs1B,MAAM/zB,EAAMxB,EAA6C,QAAjBwB,EAAEvB,EAAEwR,YAA6BjQ,EAAEA,EAAE+zB,OAAQr1B,GAAGD,EAAE0R,OAAO,EAAEzR,GAAGsB,GAAEvB,EAAE0R,OAAO,EAASzR,IAArGD,EAAE0R,OAAO,QAAQzR,EAAqF,CAAC,SAASyB,EAAE1B,GACzd,OAD4dD,GAC7f,OAAOC,EAAEwR,YAAYxR,EAAE0R,OAAO,GAAU1R,CAAC,CAAC,SAAS4F,EAAE7F,EAAEC,EAAEC,EAAEsB,GAAG,OAAG,OAAOvB,GAAG,IAAIA,EAAEkG,MAAWlG,EAAEw1B,GAAGv1B,EAAEF,EAAEsvB,KAAK9tB,IAAKkQ,OAAO1R,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,IAAKwR,OAAO1R,EAASC,EAAC,CAAC,SAAS6F,EAAE9F,EAAEC,EAAEC,EAAEsB,GAAG,IAAIE,EAAExB,EAAEgC,KAAK,OAAGR,IAAIqC,EAAUiN,EAAEhR,EAAEC,EAAEC,EAAEu0B,MAAMnrB,SAAS9H,EAAEtB,EAAEie,KAAQ,OAAOle,IAAIA,EAAE6uB,cAAcptB,GAAG,iBAAkBA,GAAG,OAAOA,GAAGA,EAAE4E,WAAW9B,GAAI6wB,GAAG3zB,KAAKzB,EAAEiC,QAAaV,EAAEC,EAAExB,EAAEC,EAAEu0B,QAASO,IAAID,GAAG/0B,EAAEC,EAAEC,GAAGsB,EAAEkQ,OAAO1R,EAAEwB,KAAEA,EAAEk0B,GAAGx1B,EAAEgC,KAAKhC,EAAEie,IAAIje,EAAEu0B,MAAM,KAAKz0B,EAAEsvB,KAAK9tB,IAAKwzB,IAAID,GAAG/0B,EAAEC,EAAEC,GAAGsB,EAAEkQ,OAAO1R,EAASwB,EAAC,CAAC,SAASoE,EAAE5F,EAAEC,EAAEC,EAAEsB,GAAG,OAAG,OAAOvB,GAAG,IAAIA,EAAEkG,KACjflG,EAAE+P,UAAUmH,gBAAgBjX,EAAEiX,eAAelX,EAAE+P,UAAU2lB,iBAAiBz1B,EAAEy1B,iBAAsB11B,EAAE21B,GAAG11B,EAAEF,EAAEsvB,KAAK9tB,IAAKkQ,OAAO1R,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,EAAEoJ,UAAU,KAAMoI,OAAO1R,EAASC,EAAC,CAAC,SAAS+Q,EAAEhR,EAAEC,EAAEC,EAAEsB,EAAEE,GAAG,OAAG,OAAOzB,GAAG,IAAIA,EAAEkG,MAAWlG,EAAE41B,GAAG31B,EAAEF,EAAEsvB,KAAK9tB,EAAEE,IAAKgQ,OAAO1R,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,IAAKwR,OAAO1R,EAASC,EAAC,CAAC,SAAS2yB,EAAE5yB,EAAEC,EAAEC,GAAG,GAAG,iBAAkBD,GAAG,KAAKA,GAAG,iBAAkBA,EAAE,OAAOA,EAAEw1B,GAAG,GAAGx1B,EAAED,EAAEsvB,KAAKpvB,IAAKwR,OAAO1R,EAAEC,EAAE,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEqG,UAAU,KAAK3C,EAAG,OAAOzD,EAAEw1B,GAAGz1B,EAAEiC,KAAKjC,EAAEke,IAAIle,EAAEw0B,MAAM,KAAKz0B,EAAEsvB,KAAKpvB,IACjf80B,IAAID,GAAG/0B,EAAE,KAAKC,GAAGC,EAAEwR,OAAO1R,EAAEE,EAAE,KAAK4D,EAAG,OAAO7D,EAAE21B,GAAG31B,EAAED,EAAEsvB,KAAKpvB,IAAKwR,OAAO1R,EAAEC,EAAE,KAAKuE,EAAiB,OAAOouB,EAAE5yB,GAAEwB,EAAnBvB,EAAEwG,OAAmBxG,EAAEuG,UAAUtG,GAAG,GAAG0I,GAAG3I,IAAI2E,EAAG3E,GAAG,OAAOA,EAAE41B,GAAG51B,EAAED,EAAEsvB,KAAKpvB,EAAE,OAAQwR,OAAO1R,EAAEC,EAAEk1B,GAAGn1B,EAAEC,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS4yB,EAAE7yB,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAE,OAAOxB,EAAEA,EAAEke,IAAI,KAAK,GAAG,iBAAkBje,GAAG,KAAKA,GAAG,iBAAkBA,EAAE,OAAO,OAAOuB,EAAE,KAAKoE,EAAE7F,EAAEC,EAAE,GAAGC,EAAEsB,GAAG,GAAG,iBAAkBtB,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEoG,UAAU,KAAK3C,EAAG,OAAOzD,EAAEie,MAAM1c,EAAEqE,EAAE9F,EAAEC,EAAEC,EAAEsB,GAAG,KAAK,KAAKsC,EAAG,OAAO5D,EAAEie,MAAM1c,EAAEmE,EAAE5F,EAAEC,EAAEC,EAAEsB,GAAG,KAAK,KAAKgD,EAAG,OAAiBquB,EAAE7yB,EACpfC,GADwewB,EAAEvB,EAAEuG,OACxevG,EAAEsG,UAAUhF,GAAG,GAAGoH,GAAG1I,IAAI0E,EAAG1E,GAAG,OAAO,OAAOuB,EAAE,KAAKuP,EAAEhR,EAAEC,EAAEC,EAAEsB,EAAE,MAAM2zB,GAAGn1B,EAAEE,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS4yB,EAAE9yB,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,GAAG,iBAAkBD,GAAG,KAAKA,GAAG,iBAAkBA,EAAE,OAAwBqE,EAAE5F,EAAnBD,EAAEA,EAAEkH,IAAIhH,IAAI,KAAW,GAAGsB,EAAEC,GAAG,GAAG,iBAAkBD,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE8E,UAAU,KAAK3C,EAAG,OAA2CmC,EAAE7F,EAAtCD,EAAEA,EAAEkH,IAAI,OAAO1F,EAAE2c,IAAIje,EAAEsB,EAAE2c,MAAM,KAAW3c,EAAEC,GAAG,KAAKqC,EAAG,OAA2C8B,EAAE3F,EAAtCD,EAAEA,EAAEkH,IAAI,OAAO1F,EAAE2c,IAAIje,EAAEsB,EAAE2c,MAAM,KAAW3c,EAAEC,GAAG,KAAK+C,EAAiB,OAAOsuB,EAAE9yB,EAAEC,EAAEC,GAAEwB,EAAvBF,EAAEiF,OAAuBjF,EAAEgF,UAAU/E,GAAG,GAAGmH,GAAGpH,IAAIoD,EAAGpD,GAAG,OAAwBwP,EAAE/Q,EAAnBD,EAAEA,EAAEkH,IAAIhH,IAAI,KAAWsB,EAAEC,EAAE,MAAM0zB,GAAGl1B,EAAEuB,EAAE,CAAC,OAAO,IAAI,CAC9f,SAASsnB,EAAErnB,EAAEE,EAAEkE,EAAEC,GAAG,IAAI,IAAIF,EAAE,KAAKoL,EAAE,KAAKkY,EAAEvnB,EAAEwnB,EAAExnB,EAAE,EAAEsnB,EAAE,KAAK,OAAOC,GAAGC,EAAEtjB,EAAEzF,OAAO+oB,IAAI,CAACD,EAAEqM,MAAMpM,GAAGF,EAAEC,EAAEA,EAAE,MAAMD,EAAEC,EAAEhX,QAAQ,IAAI4W,EAAE+J,EAAEpxB,EAAEynB,EAAErjB,EAAEsjB,GAAGrjB,GAAG,GAAG,OAAOgjB,EAAE,CAAC,OAAOI,IAAIA,EAAED,GAAG,KAAK,CAACjpB,GAAGkpB,GAAG,OAAOJ,EAAErX,WAAWxR,EAAEwB,EAAEynB,GAAGvnB,EAAED,EAAEonB,EAAEnnB,EAAEwnB,GAAG,OAAOnY,EAAEpL,EAAEkjB,EAAE9X,EAAEkB,QAAQ4W,EAAE9X,EAAE8X,EAAEI,EAAED,CAAC,CAAC,GAAGE,IAAItjB,EAAEzF,OAAO,OAAOF,EAAEuB,EAAEynB,GAAGwF,IAAGN,GAAG3sB,EAAE0nB,GAAGvjB,EAAE,GAAG,OAAOsjB,EAAE,CAAC,KAAKC,EAAEtjB,EAAEzF,OAAO+oB,IAAkB,QAAdD,EAAE0J,EAAEnxB,EAAEoE,EAAEsjB,GAAGrjB,MAAcnE,EAAED,EAAEwnB,EAAEvnB,EAAEwnB,GAAG,OAAOnY,EAAEpL,EAAEsjB,EAAElY,EAAEkB,QAAQgX,EAAElY,EAAEkY,GAAc,OAAXwF,IAAGN,GAAG3sB,EAAE0nB,GAAUvjB,CAAC,CAAC,IAAIsjB,EAAE1nB,EAAEC,EAAEynB,GAAGC,EAAEtjB,EAAEzF,OAAO+oB,IAAsB,QAAlBF,EAAE6J,EAAE5J,EAAEznB,EAAE0nB,EAAEtjB,EAAEsjB,GAAGrjB,MAAc9F,GAAG,OAAOipB,EAAExX,WAAWyX,EAAE3S,OAAO,OACvf0S,EAAE9K,IAAIgL,EAAEF,EAAE9K,KAAKxc,EAAED,EAAEunB,EAAEtnB,EAAEwnB,GAAG,OAAOnY,EAAEpL,EAAEqjB,EAAEjY,EAAEkB,QAAQ+W,EAAEjY,EAAEiY,GAAuD,OAApDjpB,GAAGkpB,EAAE3mB,SAAQ,SAASvC,GAAG,OAAOC,EAAEwB,EAAEzB,EAAE,IAAG0uB,IAAGN,GAAG3sB,EAAE0nB,GAAUvjB,CAAC,CAAC,SAASmjB,EAAEtnB,EAAEE,EAAEkE,EAAEC,GAAG,IAAIF,EAAEhB,EAAGiB,GAAG,GAAG,mBAAoBD,EAAE,MAAMX,MAAMlF,EAAE,MAAkB,GAAG,OAAf8F,EAAED,EAAE3C,KAAK4C,IAAc,MAAMZ,MAAMlF,EAAE,MAAM,IAAI,IAAImpB,EAAEtjB,EAAE,KAAKoL,EAAErP,EAAEwnB,EAAExnB,EAAE,EAAEsnB,EAAE,KAAKH,EAAEjjB,EAAEqrB,OAAO,OAAOlgB,IAAI8X,EAAEgN,KAAK3M,IAAIL,EAAEjjB,EAAEqrB,OAAO,CAAClgB,EAAEukB,MAAMpM,GAAGF,EAAEjY,EAAEA,EAAE,MAAMiY,EAAEjY,EAAEkB,QAAQ,IAAI6W,EAAE8J,EAAEpxB,EAAEuP,EAAE8X,EAAEnhB,MAAM7B,GAAG,GAAG,OAAOijB,EAAE,CAAC,OAAO/X,IAAIA,EAAEiY,GAAG,KAAK,CAACjpB,GAAGgR,GAAG,OAAO+X,EAAEtX,WAAWxR,EAAEwB,EAAEuP,GAAGrP,EAAED,EAAEqnB,EAAEpnB,EAAEwnB,GAAG,OAAOD,EAAEtjB,EAAEmjB,EAAEG,EAAEhX,QAAQ6W,EAAEG,EAAEH,EAAE/X,EAAEiY,CAAC,CAAC,GAAGH,EAAEgN,KAAK,OAAO51B,EAAEuB,EACzfuP,GAAG0d,IAAGN,GAAG3sB,EAAE0nB,GAAGvjB,EAAE,GAAG,OAAOoL,EAAE,CAAC,MAAM8X,EAAEgN,KAAK3M,IAAIL,EAAEjjB,EAAEqrB,OAAwB,QAAjBpI,EAAE8J,EAAEnxB,EAAEqnB,EAAEnhB,MAAM7B,MAAcnE,EAAED,EAAEonB,EAAEnnB,EAAEwnB,GAAG,OAAOD,EAAEtjB,EAAEkjB,EAAEI,EAAEhX,QAAQ4W,EAAEI,EAAEJ,GAAc,OAAX4F,IAAGN,GAAG3sB,EAAE0nB,GAAUvjB,CAAC,CAAC,IAAIoL,EAAExP,EAAEC,EAAEuP,IAAI8X,EAAEgN,KAAK3M,IAAIL,EAAEjjB,EAAEqrB,OAA4B,QAArBpI,EAAEgK,EAAE9hB,EAAEvP,EAAE0nB,EAAEL,EAAEnhB,MAAM7B,MAAc9F,GAAG,OAAO8oB,EAAErX,WAAWT,EAAEuF,OAAO,OAAOuS,EAAE3K,IAAIgL,EAAEL,EAAE3K,KAAKxc,EAAED,EAAEonB,EAAEnnB,EAAEwnB,GAAG,OAAOD,EAAEtjB,EAAEkjB,EAAEI,EAAEhX,QAAQ4W,EAAEI,EAAEJ,GAAuD,OAApD9oB,GAAGgR,EAAEzO,SAAQ,SAASvC,GAAG,OAAOC,EAAEwB,EAAEzB,EAAE,IAAG0uB,IAAGN,GAAG3sB,EAAE0nB,GAAUvjB,CAAC,CAG3T,OAH4T,SAASojB,EAAEhpB,EAAEwB,EAAEE,EAAEmE,GAAkF,GAA/E,iBAAkBnE,GAAG,OAAOA,GAAGA,EAAEQ,OAAO6B,GAAI,OAAOrC,EAAEyc,MAAMzc,EAAEA,EAAE+yB,MAAMnrB,UAAa,iBAAkB5H,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE4E,UAAU,KAAK3C,EAAG3D,EAAE,CAAC,IAAI,IAAI8F,EAC7hBpE,EAAEyc,IAAIvY,EAAEpE,EAAE,OAAOoE,GAAG,CAAC,GAAGA,EAAEuY,MAAMrY,EAAE,CAAU,IAATA,EAAEpE,EAAEQ,QAAY6B,GAAI,GAAG,IAAI6B,EAAEO,IAAI,CAACjG,EAAEF,EAAE4F,EAAEsM,UAAS1Q,EAAEC,EAAEmE,EAAElE,EAAE+yB,MAAMnrB,WAAYoI,OAAO1R,EAAEA,EAAEwB,EAAE,MAAMxB,CAAC,OAAO,GAAG4F,EAAEkpB,cAAchpB,GAAG,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEQ,WAAW9B,GAAI6wB,GAAGvvB,KAAKF,EAAE1D,KAAK,CAAChC,EAAEF,EAAE4F,EAAEsM,UAAS1Q,EAAEC,EAAEmE,EAAElE,EAAE+yB,QAASO,IAAID,GAAG/0B,EAAE4F,EAAElE,GAAGF,EAAEkQ,OAAO1R,EAAEA,EAAEwB,EAAE,MAAMxB,CAAC,CAACE,EAAEF,EAAE4F,GAAG,KAAK,CAAM3F,EAAED,EAAE4F,GAAGA,EAAEA,EAAEsM,OAAO,CAACxQ,EAAEQ,OAAO6B,IAAIvC,EAAEq0B,GAAGn0B,EAAE+yB,MAAMnrB,SAAStJ,EAAEsvB,KAAKzpB,EAAEnE,EAAEyc,MAAOzM,OAAO1R,EAAEA,EAAEwB,KAAIqE,EAAE6vB,GAAGh0B,EAAEQ,KAAKR,EAAEyc,IAAIzc,EAAE+yB,MAAM,KAAKz0B,EAAEsvB,KAAKzpB,IAAKmvB,IAAID,GAAG/0B,EAAEwB,EAAEE,GAAGmE,EAAE6L,OAAO1R,EAAEA,EAAE6F,EAAE,CAAC,OAAOlE,EAAE3B,GAAG,KAAK8D,EAAG9D,EAAE,CAAC,IAAI4F,EAAElE,EAAEyc,IAAI,OACzf3c,GAAG,CAAC,GAAGA,EAAE2c,MAAMvY,EAAE,IAAG,IAAIpE,EAAE2E,KAAK3E,EAAEwO,UAAUmH,gBAAgBzV,EAAEyV,eAAe3V,EAAEwO,UAAU2lB,iBAAiBj0B,EAAEi0B,eAAe,CAACz1B,EAAEF,EAAEwB,EAAE0Q,UAAS1Q,EAAEC,EAAED,EAAEE,EAAE4H,UAAU,KAAMoI,OAAO1R,EAAEA,EAAEwB,EAAE,MAAMxB,CAAC,CAAME,EAAEF,EAAEwB,GAAG,KAAK,CAAMvB,EAAED,EAAEwB,GAAGA,EAAEA,EAAE0Q,OAAO,EAAC1Q,EAAEo0B,GAAGl0B,EAAE1B,EAAEsvB,KAAKzpB,IAAK6L,OAAO1R,EAAEA,EAAEwB,CAAC,CAAC,OAAOG,EAAE3B,GAAG,KAAKwE,EAAG,OAAiBwkB,EAAEhpB,EAAEwB,GAAdoE,EAAElE,EAAE+E,OAAc/E,EAAE8E,UAAUX,GAAG,GAAG+C,GAAGlH,GAAG,OAAOonB,EAAE9oB,EAAEwB,EAAEE,EAAEmE,GAAG,GAAGjB,EAAGlD,GAAG,OAAOqnB,EAAE/oB,EAAEwB,EAAEE,EAAEmE,GAAGsvB,GAAGn1B,EAAE0B,EAAE,CAAC,MAAM,iBAAkBA,GAAG,KAAKA,GAAG,iBAAkBA,GAAGA,EAAE,GAAGA,EAAE,OAAOF,GAAG,IAAIA,EAAE2E,KAAKjG,EAAEF,EAAEwB,EAAE0Q,UAAS1Q,EAAEC,EAAED,EAAEE,IAAKgQ,OAAO1R,EAAEA,EAAEwB,IACnftB,EAAEF,EAAEwB,IAAGA,EAAEi0B,GAAG/zB,EAAE1B,EAAEsvB,KAAKzpB,IAAK6L,OAAO1R,EAAEA,EAAEwB,GAAGG,EAAE3B,IAAIE,EAAEF,EAAEwB,EAAE,CAAS,CAAC,IAAIu0B,GAAGT,IAAG,GAAIU,GAAGV,IAAG,GAAIW,GAAG,CAAC,EAAEC,GAAGhK,GAAG+J,IAAIE,GAAGjK,GAAG+J,IAAIG,GAAGlK,GAAG+J,IAAI,SAASI,GAAGr2B,GAAG,GAAGA,IAAIi2B,GAAG,MAAMhxB,MAAMlF,EAAE,MAAM,OAAOC,CAAC,CAAC,SAASs2B,GAAGt2B,EAAEC,GAAyC,OAAtCmsB,GAAEgK,GAAGn2B,GAAGmsB,GAAE+J,GAAGn2B,GAAGosB,GAAE8J,GAAGD,IAAIj2B,EAAEC,EAAEyK,UAAmB,KAAK,EAAE,KAAK,GAAGzK,GAAGA,EAAEA,EAAEykB,iBAAiBzkB,EAAE8J,aAAaH,GAAG,KAAK,IAAI,MAAM,QAAkE3J,EAAE2J,GAArC3J,GAAvBD,EAAE,IAAIA,EAAEC,EAAEyP,WAAWzP,GAAM8J,cAAc,KAAK/J,EAAEA,EAAEu2B,SAAkBpK,GAAE+J,IAAI9J,GAAE8J,GAAGj2B,EAAE,CAAC,SAASu2B,KAAKrK,GAAE+J,IAAI/J,GAAEgK,IAAIhK,GAAEiK,GAAG,CACnb,SAASK,GAAGz2B,GAAGq2B,GAAGD,GAAGjkB,SAAS,IAAIlS,EAAEo2B,GAAGH,GAAG/jB,SAAajS,EAAE0J,GAAG3J,EAAED,EAAEkC,MAAMjC,IAAIC,IAAIksB,GAAE+J,GAAGn2B,GAAGosB,GAAE8J,GAAGh2B,GAAG,CAAC,SAASw2B,GAAG12B,GAAGm2B,GAAGhkB,UAAUnS,IAAImsB,GAAE+J,IAAI/J,GAAEgK,IAAI,CAAC,IAAIQ,GAAEzK,GAAG,GACrJ,SAAS0K,GAAG52B,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAEkG,IAAI,CAAC,IAAIjG,EAAED,EAAE4R,cAAc,GAAG,OAAO3R,IAAmB,QAAfA,EAAEA,EAAE4R,aAAqB,OAAO5R,EAAE2c,MAAM,OAAO3c,EAAE2c,MAAM,OAAO5c,CAAC,MAAM,GAAG,KAAKA,EAAEkG,UAAK,IAASlG,EAAEyvB,cAAcmH,aAAa,GAAgB,IAAR52B,EAAE0R,MAAW,OAAO1R,OAAO,GAAG,OAAOA,EAAEgS,MAAM,CAAChS,EAAEgS,MAAMP,OAAOzR,EAAEA,EAAEA,EAAEgS,MAAM,QAAQ,CAAC,GAAGhS,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEiS,SAAS,CAAC,GAAG,OAAOjS,EAAEyR,QAAQzR,EAAEyR,SAAS1R,EAAE,OAAO,KAAKC,EAAEA,EAAEyR,MAAM,CAACzR,EAAEiS,QAAQR,OAAOzR,EAAEyR,OAAOzR,EAAEA,EAAEiS,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI4kB,GAAG,GACrc,SAASC,KAAK,IAAI,IAAI/2B,EAAE,EAAEA,EAAE82B,GAAG12B,OAAOJ,IAAI82B,GAAG92B,GAAGg3B,8BAA8B,KAAKF,GAAG12B,OAAO,CAAC,CAAC,IAAI62B,GAAGxzB,EAAGyzB,uBAAuBC,GAAG1zB,EAAGoU,wBAAwBuf,GAAG,EAAEC,GAAE,KAAKC,GAAE,KAAKC,GAAE,KAAKC,IAAG,EAAGC,IAAG,EAAGC,GAAG,EAAEC,GAAG,EAAE,SAASC,KAAI,MAAM3yB,MAAMlF,EAAE,KAAM,CAAC,SAAS83B,GAAG73B,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAEG,QAAQF,EAAEF,EAAEI,OAAOF,IAAI,IAAIqjB,GAAGvjB,EAAEE,GAAGD,EAAEC,IAAI,OAAM,EAAG,OAAM,CAAE,CAChW,SAAS43B,GAAG93B,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,GAAyH,GAAtH01B,GAAG11B,EAAE21B,GAAEp3B,EAAEA,EAAE4R,cAAc,KAAK5R,EAAEyxB,YAAY,KAAKzxB,EAAE4wB,MAAM,EAAEoG,GAAG9kB,QAAQ,OAAOnS,GAAG,OAAOA,EAAE6R,cAAckmB,GAAGC,GAAGh4B,EAAEE,EAAEsB,EAAEC,GAAMg2B,GAAG,CAAC/1B,EAAE,EAAE,EAAE,CAAY,GAAX+1B,IAAG,EAAGC,GAAG,EAAK,IAAIh2B,EAAE,MAAMuD,MAAMlF,EAAE,MAAM2B,GAAG,EAAE61B,GAAED,GAAE,KAAKr3B,EAAEyxB,YAAY,KAAKuF,GAAG9kB,QAAQ8lB,GAAGj4B,EAAEE,EAAEsB,EAAEC,EAAE,OAAOg2B,GAAG,CAA+D,GAA9DR,GAAG9kB,QAAQ+lB,GAAGj4B,EAAE,OAAOq3B,IAAG,OAAOA,GAAEpG,KAAKkG,GAAG,EAAEG,GAAED,GAAED,GAAE,KAAKG,IAAG,EAAMv3B,EAAE,MAAMgF,MAAMlF,EAAE,MAAM,OAAOC,CAAC,CAAC,SAASm4B,KAAK,IAAIn4B,EAAE,IAAI03B,GAAQ,OAALA,GAAG,EAAS13B,CAAC,CAC/Y,SAASo4B,KAAK,IAAIp4B,EAAE,CAAC6R,cAAc,KAAK8f,UAAU,KAAK0G,UAAU,KAAKC,MAAM,KAAKpH,KAAK,MAA8C,OAAxC,OAAOqG,GAAEF,GAAExlB,cAAc0lB,GAAEv3B,EAAEu3B,GAAEA,GAAErG,KAAKlxB,EAASu3B,EAAC,CAAC,SAASgB,KAAK,GAAG,OAAOjB,GAAE,CAAC,IAAIt3B,EAAEq3B,GAAE5lB,UAAUzR,EAAE,OAAOA,EAAEA,EAAE6R,cAAc,IAAI,MAAM7R,EAAEs3B,GAAEpG,KAAK,IAAIjxB,EAAE,OAAOs3B,GAAEF,GAAExlB,cAAc0lB,GAAErG,KAAK,GAAG,OAAOjxB,EAAEs3B,GAAEt3B,EAAEq3B,GAAEt3B,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMiF,MAAMlF,EAAE,MAAUC,EAAE,CAAC6R,eAAPylB,GAAEt3B,GAAqB6R,cAAc8f,UAAU2F,GAAE3F,UAAU0G,UAAUf,GAAEe,UAAUC,MAAMhB,GAAEgB,MAAMpH,KAAK,MAAM,OAAOqG,GAAEF,GAAExlB,cAAc0lB,GAAEv3B,EAAEu3B,GAAEA,GAAErG,KAAKlxB,CAAC,CAAC,OAAOu3B,EAAC,CACje,SAASiB,GAAGx4B,EAAEC,GAAG,MAAM,mBAAoBA,EAAEA,EAAED,GAAGC,CAAC,CACnD,SAASw4B,GAAGz4B,GAAG,IAAIC,EAAEs4B,KAAKr4B,EAAED,EAAEq4B,MAAM,GAAG,OAAOp4B,EAAE,MAAM+E,MAAMlF,EAAE,MAAMG,EAAEw4B,oBAAoB14B,EAAE,IAAIwB,EAAE81B,GAAE71B,EAAED,EAAE62B,UAAU32B,EAAExB,EAAE6xB,QAAQ,GAAG,OAAOrwB,EAAE,CAAC,GAAG,OAAOD,EAAE,CAAC,IAAIE,EAAEF,EAAEyvB,KAAKzvB,EAAEyvB,KAAKxvB,EAAEwvB,KAAKxvB,EAAEwvB,KAAKvvB,CAAC,CAACH,EAAE62B,UAAU52B,EAAEC,EAAExB,EAAE6xB,QAAQ,IAAI,CAAC,GAAG,OAAOtwB,EAAE,CAACC,EAAED,EAAEyvB,KAAK1vB,EAAEA,EAAEmwB,UAAU,IAAI9rB,EAAElE,EAAE,KAAKmE,EAAE,KAAKF,EAAElE,EAAE,EAAE,CAAC,IAAIsP,EAAEpL,EAAEwsB,KAAK,IAAIgF,GAAGpmB,KAAKA,EAAE,OAAOlL,IAAIA,EAAEA,EAAEorB,KAAK,CAACkB,KAAK,EAAEuG,OAAO/yB,EAAE+yB,OAAOC,cAAchzB,EAAEgzB,cAAcC,WAAWjzB,EAAEizB,WAAW3H,KAAK,OAAO1vB,EAAEoE,EAAEgzB,cAAchzB,EAAEizB,WAAW74B,EAAEwB,EAAEoE,EAAE+yB,YAAY,CAAC,IAAI/F,EAAE,CAACR,KAAKphB,EAAE2nB,OAAO/yB,EAAE+yB,OAAOC,cAAchzB,EAAEgzB,cACngBC,WAAWjzB,EAAEizB,WAAW3H,KAAK,MAAM,OAAOprB,GAAGD,EAAEC,EAAE8sB,EAAEjxB,EAAEH,GAAGsE,EAAEA,EAAEorB,KAAK0B,EAAEyE,GAAExG,OAAO7f,EAAE+hB,IAAI/hB,CAAC,CAACpL,EAAEA,EAAEsrB,IAAI,OAAO,OAAOtrB,GAAGA,IAAIlE,GAAG,OAAOoE,EAAEnE,EAAEH,EAAEsE,EAAEorB,KAAKrrB,EAAE0d,GAAG/hB,EAAEvB,EAAE4R,iBAAiBif,IAAG,GAAI7wB,EAAE4R,cAAcrQ,EAAEvB,EAAE0xB,UAAUhwB,EAAE1B,EAAEo4B,UAAUvyB,EAAE5F,EAAE44B,kBAAkBt3B,CAAC,CAAiB,GAAG,QAAnBxB,EAAEE,EAAEoxB,aAAwB,CAAC7vB,EAAEzB,EAAE,GAAG0B,EAAED,EAAE2wB,KAAKiF,GAAExG,OAAOnvB,EAAEqxB,IAAIrxB,EAAED,EAAEA,EAAEyvB,WAAWzvB,IAAIzB,EAAE,MAAM,OAAOyB,IAAIvB,EAAE2wB,MAAM,GAAG,MAAM,CAAC5wB,EAAE4R,cAAc3R,EAAE64B,SAAS,CAC9X,SAASC,GAAGh5B,GAAG,IAAIC,EAAEs4B,KAAKr4B,EAAED,EAAEq4B,MAAM,GAAG,OAAOp4B,EAAE,MAAM+E,MAAMlF,EAAE,MAAMG,EAAEw4B,oBAAoB14B,EAAE,IAAIwB,EAAEtB,EAAE64B,SAASt3B,EAAEvB,EAAE6xB,QAAQrwB,EAAEzB,EAAE4R,cAAc,GAAG,OAAOpQ,EAAE,CAACvB,EAAE6xB,QAAQ,KAAK,IAAIpwB,EAAEF,EAAEA,EAAEyvB,KAAK,GAAGxvB,EAAE1B,EAAE0B,EAAEC,EAAEg3B,QAAQh3B,EAAEA,EAAEuvB,WAAWvvB,IAAIF,GAAG8hB,GAAG7hB,EAAEzB,EAAE4R,iBAAiBif,IAAG,GAAI7wB,EAAE4R,cAAcnQ,EAAE,OAAOzB,EAAEo4B,YAAYp4B,EAAE0xB,UAAUjwB,GAAGxB,EAAE44B,kBAAkBp3B,CAAC,CAAC,MAAM,CAACA,EAAEF,EAAE,CAAC,SAASy3B,KAAK,CACpW,SAASC,GAAGl5B,EAAEC,GAAG,IAAIC,EAAEm3B,GAAE71B,EAAE+2B,KAAK92B,EAAExB,IAAIyB,GAAG6hB,GAAG/hB,EAAEqQ,cAAcpQ,GAAsE,GAAnEC,IAAIF,EAAEqQ,cAAcpQ,EAAEqvB,IAAG,GAAItvB,EAAEA,EAAE82B,MAAMa,GAAGC,GAAGzQ,KAAK,KAAKzoB,EAAEsB,EAAExB,GAAG,CAACA,IAAOwB,EAAE63B,cAAcp5B,GAAGyB,GAAG,OAAO61B,IAAuB,EAApBA,GAAE1lB,cAAc1L,IAAM,CAAuD,GAAtDjG,EAAEyR,OAAO,KAAK2nB,GAAG,EAAEC,GAAG5Q,KAAK,KAAKzoB,EAAEsB,EAAEC,EAAExB,QAAG,EAAO,MAAS,OAAOu5B,GAAE,MAAMv0B,MAAMlF,EAAE,MAAc,GAAHq3B,IAAQqC,GAAGv5B,EAAED,EAAEwB,EAAE,CAAC,OAAOA,CAAC,CAAC,SAASg4B,GAAGz5B,EAAEC,EAAEC,GAAGF,EAAE2R,OAAO,MAAM3R,EAAE,CAACq5B,YAAYp5B,EAAE0H,MAAMzH,GAAmB,QAAhBD,EAAEo3B,GAAE3F,cAAsBzxB,EAAE,CAACy5B,WAAW,KAAKC,OAAO,MAAMtC,GAAE3F,YAAYzxB,EAAEA,EAAE05B,OAAO,CAAC35B,IAAgB,QAAXE,EAAED,EAAE05B,QAAgB15B,EAAE05B,OAAO,CAAC35B,GAAGE,EAAEiQ,KAAKnQ,EAAG,CAClf,SAASu5B,GAAGv5B,EAAEC,EAAEC,EAAEsB,GAAGvB,EAAE0H,MAAMzH,EAAED,EAAEo5B,YAAY73B,EAAEo4B,GAAG35B,IAAI45B,GAAG75B,EAAE,CAAC,SAASo5B,GAAGp5B,EAAEC,EAAEC,GAAG,OAAOA,GAAE,WAAW05B,GAAG35B,IAAI45B,GAAG75B,EAAE,GAAE,CAAC,SAAS45B,GAAG55B,GAAG,IAAIC,EAAED,EAAEq5B,YAAYr5B,EAAEA,EAAE2H,MAAM,IAAI,IAAIzH,EAAED,IAAI,OAAOsjB,GAAGvjB,EAAEE,EAAE,CAAC,MAAMsB,GAAG,OAAM,CAAE,CAAC,CAAC,SAASq4B,GAAG75B,GAAG,IAAIC,EAAEsxB,GAAGvxB,EAAE,GAAG,OAAOC,GAAG0zB,GAAG1zB,EAAED,EAAE,GAAG,EAAE,CAClQ,SAAS85B,GAAG95B,GAAG,IAAIC,EAAEm4B,KAA8M,MAAzM,mBAAoBp4B,IAAIA,EAAEA,KAAKC,EAAE4R,cAAc5R,EAAE0xB,UAAU3xB,EAAEA,EAAE,CAAC+xB,QAAQ,KAAKT,YAAY,KAAKT,MAAM,EAAEkI,SAAS,KAAKL,oBAAoBF,GAAGM,kBAAkB94B,GAAGC,EAAEq4B,MAAMt4B,EAAEA,EAAEA,EAAE+4B,SAASgB,GAAGpR,KAAK,KAAK0O,GAAEr3B,GAAS,CAACC,EAAE4R,cAAc7R,EAAE,CAC5P,SAASs5B,GAAGt5B,EAAEC,EAAEC,EAAEsB,GAA8O,OAA3OxB,EAAE,CAACmG,IAAInG,EAAEg6B,OAAO/5B,EAAEg6B,QAAQ/5B,EAAEg6B,KAAK14B,EAAE0vB,KAAK,MAAsB,QAAhBjxB,EAAEo3B,GAAE3F,cAAsBzxB,EAAE,CAACy5B,WAAW,KAAKC,OAAO,MAAMtC,GAAE3F,YAAYzxB,EAAEA,EAAEy5B,WAAW15B,EAAEkxB,KAAKlxB,GAAmB,QAAfE,EAAED,EAAEy5B,YAAoBz5B,EAAEy5B,WAAW15B,EAAEkxB,KAAKlxB,GAAGwB,EAAEtB,EAAEgxB,KAAKhxB,EAAEgxB,KAAKlxB,EAAEA,EAAEkxB,KAAK1vB,EAAEvB,EAAEy5B,WAAW15B,GAAWA,CAAC,CAAC,SAASm6B,KAAK,OAAO5B,KAAK1mB,aAAa,CAAC,SAASuoB,GAAGp6B,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAE22B,KAAKf,GAAE1lB,OAAO3R,EAAEyB,EAAEoQ,cAAcynB,GAAG,EAAEr5B,EAAEC,OAAE,OAAO,IAASsB,EAAE,KAAKA,EAAE,CAC9Y,SAAS64B,GAAGr6B,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAE82B,KAAK/2B,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIE,OAAE,EAAO,GAAG,OAAO41B,GAAE,CAAC,IAAI31B,EAAE21B,GAAEzlB,cAA0B,GAAZnQ,EAAEC,EAAEs4B,QAAW,OAAOz4B,GAAGq2B,GAAGr2B,EAAEG,EAAEu4B,MAAmC,YAA5Bz4B,EAAEoQ,cAAcynB,GAAGr5B,EAAEC,EAAEwB,EAAEF,GAAU,CAAC61B,GAAE1lB,OAAO3R,EAAEyB,EAAEoQ,cAAcynB,GAAG,EAAEr5B,EAAEC,EAAEwB,EAAEF,EAAE,CAAC,SAAS84B,GAAGt6B,EAAEC,GAAG,OAAOm6B,GAAG,QAAQ,EAAEp6B,EAAEC,EAAE,CAAC,SAASk5B,GAAGn5B,EAAEC,GAAG,OAAOo6B,GAAG,KAAK,EAAEr6B,EAAEC,EAAE,CAAC,SAASs6B,GAAGv6B,EAAEC,GAAG,OAAOo6B,GAAG,EAAE,EAAEr6B,EAAEC,EAAE,CAAC,SAASu6B,GAAGx6B,EAAEC,GAAG,OAAOo6B,GAAG,EAAE,EAAEr6B,EAAEC,EAAE,CAChX,SAASw6B,GAAGz6B,EAAEC,GAAG,MAAG,mBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,KAAK,GAAK,MAAOA,GAAqBD,EAAEA,IAAIC,EAAEkS,QAAQnS,EAAE,WAAWC,EAAEkS,QAAQ,IAAI,QAA1E,CAA2E,CAAC,SAASuoB,GAAG16B,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAE4nB,OAAO,CAAC9nB,IAAI,KAAYq6B,GAAG,EAAE,EAAEI,GAAG9R,KAAK,KAAK1oB,EAAED,GAAGE,EAAE,CAAC,SAASy6B,KAAK,CAAC,SAASC,GAAG56B,EAAEC,GAAG,IAAIC,EAAEq4B,KAAKt4B,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIuB,EAAEtB,EAAE2R,cAAc,OAAG,OAAOrQ,GAAG,OAAOvB,GAAG43B,GAAG53B,EAAEuB,EAAE,IAAWA,EAAE,IAAGtB,EAAE2R,cAAc,CAAC7R,EAAEC,GAAUD,EAAC,CAC7Z,SAAS66B,GAAG76B,EAAEC,GAAG,IAAIC,EAAEq4B,KAAKt4B,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIuB,EAAEtB,EAAE2R,cAAc,OAAG,OAAOrQ,GAAG,OAAOvB,GAAG43B,GAAG53B,EAAEuB,EAAE,IAAWA,EAAE,IAAGxB,EAAEA,IAAIE,EAAE2R,cAAc,CAAC7R,EAAEC,GAAUD,EAAC,CAAC,SAAS86B,GAAG96B,EAAEC,EAAEC,GAAG,OAAW,GAAHk3B,IAAoE7T,GAAGrjB,EAAED,KAAKC,EAAE8U,KAAKqiB,GAAExG,OAAO3wB,EAAE6yB,IAAI7yB,EAAEF,EAAE2xB,WAAU,GAAW1xB,IAA/GD,EAAE2xB,YAAY3xB,EAAE2xB,WAAU,EAAGb,IAAG,GAAI9wB,EAAE6R,cAAc3R,EAA4D,CAAC,SAAS66B,GAAG/6B,EAAEC,GAAG,IAAIC,EAAEmV,GAAEA,GAAE,IAAInV,GAAG,EAAEA,EAAEA,EAAE,EAAEF,GAAE,GAAI,IAAIwB,EAAE21B,GAAGnf,WAAWmf,GAAGnf,WAAW,CAAC,EAAE,IAAIhY,GAAE,GAAIC,GAAG,CAAC,QAAQoV,GAAEnV,EAAEi3B,GAAGnf,WAAWxW,CAAC,CAAC,CAAC,SAASw5B,KAAK,OAAOzC,KAAK1mB,aAAa,CAC1d,SAASopB,GAAGj7B,EAAEC,EAAEC,GAAG,IAAIsB,EAAEkyB,GAAG1zB,GAAGE,EAAE,CAACkyB,KAAK5wB,EAAEm3B,OAAOz4B,EAAE04B,eAAc,EAAGC,WAAW,KAAK3H,KAAK,MAASgK,GAAGl7B,GAAGm7B,GAAGl7B,EAAEC,GAAyB,QAAdA,EAAEmxB,GAAGrxB,EAAEC,EAAEC,EAAEsB,MAAuBmyB,GAAGzzB,EAAEF,EAAEwB,EAAXiyB,MAAgB2H,GAAGl7B,EAAED,EAAEuB,GAAG,CAC/K,SAASu4B,GAAG/5B,EAAEC,EAAEC,GAAG,IAAIsB,EAAEkyB,GAAG1zB,GAAGyB,EAAE,CAAC2wB,KAAK5wB,EAAEm3B,OAAOz4B,EAAE04B,eAAc,EAAGC,WAAW,KAAK3H,KAAK,MAAM,GAAGgK,GAAGl7B,GAAGm7B,GAAGl7B,EAAEwB,OAAO,CAAC,IAAIC,EAAE1B,EAAEyR,UAAU,GAAG,IAAIzR,EAAE6wB,QAAQ,OAAOnvB,GAAG,IAAIA,EAAEmvB,QAAiC,QAAxBnvB,EAAEzB,EAAEy4B,qBAA8B,IAAI,IAAI/2B,EAAE1B,EAAE64B,kBAAkBjzB,EAAEnE,EAAEC,EAAEzB,GAAqC,GAAlCuB,EAAEm3B,eAAc,EAAGn3B,EAAEo3B,WAAWhzB,EAAK0d,GAAG1d,EAAElE,GAAG,CAAC,IAAImE,EAAE7F,EAAEqxB,YAA+E,OAAnE,OAAOxrB,GAAGrE,EAAEyvB,KAAKzvB,EAAE2vB,GAAGnxB,KAAKwB,EAAEyvB,KAAKprB,EAAEorB,KAAKprB,EAAEorB,KAAKzvB,QAAGxB,EAAEqxB,YAAY7vB,EAAQ,CAAC,CAAC,MAAMmE,GAAG,CAAwB,QAAd1F,EAAEmxB,GAAGrxB,EAAEC,EAAEwB,EAAED,MAAoBmyB,GAAGzzB,EAAEF,EAAEwB,EAAbC,EAAEgyB,MAAgB2H,GAAGl7B,EAAED,EAAEuB,GAAG,CAAC,CAC/c,SAAS05B,GAAGl7B,GAAG,IAAIC,EAAED,EAAEyR,UAAU,OAAOzR,IAAIq3B,IAAG,OAAOp3B,GAAGA,IAAIo3B,EAAC,CAAC,SAAS8D,GAAGn7B,EAAEC,GAAGw3B,GAAGD,IAAG,EAAG,IAAIt3B,EAAEF,EAAE+xB,QAAQ,OAAO7xB,EAAED,EAAEixB,KAAKjxB,GAAGA,EAAEixB,KAAKhxB,EAAEgxB,KAAKhxB,EAAEgxB,KAAKjxB,GAAGD,EAAE+xB,QAAQ9xB,CAAC,CAAC,SAASm7B,GAAGp7B,EAAEC,EAAEC,GAAG,GAAU,QAAFA,EAAW,CAAC,IAAIsB,EAAEvB,EAAE4wB,MAAwB3wB,GAAlBsB,GAAGxB,EAAEyU,aAAkBxU,EAAE4wB,MAAM3wB,EAAEkV,GAAGpV,EAAEE,EAAE,CAAC,CAC9P,IAAIg4B,GAAG,CAACmD,YAAYtK,GAAGuK,YAAY1D,GAAE2D,WAAW3D,GAAE4D,UAAU5D,GAAE6D,oBAAoB7D,GAAE8D,mBAAmB9D,GAAE+D,gBAAgB/D,GAAEgE,QAAQhE,GAAEiE,WAAWjE,GAAEkE,OAAOlE,GAAEmE,SAASnE,GAAEoE,cAAcpE,GAAEqE,iBAAiBrE,GAAEsE,cAActE,GAAEuE,iBAAiBvE,GAAEwE,qBAAqBxE,GAAEyE,MAAMzE,GAAE0E,0BAAyB,GAAIvE,GAAG,CAACsD,YAAYtK,GAAGuK,YAAY,SAASt7B,EAAEC,GAA4C,OAAzCm4B,KAAKvmB,cAAc,CAAC7R,OAAE,IAASC,EAAE,KAAKA,GAAUD,CAAC,EAAEu7B,WAAWxK,GAAGyK,UAAUlB,GAAGmB,oBAAoB,SAASz7B,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAE4nB,OAAO,CAAC9nB,IAAI,KAAYo6B,GAAG,QAC3f,EAAEK,GAAG9R,KAAK,KAAK1oB,EAAED,GAAGE,EAAE,EAAEy7B,gBAAgB,SAAS37B,EAAEC,GAAG,OAAOm6B,GAAG,QAAQ,EAAEp6B,EAAEC,EAAE,EAAEy7B,mBAAmB,SAAS17B,EAAEC,GAAG,OAAOm6B,GAAG,EAAE,EAAEp6B,EAAEC,EAAE,EAAE27B,QAAQ,SAAS57B,EAAEC,GAAG,IAAIC,EAAEk4B,KAAqD,OAAhDn4B,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIE,EAAE2R,cAAc,CAAC7R,EAAEC,GAAUD,CAAC,EAAE67B,WAAW,SAAS77B,EAAEC,EAAEC,GAAG,IAAIsB,EAAE42B,KAAkM,OAA7Ln4B,OAAE,IAASC,EAAEA,EAAED,GAAGA,EAAEuB,EAAEqQ,cAAcrQ,EAAEmwB,UAAU1xB,EAAED,EAAE,CAAC+xB,QAAQ,KAAKT,YAAY,KAAKT,MAAM,EAAEkI,SAAS,KAAKL,oBAAoB14B,EAAE84B,kBAAkB74B,GAAGuB,EAAE82B,MAAMt4B,EAAEA,EAAEA,EAAE+4B,SAASkC,GAAGtS,KAAK,KAAK0O,GAAEr3B,GAAS,CAACwB,EAAEqQ,cAAc7R,EAAE,EAAE87B,OAAO,SAAS97B,GAC3d,OAAdA,EAAE,CAACmS,QAAQnS,GAAhBo4B,KAA4BvmB,cAAc7R,CAAC,EAAE+7B,SAASjC,GAAGkC,cAAcrB,GAAGsB,iBAAiB,SAASj8B,GAAG,OAAOo4B,KAAKvmB,cAAc7R,CAAC,EAAEk8B,cAAc,WAAW,IAAIl8B,EAAE85B,IAAG,GAAI75B,EAAED,EAAE,GAA6C,OAA1CA,EAAE+6B,GAAGpS,KAAK,KAAK3oB,EAAE,IAAIo4B,KAAKvmB,cAAc7R,EAAQ,CAACC,EAAED,EAAE,EAAEm8B,iBAAiB,WAAW,EAAEC,qBAAqB,SAASp8B,EAAEC,EAAEC,GAAG,IAAIsB,EAAE61B,GAAE51B,EAAE22B,KAAK,GAAG1J,GAAE,CAAC,QAAG,IAASxuB,EAAE,MAAM+E,MAAMlF,EAAE,MAAMG,EAAEA,GAAG,KAAK,CAAO,GAANA,EAAED,IAAO,OAAOu5B,GAAE,MAAMv0B,MAAMlF,EAAE,MAAc,GAAHq3B,IAAQqC,GAAGj4B,EAAEvB,EAAEC,EAAE,CAACuB,EAAEoQ,cAAc3R,EAAE,IAAIwB,EAAE,CAACiG,MAAMzH,EAAEm5B,YAAYp5B,GACvZ,OAD0ZwB,EAAE62B,MAAM52B,EAAE44B,GAAGlB,GAAGzQ,KAAK,KAAKnnB,EACpfE,EAAE1B,GAAG,CAACA,IAAIwB,EAAEmQ,OAAO,KAAK2nB,GAAG,EAAEC,GAAG5Q,KAAK,KAAKnnB,EAAEE,EAAExB,EAAED,QAAG,EAAO,MAAaC,CAAC,EAAEm8B,MAAM,WAAW,IAAIr8B,EAAEo4B,KAAKn4B,EAAEu5B,GAAE+C,iBAAiB,GAAG7N,GAAE,CAAC,IAAIxuB,EAAEiuB,GAAkDluB,EAAE,IAAIA,EAAE,KAA9CC,GAAHguB,KAAU,GAAG,GAAGpa,GAAhBoa,IAAsB,IAAIhkB,SAAS,IAAIhK,GAAuB,GAAPA,EAAEw3B,QAAWz3B,GAAG,IAAIC,EAAEgK,SAAS,KAAKjK,GAAG,GAAG,MAAaA,EAAE,IAAIA,EAAE,KAAfC,EAAEy3B,MAAmBztB,SAAS,IAAI,IAAI,OAAOlK,EAAE6R,cAAc5R,CAAC,EAAEq8B,0BAAyB,GAAItE,GAAG,CAACqD,YAAYtK,GAAGuK,YAAYV,GAAGW,WAAWxK,GAAGyK,UAAUrC,GAAGsC,oBAAoBf,GAAGgB,mBAAmBnB,GAAGoB,gBAAgBnB,GAAGoB,QAAQf,GAAGgB,WAAWpD,GAAGqD,OAAO3B,GAAG4B,SAAS,WAAW,OAAOtD,GAAGD,GAAG,EACrhBwD,cAAcrB,GAAGsB,iBAAiB,SAASj8B,GAAc,OAAO86B,GAAZvC,KAAiBjB,GAAEzlB,cAAc7R,EAAE,EAAEk8B,cAAc,WAAgD,MAAM,CAArCzD,GAAGD,IAAI,GAAKD,KAAK1mB,cAAyB,EAAEsqB,iBAAiBlD,GAAGmD,qBAAqBlD,GAAGmD,MAAMrB,GAAGsB,0BAAyB,GAAIrE,GAAG,CAACoD,YAAYtK,GAAGuK,YAAYV,GAAGW,WAAWxK,GAAGyK,UAAUrC,GAAGsC,oBAAoBf,GAAGgB,mBAAmBnB,GAAGoB,gBAAgBnB,GAAGoB,QAAQf,GAAGgB,WAAW7C,GAAG8C,OAAO3B,GAAG4B,SAAS,WAAW,OAAO/C,GAAGR,GAAG,EAAEwD,cAAcrB,GAAGsB,iBAAiB,SAASj8B,GAAG,IAAIC,EAAEs4B,KAAK,OAAO,OACzfjB,GAAEr3B,EAAE4R,cAAc7R,EAAE86B,GAAG76B,EAAEq3B,GAAEzlB,cAAc7R,EAAE,EAAEk8B,cAAc,WAAgD,MAAM,CAArClD,GAAGR,IAAI,GAAKD,KAAK1mB,cAAyB,EAAEsqB,iBAAiBlD,GAAGmD,qBAAqBlD,GAAGmD,MAAMrB,GAAGsB,0BAAyB,GAAI,SAASE,GAAGx8B,EAAEC,GAAG,IAAI,IAAIC,EAAE,GAAGsB,EAAEvB,EAAE,GAAGC,GAAGgG,EAAG1E,GAAGA,EAAEA,EAAEkQ,aAAalQ,GAAG,IAAIC,EAAEvB,CAAC,CAAC,MAAMwB,GAAGD,EAAE,6BAA6BC,EAAE+6B,QAAQ,KAAK/6B,EAAEwD,KAAK,CAAC,MAAM,CAACyC,MAAM3H,EAAE+O,OAAO9O,EAAEiF,MAAMzD,EAAEi7B,OAAO,KAAK,CAAC,SAASC,GAAG38B,EAAEC,EAAEC,GAAG,MAAM,CAACyH,MAAM3H,EAAE+O,OAAO,KAAK7J,MAAM,MAAMhF,EAAEA,EAAE,KAAKw8B,OAAO,MAAMz8B,EAAEA,EAAE,KAAK,CACzd,SAAS28B,GAAG58B,EAAEC,GAAG,IAAI48B,QAAQC,MAAM78B,EAAE0H,MAAM,CAAC,MAAMzH,GAAG0qB,YAAW,WAAW,MAAM1qB,CAAE,GAAE,CAAC,CAAC,IAAI68B,GAAG,mBAAoBC,QAAQA,QAAQ9mB,IAAI,SAAS+mB,GAAGj9B,EAAEC,EAAEC,IAAGA,EAAEgyB,IAAI,EAAEhyB,IAAKiG,IAAI,EAAEjG,EAAEmyB,QAAQ,CAACxM,QAAQ,MAAM,IAAIrkB,EAAEvB,EAAE0H,MAAsD,OAAhDzH,EAAEoyB,SAAS,WAAW4K,KAAKA,IAAG,EAAGC,GAAG37B,GAAGo7B,GAAG58B,EAAEC,EAAE,EAASC,CAAC,CAC3Q,SAASk9B,GAAGp9B,EAAEC,EAAEC,IAAGA,EAAEgyB,IAAI,EAAEhyB,IAAKiG,IAAI,EAAE,IAAI3E,EAAExB,EAAEkC,KAAKm7B,yBAAyB,GAAG,mBAAoB77B,EAAE,CAAC,IAAIC,EAAExB,EAAE0H,MAAMzH,EAAEmyB,QAAQ,WAAW,OAAO7wB,EAAEC,EAAE,EAAEvB,EAAEoyB,SAAS,WAAWsK,GAAG58B,EAAEC,EAAE,CAAC,CAAC,IAAIyB,EAAE1B,EAAEgQ,UAA8O,OAApO,OAAOtO,GAAG,mBAAoBA,EAAE47B,oBAAoBp9B,EAAEoyB,SAAS,WAAWsK,GAAG58B,EAAEC,GAAG,mBAAoBuB,IAAI,OAAO+7B,GAAGA,GAAG,IAAIh9B,IAAI,CAACqB,OAAO27B,GAAG58B,IAAIiB,OAAO,IAAI1B,EAAED,EAAEiF,MAAMtD,KAAK07B,kBAAkBr9B,EAAE0H,MAAM,CAAC61B,eAAe,OAAOt9B,EAAEA,EAAE,IAAI,GAAUA,CAAC,CACnb,SAASu9B,GAAGz9B,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAE09B,UAAU,GAAG,OAAOl8B,EAAE,CAACA,EAAExB,EAAE09B,UAAU,IAAIX,GAAG,IAAIt7B,EAAE,IAAIlB,IAAIiB,EAAEiE,IAAIxF,EAAEwB,EAAE,WAAiB,KAAXA,EAAED,EAAE0F,IAAIjH,MAAgBwB,EAAE,IAAIlB,IAAIiB,EAAEiE,IAAIxF,EAAEwB,IAAIA,EAAE4mB,IAAInoB,KAAKuB,EAAEd,IAAIT,GAAGF,EAAE29B,GAAGhV,KAAK,KAAK3oB,EAAEC,EAAEC,GAAGD,EAAEmrB,KAAKprB,EAAEA,GAAG,CAAC,SAAS49B,GAAG59B,GAAG,EAAE,CAAC,IAAIC,EAA4E,IAAvEA,EAAE,KAAKD,EAAEmG,OAAsBlG,EAAE,QAApBA,EAAED,EAAE6R,gBAAyB,OAAO5R,EAAE6R,YAAuB7R,EAAE,OAAOD,EAAEA,EAAEA,EAAE0R,MAAM,OAAO,OAAO1R,GAAG,OAAO,IAAI,CAChW,SAAS69B,GAAG79B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,OAAe,EAAPzB,EAAEsvB,MAAwKtvB,EAAE2R,OAAO,MAAM3R,EAAE6wB,MAAMpvB,EAASzB,IAAzLA,IAAIC,EAAED,EAAE2R,OAAO,OAAO3R,EAAE2R,OAAO,IAAIzR,EAAEyR,OAAO,OAAOzR,EAAEyR,QAAQ,MAAM,IAAIzR,EAAEiG,MAAM,OAAOjG,EAAEuR,UAAUvR,EAAEiG,IAAI,KAAIlG,EAAEiyB,IAAI,EAAE,IAAK/rB,IAAI,EAAEosB,GAAGryB,EAAED,EAAE,KAAKC,EAAE2wB,OAAO,GAAG7wB,EAAmC,CAAC,IAAI89B,GAAGr6B,EAAGs6B,kBAAkBjN,IAAG,EAAG,SAASkN,GAAGh+B,EAAEC,EAAEC,EAAEsB,GAAGvB,EAAEgS,MAAM,OAAOjS,EAAEg2B,GAAG/1B,EAAE,KAAKC,EAAEsB,GAAGu0B,GAAG91B,EAAED,EAAEiS,MAAM/R,EAAEsB,EAAE,CACnV,SAASy8B,GAAGj+B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAGvB,EAAEA,EAAEkG,OAAO,IAAI1E,EAAEzB,EAAE+0B,IAAqC,OAAjCtE,GAAGzwB,EAAEwB,GAAGD,EAAEs2B,GAAG93B,EAAEC,EAAEC,EAAEsB,EAAEE,EAAED,GAAGvB,EAAEi4B,KAAQ,OAAOn4B,GAAI8wB,IAA2EpC,IAAGxuB,GAAGouB,GAAGruB,GAAGA,EAAE0R,OAAO,EAAEqsB,GAAGh+B,EAAEC,EAAEuB,EAAEC,GAAUxB,EAAEgS,QAA7GhS,EAAEyxB,YAAY1xB,EAAE0xB,YAAYzxB,EAAE0R,QAAQ,KAAK3R,EAAE6wB,QAAQpvB,EAAEy8B,GAAGl+B,EAAEC,EAAEwB,GAAoD,CACzN,SAAS08B,GAAGn+B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,GAAG,OAAOzB,EAAE,CAAC,IAAI0B,EAAExB,EAAEgC,KAAK,MAAG,mBAAoBR,GAAI08B,GAAG18B,SAAI,IAASA,EAAEsuB,cAAc,OAAO9vB,EAAEm+B,cAAS,IAASn+B,EAAE8vB,eAAoDhwB,EAAE01B,GAAGx1B,EAAEgC,KAAK,KAAKV,EAAEvB,EAAEA,EAAEqvB,KAAK7tB,IAAKuzB,IAAI/0B,EAAE+0B,IAAIh1B,EAAE0R,OAAOzR,EAASA,EAAEgS,MAAMjS,IAArGC,EAAEkG,IAAI,GAAGlG,EAAEiC,KAAKR,EAAE48B,GAAGt+B,EAAEC,EAAEyB,EAAEF,EAAEC,GAAyE,CAAW,GAAVC,EAAE1B,EAAEiS,QAAcjS,EAAE6wB,MAAMpvB,GAAG,CAAC,IAAIE,EAAED,EAAEguB,cAA0C,IAAhBxvB,EAAE,QAAdA,EAAEA,EAAEm+B,SAAmBn+B,EAAEsjB,IAAQ7hB,EAAEH,IAAIxB,EAAEg1B,MAAM/0B,EAAE+0B,IAAI,OAAOkJ,GAAGl+B,EAAEC,EAAEwB,EAAE,CAA6C,OAA5CxB,EAAE0R,OAAO,GAAE3R,EAAEw1B,GAAG9zB,EAAEF,IAAKwzB,IAAI/0B,EAAE+0B,IAAIh1B,EAAE0R,OAAOzR,EAASA,EAAEgS,MAAMjS,CAAC,CAC1b,SAASs+B,GAAGt+B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,GAAG,OAAOzB,EAAE,CAAC,IAAI0B,EAAE1B,EAAE0vB,cAAc,GAAGlM,GAAG9hB,EAAEF,IAAIxB,EAAEg1B,MAAM/0B,EAAE+0B,IAAI,IAAGlE,IAAG,EAAG7wB,EAAEgvB,aAAaztB,EAAEE,IAAO1B,EAAE6wB,MAAMpvB,GAAsC,OAAOxB,EAAE4wB,MAAM7wB,EAAE6wB,MAAMqN,GAAGl+B,EAAEC,EAAEwB,GAApD,OAARzB,EAAE2R,QAAgBmf,IAAG,EAAwC,CAAC,CAAC,OAAOyN,GAAGv+B,EAAEC,EAAEC,EAAEsB,EAAEC,EAAE,CACxN,SAAS+8B,GAAGx+B,EAAEC,EAAEC,GAAG,IAAIsB,EAAEvB,EAAEgvB,aAAaxtB,EAAED,EAAE8H,SAAS5H,EAAE,OAAO1B,EAAEA,EAAE6R,cAAc,KAAK,GAAG,WAAWrQ,EAAE8tB,KAAK,GAAe,EAAPrvB,EAAEqvB,KAAyF,CAAC,KAAU,WAAFpvB,GAAc,OAAOF,EAAE,OAAO0B,EAAEA,EAAE+8B,UAAUv+B,EAAEA,EAAED,EAAE4wB,MAAM5wB,EAAEwwB,WAAW,WAAWxwB,EAAE4R,cAAc,CAAC4sB,UAAUz+B,EAAE0+B,UAAU,KAAKC,YAAY,MAAM1+B,EAAEyxB,YAAY,KAAKtF,GAAEwS,GAAGC,IAAIA,IAAI7+B,EAAE,KAAKC,EAAE4R,cAAc,CAAC4sB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMn9B,EAAE,OAAOE,EAAEA,EAAE+8B,UAAUv+B,EAAEksB,GAAEwS,GAAGC,IAAIA,IAAIr9B,CAAC,MAApXvB,EAAE4R,cAAc,CAAC4sB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMvS,GAAEwS,GAAGC,IAAIA,IAAI3+B,OAA+S,OACtfwB,GAAGF,EAAEE,EAAE+8B,UAAUv+B,EAAED,EAAE4R,cAAc,MAAMrQ,EAAEtB,EAAEksB,GAAEwS,GAAGC,IAAIA,IAAIr9B,EAAc,OAAZw8B,GAAGh+B,EAAEC,EAAEwB,EAAEvB,GAAUD,EAAEgS,KAAK,CAAC,SAAS6sB,GAAG9+B,EAAEC,GAAG,IAAIC,EAAED,EAAE+0B,KAAO,OAAOh1B,GAAG,OAAOE,GAAG,OAAOF,GAAGA,EAAEg1B,MAAM90B,KAAED,EAAE0R,OAAO,IAAI1R,EAAE0R,OAAO,QAAO,CAAC,SAAS4sB,GAAGv+B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,IAAIC,EAAEmrB,GAAG3sB,GAAGssB,GAAGF,GAAEna,QAAmD,OAA3CzQ,EAAE+qB,GAAGxsB,EAAEyB,GAAGgvB,GAAGzwB,EAAEwB,GAAGvB,EAAE43B,GAAG93B,EAAEC,EAAEC,EAAEsB,EAAEE,EAAED,GAAGD,EAAE22B,KAAQ,OAAOn4B,GAAI8wB,IAA2EpC,IAAGltB,GAAG8sB,GAAGruB,GAAGA,EAAE0R,OAAO,EAAEqsB,GAAGh+B,EAAEC,EAAEC,EAAEuB,GAAUxB,EAAEgS,QAA7GhS,EAAEyxB,YAAY1xB,EAAE0xB,YAAYzxB,EAAE0R,QAAQ,KAAK3R,EAAE6wB,QAAQpvB,EAAEy8B,GAAGl+B,EAAEC,EAAEwB,GAAoD,CACla,SAASs9B,GAAG/+B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,GAAGorB,GAAG3sB,GAAG,CAAC,IAAIwB,GAAE,EAAGyrB,GAAGltB,EAAE,MAAMyB,GAAE,EAAW,GAARgvB,GAAGzwB,EAAEwB,GAAM,OAAOxB,EAAE+P,UAAUgvB,GAAGh/B,EAAEC,GAAGg0B,GAAGh0B,EAAEC,EAAEsB,GAAGgzB,GAAGv0B,EAAEC,EAAEsB,EAAEC,GAAGD,GAAE,OAAQ,GAAG,OAAOxB,EAAE,CAAC,IAAI2B,EAAE1B,EAAE+P,UAAUnK,EAAE5F,EAAEyvB,cAAc/tB,EAAE8yB,MAAM5uB,EAAE,IAAIC,EAAEnE,EAAEqvB,QAAQprB,EAAE1F,EAAEg0B,YAA0CtuB,EAA9B,iBAAkBA,GAAG,OAAOA,EAAImrB,GAAGnrB,GAA2B6mB,GAAGxsB,EAA1B2F,EAAEinB,GAAG3sB,GAAGssB,GAAGF,GAAEna,SAAmB,IAAInB,EAAE9Q,EAAEw0B,yBAAyB9B,EAAE,mBAAoB5hB,GAAG,mBAAoBrP,EAAEgzB,wBAAwB/B,GAAG,mBAAoBjxB,EAAE4yB,kCAAkC,mBAAoB5yB,EAAE2yB,4BAC1dzuB,IAAIrE,GAAGsE,IAAIF,IAAIyuB,GAAGp0B,EAAE0B,EAAEH,EAAEoE,GAAG4rB,IAAG,EAAG,IAAIqB,EAAE5yB,EAAE4R,cAAclQ,EAAEwyB,MAAMtB,EAAEF,GAAG1yB,EAAEuB,EAAEG,EAAEF,GAAGqE,EAAE7F,EAAE4R,cAAchM,IAAIrE,GAAGqxB,IAAI/sB,GAAGymB,GAAGpa,SAASqf,IAAI,mBAAoBxgB,IAAIoiB,GAAGnzB,EAAEC,EAAE8Q,EAAExP,GAAGsE,EAAE7F,EAAE4R,gBAAgBhM,EAAE2rB,IAAIsC,GAAG7zB,EAAEC,EAAE2F,EAAErE,EAAEqxB,EAAE/sB,EAAEF,KAAKgtB,GAAG,mBAAoBjxB,EAAEizB,2BAA2B,mBAAoBjzB,EAAEkzB,qBAAqB,mBAAoBlzB,EAAEkzB,oBAAoBlzB,EAAEkzB,qBAAqB,mBAAoBlzB,EAAEizB,2BAA2BjzB,EAAEizB,6BAA6B,mBAAoBjzB,EAAEmzB,oBAAoB70B,EAAE0R,OAAO,WAClf,mBAAoBhQ,EAAEmzB,oBAAoB70B,EAAE0R,OAAO,SAAS1R,EAAEyvB,cAAcluB,EAAEvB,EAAE4R,cAAc/L,GAAGnE,EAAE8yB,MAAMjzB,EAAEG,EAAEwyB,MAAMruB,EAAEnE,EAAEqvB,QAAQprB,EAAEpE,EAAEqE,IAAI,mBAAoBlE,EAAEmzB,oBAAoB70B,EAAE0R,OAAO,SAASnQ,GAAE,EAAG,KAAK,CAACG,EAAE1B,EAAE+P,UAAUiiB,GAAGjyB,EAAEC,GAAG4F,EAAE5F,EAAEyvB,cAAc9pB,EAAE3F,EAAEiC,OAAOjC,EAAE6uB,YAAYjpB,EAAEkqB,GAAG9vB,EAAEiC,KAAK2D,GAAGlE,EAAE8yB,MAAM7uB,EAAEgtB,EAAE3yB,EAAEgvB,aAAa4D,EAAElxB,EAAEqvB,QAAsDlrB,EAA9B,iBAAhBA,EAAE5F,EAAEg0B,cAAiC,OAAOpuB,EAAIirB,GAAGjrB,GAA2B2mB,GAAGxsB,EAA1B6F,EAAE+mB,GAAG3sB,GAAGssB,GAAGF,GAAEna,SAAmB,IAAI2gB,EAAE5yB,EAAEw0B,0BAA0B1jB,EAAE,mBAAoB8hB,GAAG,mBAAoBnxB,EAAEgzB,0BAC9e,mBAAoBhzB,EAAE4yB,kCAAkC,mBAAoB5yB,EAAE2yB,4BAA4BzuB,IAAI+sB,GAAGC,IAAI/sB,IAAIuuB,GAAGp0B,EAAE0B,EAAEH,EAAEsE,GAAG0rB,IAAG,EAAGqB,EAAE5yB,EAAE4R,cAAclQ,EAAEwyB,MAAMtB,EAAEF,GAAG1yB,EAAEuB,EAAEG,EAAEF,GAAG,IAAIqnB,EAAE7oB,EAAE4R,cAAchM,IAAI+sB,GAAGC,IAAI/J,GAAGyD,GAAGpa,SAASqf,IAAI,mBAAoBsB,IAAIM,GAAGnzB,EAAEC,EAAE4yB,EAAEtxB,GAAGsnB,EAAE7oB,EAAE4R,gBAAgBjM,EAAE4rB,IAAIsC,GAAG7zB,EAAEC,EAAE0F,EAAEpE,EAAEqxB,EAAE/J,EAAEhjB,KAAI,IAAKkL,GAAG,mBAAoBrP,EAAEs9B,4BAA4B,mBAAoBt9B,EAAEu9B,sBAAsB,mBAAoBv9B,EAAEu9B,qBAAqBv9B,EAAEu9B,oBAAoB19B,EAAEsnB,EAAEhjB,GAAG,mBAAoBnE,EAAEs9B,4BAC5ft9B,EAAEs9B,2BAA2Bz9B,EAAEsnB,EAAEhjB,IAAI,mBAAoBnE,EAAEw9B,qBAAqBl/B,EAAE0R,OAAO,GAAG,mBAAoBhQ,EAAEgzB,0BAA0B10B,EAAE0R,OAAO,QAAQ,mBAAoBhQ,EAAEw9B,oBAAoBt5B,IAAI7F,EAAE0vB,eAAemD,IAAI7yB,EAAE6R,gBAAgB5R,EAAE0R,OAAO,GAAG,mBAAoBhQ,EAAEgzB,yBAAyB9uB,IAAI7F,EAAE0vB,eAAemD,IAAI7yB,EAAE6R,gBAAgB5R,EAAE0R,OAAO,MAAM1R,EAAEyvB,cAAcluB,EAAEvB,EAAE4R,cAAciX,GAAGnnB,EAAE8yB,MAAMjzB,EAAEG,EAAEwyB,MAAMrL,EAAEnnB,EAAEqvB,QAAQlrB,EAAEtE,EAAEoE,IAAI,mBAAoBjE,EAAEw9B,oBAAoBt5B,IAAI7F,EAAE0vB,eAAemD,IACjf7yB,EAAE6R,gBAAgB5R,EAAE0R,OAAO,GAAG,mBAAoBhQ,EAAEgzB,yBAAyB9uB,IAAI7F,EAAE0vB,eAAemD,IAAI7yB,EAAE6R,gBAAgB5R,EAAE0R,OAAO,MAAMnQ,GAAE,EAAG,CAAC,OAAO49B,GAAGp/B,EAAEC,EAAEC,EAAEsB,EAAEE,EAAED,EAAE,CACnK,SAAS29B,GAAGp/B,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,GAAGo9B,GAAG9+B,EAAEC,GAAG,IAAI0B,KAAe,IAAR1B,EAAE0R,OAAW,IAAInQ,IAAIG,EAAE,OAAOF,GAAG4rB,GAAGptB,EAAEC,GAAE,GAAIg+B,GAAGl+B,EAAEC,EAAEyB,GAAGF,EAAEvB,EAAE+P,UAAU8tB,GAAG3rB,QAAQlS,EAAE,IAAI4F,EAAElE,GAAG,mBAAoBzB,EAAEm9B,yBAAyB,KAAK77B,EAAE4E,SAAwI,OAA/HnG,EAAE0R,OAAO,EAAE,OAAO3R,GAAG2B,GAAG1B,EAAEgS,MAAM8jB,GAAG91B,EAAED,EAAEiS,MAAM,KAAKvQ,GAAGzB,EAAEgS,MAAM8jB,GAAG91B,EAAE,KAAK4F,EAAEnE,IAAIs8B,GAAGh+B,EAAEC,EAAE4F,EAAEnE,GAAGzB,EAAE4R,cAAcrQ,EAAE2yB,MAAM1yB,GAAG4rB,GAAGptB,EAAEC,GAAE,GAAWD,EAAEgS,KAAK,CAAC,SAASotB,GAAGr/B,GAAG,IAAIC,EAAED,EAAEgQ,UAAU/P,EAAEq/B,eAAetS,GAAGhtB,EAAEC,EAAEq/B,eAAer/B,EAAEq/B,iBAAiBr/B,EAAE+wB,SAAS/wB,EAAE+wB,SAAShE,GAAGhtB,EAAEC,EAAE+wB,SAAQ,GAAIsF,GAAGt2B,EAAEC,EAAEkX,cAAc,CAC5e,SAASooB,GAAGv/B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAuC,OAApCmuB,KAAKC,GAAGpuB,GAAGxB,EAAE0R,OAAO,IAAIqsB,GAAGh+B,EAAEC,EAAEC,EAAEsB,GAAUvB,EAAEgS,KAAK,CAAC,IAaqLutB,GAAGC,GAAGC,GAAGC,GAb1LC,GAAG,CAAC9tB,WAAW,KAAKqd,YAAY,KAAKC,UAAU,GAAG,SAASyQ,GAAG7/B,GAAG,MAAM,CAACy+B,UAAUz+B,EAAE0+B,UAAU,KAAKC,YAAY,KAAK,CAClM,SAASmB,GAAG9/B,EAAEC,EAAEC,GAAG,IAA0D2F,EAAtDrE,EAAEvB,EAAEgvB,aAAaxtB,EAAEk1B,GAAExkB,QAAQzQ,GAAE,EAAGC,KAAe,IAAR1B,EAAE0R,OAAqJ,IAAvI9L,EAAElE,KAAKkE,GAAE,OAAO7F,GAAG,OAAOA,EAAE6R,mBAAwB,EAAFpQ,IAASoE,GAAEnE,GAAE,EAAGzB,EAAE0R,QAAQ,KAAY,OAAO3R,GAAG,OAAOA,EAAE6R,gBAAcpQ,GAAG,GAAE2qB,GAAEuK,GAAI,EAAFl1B,GAAQ,OAAOzB,EAA2B,OAAxBuvB,GAAGtvB,GAAwB,QAArBD,EAAEC,EAAE4R,gBAA2C,QAAf7R,EAAEA,EAAE8R,aAAwC,EAAP7R,EAAEqvB,KAAkB,OAAOtvB,EAAE6c,KAAK5c,EAAE4wB,MAAM,EAAE5wB,EAAE4wB,MAAM,WAA1C5wB,EAAE4wB,MAAM,EAA6C,OAAKlvB,EAAEH,EAAE8H,SAAStJ,EAAEwB,EAAEu+B,SAAgBr+B,GAAGF,EAAEvB,EAAEqvB,KAAK5tB,EAAEzB,EAAEgS,MAAMtQ,EAAE,CAAC2tB,KAAK,SAAShmB,SAAS3H,GAAU,EAAFH,GAAM,OAAOE,EACtdA,EAAEs+B,GAAGr+B,EAAEH,EAAE,EAAE,OAD8cE,EAAE+uB,WAAW,EAAE/uB,EAAEutB,aAC7ettB,GAAoB3B,EAAE61B,GAAG71B,EAAEwB,EAAEtB,EAAE,MAAMwB,EAAEgQ,OAAOzR,EAAED,EAAE0R,OAAOzR,EAAEyB,EAAEwQ,QAAQlS,EAAEC,EAAEgS,MAAMvQ,EAAEzB,EAAEgS,MAAMJ,cAAcguB,GAAG3/B,GAAGD,EAAE4R,cAAc+tB,GAAG5/B,GAAGigC,GAAGhgC,EAAE0B,IAAqB,GAAG,QAArBF,EAAEzB,EAAE6R,gBAA2C,QAAfhM,EAAEpE,EAAEqQ,YAAqB,OAGpM,SAAY9R,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,GAAG,GAAGzB,EAAG,OAAW,IAARD,EAAE0R,OAAiB1R,EAAE0R,QAAQ,IAAwBuuB,GAAGlgC,EAAEC,EAAE0B,EAA3BH,EAAEm7B,GAAG13B,MAAMlF,EAAE,SAAsB,OAAOE,EAAE4R,eAAqB5R,EAAEgS,MAAMjS,EAAEiS,MAAMhS,EAAE0R,OAAO,IAAI,OAAKjQ,EAAEF,EAAEu+B,SAASt+B,EAAExB,EAAEqvB,KAAK9tB,EAAEw+B,GAAG,CAAC1Q,KAAK,UAAUhmB,SAAS9H,EAAE8H,UAAU7H,EAAE,EAAE,OAAMC,EAAEm0B,GAAGn0B,EAAED,EAAEE,EAAE,OAAQgQ,OAAO,EAAEnQ,EAAEkQ,OAAOzR,EAAEyB,EAAEgQ,OAAOzR,EAAEuB,EAAE0Q,QAAQxQ,EAAEzB,EAAEgS,MAAMzQ,EAAc,EAAPvB,EAAEqvB,MAASyG,GAAG91B,EAAED,EAAEiS,MAAM,KAAKtQ,GAAG1B,EAAEgS,MAAMJ,cAAcguB,GAAGl+B,GAAG1B,EAAE4R,cAAc+tB,GAAUl+B,GAAE,KAAe,EAAPzB,EAAEqvB,MAAQ,OAAO4Q,GAAGlgC,EAAEC,EAAE0B,EAAE,MAAM,GAAG,OAAOF,EAAEob,KAAK,CAChd,GADidrb,EAAEC,EAAEoiB,aAAapiB,EAAEoiB,YAAYsc,QAC3e,IAAIt6B,EAAErE,EAAE4+B,KAA0C,OAArC5+B,EAAEqE,EAA0Cq6B,GAAGlgC,EAAEC,EAAE0B,EAA/BH,EAAEm7B,GAAlBj7B,EAAEuD,MAAMlF,EAAE,MAAayB,OAAE,GAA0B,CAAwB,GAAvBqE,KAAOlE,EAAE3B,EAAEywB,YAAeK,IAAIjrB,EAAE,CAAK,GAAG,QAAPrE,EAAEg4B,IAAc,CAAC,OAAO73B,GAAGA,GAAG,KAAK,EAAEF,EAAE,EAAE,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAASA,EAAE,GAAG,MAAM,KAAK,UAAUA,EAAE,UAAU,MAAM,QAAQA,EAAE,EAChd,KADkdA,EAAOA,GAAGD,EAAEkT,eAAe/S,GAAI,EAAEF,IAC5eA,IAAIC,EAAE0tB,YAAY1tB,EAAE0tB,UAAU3tB,EAAE8vB,GAAGvxB,EAAEyB,GAAGkyB,GAAGnyB,EAAExB,EAAEyB,GAAG,GAAG,CAA0B,OAAzB4+B,KAAgCH,GAAGlgC,EAAEC,EAAE0B,EAAlCH,EAAEm7B,GAAG13B,MAAMlF,EAAE,OAAyB,CAAC,MAAG,OAAO0B,EAAEob,MAAY5c,EAAE0R,OAAO,IAAI1R,EAAEgS,MAAMjS,EAAEiS,MAAMhS,EAAEqgC,GAAG3X,KAAK,KAAK3oB,GAAGyB,EAAE8+B,YAAYtgC,EAAE,OAAKD,EAAE0B,EAAEytB,YAAYV,GAAGjD,GAAG/pB,EAAEoiB,aAAa2K,GAAGvuB,EAAEyuB,IAAE,EAAGC,GAAG,KAAK,OAAO3uB,IAAI+tB,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGC,GAAGluB,EAAEoY,GAAG+V,GAAGnuB,EAAEkvB,SAASjB,GAAGhuB,IAAGA,EAAEggC,GAAGhgC,EAAEuB,EAAE8H,WAAYqI,OAAO,KAAY1R,EAAC,CALrKugC,CAAGxgC,EAAEC,EAAE0B,EAAEH,EAAEqE,EAAEpE,EAAEvB,GAAG,GAAGwB,EAAE,CAACA,EAAEF,EAAEu+B,SAASp+B,EAAE1B,EAAEqvB,KAAezpB,GAAVpE,EAAEzB,EAAEiS,OAAUC,QAAQ,IAAIpM,EAAE,CAACwpB,KAAK,SAAShmB,SAAS9H,EAAE8H,UAChF,OADiG,EAAF3H,GAAM1B,EAAEgS,QAAQxQ,GAAgED,EAAEg0B,GAAG/zB,EAAEqE,IAAK26B,aAA4B,SAAfh/B,EAAEg/B,eAAxFj/B,EAAEvB,EAAEgS,OAAQwe,WAAW,EAAEjvB,EAAEytB,aAAanpB,EAAE7F,EAAE8uB,UAAU,MAAyD,OAAOlpB,EAAEnE,EAAE8zB,GAAG3vB,EAAEnE,IAAIA,EAAEm0B,GAAGn0B,EAAEC,EAAEzB,EAAE,OAAQyR,OAAO,EAAGjQ,EAAEgQ,OACnfzR,EAAEuB,EAAEkQ,OAAOzR,EAAEuB,EAAE0Q,QAAQxQ,EAAEzB,EAAEgS,MAAMzQ,EAAEA,EAAEE,EAAEA,EAAEzB,EAAEgS,MAA8BtQ,EAAE,QAA1BA,EAAE3B,EAAEiS,MAAMJ,eAAyBguB,GAAG3/B,GAAG,CAACu+B,UAAU98B,EAAE88B,UAAUv+B,EAAEw+B,UAAU,KAAKC,YAAYh9B,EAAEg9B,aAAaj9B,EAAEmQ,cAAclQ,EAAED,EAAE+uB,WAAWzwB,EAAEywB,YAAYvwB,EAAED,EAAE4R,cAAc+tB,GAAUp+B,CAAC,CAAoO,OAAzNxB,GAAV0B,EAAE1B,EAAEiS,OAAUC,QAAQ1Q,EAAEg0B,GAAG9zB,EAAE,CAAC4tB,KAAK,UAAUhmB,SAAS9H,EAAE8H,aAAuB,EAAPrJ,EAAEqvB,QAAU9tB,EAAEqvB,MAAM3wB,GAAGsB,EAAEkQ,OAAOzR,EAAEuB,EAAE0Q,QAAQ,KAAK,OAAOlS,IAAkB,QAAdE,EAAED,EAAE8uB,YAAoB9uB,EAAE8uB,UAAU,CAAC/uB,GAAGC,EAAE0R,OAAO,IAAIzR,EAAEiQ,KAAKnQ,IAAIC,EAAEgS,MAAMzQ,EAAEvB,EAAE4R,cAAc,KAAYrQ,CAAC,CACnd,SAASy+B,GAAGjgC,EAAEC,GAA8D,OAA3DA,EAAE+/B,GAAG,CAAC1Q,KAAK,UAAUhmB,SAASrJ,GAAGD,EAAEsvB,KAAK,EAAE,OAAQ5d,OAAO1R,EAASA,EAAEiS,MAAMhS,CAAC,CAAC,SAASigC,GAAGlgC,EAAEC,EAAEC,EAAEsB,GAAwG,OAArG,OAAOA,GAAGquB,GAAGruB,GAAGu0B,GAAG91B,EAAED,EAAEiS,MAAM,KAAK/R,IAAGF,EAAEigC,GAAGhgC,EAAEA,EAAEgvB,aAAa3lB,WAAYqI,OAAO,EAAE1R,EAAE4R,cAAc,KAAY7R,CAAC,CAGkJ,SAAS0gC,GAAG1gC,EAAEC,EAAEC,GAAGF,EAAE6wB,OAAO5wB,EAAE,IAAIuB,EAAExB,EAAEyR,UAAU,OAAOjQ,IAAIA,EAAEqvB,OAAO5wB,GAAGuwB,GAAGxwB,EAAE0R,OAAOzR,EAAEC,EAAE,CACxc,SAASygC,GAAG3gC,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,IAAIC,EAAE1B,EAAE6R,cAAc,OAAOnQ,EAAE1B,EAAE6R,cAAc,CAAC+uB,YAAY3gC,EAAE4gC,UAAU,KAAKC,mBAAmB,EAAEC,KAAKv/B,EAAEw/B,KAAK9gC,EAAE+gC,SAASx/B,IAAIC,EAAEk/B,YAAY3gC,EAAEyB,EAAEm/B,UAAU,KAAKn/B,EAAEo/B,mBAAmB,EAAEp/B,EAAEq/B,KAAKv/B,EAAEE,EAAEs/B,KAAK9gC,EAAEwB,EAAEu/B,SAASx/B,EAAE,CAC3O,SAASy/B,GAAGlhC,EAAEC,EAAEC,GAAG,IAAIsB,EAAEvB,EAAEgvB,aAAaxtB,EAAED,EAAEq1B,YAAYn1B,EAAEF,EAAEw/B,KAAsC,GAAjChD,GAAGh+B,EAAEC,EAAEuB,EAAE8H,SAASpJ,GAAyB,GAAtBsB,EAAEm1B,GAAExkB,SAAqB3Q,EAAI,EAAFA,EAAI,EAAEvB,EAAE0R,OAAO,QAAQ,CAAC,GAAG,OAAO3R,GAAgB,IAARA,EAAE2R,MAAW3R,EAAE,IAAIA,EAAEC,EAAEgS,MAAM,OAAOjS,GAAG,CAAC,GAAG,KAAKA,EAAEmG,IAAI,OAAOnG,EAAE6R,eAAe6uB,GAAG1gC,EAAEE,EAAED,QAAQ,GAAG,KAAKD,EAAEmG,IAAIu6B,GAAG1gC,EAAEE,EAAED,QAAQ,GAAG,OAAOD,EAAEiS,MAAM,CAACjS,EAAEiS,MAAMP,OAAO1R,EAAEA,EAAEA,EAAEiS,MAAM,QAAQ,CAAC,GAAGjS,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAEkS,SAAS,CAAC,GAAG,OAAOlS,EAAE0R,QAAQ1R,EAAE0R,SAASzR,EAAE,MAAMD,EAAEA,EAAEA,EAAE0R,MAAM,CAAC1R,EAAEkS,QAAQR,OAAO1R,EAAE0R,OAAO1R,EAAEA,EAAEkS,OAAO,CAAC1Q,GAAG,CAAC,CAAQ,GAAP4qB,GAAEuK,GAAEn1B,GAAkB,EAAPvB,EAAEqvB,KAC3d,OAAO7tB,GAAG,IAAK,WAAqB,IAAVvB,EAAED,EAAEgS,MAAUxQ,EAAE,KAAK,OAAOvB,GAAiB,QAAdF,EAAEE,EAAEuR,YAAoB,OAAOmlB,GAAG52B,KAAKyB,EAAEvB,GAAGA,EAAEA,EAAEgS,QAAY,QAAJhS,EAAEuB,IAAYA,EAAExB,EAAEgS,MAAMhS,EAAEgS,MAAM,OAAOxQ,EAAEvB,EAAEgS,QAAQhS,EAAEgS,QAAQ,MAAMyuB,GAAG1gC,GAAE,EAAGwB,EAAEvB,EAAEwB,GAAG,MAAM,IAAK,YAA6B,IAAjBxB,EAAE,KAAKuB,EAAExB,EAAEgS,MAAUhS,EAAEgS,MAAM,KAAK,OAAOxQ,GAAG,CAAe,GAAG,QAAjBzB,EAAEyB,EAAEgQ,YAAuB,OAAOmlB,GAAG52B,GAAG,CAACC,EAAEgS,MAAMxQ,EAAE,KAAK,CAACzB,EAAEyB,EAAEyQ,QAAQzQ,EAAEyQ,QAAQhS,EAAEA,EAAEuB,EAAEA,EAAEzB,CAAC,CAAC2gC,GAAG1gC,GAAE,EAAGC,EAAE,KAAKwB,GAAG,MAAM,IAAK,WAAWi/B,GAAG1gC,GAAE,EAAG,KAAK,UAAK,GAAQ,MAAM,QAAQA,EAAE4R,cAAc,UADmC5R,EAAE4R,cAC/e,KAA+c,OAAO5R,EAAEgS,KAAK,CAC7d,SAAS+sB,GAAGh/B,EAAEC,KAAe,EAAPA,EAAEqvB,OAAS,OAAOtvB,IAAIA,EAAEyR,UAAU,KAAKxR,EAAEwR,UAAU,KAAKxR,EAAE0R,OAAO,EAAE,CAAC,SAASusB,GAAGl+B,EAAEC,EAAEC,GAAyD,GAAtD,OAAOF,IAAIC,EAAE0wB,aAAa3wB,EAAE2wB,cAAcoC,IAAI9yB,EAAE4wB,QAAc3wB,EAAED,EAAEwwB,YAAY,OAAO,KAAK,GAAG,OAAOzwB,GAAGC,EAAEgS,QAAQjS,EAAEiS,MAAM,MAAMhN,MAAMlF,EAAE,MAAM,GAAG,OAAOE,EAAEgS,MAAM,CAA4C,IAAjC/R,EAAEs1B,GAAZx1B,EAAEC,EAAEgS,MAAajS,EAAEivB,cAAchvB,EAAEgS,MAAM/R,EAAMA,EAAEwR,OAAOzR,EAAE,OAAOD,EAAEkS,SAASlS,EAAEA,EAAEkS,SAAQhS,EAAEA,EAAEgS,QAAQsjB,GAAGx1B,EAAEA,EAAEivB,eAAgBvd,OAAOzR,EAAEC,EAAEgS,QAAQ,IAAI,CAAC,OAAOjS,EAAEgS,KAAK,CAO9a,SAASkvB,GAAGnhC,EAAEC,GAAG,IAAIyuB,GAAE,OAAO1uB,EAAEihC,UAAU,IAAK,SAAShhC,EAAED,EAAEghC,KAAK,IAAI,IAAI9gC,EAAE,KAAK,OAAOD,GAAG,OAAOA,EAAEwR,YAAYvR,EAAED,GAAGA,EAAEA,EAAEiS,QAAQ,OAAOhS,EAAEF,EAAEghC,KAAK,KAAK9gC,EAAEgS,QAAQ,KAAK,MAAM,IAAK,YAAYhS,EAAEF,EAAEghC,KAAK,IAAI,IAAIx/B,EAAE,KAAK,OAAOtB,GAAG,OAAOA,EAAEuR,YAAYjQ,EAAEtB,GAAGA,EAAEA,EAAEgS,QAAQ,OAAO1Q,EAAEvB,GAAG,OAAOD,EAAEghC,KAAKhhC,EAAEghC,KAAK,KAAKhhC,EAAEghC,KAAK9uB,QAAQ,KAAK1Q,EAAE0Q,QAAQ,KAAK,CAC5U,SAASkvB,GAAEphC,GAAG,IAAIC,EAAE,OAAOD,EAAEyR,WAAWzR,EAAEyR,UAAUQ,QAAQjS,EAAEiS,MAAM/R,EAAE,EAAEsB,EAAE,EAAE,GAAGvB,EAAE,IAAI,IAAIwB,EAAEzB,EAAEiS,MAAM,OAAOxQ,GAAGvB,GAAGuB,EAAEovB,MAAMpvB,EAAEgvB,WAAWjvB,GAAkB,SAAfC,EAAEg/B,aAAsBj/B,GAAW,SAARC,EAAEkQ,MAAelQ,EAAEiQ,OAAO1R,EAAEyB,EAAEA,EAAEyQ,aAAa,IAAIzQ,EAAEzB,EAAEiS,MAAM,OAAOxQ,GAAGvB,GAAGuB,EAAEovB,MAAMpvB,EAAEgvB,WAAWjvB,GAAGC,EAAEg/B,aAAaj/B,GAAGC,EAAEkQ,MAAMlQ,EAAEiQ,OAAO1R,EAAEyB,EAAEA,EAAEyQ,QAAyC,OAAjClS,EAAEygC,cAAcj/B,EAAExB,EAAEywB,WAAWvwB,EAASD,CAAC,CAC7V,SAASohC,GAAGrhC,EAAEC,EAAEC,GAAG,IAAIsB,EAAEvB,EAAEgvB,aAAmB,OAANV,GAAGtuB,GAAUA,EAAEkG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAOi7B,GAAEnhC,GAAG,KAAK,KAAK,EAUtD,KAAK,GAAG,OAAO4sB,GAAG5sB,EAAEiC,OAAO6qB,KAAKqU,GAAEnhC,GAAG,KAVqD,KAAK,EAA2Q,OAAzQuB,EAAEvB,EAAE+P,UAAUwmB,KAAKrK,GAAEI,IAAIJ,GAAEG,IAAGyK,KAAKv1B,EAAE89B,iBAAiB99B,EAAEwvB,QAAQxvB,EAAE89B,eAAe99B,EAAE89B,eAAe,MAAS,OAAOt/B,GAAG,OAAOA,EAAEiS,QAAMwd,GAAGxvB,GAAGA,EAAE0R,OAAO,EAAE,OAAO3R,GAAGA,EAAE6R,cAAcqF,gBAA2B,IAARjX,EAAE0R,SAAa1R,EAAE0R,OAAO,KAAK,OAAOgd,KAAK2S,GAAG3S,IAAIA,GAAG,QAAO8Q,GAAGz/B,EAAEC,GAAGmhC,GAAEnhC,GAAU,KAAK,KAAK,EAAEy2B,GAAGz2B,GAAG,IAAIwB,EAAE40B,GAAGD,GAAGjkB,SAC7e,GAATjS,EAAED,EAAEiC,KAAQ,OAAOlC,GAAG,MAAMC,EAAE+P,UAAU0vB,GAAG1/B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAGzB,EAAEg1B,MAAM/0B,EAAE+0B,MAAM/0B,EAAE0R,OAAO,IAAI1R,EAAE0R,OAAO,aAAa,CAAC,IAAInQ,EAAE,CAAC,GAAG,OAAOvB,EAAE+P,UAAU,MAAM/K,MAAMlF,EAAE,MAAW,OAALqhC,GAAEnhC,GAAU,IAAI,CAAkB,GAAjBD,EAAEq2B,GAAGH,GAAG/jB,SAAYsd,GAAGxvB,GAAG,CAACuB,EAAEvB,EAAE+P,UAAU9P,EAAED,EAAEiC,KAAK,IAAIR,EAAEzB,EAAEyvB,cAA+C,OAAjCluB,EAAEoqB,IAAI3rB,EAAEuB,EAAEqqB,IAAInqB,EAAE1B,KAAc,EAAPC,EAAEqvB,MAAepvB,GAAG,IAAK,SAASioB,GAAE,SAAS3mB,GAAG2mB,GAAE,QAAQ3mB,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ2mB,GAAE,OAAO3mB,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIC,EAAE,EAAEA,EAAEmmB,GAAGxnB,OAAOqB,IAAI0mB,GAAEP,GAAGnmB,GAAGD,GAAG,MAAM,IAAK,SAAS2mB,GAAE,QAAQ3mB,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO2mB,GAAE,QACnhB3mB,GAAG2mB,GAAE,OAAO3mB,GAAG,MAAM,IAAK,UAAU2mB,GAAE,SAAS3mB,GAAG,MAAM,IAAK,QAAQ4G,EAAG5G,EAAEE,GAAGymB,GAAE,UAAU3mB,GAAG,MAAM,IAAK,SAASA,EAAE0G,cAAc,CAACq5B,cAAc7/B,EAAE8/B,UAAUrZ,GAAE,UAAU3mB,GAAG,MAAM,IAAK,WAAW+H,GAAG/H,EAAEE,GAAGymB,GAAE,UAAU3mB,GAAkB,IAAI,IAAIG,KAAvBuN,GAAGhP,EAAEwB,GAAGD,EAAE,KAAkBC,EAAE,GAAGA,EAAEP,eAAeQ,GAAG,CAAC,IAAIkE,EAAEnE,EAAEC,GAAG,aAAaA,EAAE,iBAAkBkE,EAAErE,EAAEkI,cAAc7D,KAAI,IAAKnE,EAAE+/B,0BAA0BpX,GAAG7oB,EAAEkI,YAAY7D,EAAE7F,GAAGyB,EAAE,CAAC,WAAWoE,IAAI,iBAAkBA,GAAGrE,EAAEkI,cAAc,GAAG7D,KAAI,IAAKnE,EAAE+/B,0BAA0BpX,GAAG7oB,EAAEkI,YAC1e7D,EAAE7F,GAAGyB,EAAE,CAAC,WAAW,GAAGoE,IAAIrF,EAAGW,eAAeQ,IAAI,MAAMkE,GAAG,aAAalE,GAAGwmB,GAAE,SAAS3mB,EAAE,CAAC,OAAOtB,GAAG,IAAK,QAAQ4G,EAAGtF,GAAGkH,EAAGlH,EAAEE,GAAE,GAAI,MAAM,IAAK,WAAWoF,EAAGtF,GAAGiI,GAAGjI,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,mBAAoBE,EAAEggC,UAAUlgC,EAAEmgC,QAAQrX,IAAI9oB,EAAEC,EAAExB,EAAEyxB,YAAYlwB,EAAE,OAAOA,IAAIvB,EAAE0R,OAAO,EAAE,KAAK,CAAChQ,EAAE,IAAIF,EAAEiJ,SAASjJ,EAAEA,EAAEkH,cAAc,iCAAiC3I,IAAIA,EAAE2J,GAAGzJ,IAAI,iCAAiCF,EAAE,WAAWE,IAAGF,EAAE2B,EAAEZ,cAAc,QAASiJ,UAAU,qBAAuBhK,EAAEA,EAAEoK,YAAYpK,EAAEmK,aAC/f,iBAAkB3I,EAAE4N,GAAGpP,EAAE2B,EAAEZ,cAAcb,EAAE,CAACkP,GAAG5N,EAAE4N,MAAMpP,EAAE2B,EAAEZ,cAAcb,GAAG,WAAWA,IAAIyB,EAAE3B,EAAEwB,EAAEggC,SAAS7/B,EAAE6/B,UAAS,EAAGhgC,EAAEogC,OAAOjgC,EAAEigC,KAAKpgC,EAAEogC,QAAQ5hC,EAAE2B,EAAEkgC,gBAAgB7hC,EAAEE,GAAGF,EAAE4rB,IAAI3rB,EAAED,EAAE6rB,IAAIrqB,EAAEg+B,GAAGx/B,EAAEC,GAAE,GAAG,GAAIA,EAAE+P,UAAUhQ,EAAEA,EAAE,CAAW,OAAV2B,EAAEwN,GAAGjP,EAAEsB,GAAUtB,GAAG,IAAK,SAASioB,GAAE,SAASnoB,GAAGmoB,GAAE,QAAQnoB,GAAGyB,EAAED,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ2mB,GAAE,OAAOnoB,GAAGyB,EAAED,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIC,EAAE,EAAEA,EAAEmmB,GAAGxnB,OAAOqB,IAAI0mB,GAAEP,GAAGnmB,GAAGzB,GAAGyB,EAAED,EAAE,MAAM,IAAK,SAAS2mB,GAAE,QAAQnoB,GAAGyB,EAAED,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO2mB,GAAE,QAClfnoB,GAAGmoB,GAAE,OAAOnoB,GAAGyB,EAAED,EAAE,MAAM,IAAK,UAAU2mB,GAAE,SAASnoB,GAAGyB,EAAED,EAAE,MAAM,IAAK,QAAQ4G,EAAGpI,EAAEwB,GAAGC,EAAEsG,EAAG/H,EAAEwB,GAAG2mB,GAAE,UAAUnoB,GAAG,MAAM,IAAK,SAAiL,QAAQyB,EAAED,QAAxK,IAAK,SAASxB,EAAEkI,cAAc,CAACq5B,cAAc//B,EAAEggC,UAAU//B,EAAEqD,EAAE,CAAC,EAAEtD,EAAE,CAACmG,WAAM,IAASwgB,GAAE,UAAUnoB,GAAG,MAAM,IAAK,WAAWuJ,GAAGvJ,EAAEwB,GAAGC,EAAE2H,GAAGpJ,EAAEwB,GAAG2mB,GAAE,UAAUnoB,GAAiC,IAAI0B,KAAhBwN,GAAGhP,EAAEuB,GAAGoE,EAAEpE,EAAa,GAAGoE,EAAE1E,eAAeO,GAAG,CAAC,IAAIoE,EAAED,EAAEnE,GAAG,UAAUA,EAAEgM,GAAG1N,EAAE8F,GAAG,4BAA4BpE,EAAuB,OAApBoE,EAAEA,EAAEA,EAAE4kB,YAAO,IAAgB5gB,GAAG9J,EAAE8F,GAAI,aAAapE,EAAE,iBAAkBoE,GAAG,aAC7e5F,GAAG,KAAK4F,IAAI0E,GAAGxK,EAAE8F,GAAG,iBAAkBA,GAAG0E,GAAGxK,EAAE,GAAG8F,GAAG,mCAAmCpE,GAAG,6BAA6BA,GAAG,cAAcA,IAAIlB,EAAGW,eAAeO,GAAG,MAAMoE,GAAG,aAAapE,GAAGymB,GAAE,SAASnoB,GAAG,MAAM8F,GAAGlD,EAAG5C,EAAE0B,EAAEoE,EAAEnE,GAAG,CAAC,OAAOzB,GAAG,IAAK,QAAQ4G,EAAG9G,GAAG0I,EAAG1I,EAAEwB,GAAE,GAAI,MAAM,IAAK,WAAWsF,EAAG9G,GAAGyJ,GAAGzJ,GAAG,MAAM,IAAK,SAAS,MAAMwB,EAAEmG,OAAO3H,EAAEqD,aAAa,QAAQ,GAAGsD,EAAGnF,EAAEmG,QAAQ,MAAM,IAAK,SAAS3H,EAAEwhC,WAAWhgC,EAAEggC,SAAmB,OAAV9/B,EAAEF,EAAEmG,OAAcoB,GAAG/I,IAAIwB,EAAEggC,SAAS9/B,GAAE,GAAI,MAAMF,EAAEyG,cAAcc,GAAG/I,IAAIwB,EAAEggC,SAAShgC,EAAEyG,cAClf,GAAI,MAAM,QAAQ,mBAAoBxG,EAAEigC,UAAU1hC,EAAE2hC,QAAQrX,IAAI,OAAOpqB,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWsB,IAAIA,EAAEsgC,UAAU,MAAM9hC,EAAE,IAAK,MAAMwB,GAAE,EAAG,MAAMxB,EAAE,QAAQwB,GAAE,EAAG,CAACA,IAAIvB,EAAE0R,OAAO,EAAE,CAAC,OAAO1R,EAAE+0B,MAAM/0B,EAAE0R,OAAO,IAAI1R,EAAE0R,OAAO,QAAQ,CAAM,OAALyvB,GAAEnhC,GAAU,KAAK,KAAK,EAAE,GAAGD,GAAG,MAAMC,EAAE+P,UAAU2vB,GAAG3/B,EAAEC,EAAED,EAAE0vB,cAAcluB,OAAO,CAAC,GAAG,iBAAkBA,GAAG,OAAOvB,EAAE+P,UAAU,MAAM/K,MAAMlF,EAAE,MAAsC,GAAhCG,EAAEm2B,GAAGD,GAAGjkB,SAASkkB,GAAGH,GAAG/jB,SAAYsd,GAAGxvB,GAAG,CAAyC,GAAxCuB,EAAEvB,EAAE+P,UAAU9P,EAAED,EAAEyvB,cAAcluB,EAAEoqB,IAAI3rB,GAAKyB,EAAEF,EAAEmJ,YAAYzK,IAC/e,QADofF,EACvfwuB,IAAY,OAAOxuB,EAAEmG,KAAK,KAAK,EAAEkkB,GAAG7oB,EAAEmJ,UAAUzK,KAAc,EAAPF,EAAEsvB,OAAS,MAAM,KAAK,GAAE,IAAKtvB,EAAE0vB,cAAc+R,0BAA0BpX,GAAG7oB,EAAEmJ,UAAUzK,KAAc,EAAPF,EAAEsvB,OAAS5tB,IAAIzB,EAAE0R,OAAO,EAAE,MAAMnQ,GAAG,IAAItB,EAAEwK,SAASxK,EAAEA,EAAEyI,eAAeo5B,eAAevgC,IAAKoqB,IAAI3rB,EAAEA,EAAE+P,UAAUxO,CAAC,CAAM,OAAL4/B,GAAEnhC,GAAU,KAAK,KAAK,GAA0B,GAAvBksB,GAAEwK,IAAGn1B,EAAEvB,EAAE4R,cAAiB,OAAO7R,GAAG,OAAOA,EAAE6R,eAAe,OAAO7R,EAAE6R,cAAcC,WAAW,CAAC,GAAG4c,IAAG,OAAOD,IAAgB,EAAPxuB,EAAEqvB,QAAsB,IAARrvB,EAAE0R,OAAWge,KAAKC,KAAK3vB,EAAE0R,OAAO,MAAMjQ,GAAE,OAAQ,GAAGA,EAAE+tB,GAAGxvB,GAAG,OAAOuB,GAAG,OAAOA,EAAEsQ,WAAW,CAAC,GAAG,OAC5f9R,EAAE,CAAC,IAAI0B,EAAE,MAAMuD,MAAMlF,EAAE,MAAqD,KAA7B2B,EAAE,QAApBA,EAAEzB,EAAE4R,eAAyBnQ,EAAEoQ,WAAW,MAAW,MAAM7M,MAAMlF,EAAE,MAAM2B,EAAEkqB,IAAI3rB,CAAC,MAAM2vB,OAAkB,IAAR3vB,EAAE0R,SAAa1R,EAAE4R,cAAc,MAAM5R,EAAE0R,OAAO,EAAEyvB,GAAEnhC,GAAGyB,GAAE,CAAE,MAAM,OAAOitB,KAAK2S,GAAG3S,IAAIA,GAAG,MAAMjtB,GAAE,EAAG,IAAIA,EAAE,OAAe,MAARzB,EAAE0R,MAAY1R,EAAE,IAAI,CAAC,OAAgB,IAARA,EAAE0R,OAAkB1R,EAAE4wB,MAAM3wB,EAAED,KAAEuB,EAAE,OAAOA,KAAO,OAAOxB,GAAG,OAAOA,EAAE6R,gBAAgBrQ,IAAIvB,EAAEgS,MAAMN,OAAO,KAAiB,EAAP1R,EAAEqvB,OAAU,OAAOtvB,GAAkB,EAAV22B,GAAExkB,QAAW,IAAI6vB,KAAIA,GAAE,GAAG3B,OAAO,OAAOpgC,EAAEyxB,cAAczxB,EAAE0R,OAAO,GAAGyvB,GAAEnhC,GAAU,MAAK,KAAK,EAAE,OAAOu2B,KACrfiJ,GAAGz/B,EAAEC,GAAG,OAAOD,GAAG0oB,GAAGzoB,EAAE+P,UAAUmH,eAAeiqB,GAAEnhC,GAAG,KAAK,KAAK,GAAG,OAAOqwB,GAAGrwB,EAAEiC,KAAKqE,UAAU66B,GAAEnhC,GAAG,KAA+C,KAAK,GAA0B,GAAvBksB,GAAEwK,IAAwB,QAArBj1B,EAAEzB,EAAE4R,eAA0B,OAAOuvB,GAAEnhC,GAAG,KAAuC,GAAlCuB,KAAe,IAARvB,EAAE0R,OAA4B,QAAjBhQ,EAAED,EAAEm/B,WAAsB,GAAGr/B,EAAE2/B,GAAGz/B,GAAE,OAAQ,CAAC,GAAG,IAAIsgC,IAAG,OAAOhiC,GAAgB,IAARA,EAAE2R,MAAW,IAAI3R,EAAEC,EAAEgS,MAAM,OAAOjS,GAAG,CAAS,GAAG,QAAX2B,EAAEi1B,GAAG52B,IAAe,CAAmG,IAAlGC,EAAE0R,OAAO,IAAIwvB,GAAGz/B,GAAE,GAAoB,QAAhBF,EAAEG,EAAE+vB,eAAuBzxB,EAAEyxB,YAAYlwB,EAAEvB,EAAE0R,OAAO,GAAG1R,EAAEwgC,aAAa,EAAEj/B,EAAEtB,EAAMA,EAAED,EAAEgS,MAAM,OAAO/R,GAAOF,EAAEwB,GAANE,EAAExB,GAAQyR,OAAO,SAC/d,QAAdhQ,EAAED,EAAE+P,YAAoB/P,EAAE+uB,WAAW,EAAE/uB,EAAEmvB,MAAM7wB,EAAE0B,EAAEuQ,MAAM,KAAKvQ,EAAE++B,aAAa,EAAE/+B,EAAEguB,cAAc,KAAKhuB,EAAEmQ,cAAc,KAAKnQ,EAAEgwB,YAAY,KAAKhwB,EAAEivB,aAAa,KAAKjvB,EAAEsO,UAAU,OAAOtO,EAAE+uB,WAAW9uB,EAAE8uB,WAAW/uB,EAAEmvB,MAAMlvB,EAAEkvB,MAAMnvB,EAAEuQ,MAAMtQ,EAAEsQ,MAAMvQ,EAAE++B,aAAa,EAAE/+B,EAAEqtB,UAAU,KAAKrtB,EAAEguB,cAAc/tB,EAAE+tB,cAAchuB,EAAEmQ,cAAclQ,EAAEkQ,cAAcnQ,EAAEgwB,YAAY/vB,EAAE+vB,YAAYhwB,EAAEQ,KAAKP,EAAEO,KAAKlC,EAAE2B,EAAEgvB,aAAajvB,EAAEivB,aAAa,OAAO3wB,EAAE,KAAK,CAAC6wB,MAAM7wB,EAAE6wB,MAAMD,aAAa5wB,EAAE4wB,eAAe1wB,EAAEA,EAAEgS,QAA2B,OAAnBka,GAAEuK,GAAY,EAAVA,GAAExkB,QAAU,GAAUlS,EAAEgS,KAAK,CAACjS,EAClgBA,EAAEkS,OAAO,CAAC,OAAOxQ,EAAEs/B,MAAMluB,KAAImvB,KAAKhiC,EAAE0R,OAAO,IAAInQ,GAAE,EAAG2/B,GAAGz/B,GAAE,GAAIzB,EAAE4wB,MAAM,QAAQ,KAAK,CAAC,IAAIrvB,EAAE,GAAW,QAARxB,EAAE42B,GAAGj1B,KAAa,GAAG1B,EAAE0R,OAAO,IAAInQ,GAAE,EAAmB,QAAhBtB,EAAEF,EAAE0xB,eAAuBzxB,EAAEyxB,YAAYxxB,EAAED,EAAE0R,OAAO,GAAGwvB,GAAGz/B,GAAE,GAAI,OAAOA,EAAEs/B,MAAM,WAAWt/B,EAAEu/B,WAAWt/B,EAAE8P,YAAYid,GAAE,OAAO0S,GAAEnhC,GAAG,UAAU,EAAE6S,KAAIpR,EAAEo/B,mBAAmBmB,IAAI,aAAa/hC,IAAID,EAAE0R,OAAO,IAAInQ,GAAE,EAAG2/B,GAAGz/B,GAAE,GAAIzB,EAAE4wB,MAAM,SAASnvB,EAAEk/B,aAAaj/B,EAAEuQ,QAAQjS,EAAEgS,MAAMhS,EAAEgS,MAAMtQ,IAAa,QAATzB,EAAEwB,EAAEq/B,MAAc7gC,EAAEgS,QAAQvQ,EAAE1B,EAAEgS,MAAMtQ,EAAED,EAAEq/B,KAAKp/B,EAAE,CAAC,OAAG,OAAOD,EAAEs/B,MAAY/gC,EAAEyB,EAAEs/B,KAAKt/B,EAAEm/B,UAC9e5gC,EAAEyB,EAAEs/B,KAAK/gC,EAAEiS,QAAQxQ,EAAEo/B,mBAAmBhuB,KAAI7S,EAAEiS,QAAQ,KAAKhS,EAAEy2B,GAAExkB,QAAQia,GAAEuK,GAAEn1B,EAAI,EAAFtB,EAAI,EAAI,EAAFA,GAAKD,IAAEmhC,GAAEnhC,GAAU,MAAK,KAAK,GAAG,KAAK,GAAG,OAAOiiC,KAAK1gC,EAAE,OAAOvB,EAAE4R,cAAc,OAAO7R,GAAG,OAAOA,EAAE6R,gBAAgBrQ,IAAIvB,EAAE0R,OAAO,MAAMnQ,GAAe,EAAPvB,EAAEqvB,QAAgB,WAAHuP,MAAiBuC,GAAEnhC,GAAkB,EAAfA,EAAEwgC,eAAiBxgC,EAAE0R,OAAO,OAAOyvB,GAAEnhC,GAAG,KAAK,KAAK,GAAe,KAAK,GAAG,OAAO,KAAK,MAAMgF,MAAMlF,EAAE,IAAIE,EAAEkG,KAAM,CAClX,SAASg8B,GAAGniC,EAAEC,GAAS,OAANsuB,GAAGtuB,GAAUA,EAAEkG,KAAK,KAAK,EAAE,OAAO0mB,GAAG5sB,EAAEiC,OAAO6qB,KAAiB,OAAZ/sB,EAAEC,EAAE0R,QAAe1R,EAAE0R,OAAS,MAAH3R,EAAS,IAAIC,GAAG,KAAK,KAAK,EAAE,OAAOu2B,KAAKrK,GAAEI,IAAIJ,GAAEG,IAAGyK,KAAsB,OAAjB/2B,EAAEC,EAAE0R,UAA4B,IAAF3R,IAAQC,EAAE0R,OAAS,MAAH3R,EAAS,IAAIC,GAAG,KAAK,KAAK,EAAE,OAAOy2B,GAAGz2B,GAAG,KAAK,KAAK,GAA0B,GAAvBksB,GAAEwK,IAAwB,QAArB32B,EAAEC,EAAE4R,gBAA2B,OAAO7R,EAAE8R,WAAW,CAAC,GAAG,OAAO7R,EAAEwR,UAAU,MAAMxM,MAAMlF,EAAE,MAAM6vB,IAAI,CAAW,OAAS,OAAnB5vB,EAAEC,EAAE0R,QAAsB1R,EAAE0R,OAAS,MAAH3R,EAAS,IAAIC,GAAG,KAAK,KAAK,GAAG,OAAOksB,GAAEwK,IAAG,KAAK,KAAK,EAAE,OAAOH,KAAK,KAAK,KAAK,GAAG,OAAOlG,GAAGrwB,EAAEiC,KAAKqE,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO27B,KAC1gB,KAAyB,QAAQ,OAAO,KAAK,CArB7C1C,GAAG,SAASx/B,EAAEC,GAAG,IAAI,IAAIC,EAAED,EAAEgS,MAAM,OAAO/R,GAAG,CAAC,GAAG,IAAIA,EAAEiG,KAAK,IAAIjG,EAAEiG,IAAInG,EAAEqK,YAAYnK,EAAE8P,gBAAgB,GAAG,IAAI9P,EAAEiG,KAAK,OAAOjG,EAAE+R,MAAM,CAAC/R,EAAE+R,MAAMP,OAAOxR,EAAEA,EAAEA,EAAE+R,MAAM,QAAQ,CAAC,GAAG/R,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEgS,SAAS,CAAC,GAAG,OAAOhS,EAAEwR,QAAQxR,EAAEwR,SAASzR,EAAE,OAAOC,EAAEA,EAAEwR,MAAM,CAACxR,EAAEgS,QAAQR,OAAOxR,EAAEwR,OAAOxR,EAAEA,EAAEgS,OAAO,CAAC,EAAEutB,GAAG,WAAW,EACxTC,GAAG,SAAS1/B,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAEzB,EAAE0vB,cAAc,GAAGjuB,IAAID,EAAE,CAACxB,EAAEC,EAAE+P,UAAUqmB,GAAGH,GAAG/jB,SAAS,IAA4RxQ,EAAxRD,EAAE,KAAK,OAAOxB,GAAG,IAAK,QAAQuB,EAAEsG,EAAG/H,EAAEyB,GAAGD,EAAEuG,EAAG/H,EAAEwB,GAAGE,EAAE,GAAG,MAAM,IAAK,SAASD,EAAEqD,EAAE,CAAC,EAAErD,EAAE,CAACkG,WAAM,IAASnG,EAAEsD,EAAE,CAAC,EAAEtD,EAAE,CAACmG,WAAM,IAASjG,EAAE,GAAG,MAAM,IAAK,WAAWD,EAAE2H,GAAGpJ,EAAEyB,GAAGD,EAAE4H,GAAGpJ,EAAEwB,GAAGE,EAAE,GAAG,MAAM,QAAQ,mBAAoBD,EAAEigC,SAAS,mBAAoBlgC,EAAEkgC,UAAU1hC,EAAE2hC,QAAQrX,IAAyB,IAAI1kB,KAAzBsJ,GAAGhP,EAAEsB,GAAStB,EAAE,KAAcuB,EAAE,IAAID,EAAEL,eAAeyE,IAAInE,EAAEN,eAAeyE,IAAI,MAAMnE,EAAEmE,GAAG,GAAG,UAAUA,EAAE,CAAC,IAAIC,EAAEpE,EAAEmE,GAAG,IAAIjE,KAAKkE,EAAEA,EAAE1E,eAAeQ,KACjfzB,IAAIA,EAAE,CAAC,GAAGA,EAAEyB,GAAG,GAAG,KAAK,4BAA4BiE,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIpF,EAAGW,eAAeyE,GAAGlE,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIyO,KAAKvK,EAAE,OAAO,IAAIA,KAAKpE,EAAE,CAAC,IAAIsE,EAAEtE,EAAEoE,GAAyB,GAAtBC,EAAE,MAAMpE,EAAEA,EAAEmE,QAAG,EAAUpE,EAAEL,eAAeyE,IAAIE,IAAID,IAAI,MAAMC,GAAG,MAAMD,GAAG,GAAG,UAAUD,EAAE,GAAGC,EAAE,CAAC,IAAIlE,KAAKkE,GAAGA,EAAE1E,eAAeQ,IAAImE,GAAGA,EAAE3E,eAAeQ,KAAKzB,IAAIA,EAAE,CAAC,GAAGA,EAAEyB,GAAG,IAAI,IAAIA,KAAKmE,EAAEA,EAAE3E,eAAeQ,IAAIkE,EAAElE,KAAKmE,EAAEnE,KAAKzB,IAAIA,EAAE,CAAC,GAAGA,EAAEyB,GAAGmE,EAAEnE,GAAG,MAAMzB,IAAIwB,IAAIA,EAAE,IAAIA,EAAEyO,KAAKvK,EACpf1F,IAAIA,EAAE4F,MAAM,4BAA4BF,GAAGE,EAAEA,EAAEA,EAAE4kB,YAAO,EAAO7kB,EAAEA,EAAEA,EAAE6kB,YAAO,EAAO,MAAM5kB,GAAGD,IAAIC,IAAIpE,EAAEA,GAAG,IAAIyO,KAAKvK,EAAEE,IAAI,aAAaF,EAAE,iBAAkBE,GAAG,iBAAkBA,IAAIpE,EAAEA,GAAG,IAAIyO,KAAKvK,EAAE,GAAGE,GAAG,mCAAmCF,GAAG,6BAA6BA,IAAIpF,EAAGW,eAAeyE,IAAI,MAAME,GAAG,aAAaF,GAAGuiB,GAAE,SAASnoB,GAAG0B,GAAGmE,IAAIC,IAAIpE,EAAE,MAAMA,EAAEA,GAAG,IAAIyO,KAAKvK,EAAEE,GAAG,CAAC5F,IAAIwB,EAAEA,GAAG,IAAIyO,KAAK,QAAQjQ,GAAG,IAAI0F,EAAElE,GAAKzB,EAAEyxB,YAAY9rB,KAAE3F,EAAE0R,OAAO,EAAC,CAAC,EAAEguB,GAAG,SAAS3/B,EAAEC,EAAEC,EAAEsB,GAAGtB,IAAIsB,IAAIvB,EAAE0R,OAAO,EAAE,EAkBlb,IAAIywB,IAAG,EAAGC,IAAE,EAAGC,GAAG,mBAAoBC,QAAQA,QAAQhiC,IAAIiiC,GAAE,KAAK,SAASC,GAAGziC,EAAEC,GAAG,IAAIC,EAAEF,EAAEg1B,IAAI,GAAG,OAAO90B,EAAE,GAAG,mBAAoBA,EAAE,IAAIA,EAAE,KAAK,CAAC,MAAMsB,GAAGkhC,GAAE1iC,EAAEC,EAAEuB,EAAE,MAAMtB,EAAEiS,QAAQ,IAAI,CAAC,SAASwwB,GAAG3iC,EAAEC,EAAEC,GAAG,IAAIA,GAAG,CAAC,MAAMsB,GAAGkhC,GAAE1iC,EAAEC,EAAEuB,EAAE,CAAC,CAAC,IAAIohC,IAAG,EAIxR,SAASC,GAAG7iC,EAAEC,EAAEC,GAAG,IAAIsB,EAAEvB,EAAEyxB,YAAyC,GAAG,QAAhClwB,EAAE,OAAOA,EAAEA,EAAEk4B,WAAW,MAAiB,CAAC,IAAIj4B,EAAED,EAAEA,EAAE0vB,KAAK,EAAE,CAAC,IAAIzvB,EAAE0E,IAAInG,KAAKA,EAAE,CAAC,IAAI0B,EAAED,EAAEw4B,QAAQx4B,EAAEw4B,aAAQ,OAAO,IAASv4B,GAAGihC,GAAG1iC,EAAEC,EAAEwB,EAAE,CAACD,EAAEA,EAAEyvB,IAAI,OAAOzvB,IAAID,EAAE,CAAC,CAAC,SAASshC,GAAG9iC,EAAEC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAEyxB,aAAuBzxB,EAAEy5B,WAAW,MAAiB,CAAC,IAAIx5B,EAAED,EAAEA,EAAEixB,KAAK,EAAE,CAAC,IAAIhxB,EAAEiG,IAAInG,KAAKA,EAAE,CAAC,IAAIwB,EAAEtB,EAAE85B,OAAO95B,EAAE+5B,QAAQz4B,GAAG,CAACtB,EAAEA,EAAEgxB,IAAI,OAAOhxB,IAAID,EAAE,CAAC,CAAC,SAAS8iC,GAAG/iC,GAAG,IAAIC,EAAED,EAAEg1B,IAAI,GAAG,OAAO/0B,EAAE,CAAC,IAAIC,EAAEF,EAAEgQ,UAAiBhQ,EAAEmG,IAA8BnG,EAAEE,EAAE,mBAAoBD,EAAEA,EAAED,GAAGC,EAAEkS,QAAQnS,CAAC,CAAC,CAClf,SAASgjC,GAAGhjC,GAAG,IAAIC,EAAED,EAAEyR,UAAU,OAAOxR,IAAID,EAAEyR,UAAU,KAAKuxB,GAAG/iC,IAAID,EAAEiS,MAAM,KAAKjS,EAAE+uB,UAAU,KAAK/uB,EAAEkS,QAAQ,KAAK,IAAIlS,EAAEmG,KAAoB,QAAdlG,EAAED,EAAEgQ,oBAA4B/P,EAAE2rB,WAAW3rB,EAAE4rB,WAAW5rB,EAAEmoB,WAAWnoB,EAAE6rB,WAAW7rB,EAAE8rB,KAAM/rB,EAAEgQ,UAAU,KAAKhQ,EAAE0R,OAAO,KAAK1R,EAAE2wB,aAAa,KAAK3wB,EAAE0vB,cAAc,KAAK1vB,EAAE6R,cAAc,KAAK7R,EAAEivB,aAAa,KAAKjvB,EAAEgQ,UAAU,KAAKhQ,EAAE0xB,YAAY,IAAI,CAAC,SAASuR,GAAGjjC,GAAG,OAAO,IAAIA,EAAEmG,KAAK,IAAInG,EAAEmG,KAAK,IAAInG,EAAEmG,GAAG,CACna,SAAS+8B,GAAGljC,GAAGA,EAAE,OAAO,CAAC,KAAK,OAAOA,EAAEkS,SAAS,CAAC,GAAG,OAAOlS,EAAE0R,QAAQuxB,GAAGjjC,EAAE0R,QAAQ,OAAO,KAAK1R,EAAEA,EAAE0R,MAAM,CAA2B,IAA1B1R,EAAEkS,QAAQR,OAAO1R,EAAE0R,OAAW1R,EAAEA,EAAEkS,QAAQ,IAAIlS,EAAEmG,KAAK,IAAInG,EAAEmG,KAAK,KAAKnG,EAAEmG,KAAK,CAAC,GAAW,EAARnG,EAAE2R,MAAQ,SAAS3R,EAAE,GAAG,OAAOA,EAAEiS,OAAO,IAAIjS,EAAEmG,IAAI,SAASnG,EAAOA,EAAEiS,MAAMP,OAAO1R,EAAEA,EAAEA,EAAEiS,KAAK,CAAC,KAAa,EAARjS,EAAE2R,OAAS,OAAO3R,EAAEgQ,SAAS,CAAC,CACzT,SAASmzB,GAAGnjC,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEmG,IAAI,GAAG,IAAI3E,GAAG,IAAIA,EAAExB,EAAEA,EAAEgQ,UAAU/P,EAAE,IAAIC,EAAEwK,SAASxK,EAAEwP,WAAW0zB,aAAapjC,EAAEC,GAAGC,EAAEkjC,aAAapjC,EAAEC,IAAI,IAAIC,EAAEwK,UAAUzK,EAAEC,EAAEwP,YAAa0zB,aAAapjC,EAAEE,IAAKD,EAAEC,GAAImK,YAAYrK,GAA4B,OAAxBE,EAAEA,EAAEmjC,sBAA0C,OAAOpjC,EAAE0hC,UAAU1hC,EAAE0hC,QAAQrX,UAAU,GAAG,IAAI9oB,GAAc,QAAVxB,EAAEA,EAAEiS,OAAgB,IAAIkxB,GAAGnjC,EAAEC,EAAEC,GAAGF,EAAEA,EAAEkS,QAAQ,OAAOlS,GAAGmjC,GAAGnjC,EAAEC,EAAEC,GAAGF,EAAEA,EAAEkS,OAAO,CAC1X,SAASoxB,GAAGtjC,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEmG,IAAI,GAAG,IAAI3E,GAAG,IAAIA,EAAExB,EAAEA,EAAEgQ,UAAU/P,EAAEC,EAAEkjC,aAAapjC,EAAEC,GAAGC,EAAEmK,YAAYrK,QAAQ,GAAG,IAAIwB,GAAc,QAAVxB,EAAEA,EAAEiS,OAAgB,IAAIqxB,GAAGtjC,EAAEC,EAAEC,GAAGF,EAAEA,EAAEkS,QAAQ,OAAOlS,GAAGsjC,GAAGtjC,EAAEC,EAAEC,GAAGF,EAAEA,EAAEkS,OAAO,CAAC,IAAIqxB,GAAE,KAAKC,IAAG,EAAG,SAASC,GAAGzjC,EAAEC,EAAEC,GAAG,IAAIA,EAAEA,EAAE+R,MAAM,OAAO/R,GAAGwjC,GAAG1jC,EAAEC,EAAEC,GAAGA,EAAEA,EAAEgS,OAAO,CACnR,SAASwxB,GAAG1jC,EAAEC,EAAEC,GAAG,GAAG2T,IAAI,mBAAoBA,GAAG8vB,qBAAqB,IAAI9vB,GAAG8vB,qBAAqB/vB,GAAG1T,EAAE,CAAC,MAAM2F,GAAG,CAAC,OAAO3F,EAAEiG,KAAK,KAAK,EAAEk8B,IAAGI,GAAGviC,EAAED,GAAG,KAAK,EAAE,IAAIuB,EAAE+hC,GAAE9hC,EAAE+hC,GAAGD,GAAE,KAAKE,GAAGzjC,EAAEC,EAAEC,GAAOsjC,GAAG/hC,EAAE,QAAT8hC,GAAE/hC,KAAkBgiC,IAAIxjC,EAAEujC,GAAErjC,EAAEA,EAAE8P,UAAU,IAAIhQ,EAAE0K,SAAS1K,EAAE0P,WAAWtF,YAAYlK,GAAGF,EAAEoK,YAAYlK,IAAIqjC,GAAEn5B,YAAYlK,EAAE8P,YAAY,MAAM,KAAK,GAAG,OAAOuzB,KAAIC,IAAIxjC,EAAEujC,GAAErjC,EAAEA,EAAE8P,UAAU,IAAIhQ,EAAE0K,SAAS6gB,GAAGvrB,EAAE0P,WAAWxP,GAAG,IAAIF,EAAE0K,UAAU6gB,GAAGvrB,EAAEE,GAAGyX,GAAG3X,IAAIurB,GAAGgY,GAAErjC,EAAE8P,YAAY,MAAM,KAAK,EAAExO,EAAE+hC,GAAE9hC,EAAE+hC,GAAGD,GAAErjC,EAAE8P,UAAUmH,cAAcqsB,IAAG,EAClfC,GAAGzjC,EAAEC,EAAEC,GAAGqjC,GAAE/hC,EAAEgiC,GAAG/hC,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI4gC,IAAoB,QAAhB7gC,EAAEtB,EAAEwxB,cAAsC,QAAflwB,EAAEA,EAAEk4B,YAAsB,CAACj4B,EAAED,EAAEA,EAAE0vB,KAAK,EAAE,CAAC,IAAIxvB,EAAED,EAAEE,EAAED,EAAEu4B,QAAQv4B,EAAEA,EAAEyE,SAAI,IAASxE,IAAW,EAAFD,GAAsB,EAAFA,IAAfihC,GAAGziC,EAAED,EAAE0B,GAAyBF,EAAEA,EAAEyvB,IAAI,OAAOzvB,IAAID,EAAE,CAACiiC,GAAGzjC,EAAEC,EAAEC,GAAG,MAAM,KAAK,EAAE,IAAImiC,KAAII,GAAGviC,EAAED,GAAiB,mBAAduB,EAAEtB,EAAE8P,WAAgC4zB,sBAAsB,IAAIpiC,EAAEizB,MAAMv0B,EAAEwvB,cAAcluB,EAAE2yB,MAAMj0B,EAAE2R,cAAcrQ,EAAEoiC,sBAAsB,CAAC,MAAM/9B,GAAG68B,GAAExiC,EAAED,EAAE4F,EAAE,CAAC49B,GAAGzjC,EAAEC,EAAEC,GAAG,MAAM,KAAK,GAAGujC,GAAGzjC,EAAEC,EAAEC,GAAG,MAAM,KAAK,GAAU,EAAPA,EAAEovB,MAAQ+S,IAAG7gC,EAAE6gC,KAAI,OAChfniC,EAAE2R,cAAc4xB,GAAGzjC,EAAEC,EAAEC,GAAGmiC,GAAE7gC,GAAGiiC,GAAGzjC,EAAEC,EAAEC,GAAG,MAAM,QAAQujC,GAAGzjC,EAAEC,EAAEC,GAAG,CAAC,SAAS2jC,GAAG7jC,GAAG,IAAIC,EAAED,EAAE0xB,YAAY,GAAG,OAAOzxB,EAAE,CAACD,EAAE0xB,YAAY,KAAK,IAAIxxB,EAAEF,EAAEgQ,UAAU,OAAO9P,IAAIA,EAAEF,EAAEgQ,UAAU,IAAIsyB,IAAIriC,EAAEsC,SAAQ,SAAStC,GAAG,IAAIuB,EAAEsiC,GAAGnb,KAAK,KAAK3oB,EAAEC,GAAGC,EAAEmoB,IAAIpoB,KAAKC,EAAES,IAAIV,GAAGA,EAAEmrB,KAAK5pB,EAAEA,GAAG,GAAE,CAAC,CACzQ,SAASuiC,GAAG/jC,EAAEC,GAAG,IAAIC,EAAED,EAAE8uB,UAAU,GAAG,OAAO7uB,EAAE,IAAI,IAAIsB,EAAE,EAAEA,EAAEtB,EAAEE,OAAOoB,IAAI,CAAC,IAAIC,EAAEvB,EAAEsB,GAAG,IAAI,IAAIE,EAAE1B,EAAE2B,EAAE1B,EAAE4F,EAAElE,EAAE3B,EAAE,KAAK,OAAO6F,GAAG,CAAC,OAAOA,EAAEM,KAAK,KAAK,EAAEo9B,GAAE19B,EAAEmK,UAAUwzB,IAAG,EAAG,MAAMxjC,EAAE,KAAK,EAA4C,KAAK,EAAEujC,GAAE19B,EAAEmK,UAAUmH,cAAcqsB,IAAG,EAAG,MAAMxjC,EAAE6F,EAAEA,EAAE6L,MAAM,CAAC,GAAG,OAAO6xB,GAAE,MAAMt+B,MAAMlF,EAAE,MAAM2jC,GAAGhiC,EAAEC,EAAEF,GAAG8hC,GAAE,KAAKC,IAAG,EAAG,IAAI19B,EAAErE,EAAEgQ,UAAU,OAAO3L,IAAIA,EAAE4L,OAAO,MAAMjQ,EAAEiQ,OAAO,IAAI,CAAC,MAAM9L,GAAG88B,GAAEjhC,EAAExB,EAAE2F,EAAE,CAAC,CAAC,GAAkB,MAAf3F,EAAEwgC,aAAmB,IAAIxgC,EAAEA,EAAEgS,MAAM,OAAOhS,GAAG+jC,GAAG/jC,EAAED,GAAGC,EAAEA,EAAEiS,OAAO,CACje,SAAS8xB,GAAGhkC,EAAEC,GAAG,IAAIC,EAAEF,EAAEyR,UAAUjQ,EAAExB,EAAE2R,MAAM,OAAO3R,EAAEmG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAiB,GAAd49B,GAAG9jC,EAAED,GAAGikC,GAAGjkC,GAAQ,EAAFwB,EAAI,CAAC,IAAIqhC,GAAG,EAAE7iC,EAAEA,EAAE0R,QAAQoxB,GAAG,EAAE9iC,EAAE,CAAC,MAAM+oB,GAAG2Z,GAAE1iC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,IAAI8Z,GAAG,EAAE7iC,EAAEA,EAAE0R,OAAO,CAAC,MAAMqX,GAAG2Z,GAAE1iC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEgb,GAAG9jC,EAAED,GAAGikC,GAAGjkC,GAAK,IAAFwB,GAAO,OAAOtB,GAAGuiC,GAAGviC,EAAEA,EAAEwR,QAAQ,MAAM,KAAK,EAAgD,GAA9CqyB,GAAG9jC,EAAED,GAAGikC,GAAGjkC,GAAK,IAAFwB,GAAO,OAAOtB,GAAGuiC,GAAGviC,EAAEA,EAAEwR,QAAmB,GAAR1R,EAAE2R,MAAS,CAAC,IAAIlQ,EAAEzB,EAAEgQ,UAAU,IAAIxF,GAAG/I,EAAE,GAAG,CAAC,MAAMsnB,GAAG2Z,GAAE1iC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,CAAC,GAAK,EAAFvnB,GAAoB,OAAdC,EAAEzB,EAAEgQ,WAAmB,CAAC,IAAItO,EAAE1B,EAAE0vB,cAAc/tB,EAAE,OAAOzB,EAAEA,EAAEwvB,cAAchuB,EAAEmE,EAAE7F,EAAEkC,KAAK4D,EAAE9F,EAAE0xB,YACje,GAAnB1xB,EAAE0xB,YAAY,KAAQ,OAAO5rB,EAAE,IAAI,UAAUD,GAAG,UAAUnE,EAAEQ,MAAM,MAAMR,EAAEuE,MAAMsC,EAAG9G,EAAEC,GAAGyN,GAAGtJ,EAAElE,GAAG,IAAIiE,EAAEuJ,GAAGtJ,EAAEnE,GAAG,IAAIC,EAAE,EAAEA,EAAEmE,EAAE1F,OAAOuB,GAAG,EAAE,CAAC,IAAIqP,EAAElL,EAAEnE,GAAGixB,EAAE9sB,EAAEnE,EAAE,GAAG,UAAUqP,EAAEtD,GAAGjM,EAAEmxB,GAAG,4BAA4B5hB,EAAElH,GAAGrI,EAAEmxB,GAAG,aAAa5hB,EAAExG,GAAG/I,EAAEmxB,GAAGhwB,EAAGnB,EAAEuP,EAAE4hB,EAAEhtB,EAAE,CAAC,OAAOC,GAAG,IAAK,QAAQ2C,EAAG/G,EAAEC,GAAG,MAAM,IAAK,WAAW8H,GAAG/H,EAAEC,GAAG,MAAM,IAAK,SAAS,IAAImxB,EAAEpxB,EAAEyG,cAAcq5B,YAAY9/B,EAAEyG,cAAcq5B,cAAc7/B,EAAE8/B,SAAS,IAAI1O,EAAEpxB,EAAEiG,MAAM,MAAMmrB,EAAE/pB,GAAGtH,IAAIC,EAAE8/B,SAAS1O,GAAE,GAAID,MAAMnxB,EAAE8/B,WAAW,MAAM9/B,EAAEuG,aAAac,GAAGtH,IAAIC,EAAE8/B,SACnf9/B,EAAEuG,cAAa,GAAIc,GAAGtH,IAAIC,EAAE8/B,SAAS9/B,EAAE8/B,SAAS,GAAG,IAAG,IAAK//B,EAAEoqB,IAAInqB,CAAC,CAAC,MAAMqnB,GAAG2Z,GAAE1iC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAdgb,GAAG9jC,EAAED,GAAGikC,GAAGjkC,GAAQ,EAAFwB,EAAI,CAAC,GAAG,OAAOxB,EAAEgQ,UAAU,MAAM/K,MAAMlF,EAAE,MAAM0B,EAAEzB,EAAEgQ,UAAUtO,EAAE1B,EAAE0vB,cAAc,IAAIjuB,EAAEkJ,UAAUjJ,CAAC,CAAC,MAAMqnB,GAAG2Z,GAAE1iC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAdgb,GAAG9jC,EAAED,GAAGikC,GAAGjkC,GAAQ,EAAFwB,GAAK,OAAOtB,GAAGA,EAAE2R,cAAcqF,aAAa,IAAIS,GAAG1X,EAAEkX,cAAc,CAAC,MAAM4R,GAAG2Z,GAAE1iC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,MAAM,KAAK,EAG4G,QAAQgb,GAAG9jC,EACnfD,GAAGikC,GAAGjkC,SAJ4Y,KAAK,GAAG+jC,GAAG9jC,EAAED,GAAGikC,GAAGjkC,GAAqB,MAAlByB,EAAEzB,EAAEiS,OAAQN,QAAajQ,EAAE,OAAOD,EAAEoQ,cAAcpQ,EAAEuO,UAAUk0B,SAASxiC,GAAGA,GAClf,OAAOD,EAAEgQ,WAAW,OAAOhQ,EAAEgQ,UAAUI,gBAAgBsyB,GAAGrxB,OAAQ,EAAFtR,GAAKqiC,GAAG7jC,GAAG,MAAM,KAAK,GAAsF,GAAnFgR,EAAE,OAAO9Q,GAAG,OAAOA,EAAE2R,cAAqB,EAAP7R,EAAEsvB,MAAQ+S,IAAGz8B,EAAEy8B,KAAIrxB,EAAE+yB,GAAG9jC,EAAED,GAAGqiC,GAAEz8B,GAAGm+B,GAAG9jC,EAAED,GAAGikC,GAAGjkC,GAAQ,KAAFwB,EAAO,CAA0B,GAAzBoE,EAAE,OAAO5F,EAAE6R,eAAkB7R,EAAEgQ,UAAUk0B,SAASt+B,KAAKoL,GAAe,EAAPhR,EAAEsvB,KAAQ,IAAIkT,GAAExiC,EAAEgR,EAAEhR,EAAEiS,MAAM,OAAOjB,GAAG,CAAC,IAAI4hB,EAAE4P,GAAExxB,EAAE,OAAOwxB,IAAG,CAAe,OAAV1P,GAAJD,EAAE2P,IAAMvwB,MAAa4gB,EAAE1sB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG08B,GAAG,EAAEhQ,EAAEA,EAAEnhB,QAAQ,MAAM,KAAK,EAAE+wB,GAAG5P,EAAEA,EAAEnhB,QAAQ,IAAIoX,EAAE+J,EAAE7iB,UAAU,GAAG,mBAAoB8Y,EAAE8a,qBAAqB,CAACpiC,EAAEqxB,EAAE3yB,EAAE2yB,EAAEnhB,OAAO,IAAIzR,EAAEuB,EAAEsnB,EAAE2L,MACpfx0B,EAAEyvB,cAAc5G,EAAEqL,MAAMl0B,EAAE4R,cAAciX,EAAE8a,sBAAsB,CAAC,MAAM7a,GAAG2Z,GAAElhC,EAAEtB,EAAE6oB,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE0Z,GAAG5P,EAAEA,EAAEnhB,QAAQ,MAAM,KAAK,GAAG,GAAG,OAAOmhB,EAAEhhB,cAAc,CAACuyB,GAAGxR,GAAG,QAAQ,EAAE,OAAOE,GAAGA,EAAEphB,OAAOmhB,EAAE2P,GAAE1P,GAAGsR,GAAGxR,EAAE,CAAC5hB,EAAEA,EAAEkB,OAAO,CAAClS,EAAE,IAAIgR,EAAE,KAAK4hB,EAAE5yB,IAAI,CAAC,GAAG,IAAI4yB,EAAEzsB,KAAK,GAAG,OAAO6K,EAAE,CAACA,EAAE4hB,EAAE,IAAInxB,EAAEmxB,EAAE5iB,UAAUpK,EAAa,mBAAVlE,EAAED,EAAEkM,OAA4BE,YAAYnM,EAAEmM,YAAY,UAAU,OAAO,aAAanM,EAAE2iC,QAAQ,QAASx+B,EAAE+sB,EAAE5iB,UAAkCrO,EAAE,OAA1BmE,EAAE8sB,EAAElD,cAAc/hB,QAA8B7H,EAAE3E,eAAe,WAAW2E,EAAEu+B,QAAQ,KAAKx+B,EAAE8H,MAAM02B,QACzf52B,GAAG,UAAU9L,GAAG,CAAC,MAAMonB,GAAG2Z,GAAE1iC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,OAAO,GAAG,IAAI6J,EAAEzsB,KAAK,GAAG,OAAO6K,EAAE,IAAI4hB,EAAE5iB,UAAUrF,UAAU/E,EAAE,GAAGgtB,EAAElD,aAAa,CAAC,MAAM3G,GAAG2Z,GAAE1iC,EAAEA,EAAE0R,OAAOqX,EAAE,OAAO,IAAI,KAAK6J,EAAEzsB,KAAK,KAAKysB,EAAEzsB,KAAK,OAAOysB,EAAE/gB,eAAe+gB,IAAI5yB,IAAI,OAAO4yB,EAAE3gB,MAAM,CAAC2gB,EAAE3gB,MAAMP,OAAOkhB,EAAEA,EAAEA,EAAE3gB,MAAM,QAAQ,CAAC,GAAG2gB,IAAI5yB,EAAE,MAAMA,EAAE,KAAK,OAAO4yB,EAAE1gB,SAAS,CAAC,GAAG,OAAO0gB,EAAElhB,QAAQkhB,EAAElhB,SAAS1R,EAAE,MAAMA,EAAEgR,IAAI4hB,IAAI5hB,EAAE,MAAM4hB,EAAEA,EAAElhB,MAAM,CAACV,IAAI4hB,IAAI5hB,EAAE,MAAM4hB,EAAE1gB,QAAQR,OAAOkhB,EAAElhB,OAAOkhB,EAAEA,EAAE1gB,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG6xB,GAAG9jC,EAAED,GAAGikC,GAAGjkC,GAAK,EAAFwB,GAAKqiC,GAAG7jC,GAAS,KAAK,IACtd,CAAC,SAASikC,GAAGjkC,GAAG,IAAIC,EAAED,EAAE2R,MAAM,GAAK,EAAF1R,EAAI,CAAC,IAAID,EAAE,CAAC,IAAI,IAAIE,EAAEF,EAAE0R,OAAO,OAAOxR,GAAG,CAAC,GAAG+iC,GAAG/iC,GAAG,CAAC,IAAIsB,EAAEtB,EAAE,MAAMF,CAAC,CAACE,EAAEA,EAAEwR,MAAM,CAAC,MAAMzM,MAAMlF,EAAE,KAAM,CAAC,OAAOyB,EAAE2E,KAAK,KAAK,EAAE,IAAI1E,EAAED,EAAEwO,UAAkB,GAARxO,EAAEmQ,QAAWnH,GAAG/I,EAAE,IAAID,EAAEmQ,QAAQ,IAAgB2xB,GAAGtjC,EAATkjC,GAAGljC,GAAUyB,GAAG,MAAM,KAAK,EAAE,KAAK,EAAE,IAAIE,EAAEH,EAAEwO,UAAUmH,cAAsBgsB,GAAGnjC,EAATkjC,GAAGljC,GAAU2B,GAAG,MAAM,QAAQ,MAAMsD,MAAMlF,EAAE,MAAO,CAAC,MAAM+F,GAAG48B,GAAE1iC,EAAEA,EAAE0R,OAAO5L,EAAE,CAAC9F,EAAE2R,QAAQ,CAAC,CAAG,KAAF1R,IAASD,EAAE2R,QAAQ,KAAK,CAAC,SAAS2yB,GAAGtkC,EAAEC,EAAEC,GAAGsiC,GAAExiC,EAAEukC,GAAGvkC,EAAEC,EAAEC,EAAE,CACvb,SAASqkC,GAAGvkC,EAAEC,EAAEC,GAAG,IAAI,IAAIsB,KAAc,EAAPxB,EAAEsvB,MAAQ,OAAOkT,IAAG,CAAC,IAAI/gC,EAAE+gC,GAAE9gC,EAAED,EAAEwQ,MAAM,GAAG,KAAKxQ,EAAE0E,KAAK3E,EAAE,CAAC,IAAIG,EAAE,OAAOF,EAAEoQ,eAAeuwB,GAAG,IAAIzgC,EAAE,CAAC,IAAIkE,EAAEpE,EAAEgQ,UAAU3L,EAAE,OAAOD,GAAG,OAAOA,EAAEgM,eAAewwB,GAAEx8B,EAAEu8B,GAAG,IAAIx8B,EAAEy8B,GAAO,GAALD,GAAGzgC,GAAM0gC,GAAEv8B,KAAKF,EAAE,IAAI48B,GAAE/gC,EAAE,OAAO+gC,IAAO18B,GAAJnE,EAAE6gC,IAAMvwB,MAAM,KAAKtQ,EAAEwE,KAAK,OAAOxE,EAAEkQ,cAAc2yB,GAAG/iC,GAAG,OAAOqE,GAAGA,EAAE4L,OAAO/P,EAAE6gC,GAAE18B,GAAG0+B,GAAG/iC,GAAG,KAAK,OAAOC,GAAG8gC,GAAE9gC,EAAE6iC,GAAG7iC,EAAEzB,EAAEC,GAAGwB,EAAEA,EAAEwQ,QAAQswB,GAAE/gC,EAAE2gC,GAAGv8B,EAAEw8B,GAAEz8B,CAAC,CAAC6+B,GAAGzkC,EAAM,MAA0B,KAAfyB,EAAEg/B,cAAoB,OAAO/+B,GAAGA,EAAEgQ,OAAOjQ,EAAE+gC,GAAE9gC,GAAG+iC,GAAGzkC,EAAM,CAAC,CACvc,SAASykC,GAAGzkC,GAAG,KAAK,OAAOwiC,IAAG,CAAC,IAAIviC,EAAEuiC,GAAE,GAAgB,KAARviC,EAAE0R,MAAY,CAAC,IAAIzR,EAAED,EAAEwR,UAAU,IAAI,GAAgB,KAARxR,EAAE0R,MAAY,OAAO1R,EAAEkG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGk8B,IAAGS,GAAG,EAAE7iC,GAAG,MAAM,KAAK,EAAE,IAAIuB,EAAEvB,EAAE+P,UAAU,GAAW,EAAR/P,EAAE0R,QAAU0wB,GAAE,GAAG,OAAOniC,EAAEsB,EAAEszB,wBAAwB,CAAC,IAAIrzB,EAAExB,EAAE6uB,cAAc7uB,EAAEiC,KAAKhC,EAAEwvB,cAAcK,GAAG9vB,EAAEiC,KAAKhC,EAAEwvB,eAAeluB,EAAE29B,mBAAmB19B,EAAEvB,EAAE2R,cAAcrQ,EAAEkjC,oCAAoC,CAAC,IAAIhjC,EAAEzB,EAAEyxB,YAAY,OAAOhwB,GAAGsxB,GAAG/yB,EAAEyB,EAAEF,GAAG,MAAM,KAAK,EAAE,IAAIG,EAAE1B,EAAEyxB,YAAY,GAAG,OAAO/vB,EAAE,CAAQ,GAAPzB,EAAE,KAAQ,OAAOD,EAAEgS,MAAM,OAAOhS,EAAEgS,MAAM9L,KAAK,KAAK,EACvf,KAAK,EAAEjG,EAAED,EAAEgS,MAAMjC,UAAUgjB,GAAG/yB,EAAE0B,EAAEzB,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI2F,EAAE5F,EAAE+P,UAAU,GAAG,OAAO9P,GAAW,EAARD,EAAE0R,MAAQ,CAACzR,EAAE2F,EAAE,IAAIC,EAAE7F,EAAEyvB,cAAc,OAAOzvB,EAAEiC,MAAM,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW4D,EAAEg8B,WAAW5hC,EAAEgmB,QAAQ,MAAM,IAAK,MAAMpgB,EAAE6+B,MAAMzkC,EAAEykC,IAAI7+B,EAAE6+B,KAAK,CAAC,MAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAyJ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAhM,KAAK,GAAG,GAAG,OAAO1kC,EAAE4R,cAAc,CAAC,IAAIjM,EAAE3F,EAAEwR,UAAU,GAAG,OAAO7L,EAAE,CAAC,IAAIoL,EAAEpL,EAAEiM,cAAc,GAAG,OAAOb,EAAE,CAAC,IAAI4hB,EAAE5hB,EAAEc,WAAW,OAAO8gB,GAAGjb,GAAGib,EAAE,CAAC,CAAC,CAAC,MAC5c,QAAQ,MAAM3tB,MAAMlF,EAAE,MAAOsiC,IAAW,IAARpiC,EAAE0R,OAAWoxB,GAAG9iC,EAAE,CAAC,MAAM4yB,GAAG6P,GAAEziC,EAAEA,EAAEyR,OAAOmhB,EAAE,CAAC,CAAC,GAAG5yB,IAAID,EAAE,CAACwiC,GAAE,KAAK,KAAK,CAAa,GAAG,QAAftiC,EAAED,EAAEiS,SAAoB,CAAChS,EAAEwR,OAAOzR,EAAEyR,OAAO8wB,GAAEtiC,EAAE,KAAK,CAACsiC,GAAEviC,EAAEyR,MAAM,CAAC,CAAC,SAAS0yB,GAAGpkC,GAAG,KAAK,OAAOwiC,IAAG,CAAC,IAAIviC,EAAEuiC,GAAE,GAAGviC,IAAID,EAAE,CAACwiC,GAAE,KAAK,KAAK,CAAC,IAAItiC,EAAED,EAAEiS,QAAQ,GAAG,OAAOhS,EAAE,CAACA,EAAEwR,OAAOzR,EAAEyR,OAAO8wB,GAAEtiC,EAAE,KAAK,CAACsiC,GAAEviC,EAAEyR,MAAM,CAAC,CACvS,SAAS8yB,GAAGxkC,GAAG,KAAK,OAAOwiC,IAAG,CAAC,IAAIviC,EAAEuiC,GAAE,IAAI,OAAOviC,EAAEkG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAIjG,EAAED,EAAEyR,OAAO,IAAIoxB,GAAG,EAAE7iC,EAAE,CAAC,MAAM6F,GAAG48B,GAAEziC,EAAEC,EAAE4F,EAAE,CAAC,MAAM,KAAK,EAAE,IAAItE,EAAEvB,EAAE+P,UAAU,GAAG,mBAAoBxO,EAAEszB,kBAAkB,CAAC,IAAIrzB,EAAExB,EAAEyR,OAAO,IAAIlQ,EAAEszB,mBAAmB,CAAC,MAAMhvB,GAAG48B,GAAEziC,EAAEwB,EAAEqE,EAAE,CAAC,CAAC,IAAIpE,EAAEzB,EAAEyR,OAAO,IAAIqxB,GAAG9iC,EAAE,CAAC,MAAM6F,GAAG48B,GAAEziC,EAAEyB,EAAEoE,EAAE,CAAC,MAAM,KAAK,EAAE,IAAInE,EAAE1B,EAAEyR,OAAO,IAAIqxB,GAAG9iC,EAAE,CAAC,MAAM6F,GAAG48B,GAAEziC,EAAE0B,EAAEmE,EAAE,EAAE,CAAC,MAAMA,GAAG48B,GAAEziC,EAAEA,EAAEyR,OAAO5L,EAAE,CAAC,GAAG7F,IAAID,EAAE,CAACwiC,GAAE,KAAK,KAAK,CAAC,IAAI38B,EAAE5F,EAAEiS,QAAQ,GAAG,OAAOrM,EAAE,CAACA,EAAE6L,OAAOzR,EAAEyR,OAAO8wB,GAAE38B,EAAE,KAAK,CAAC28B,GAAEviC,EAAEyR,MAAM,CAAC,CAC7d,IAwBkNkzB,GAxB9MC,GAAG9wB,KAAK+wB,KAAKC,GAAGthC,EAAGyzB,uBAAuB8N,GAAGvhC,EAAGs6B,kBAAkBkH,GAAGxhC,EAAGoU,wBAAwB2a,GAAE,EAAEgH,GAAE,KAAK0L,GAAE,KAAKC,GAAE,EAAEtG,GAAG,EAAED,GAAG1S,GAAG,GAAG8V,GAAE,EAAEoD,GAAG,KAAKrS,GAAG,EAAEsS,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,GAAG,KAAKrB,GAAG,EAAElC,GAAGwD,IAASC,GAAG,KAAKxI,IAAG,EAAGC,GAAG,KAAKI,GAAG,KAAKoI,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAE,SAASxS,KAAI,OAAc,EAAFjB,GAAK1f,MAAK,IAAIkzB,GAAGA,GAAGA,GAAGlzB,IAAG,CAChU,SAAS4gB,GAAG1zB,GAAG,OAAe,EAAPA,EAAEsvB,KAA2B,EAAFkD,IAAM,IAAI2S,GAASA,IAAGA,GAAK,OAAOrV,GAAG9X,YAAkB,IAAIiuB,KAAKA,GAAGjxB,MAAMixB,IAAU,KAAPjmC,EAAEqV,IAAkBrV,EAAiBA,OAAE,KAAjBA,EAAEa,OAAOohB,OAAmB,GAAG1J,GAAGvY,EAAEkC,MAAhJ,CAA8J,CAAC,SAASyxB,GAAG3zB,EAAEC,EAAEC,EAAEsB,GAAG,GAAG,GAAGskC,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAK9gC,MAAMlF,EAAE,MAAMmV,GAAGlV,EAAEE,EAAEsB,GAAa,EAAFgxB,IAAMxyB,IAAIw5B,KAAEx5B,IAAIw5B,OAAW,EAAFhH,MAAO6S,IAAInlC,GAAG,IAAI8hC,IAAGkE,GAAGlmC,EAAEmlC,KAAIgB,GAAGnmC,EAAEwB,GAAG,IAAItB,GAAG,IAAIsyB,MAAe,EAAPvyB,EAAEqvB,QAAU2S,GAAGnvB,KAAI,IAAIya,IAAIG,MAAK,CAC1Y,SAASyY,GAAGnmC,EAAEC,GAAG,IAAIC,EAAEF,EAAEomC,cA5MzB,SAAYpmC,EAAEC,GAAG,IAAI,IAAIC,EAAEF,EAAE0U,eAAelT,EAAExB,EAAE2U,YAAYlT,EAAEzB,EAAEqmC,gBAAgB3kC,EAAE1B,EAAEyU,aAAa,EAAE/S,GAAG,CAAC,IAAIC,EAAE,GAAGmS,GAAGpS,GAAGmE,EAAE,GAAGlE,EAAEmE,EAAErE,EAAEE,IAAO,IAAImE,EAAWD,EAAE3F,KAAS2F,EAAErE,KAAGC,EAAEE,GAAGmT,GAAGjP,EAAE5F,IAAQ6F,GAAG7F,IAAID,EAAEsmC,cAAczgC,GAAGnE,IAAImE,CAAC,CAAC,CA4MnL0gC,CAAGvmC,EAAEC,GAAG,IAAIuB,EAAEgT,GAAGxU,EAAEA,IAAIw5B,GAAE2L,GAAE,GAAG,GAAG,IAAI3jC,EAAE,OAAOtB,GAAGsS,GAAGtS,GAAGF,EAAEomC,aAAa,KAAKpmC,EAAEwmC,iBAAiB,OAAO,GAAGvmC,EAAEuB,GAAGA,EAAExB,EAAEwmC,mBAAmBvmC,EAAE,CAAgB,GAAf,MAAMC,GAAGsS,GAAGtS,GAAM,IAAID,EAAE,IAAID,EAAEmG,IA7IsJ,SAAYnG,GAAGutB,IAAG,EAAGE,GAAGztB,EAAE,CA6I5KymC,CAAGC,GAAG/d,KAAK,KAAK3oB,IAAIytB,GAAGiZ,GAAG/d,KAAK,KAAK3oB,IAAIirB,IAAG,aAAkB,EAAFuH,KAAM9E,IAAI,IAAGxtB,EAAE,SAAS,CAAC,OAAOoV,GAAG9T,IAAI,KAAK,EAAEtB,EAAEgT,GAAG,MAAM,KAAK,EAAEhT,EAAEkT,GAAG,MAAM,KAAK,GAAwC,QAAQlT,EAAEoT,SAApC,KAAK,UAAUpT,EAAEwT,GAAsBxT,EAAEymC,GAAGzmC,EAAE0mC,GAAGje,KAAK,KAAK3oB,GAAG,CAACA,EAAEwmC,iBAAiBvmC,EAAED,EAAEomC,aAAalmC,CAAC,CAAC,CAC7c,SAAS0mC,GAAG5mC,EAAEC,GAAc,GAAX+lC,IAAI,EAAEC,GAAG,EAAY,EAAFzT,GAAK,MAAMvtB,MAAMlF,EAAE,MAAM,IAAIG,EAAEF,EAAEomC,aAAa,GAAGS,MAAM7mC,EAAEomC,eAAelmC,EAAE,OAAO,KAAK,IAAIsB,EAAEgT,GAAGxU,EAAEA,IAAIw5B,GAAE2L,GAAE,GAAG,GAAG,IAAI3jC,EAAE,OAAO,KAAK,GAAU,GAAFA,GAAYA,EAAExB,EAAEsmC,cAAermC,EAAEA,EAAE6mC,GAAG9mC,EAAEwB,OAAO,CAACvB,EAAEuB,EAAE,IAAIC,EAAE+wB,GAAEA,IAAG,EAAE,IAAI9wB,EAAEqlC,KAAgD,IAAxCvN,KAAIx5B,GAAGmlC,KAAIllC,IAAEylC,GAAG,KAAKzD,GAAGnvB,KAAI,IAAIk0B,GAAGhnC,EAAEC,UAAUgnC,KAAK,KAAK,CAAC,MAAMphC,GAAGqhC,GAAGlnC,EAAE6F,EAAE,CAAUwqB,KAAK0U,GAAG5yB,QAAQzQ,EAAE8wB,GAAE/wB,EAAE,OAAOyjC,GAAEjlC,EAAE,GAAGu5B,GAAE,KAAK2L,GAAE,EAAEllC,EAAE+hC,GAAE,CAAC,GAAG,IAAI/hC,EAAE,CAAyC,GAAxC,IAAIA,GAAY,KAARwB,EAAEsT,GAAG/U,MAAWwB,EAAEC,EAAExB,EAAEknC,GAAGnnC,EAAEyB,IAAQ,IAAIxB,EAAE,MAAMC,EAAEklC,GAAG4B,GAAGhnC,EAAE,GAAGkmC,GAAGlmC,EAAEwB,GAAG2kC,GAAGnmC,EAAE8S,MAAK5S,EAAE,GAAG,IAAID,EAAEimC,GAAGlmC,EAAEwB,OAChf,CAAuB,GAAtBC,EAAEzB,EAAEmS,QAAQV,YAAoB,GAAFjQ,GAGnC,SAAYxB,GAAG,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAW,MAARC,EAAE0R,MAAY,CAAC,IAAIzR,EAAED,EAAEyxB,YAAY,GAAG,OAAOxxB,GAAe,QAAXA,EAAEA,EAAEy5B,QAAiB,IAAI,IAAIn4B,EAAE,EAAEA,EAAEtB,EAAEE,OAAOoB,IAAI,CAAC,IAAIC,EAAEvB,EAAEsB,GAAGE,EAAED,EAAE43B,YAAY53B,EAAEA,EAAEkG,MAAM,IAAI,IAAI4b,GAAG7hB,IAAID,GAAG,OAAM,CAAE,CAAC,MAAME,GAAG,OAAM,CAAE,CAAC,CAAC,CAAW,GAAVzB,EAAED,EAAEgS,MAAwB,MAAfhS,EAAEwgC,cAAoB,OAAOvgC,EAAEA,EAAEwR,OAAOzR,EAAEA,EAAEC,MAAM,CAAC,GAAGD,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEiS,SAAS,CAAC,GAAG,OAAOjS,EAAEyR,QAAQzR,EAAEyR,SAAS1R,EAAE,OAAM,EAAGC,EAAEA,EAAEyR,MAAM,CAACzR,EAAEiS,QAAQR,OAAOzR,EAAEyR,OAAOzR,EAAEA,EAAEiS,OAAO,CAAC,CAAC,OAAM,CAAE,CAHvXk1B,CAAG3lC,KAAKxB,EAAE6mC,GAAG9mC,EAAEwB,GAAG,IAAIvB,IAAIyB,EAAEqT,GAAG/U,GAAG,IAAI0B,IAAIF,EAAEE,EAAEzB,EAAEknC,GAAGnnC,EAAE0B,KAAK,IAAIzB,IAAG,MAAMC,EAAEklC,GAAG4B,GAAGhnC,EAAE,GAAGkmC,GAAGlmC,EAAEwB,GAAG2kC,GAAGnmC,EAAE8S,MAAK5S,EAAqC,OAAnCF,EAAEqnC,aAAa5lC,EAAEzB,EAAEsnC,cAAc9lC,EAASvB,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMgF,MAAMlF,EAAE,MAAM,KAAK,EAC8B,KAAK,EAAEwnC,GAAGvnC,EAAEwlC,GAAGE,IAAI,MAD7B,KAAK,EAAU,GAARQ,GAAGlmC,EAAEwB,IAAS,UAAFA,KAAeA,GAAiB,IAAbvB,EAAEkkC,GAAG,IAAIrxB,MAAU,CAAC,GAAG,IAAI0B,GAAGxU,EAAE,GAAG,MAAyB,KAAnByB,EAAEzB,EAAE0U,gBAAqBlT,KAAKA,EAAE,CAACiyB,KAAIzzB,EAAE2U,aAAa3U,EAAE0U,eAAejT,EAAE,KAAK,CAACzB,EAAEwnC,cAAc7c,GAAG4c,GAAG5e,KAAK,KAAK3oB,EAAEwlC,GAAGE,IAAIzlC,GAAG,KAAK,CAACsnC,GAAGvnC,EAAEwlC,GAAGE,IAAI,MAAM,KAAK,EAAU,GAARQ,GAAGlmC,EAAEwB,IAAS,QAAFA,KAC9eA,EAAE,MAAqB,IAAfvB,EAAED,EAAEmV,WAAe1T,GAAG,EAAE,EAAED,GAAG,CAAC,IAAIG,EAAE,GAAGmS,GAAGtS,GAAGE,EAAE,GAAGC,GAAEA,EAAE1B,EAAE0B,IAAKF,IAAIA,EAAEE,GAAGH,IAAIE,CAAC,CAAqG,GAApGF,EAAEC,EAAqG,IAA3FD,GAAG,KAAXA,EAAEsR,KAAItR,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKqjC,GAAGrjC,EAAE,OAAOA,GAAU,CAACxB,EAAEwnC,cAAc7c,GAAG4c,GAAG5e,KAAK,KAAK3oB,EAAEwlC,GAAGE,IAAIlkC,GAAG,KAAK,CAAC+lC,GAAGvnC,EAAEwlC,GAAGE,IAAI,MAA+B,QAAQ,MAAMzgC,MAAMlF,EAAE,MAAO,CAAC,CAAW,OAAVomC,GAAGnmC,EAAE8S,MAAY9S,EAAEomC,eAAelmC,EAAE0mC,GAAGje,KAAK,KAAK3oB,GAAG,IAAI,CACrX,SAASmnC,GAAGnnC,EAAEC,GAAG,IAAIC,EAAEqlC,GAA2G,OAAxGvlC,EAAEmS,QAAQN,cAAcqF,eAAe8vB,GAAGhnC,EAAEC,GAAG0R,OAAO,KAAe,KAAV3R,EAAE8mC,GAAG9mC,EAAEC,MAAWA,EAAEulC,GAAGA,GAAGtlC,EAAE,OAAOD,GAAGqhC,GAAGrhC,IAAWD,CAAC,CAAC,SAASshC,GAAGthC,GAAG,OAAOwlC,GAAGA,GAAGxlC,EAAEwlC,GAAGr1B,KAAKY,MAAMy0B,GAAGxlC,EAAE,CAE5L,SAASkmC,GAAGlmC,EAAEC,GAAuD,IAApDA,IAAIqlC,GAAGrlC,IAAIolC,GAAGrlC,EAAE0U,gBAAgBzU,EAAED,EAAE2U,cAAc1U,EAAMD,EAAEA,EAAEqmC,gBAAgB,EAAEpmC,GAAG,CAAC,IAAIC,EAAE,GAAG4T,GAAG7T,GAAGuB,EAAE,GAAGtB,EAAEF,EAAEE,IAAI,EAAED,IAAIuB,CAAC,CAAC,CAAC,SAASklC,GAAG1mC,GAAG,GAAU,EAAFwyB,GAAK,MAAMvtB,MAAMlF,EAAE,MAAM8mC,KAAK,IAAI5mC,EAAEuU,GAAGxU,EAAE,GAAG,KAAU,EAAFC,GAAK,OAAOkmC,GAAGnmC,EAAE8S,MAAK,KAAK,IAAI5S,EAAE4mC,GAAG9mC,EAAEC,GAAG,GAAG,IAAID,EAAEmG,KAAK,IAAIjG,EAAE,CAAC,IAAIsB,EAAEuT,GAAG/U,GAAG,IAAIwB,IAAIvB,EAAEuB,EAAEtB,EAAEinC,GAAGnnC,EAAEwB,GAAG,CAAC,GAAG,IAAItB,EAAE,MAAMA,EAAEklC,GAAG4B,GAAGhnC,EAAE,GAAGkmC,GAAGlmC,EAAEC,GAAGkmC,GAAGnmC,EAAE8S,MAAK5S,EAAE,GAAG,IAAIA,EAAE,MAAM+E,MAAMlF,EAAE,MAAiF,OAA3EC,EAAEqnC,aAAarnC,EAAEmS,QAAQV,UAAUzR,EAAEsnC,cAAcrnC,EAAEsnC,GAAGvnC,EAAEwlC,GAAGE,IAAIS,GAAGnmC,EAAE8S,MAAY,IAAI,CACvd,SAAS20B,GAAGznC,EAAEC,GAAG,IAAIC,EAAEsyB,GAAEA,IAAG,EAAE,IAAI,OAAOxyB,EAAEC,EAAE,CAAC,QAAY,KAAJuyB,GAAEtyB,KAAU+hC,GAAGnvB,KAAI,IAAIya,IAAIG,KAAK,CAAC,CAAC,SAASga,GAAG1nC,GAAG,OAAO4lC,IAAI,IAAIA,GAAGz/B,OAAY,EAAFqsB,KAAMqU,KAAK,IAAI5mC,EAAEuyB,GAAEA,IAAG,EAAE,IAAItyB,EAAE+kC,GAAGjtB,WAAWxW,EAAE6T,GAAE,IAAI,GAAG4vB,GAAGjtB,WAAW,KAAK3C,GAAE,EAAErV,EAAE,OAAOA,GAAG,CAAC,QAAQqV,GAAE7T,EAAEyjC,GAAGjtB,WAAW9X,IAAa,GAAXsyB,GAAEvyB,KAAaytB,IAAI,CAAC,CAAC,SAASwU,KAAKrD,GAAGD,GAAGzsB,QAAQga,GAAEyS,GAAG,CAChT,SAASoI,GAAGhnC,EAAEC,GAAGD,EAAEqnC,aAAa,KAAKrnC,EAAEsnC,cAAc,EAAE,IAAIpnC,EAAEF,EAAEwnC,cAAiD,IAAlC,IAAItnC,IAAIF,EAAEwnC,eAAe,EAAE3c,GAAG3qB,IAAO,OAAOglC,GAAE,IAAIhlC,EAAEglC,GAAExzB,OAAO,OAAOxR,GAAG,CAAC,IAAIsB,EAAEtB,EAAQ,OAANquB,GAAG/sB,GAAUA,EAAE2E,KAAK,KAAK,EAA6B,OAA3B3E,EAAEA,EAAEU,KAAK4qB,oBAAwCC,KAAK,MAAM,KAAK,EAAEyJ,KAAKrK,GAAEI,IAAIJ,GAAEG,IAAGyK,KAAK,MAAM,KAAK,EAAEL,GAAGl1B,GAAG,MAAM,KAAK,EAAEg1B,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGrK,GAAEwK,IAAG,MAAM,KAAK,GAAGrG,GAAG9uB,EAAEU,KAAKqE,UAAU,MAAM,KAAK,GAAG,KAAK,GAAG27B,KAAKhiC,EAAEA,EAAEwR,MAAM,CAAqE,GAApE8nB,GAAEx5B,EAAEklC,GAAEllC,EAAEw1B,GAAGx1B,EAAEmS,QAAQ,MAAMgzB,GAAEtG,GAAG5+B,EAAE+hC,GAAE,EAAEoD,GAAG,KAAKE,GAAGD,GAAGtS,GAAG,EAAEyS,GAAGD,GAAG,KAAQ,OAAOpU,GAAG,CAAC,IAAIlxB,EAC1f,EAAEA,EAAEkxB,GAAG/wB,OAAOH,IAAI,GAA2B,QAAhBuB,GAARtB,EAAEixB,GAAGlxB,IAAOqxB,aAAqB,CAACpxB,EAAEoxB,YAAY,KAAK,IAAI7vB,EAAED,EAAE0vB,KAAKxvB,EAAExB,EAAE6xB,QAAQ,GAAG,OAAOrwB,EAAE,CAAC,IAAIC,EAAED,EAAEwvB,KAAKxvB,EAAEwvB,KAAKzvB,EAAED,EAAE0vB,KAAKvvB,CAAC,CAACzB,EAAE6xB,QAAQvwB,CAAC,CAAC2vB,GAAG,IAAI,CAAC,OAAOnxB,CAAC,CAC3K,SAASknC,GAAGlnC,EAAEC,GAAG,OAAE,CAAC,IAAIC,EAAEglC,GAAE,IAAuB,GAAnB7U,KAAK4G,GAAG9kB,QAAQ+lB,GAAMV,GAAG,CAAC,IAAI,IAAIh2B,EAAE61B,GAAExlB,cAAc,OAAOrQ,GAAG,CAAC,IAAIC,EAAED,EAAE82B,MAAM,OAAO72B,IAAIA,EAAEswB,QAAQ,MAAMvwB,EAAEA,EAAE0vB,IAAI,CAACsG,IAAG,CAAE,CAA4C,GAA3CJ,GAAG,EAAEG,GAAED,GAAED,GAAE,KAAKI,IAAG,EAAGC,GAAG,EAAEsN,GAAG7yB,QAAQ,KAAQ,OAAOjS,GAAG,OAAOA,EAAEwR,OAAO,CAACswB,GAAE,EAAEoD,GAAGnlC,EAAEilC,GAAE,KAAK,KAAK,CAACllC,EAAE,CAAC,IAAI0B,EAAE1B,EAAE2B,EAAEzB,EAAEwR,OAAO7L,EAAE3F,EAAE4F,EAAE7F,EAAqB,GAAnBA,EAAEklC,GAAEt/B,EAAE8L,OAAO,MAAS,OAAO7L,GAAG,iBAAkBA,GAAG,mBAAoBA,EAAEslB,KAAK,CAAC,IAAIxlB,EAAEE,EAAEkL,EAAEnL,EAAE+sB,EAAE5hB,EAAE7K,IAAI,KAAe,EAAP6K,EAAEse,MAAU,IAAIsD,GAAG,KAAKA,GAAG,KAAKA,GAAG,CAAC,IAAIC,EAAE7hB,EAAES,UAAUohB,GAAG7hB,EAAE0gB,YAAYmB,EAAEnB,YAAY1gB,EAAEa,cAAcghB,EAAEhhB,cACxeb,EAAE6f,MAAMgC,EAAEhC,QAAQ7f,EAAE0gB,YAAY,KAAK1gB,EAAEa,cAAc,KAAK,CAAC,IAAIihB,EAAE8K,GAAGj8B,GAAG,GAAG,OAAOmxB,EAAE,CAACA,EAAEnhB,QAAQ,IAAIksB,GAAG/K,EAAEnxB,EAAEkE,EAAEnE,EAAEzB,GAAU,EAAP6yB,EAAExD,MAAQmO,GAAG/7B,EAAEkE,EAAE3F,GAAO6F,EAAEF,EAAE,IAAIkjB,GAAZ7oB,EAAE6yB,GAAcpB,YAAY,GAAG,OAAO5I,EAAE,CAAC,IAAIC,EAAE,IAAIxoB,IAAIwoB,EAAEpoB,IAAImF,GAAG7F,EAAEyxB,YAAY3I,CAAC,MAAMD,EAAEnoB,IAAImF,GAAG,MAAM9F,CAAC,CAAM,KAAU,EAAFC,GAAK,CAACw9B,GAAG/7B,EAAEkE,EAAE3F,GAAGogC,KAAK,MAAMrgC,CAAC,CAAC8F,EAAEb,MAAMlF,EAAE,KAAM,MAAM,GAAG2uB,IAAU,EAAP7oB,EAAEypB,KAAO,CAAC,IAAItG,EAAE4U,GAAGj8B,GAAG,GAAG,OAAOqnB,EAAE,GAAc,MAARA,EAAErX,SAAeqX,EAAErX,OAAO,KAAKksB,GAAG7U,EAAErnB,EAAEkE,EAAEnE,EAAEzB,GAAG4vB,GAAG2M,GAAG12B,EAAED,IAAI,MAAM7F,CAAC,CAAC,CAAC0B,EAAEoE,EAAE02B,GAAG12B,EAAED,GAAG,IAAIm8B,KAAIA,GAAE,GAAG,OAAOuD,GAAGA,GAAG,CAAC7jC,GAAG6jC,GAAGp1B,KAAKzO,GAAGA,EAAEC,EAAE,EAAE,CAAC,OAAOD,EAAEyE,KAAK,KAAK,EAAEzE,EAAEiQ,OAAO,MACpf1R,IAAIA,EAAEyB,EAAEmvB,OAAO5wB,EAAkByyB,GAAGhxB,EAAbu7B,GAAGv7B,EAAEoE,EAAE7F,IAAW,MAAMD,EAAE,KAAK,EAAE6F,EAAEC,EAAE,IAAIqjB,EAAEznB,EAAEQ,KAAKgnB,EAAExnB,EAAEsO,UAAU,KAAgB,IAARtO,EAAEiQ,OAAa,mBAAoBwX,EAAEkU,2BAA0B,OAAOnU,GAAG,mBAAoBA,EAAEoU,mBAAoB,OAAOC,IAAKA,GAAGlV,IAAIa,KAAK,CAACxnB,EAAEiQ,OAAO,MAAM1R,IAAIA,EAAEyB,EAAEmvB,OAAO5wB,EAAkByyB,GAAGhxB,EAAb07B,GAAG17B,EAAEmE,EAAE5F,IAAW,MAAMD,CAAC,EAAE0B,EAAEA,EAAEgQ,MAAM,OAAO,OAAOhQ,EAAE,CAACimC,GAAGznC,EAAE,CAAC,MAAMwpB,GAAIzpB,EAAEypB,EAAGwb,KAAIhlC,GAAG,OAAOA,IAAIglC,GAAEhlC,EAAEA,EAAEwR,QAAQ,QAAQ,CAAC,KAAK,CAAS,CAAC,SAASq1B,KAAK,IAAI/mC,EAAE+kC,GAAG5yB,QAAsB,OAAd4yB,GAAG5yB,QAAQ+lB,GAAU,OAAOl4B,EAAEk4B,GAAGl4B,CAAC,CACrd,SAASqgC,KAAQ,IAAI2B,IAAG,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAOxI,MAAW,UAAHzG,OAAuB,UAAHsS,KAAea,GAAG1M,GAAE2L,GAAE,CAAC,SAAS2B,GAAG9mC,EAAEC,GAAG,IAAIC,EAAEsyB,GAAEA,IAAG,EAAE,IAAIhxB,EAAEulC,KAAqC,IAA7BvN,KAAIx5B,GAAGmlC,KAAIllC,IAAEylC,GAAG,KAAKsB,GAAGhnC,EAAEC,UAAU2nC,KAAK,KAAK,CAAC,MAAMnmC,GAAGylC,GAAGlnC,EAAEyB,EAAE,CAAgC,GAAtB4uB,KAAKmC,GAAEtyB,EAAE6kC,GAAG5yB,QAAQ3Q,EAAK,OAAO0jC,GAAE,MAAMjgC,MAAMlF,EAAE,MAAiB,OAAXy5B,GAAE,KAAK2L,GAAE,EAASnD,EAAC,CAAC,SAAS4F,KAAK,KAAK,OAAO1C,IAAG2C,GAAG3C,GAAE,CAAC,SAAS+B,KAAK,KAAK,OAAO/B,KAAIxyB,MAAMm1B,GAAG3C,GAAE,CAAC,SAAS2C,GAAG7nC,GAAG,IAAIC,EAAE2kC,GAAG5kC,EAAEyR,UAAUzR,EAAE6+B,IAAI7+B,EAAE0vB,cAAc1vB,EAAEivB,aAAa,OAAOhvB,EAAE0nC,GAAG3nC,GAAGklC,GAAEjlC,EAAE+kC,GAAG7yB,QAAQ,IAAI,CAC1d,SAASw1B,GAAG3nC,GAAG,IAAIC,EAAED,EAAE,EAAE,CAAC,IAAIE,EAAED,EAAEwR,UAAqB,GAAXzR,EAAEC,EAAEyR,OAAuB,MAARzR,EAAE0R,MAAwD,CAAW,GAAG,QAAbzR,EAAEiiC,GAAGjiC,EAAED,IAAmC,OAAnBC,EAAEyR,OAAO,WAAMuzB,GAAEhlC,GAAS,GAAG,OAAOF,EAAmE,OAAXgiC,GAAE,OAAEkD,GAAE,MAA5DllC,EAAE2R,OAAO,MAAM3R,EAAEygC,aAAa,EAAEzgC,EAAE+uB,UAAU,IAA4B,MAAhL,GAAgB,QAAb7uB,EAAEmhC,GAAGnhC,EAAED,EAAE4+B,KAAkB,YAAJqG,GAAEhlC,GAAiK,GAAG,QAAfD,EAAEA,EAAEiS,SAAyB,YAAJgzB,GAAEjlC,GAASilC,GAAEjlC,EAAED,CAAC,OAAO,OAAOC,GAAG,IAAI+hC,KAAIA,GAAE,EAAE,CAAC,SAASuF,GAAGvnC,EAAEC,EAAEC,GAAG,IAAIsB,EAAE6T,GAAE5T,EAAEwjC,GAAGjtB,WAAW,IAAIitB,GAAGjtB,WAAW,KAAK3C,GAAE,EAC3Y,SAAYrV,EAAEC,EAAEC,EAAEsB,GAAG,GAAGqlC,WAAW,OAAOjB,IAAI,GAAU,EAAFpT,GAAK,MAAMvtB,MAAMlF,EAAE,MAAMG,EAAEF,EAAEqnC,aAAa,IAAI5lC,EAAEzB,EAAEsnC,cAAc,GAAG,OAAOpnC,EAAE,OAAO,KAA2C,GAAtCF,EAAEqnC,aAAa,KAAKrnC,EAAEsnC,cAAc,EAAKpnC,IAAIF,EAAEmS,QAAQ,MAAMlN,MAAMlF,EAAE,MAAMC,EAAEomC,aAAa,KAAKpmC,EAAEwmC,iBAAiB,EAAE,IAAI9kC,EAAExB,EAAE2wB,MAAM3wB,EAAEuwB,WAA8J,GA1NtT,SAAYzwB,EAAEC,GAAG,IAAIC,EAAEF,EAAEyU,cAAcxU,EAAED,EAAEyU,aAAaxU,EAAED,EAAE0U,eAAe,EAAE1U,EAAE2U,YAAY,EAAE3U,EAAEsmC,cAAcrmC,EAAED,EAAE8nC,kBAAkB7nC,EAAED,EAAE4U,gBAAgB3U,EAAEA,EAAED,EAAE6U,cAAc,IAAIrT,EAAExB,EAAEmV,WAAW,IAAInV,EAAEA,EAAEqmC,gBAAgB,EAAEnmC,GAAG,CAAC,IAAIuB,EAAE,GAAGqS,GAAG5T,GAAGwB,EAAE,GAAGD,EAAExB,EAAEwB,GAAG,EAAED,EAAEC,IAAI,EAAEzB,EAAEyB,IAAI,EAAEvB,IAAIwB,CAAC,CAAC,CA0N5GqmC,CAAG/nC,EAAE0B,GAAG1B,IAAIw5B,KAAI0L,GAAE1L,GAAE,KAAK2L,GAAE,KAAuB,KAAfjlC,EAAEugC,iBAAiC,KAARvgC,EAAEyR,QAAag0B,KAAKA,IAAG,EAAGgB,GAAGrzB,IAAG,WAAgB,OAALuzB,KAAY,IAAI,KAAInlC,KAAe,MAARxB,EAAEyR,OAAoC,MAAfzR,EAAEugC,cAAqB/+B,EAAE,CAACA,EAAEujC,GAAGjtB,WAAWitB,GAAGjtB,WAAW,KAChf,IAAIrW,EAAE0T,GAAEA,GAAE,EAAE,IAAIxP,EAAE2sB,GAAEA,IAAG,EAAEwS,GAAG7yB,QAAQ,KA1CpC,SAAYnS,EAAEC,GAAgB,GAAbsqB,GAAGzS,GAAauM,GAAVrkB,EAAEikB,MAAc,CAAC,GAAG,mBAAmBjkB,EAAE,IAAIE,EAAE,CAACykB,MAAM3kB,EAAE6kB,eAAeD,IAAI5kB,EAAE8kB,mBAAmB9kB,EAAE,CAA8C,IAAIwB,GAAjDtB,GAAGA,EAAEF,EAAE2I,gBAAgBzI,EAAE8kB,aAAankB,QAAeokB,cAAc/kB,EAAE+kB,eAAe,GAAGzjB,GAAG,IAAIA,EAAE2jB,WAAW,CAACjlB,EAAEsB,EAAE4jB,WAAW,IAAI3jB,EAAED,EAAE6jB,aAAa3jB,EAAEF,EAAE8jB,UAAU9jB,EAAEA,EAAE+jB,YAAY,IAAIrlB,EAAEwK,SAAShJ,EAAEgJ,QAAQ,CAAC,MAAM0e,GAAGlpB,EAAE,KAAK,MAAMF,CAAC,CAAC,IAAI2B,EAAE,EAAEkE,GAAG,EAAEC,GAAG,EAAEF,EAAE,EAAEoL,EAAE,EAAE4hB,EAAE5yB,EAAE6yB,EAAE,KAAK5yB,EAAE,OAAO,CAAC,IAAI,IAAI6yB,EAAKF,IAAI1yB,GAAG,IAAIuB,GAAG,IAAImxB,EAAEloB,WAAW7E,EAAElE,EAAEF,GAAGmxB,IAAIlxB,GAAG,IAAIF,GAAG,IAAIoxB,EAAEloB,WAAW5E,EAAEnE,EAAEH,GAAG,IAAIoxB,EAAEloB,WAAW/I,GACnfixB,EAAEjoB,UAAUvK,QAAW,QAAQ0yB,EAAEF,EAAEzoB,aAAkB0oB,EAAED,EAAEA,EAAEE,EAAE,OAAO,CAAC,GAAGF,IAAI5yB,EAAE,MAAMC,EAA8C,GAA5C4yB,IAAI3yB,KAAK0F,IAAInE,IAAIoE,EAAElE,GAAGkxB,IAAInxB,KAAKsP,IAAIxP,IAAIsE,EAAEnE,GAAM,QAAQmxB,EAAEF,EAAE/O,aAAa,MAAUgP,GAAJD,EAAEC,GAAMnjB,UAAU,CAACkjB,EAAEE,CAAC,CAAC5yB,GAAG,IAAI2F,IAAI,IAAIC,EAAE,KAAK,CAAC6e,MAAM9e,EAAE+e,IAAI9e,EAAE,MAAM5F,EAAE,IAAI,CAACA,EAAEA,GAAG,CAACykB,MAAM,EAAEC,IAAI,EAAE,MAAM1kB,EAAE,KAA+C,IAA1CsqB,GAAG,CAAChG,YAAYxkB,EAAEykB,eAAevkB,GAAG4X,IAAG,EAAO0qB,GAAEviC,EAAE,OAAOuiC,IAAG,GAAOxiC,GAAJC,EAAEuiC,IAAMvwB,MAA0B,KAAfhS,EAAEwgC,cAAoB,OAAOzgC,EAAEA,EAAE0R,OAAOzR,EAAEuiC,GAAExiC,OAAO,KAAK,OAAOwiC,IAAG,CAACviC,EAAEuiC,GAAE,IAAI,IAAI1Z,EAAE7oB,EAAEwR,UAAU,GAAgB,KAARxR,EAAE0R,MAAY,OAAO1R,EAAEkG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GACvK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAA3W,KAAK,EAAE,GAAG,OAAO2iB,EAAE,CAAC,IAAIC,EAAED,EAAE4G,cAAc1G,EAAEF,EAAEjX,cAAcoX,EAAEhpB,EAAE+P,UAAUmZ,EAAEF,EAAE0L,wBAAwB10B,EAAE6uB,cAAc7uB,EAAEiC,KAAK6mB,EAAEgH,GAAG9vB,EAAEiC,KAAK6mB,GAAGC,GAAGC,EAAEyb,oCAAoCvb,CAAC,CAAC,MAAM,KAAK,EAAE,IAAID,EAAEjpB,EAAE+P,UAAUmH,cAAc,IAAI+R,EAAExe,SAASwe,EAAExf,YAAY,GAAG,IAAIwf,EAAExe,UAAUwe,EAAExE,iBAAiBwE,EAAE9e,YAAY8e,EAAExE,iBAAiB,MAAyC,QAAQ,MAAMzf,MAAMlF,EAAE,MAAO,CAAC,MAAMqpB,GAAGsZ,GAAEziC,EAAEA,EAAEyR,OAAO0X,EAAE,CAAa,GAAG,QAAfppB,EAAEC,EAAEiS,SAAoB,CAAClS,EAAE0R,OAAOzR,EAAEyR,OAAO8wB,GAAExiC,EAAE,KAAK,CAACwiC,GAAEviC,EAAEyR,MAAM,CAACoX,EAAE8Z,GAAGA,IAAG,CAAW,CAwCldoF,CAAGhoC,EAAEE,GAAG8jC,GAAG9jC,EAAEF,GAAGukB,GAAGiG,IAAI1S,KAAKyS,GAAGC,GAAGD,GAAG,KAAKvqB,EAAEmS,QAAQjS,EAAEokC,GAAGpkC,EAAEF,EAAEyB,GAAGmR,KAAK4f,GAAE3sB,EAAEwP,GAAE1T,EAAEsjC,GAAGjtB,WAAWtW,CAAC,MAAM1B,EAAEmS,QAAQjS,EAAsF,GAApFylC,KAAKA,IAAG,EAAGC,GAAG5lC,EAAE6lC,GAAGpkC,GAAoB,KAAjBC,EAAE1B,EAAEyU,gBAAqB8oB,GAAG,MAjOmJ,SAAYv9B,GAAG,GAAG6T,IAAI,mBAAoBA,GAAGo0B,kBAAkB,IAAIp0B,GAAGo0B,kBAAkBr0B,GAAG5T,OAAE,IAAO,KAAOA,EAAEmS,QAAQR,OAAW,CAAC,MAAM1R,GAAG,CAAC,CAiOxRioC,CAAGhoC,EAAE8P,WAAam2B,GAAGnmC,EAAE8S,MAAQ,OAAO7S,EAAE,IAAIuB,EAAExB,EAAEmoC,mBAAmBjoC,EAAE,EAAEA,EAAED,EAAEG,OAAOF,IAAWsB,GAAPC,EAAExB,EAAEC,IAAOyH,MAAM,CAAC61B,eAAe/7B,EAAEyD,MAAMw3B,OAAOj7B,EAAEi7B,SAAS,GAAGQ,GAAG,MAAMA,IAAG,EAAGl9B,EAAEm9B,GAAGA,GAAG,KAAKn9B,KAAU,EAAH6lC,KAAO,IAAI7lC,EAAEmG,KAAK0gC,KAA6B,GAAxBnlC,EAAE1B,EAAEyU,cAAuBzU,IAAI+lC,GAAGD,MAAMA,GAAG,EAAEC,GAAG/lC,GAAG8lC,GAAG,EAAEpY,IAAgB,CAFxF0a,CAAGpoC,EAAEC,EAAEC,EAAEsB,EAAE,CAAC,QAAQyjC,GAAGjtB,WAAWvW,EAAE4T,GAAE7T,CAAC,CAAC,OAAO,IAAI,CAGhc,SAASqlC,KAAK,GAAG,OAAOjB,GAAG,CAAC,IAAI5lC,EAAEsV,GAAGuwB,IAAI5lC,EAAEglC,GAAGjtB,WAAW9X,EAAEmV,GAAE,IAAmC,GAA/B4vB,GAAGjtB,WAAW,KAAK3C,GAAE,GAAGrV,EAAE,GAAGA,EAAK,OAAO4lC,GAAG,IAAIpkC,GAAE,MAAO,CAAmB,GAAlBxB,EAAE4lC,GAAGA,GAAG,KAAKC,GAAG,EAAY,EAAFrT,GAAK,MAAMvtB,MAAMlF,EAAE,MAAM,IAAI0B,EAAE+wB,GAAO,IAALA,IAAG,EAAMgQ,GAAExiC,EAAEmS,QAAQ,OAAOqwB,IAAG,CAAC,IAAI9gC,EAAE8gC,GAAE7gC,EAAED,EAAEuQ,MAAM,GAAgB,GAARuwB,GAAE7wB,MAAU,CAAC,IAAI9L,EAAEnE,EAAEqtB,UAAU,GAAG,OAAOlpB,EAAE,CAAC,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAEzF,OAAO0F,IAAI,CAAC,IAAIF,EAAEC,EAAEC,GAAG,IAAI08B,GAAE58B,EAAE,OAAO48B,IAAG,CAAC,IAAIxxB,EAAEwxB,GAAE,OAAOxxB,EAAE7K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG08B,GAAG,EAAE7xB,EAAEtP,GAAG,IAAIkxB,EAAE5hB,EAAEiB,MAAM,GAAG,OAAO2gB,EAAEA,EAAElhB,OAAOV,EAAEwxB,GAAE5P,OAAO,KAAK,OAAO4P,IAAG,CAAK,IAAI3P,GAAR7hB,EAAEwxB,IAAUtwB,QAAQ4gB,EAAE9hB,EAAEU,OAAa,GAANsxB,GAAGhyB,GAAMA,IACnfpL,EAAE,CAAC48B,GAAE,KAAK,KAAK,CAAC,GAAG,OAAO3P,EAAE,CAACA,EAAEnhB,OAAOohB,EAAE0P,GAAE3P,EAAE,KAAK,CAAC2P,GAAE1P,CAAC,CAAC,CAAC,CAAC,IAAIhK,EAAEpnB,EAAE+P,UAAU,GAAG,OAAOqX,EAAE,CAAC,IAAIC,EAAED,EAAE7W,MAAM,GAAG,OAAO8W,EAAE,CAACD,EAAE7W,MAAM,KAAK,EAAE,CAAC,IAAI+W,EAAED,EAAE7W,QAAQ6W,EAAE7W,QAAQ,KAAK6W,EAAEC,CAAC,OAAO,OAAOD,EAAE,CAAC,CAACyZ,GAAE9gC,CAAC,CAAC,CAAC,GAAuB,KAAfA,EAAE++B,cAAoB,OAAO9+B,EAAEA,EAAE+P,OAAOhQ,EAAE8gC,GAAE7gC,OAAO1B,EAAE,KAAK,OAAOuiC,IAAG,CAAK,GAAgB,MAApB9gC,EAAE8gC,IAAY7wB,MAAY,OAAOjQ,EAAEyE,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG08B,GAAG,EAAEnhC,EAAEA,EAAEgQ,QAAQ,IAAIuX,EAAEvnB,EAAEwQ,QAAQ,GAAG,OAAO+W,EAAE,CAACA,EAAEvX,OAAOhQ,EAAEgQ,OAAO8wB,GAAEvZ,EAAE,MAAMhpB,CAAC,CAACuiC,GAAE9gC,EAAEgQ,MAAM,CAAC,CAAC,IAAIyX,EAAEnpB,EAAEmS,QAAQ,IAAIqwB,GAAErZ,EAAE,OAAOqZ,IAAG,CAAK,IAAItZ,GAARvnB,EAAE6gC,IAAUvwB,MAAM,GAAuB,KAAftQ,EAAE8+B,cAAoB,OAClfvX,EAAEA,EAAExX,OAAO/P,EAAE6gC,GAAEtZ,OAAOjpB,EAAE,IAAI0B,EAAEwnB,EAAE,OAAOqZ,IAAG,CAAK,GAAgB,MAApB38B,EAAE28B,IAAY7wB,MAAY,IAAI,OAAO9L,EAAEM,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG28B,GAAG,EAAEj9B,GAAG,CAAC,MAAM6jB,GAAIgZ,GAAE78B,EAAEA,EAAE6L,OAAOgY,EAAG,CAAC,GAAG7jB,IAAIlE,EAAE,CAAC6gC,GAAE,KAAK,MAAMviC,CAAC,CAAC,IAAImpB,EAAEvjB,EAAEqM,QAAQ,GAAG,OAAOkX,EAAE,CAACA,EAAE1X,OAAO7L,EAAE6L,OAAO8wB,GAAEpZ,EAAE,MAAMnpB,CAAC,CAACuiC,GAAE38B,EAAE6L,MAAM,CAAC,CAAU,GAAT8gB,GAAE/wB,EAAEisB,KAAQ7Z,IAAI,mBAAoBA,GAAGw0B,sBAAsB,IAAIx0B,GAAGw0B,sBAAsBz0B,GAAG5T,EAAE,CAAC,MAAM0pB,GAAI,CAACloB,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ6T,GAAEnV,EAAE+kC,GAAGjtB,WAAW/X,CAAC,CAAC,CAAC,OAAM,CAAE,CAAC,SAASqoC,GAAGtoC,EAAEC,EAAEC,GAAyBF,EAAEuyB,GAAGvyB,EAAjBC,EAAEg9B,GAAGj9B,EAAfC,EAAEu8B,GAAGt8B,EAAED,GAAY,GAAY,GAAGA,EAAEwzB,KAAI,OAAOzzB,IAAIkV,GAAGlV,EAAE,EAAEC,GAAGkmC,GAAGnmC,EAAEC,GAAG,CACze,SAASyiC,GAAE1iC,EAAEC,EAAEC,GAAG,GAAG,IAAIF,EAAEmG,IAAImiC,GAAGtoC,EAAEA,EAAEE,QAAQ,KAAK,OAAOD,GAAG,CAAC,GAAG,IAAIA,EAAEkG,IAAI,CAACmiC,GAAGroC,EAAED,EAAEE,GAAG,KAAK,CAAM,GAAG,IAAID,EAAEkG,IAAI,CAAC,IAAI3E,EAAEvB,EAAE+P,UAAU,GAAG,mBAAoB/P,EAAEiC,KAAKm7B,0BAA0B,mBAAoB77B,EAAE87B,oBAAoB,OAAOC,KAAKA,GAAGlV,IAAI7mB,IAAI,CAAuBvB,EAAEsyB,GAAGtyB,EAAjBD,EAAEo9B,GAAGn9B,EAAfD,EAAEw8B,GAAGt8B,EAAEF,GAAY,GAAY,GAAGA,EAAEyzB,KAAI,OAAOxzB,IAAIiV,GAAGjV,EAAE,EAAED,GAAGmmC,GAAGlmC,EAAED,IAAI,KAAK,CAAC,CAACC,EAAEA,EAAEyR,MAAM,CAAC,CACnV,SAASisB,GAAG39B,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAE09B,UAAU,OAAOl8B,GAAGA,EAAE+U,OAAOtW,GAAGA,EAAEwzB,KAAIzzB,EAAE2U,aAAa3U,EAAE0U,eAAexU,EAAEs5B,KAAIx5B,IAAImlC,GAAEjlC,KAAKA,IAAI,IAAI8hC,IAAG,IAAIA,KAAM,UAAFmD,MAAeA,IAAG,IAAIryB,KAAIqxB,GAAG6C,GAAGhnC,EAAE,GAAGslC,IAAIplC,GAAGimC,GAAGnmC,EAAEC,EAAE,CAAC,SAASsoC,GAAGvoC,EAAEC,GAAG,IAAIA,IAAgB,EAAPD,EAAEsvB,MAAarvB,EAAEqU,KAAkB,WAAfA,KAAK,MAAuBA,GAAG,UAAzCrU,EAAE,GAAkD,IAAIC,EAAEuzB,KAAc,QAAVzzB,EAAEuxB,GAAGvxB,EAAEC,MAAciV,GAAGlV,EAAEC,EAAEC,GAAGimC,GAAGnmC,EAAEE,GAAG,CAAC,SAASogC,GAAGtgC,GAAG,IAAIC,EAAED,EAAE6R,cAAc3R,EAAE,EAAE,OAAOD,IAAIC,EAAED,EAAEmvB,WAAWmZ,GAAGvoC,EAAEE,EAAE,CACjZ,SAAS4jC,GAAG9jC,EAAEC,GAAG,IAAIC,EAAE,EAAE,OAAOF,EAAEmG,KAAK,KAAK,GAAG,IAAI3E,EAAExB,EAAEgQ,UAAcvO,EAAEzB,EAAE6R,cAAc,OAAOpQ,IAAIvB,EAAEuB,EAAE2tB,WAAW,MAAM,KAAK,GAAG5tB,EAAExB,EAAEgQ,UAAU,MAAM,QAAQ,MAAM/K,MAAMlF,EAAE,MAAO,OAAOyB,GAAGA,EAAE+U,OAAOtW,GAAGsoC,GAAGvoC,EAAEE,EAAE,CAQqK,SAASymC,GAAG3mC,EAAEC,GAAG,OAAOqS,GAAGtS,EAAEC,EAAE,CACjZ,SAASuoC,GAAGxoC,EAAEC,EAAEC,EAAEsB,GAAGI,KAAKuE,IAAInG,EAAE4B,KAAKuc,IAAIje,EAAE0B,KAAKsQ,QAAQtQ,KAAKqQ,MAAMrQ,KAAK8P,OAAO9P,KAAKoO,UAAUpO,KAAKM,KAAKN,KAAKktB,YAAY,KAAKltB,KAAK2zB,MAAM,EAAE3zB,KAAKozB,IAAI,KAAKpzB,KAAKqtB,aAAahvB,EAAE2B,KAAK+uB,aAAa/uB,KAAKiQ,cAAcjQ,KAAK8vB,YAAY9vB,KAAK8tB,cAAc,KAAK9tB,KAAK0tB,KAAK9tB,EAAEI,KAAK6+B,aAAa7+B,KAAK+P,MAAM,EAAE/P,KAAKmtB,UAAU,KAAKntB,KAAK6uB,WAAW7uB,KAAKivB,MAAM,EAAEjvB,KAAK6P,UAAU,IAAI,CAAC,SAASod,GAAG7uB,EAAEC,EAAEC,EAAEsB,GAAG,OAAO,IAAIgnC,GAAGxoC,EAAEC,EAAEC,EAAEsB,EAAE,CAAC,SAAS48B,GAAGp+B,GAAiB,UAAdA,EAAEA,EAAEkB,aAAuBlB,EAAEyoC,iBAAiB,CAEpd,SAASjT,GAAGx1B,EAAEC,GAAG,IAAIC,EAAEF,EAAEyR,UACuB,OADb,OAAOvR,IAAGA,EAAE2uB,GAAG7uB,EAAEmG,IAAIlG,EAAED,EAAEme,IAAIne,EAAEsvB,OAAQR,YAAY9uB,EAAE8uB,YAAY5uB,EAAEgC,KAAKlC,EAAEkC,KAAKhC,EAAE8P,UAAUhQ,EAAEgQ,UAAU9P,EAAEuR,UAAUzR,EAAEA,EAAEyR,UAAUvR,IAAIA,EAAE+uB,aAAahvB,EAAEC,EAAEgC,KAAKlC,EAAEkC,KAAKhC,EAAEyR,MAAM,EAAEzR,EAAEugC,aAAa,EAAEvgC,EAAE6uB,UAAU,MAAM7uB,EAAEyR,MAAc,SAAR3R,EAAE2R,MAAezR,EAAEuwB,WAAWzwB,EAAEywB,WAAWvwB,EAAE2wB,MAAM7wB,EAAE6wB,MAAM3wB,EAAE+R,MAAMjS,EAAEiS,MAAM/R,EAAEwvB,cAAc1vB,EAAE0vB,cAAcxvB,EAAE2R,cAAc7R,EAAE6R,cAAc3R,EAAEwxB,YAAY1xB,EAAE0xB,YAAYzxB,EAAED,EAAE2wB,aAAazwB,EAAEywB,aAAa,OAAO1wB,EAAE,KAAK,CAAC4wB,MAAM5wB,EAAE4wB,MAAMD,aAAa3wB,EAAE2wB,cAC/e1wB,EAAEgS,QAAQlS,EAAEkS,QAAQhS,EAAEq1B,MAAMv1B,EAAEu1B,MAAMr1B,EAAE80B,IAAIh1B,EAAEg1B,IAAW90B,CAAC,CACxD,SAASw1B,GAAG11B,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,GAAG,IAAIC,EAAE,EAAM,GAAJH,EAAExB,EAAK,mBAAoBA,EAAEo+B,GAAGp+B,KAAK2B,EAAE,QAAQ,GAAG,iBAAkB3B,EAAE2B,EAAE,OAAO3B,EAAE,OAAOA,GAAG,KAAK+D,EAAG,OAAO8xB,GAAG31B,EAAEoJ,SAAS7H,EAAEC,EAAEzB,GAAG,KAAK+D,EAAGrC,EAAE,EAAEF,GAAG,EAAE,MAAM,KAAKwC,EAAG,OAAOjE,EAAE6uB,GAAG,GAAG3uB,EAAED,EAAI,EAAFwB,IAAOqtB,YAAY7qB,EAAGjE,EAAE6wB,MAAMnvB,EAAE1B,EAAE,KAAKqE,EAAG,OAAOrE,EAAE6uB,GAAG,GAAG3uB,EAAED,EAAEwB,IAAKqtB,YAAYzqB,EAAGrE,EAAE6wB,MAAMnvB,EAAE1B,EAAE,KAAKsE,EAAG,OAAOtE,EAAE6uB,GAAG,GAAG3uB,EAAED,EAAEwB,IAAKqtB,YAAYxqB,EAAGtE,EAAE6wB,MAAMnvB,EAAE1B,EAAE,KAAKyE,EAAG,OAAOu7B,GAAG9/B,EAAEuB,EAAEC,EAAEzB,GAAG,QAAQ,GAAG,iBAAkBD,GAAG,OAAOA,EAAE,OAAOA,EAAEsG,UAAU,KAAKpC,EAAGvC,EAAE,GAAG,MAAM3B,EAAE,KAAKmE,EAAGxC,EAAE,EAAE,MAAM3B,EAAE,KAAKoE,EAAGzC,EAAE,GACpf,MAAM3B,EAAE,KAAKuE,EAAG5C,EAAE,GAAG,MAAM3B,EAAE,KAAKwE,EAAG7C,EAAE,GAAGH,EAAE,KAAK,MAAMxB,EAAE,MAAMiF,MAAMlF,EAAE,IAAI,MAAMC,EAAEA,SAASA,EAAE,KAAuD,OAAjDC,EAAE4uB,GAAGltB,EAAEzB,EAAED,EAAEwB,IAAKqtB,YAAY9uB,EAAEC,EAAEiC,KAAKV,EAAEvB,EAAE4wB,MAAMnvB,EAASzB,CAAC,CAAC,SAAS41B,GAAG71B,EAAEC,EAAEC,EAAEsB,GAA2B,OAAxBxB,EAAE6uB,GAAG,EAAE7uB,EAAEwB,EAAEvB,IAAK4wB,MAAM3wB,EAASF,CAAC,CAAC,SAASggC,GAAGhgC,EAAEC,EAAEC,EAAEsB,GAAuE,OAApExB,EAAE6uB,GAAG,GAAG7uB,EAAEwB,EAAEvB,IAAK6uB,YAAYrqB,EAAGzE,EAAE6wB,MAAM3wB,EAAEF,EAAEgQ,UAAU,CAACk0B,UAAS,GAAWlkC,CAAC,CAAC,SAASy1B,GAAGz1B,EAAEC,EAAEC,GAA8B,OAA3BF,EAAE6uB,GAAG,EAAE7uB,EAAE,KAAKC,IAAK4wB,MAAM3wB,EAASF,CAAC,CAC5W,SAAS41B,GAAG51B,EAAEC,EAAEC,GAA8J,OAA3JD,EAAE4uB,GAAG,EAAE,OAAO7uB,EAAEsJ,SAAStJ,EAAEsJ,SAAS,GAAGtJ,EAAEme,IAAIle,IAAK4wB,MAAM3wB,EAAED,EAAE+P,UAAU,CAACmH,cAAcnX,EAAEmX,cAAcuxB,gBAAgB,KAAK/S,eAAe31B,EAAE21B,gBAAuB11B,CAAC,CACtL,SAAS0oC,GAAG3oC,EAAEC,EAAEC,EAAEsB,EAAEC,GAAGG,KAAKuE,IAAIlG,EAAE2B,KAAKuV,cAAcnX,EAAE4B,KAAKylC,aAAazlC,KAAK87B,UAAU97B,KAAKuQ,QAAQvQ,KAAK8mC,gBAAgB,KAAK9mC,KAAK4lC,eAAe,EAAE5lC,KAAKwkC,aAAaxkC,KAAK09B,eAAe19B,KAAKovB,QAAQ,KAAKpvB,KAAK4kC,iBAAiB,EAAE5kC,KAAKuT,WAAWF,GAAG,GAAGrT,KAAKykC,gBAAgBpxB,IAAI,GAAGrT,KAAKgT,eAAehT,KAAK0lC,cAAc1lC,KAAKkmC,iBAAiBlmC,KAAK0kC,aAAa1kC,KAAK+S,YAAY/S,KAAK8S,eAAe9S,KAAK6S,aAAa,EAAE7S,KAAKiT,cAAcI,GAAG,GAAGrT,KAAK26B,iBAAiB/6B,EAAEI,KAAKumC,mBAAmB1mC,EAAEG,KAAKgnC,gCAC/e,IAAI,CAAC,SAASC,GAAG7oC,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,EAAEkE,EAAEC,GAAgN,OAA7M9F,EAAE,IAAI2oC,GAAG3oC,EAAEC,EAAEC,EAAE2F,EAAEC,GAAG,IAAI7F,GAAGA,EAAE,GAAE,IAAKyB,IAAIzB,GAAG,IAAIA,EAAE,EAAEyB,EAAEmtB,GAAG,EAAE,KAAK,KAAK5uB,GAAGD,EAAEmS,QAAQzQ,EAAEA,EAAEsO,UAAUhQ,EAAE0B,EAAEmQ,cAAc,CAACgU,QAAQrkB,EAAE0V,aAAahX,EAAE4oC,MAAM,KAAKnK,YAAY,KAAKoK,0BAA0B,MAAMtX,GAAG/vB,GAAU1B,CAAC,CACzP,SAASgpC,GAAGhpC,GAAG,IAAIA,EAAE,OAAOqsB,GAAuBrsB,EAAE,CAAC,GAAGwR,GAA1BxR,EAAEA,EAAEuzB,mBAA8BvzB,GAAG,IAAIA,EAAEmG,IAAI,MAAMlB,MAAMlF,EAAE,MAAM,IAAIE,EAAED,EAAE,EAAE,CAAC,OAAOC,EAAEkG,KAAK,KAAK,EAAElG,EAAEA,EAAE+P,UAAUghB,QAAQ,MAAMhxB,EAAE,KAAK,EAAE,GAAG6sB,GAAG5sB,EAAEiC,MAAM,CAACjC,EAAEA,EAAE+P,UAAUod,0CAA0C,MAAMptB,CAAC,EAAEC,EAAEA,EAAEyR,MAAM,OAAO,OAAOzR,GAAG,MAAMgF,MAAMlF,EAAE,KAAM,CAAC,GAAG,IAAIC,EAAEmG,IAAI,CAAC,IAAIjG,EAAEF,EAAEkC,KAAK,GAAG2qB,GAAG3sB,GAAG,OAAO+sB,GAAGjtB,EAAEE,EAAED,EAAE,CAAC,OAAOA,CAAC,CACpW,SAASgpC,GAAGjpC,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,EAAEkE,EAAEC,GAAwK,OAArK9F,EAAE6oC,GAAG3oC,EAAEsB,GAAE,EAAGxB,EAAEyB,EAAEC,EAAEC,EAAEkE,EAAEC,IAAKkrB,QAAQgY,GAAG,MAAM9oC,EAAEF,EAAEmS,SAAsBzQ,EAAEwwB,GAAhB1wB,EAAEiyB,KAAIhyB,EAAEiyB,GAAGxzB,KAAeoyB,SAAS,MAASryB,EAAYA,EAAE,KAAKsyB,GAAGryB,EAAEwB,EAAED,GAAGzB,EAAEmS,QAAQ0e,MAAMpvB,EAAEyT,GAAGlV,EAAEyB,EAAED,GAAG2kC,GAAGnmC,EAAEwB,GAAUxB,CAAC,CAAC,SAASkpC,GAAGlpC,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAExB,EAAEkS,QAAQzQ,EAAE+xB,KAAI9xB,EAAE+xB,GAAGjyB,GAAsL,OAAnLvB,EAAE8oC,GAAG9oC,GAAG,OAAOD,EAAE+wB,QAAQ/wB,EAAE+wB,QAAQ9wB,EAAED,EAAEq/B,eAAep/B,GAAED,EAAEiyB,GAAGxwB,EAAEC,IAAK0wB,QAAQ,CAACxM,QAAQ7lB,GAAuB,QAApBwB,OAAE,IAASA,EAAE,KAAKA,KAAavB,EAAEqyB,SAAS9wB,GAAe,QAAZxB,EAAEuyB,GAAG9wB,EAAExB,EAAE0B,MAAcgyB,GAAG3zB,EAAEyB,EAAEE,EAAED,GAAG+wB,GAAGzyB,EAAEyB,EAAEE,IAAWA,CAAC,CAC3b,SAASwnC,GAAGnpC,GAAe,OAAZA,EAAEA,EAAEmS,SAAcF,OAAyBjS,EAAEiS,MAAM9L,IAAoDnG,EAAEiS,MAAMjC,WAAhF,IAA0F,CAAC,SAASo5B,GAAGppC,EAAEC,GAAqB,GAAG,QAArBD,EAAEA,EAAE6R,gBAA2B,OAAO7R,EAAE8R,WAAW,CAAC,IAAI5R,EAAEF,EAAEovB,UAAUpvB,EAAEovB,UAAU,IAAIlvB,GAAGA,EAAED,EAAEC,EAAED,CAAC,CAAC,CAAC,SAASopC,GAAGrpC,EAAEC,GAAGmpC,GAAGppC,EAAEC,IAAID,EAAEA,EAAEyR,YAAY23B,GAAGppC,EAAEC,EAAE,CAnB7S2kC,GAAG,SAAS5kC,EAAEC,EAAEC,GAAG,GAAG,OAAOF,EAAE,GAAGA,EAAE0vB,gBAAgBzvB,EAAEgvB,cAAc1C,GAAGpa,QAAQ2e,IAAG,MAAO,CAAC,KAAQ9wB,EAAE6wB,MAAM3wB,GAAiB,IAARD,EAAE0R,OAAW,OAAOmf,IAAG,EAzE1I,SAAY9wB,EAAEC,EAAEC,GAAG,OAAOD,EAAEkG,KAAK,KAAK,EAAEk5B,GAAGp/B,GAAG2vB,KAAK,MAAM,KAAK,EAAE6G,GAAGx2B,GAAG,MAAM,KAAK,EAAE4sB,GAAG5sB,EAAEiC,OAAOirB,GAAGltB,GAAG,MAAM,KAAK,EAAEq2B,GAAGr2B,EAAEA,EAAE+P,UAAUmH,eAAe,MAAM,KAAK,GAAG,IAAI3V,EAAEvB,EAAEiC,KAAKqE,SAAS9E,EAAExB,EAAEyvB,cAAc/nB,MAAMykB,GAAE6D,GAAGzuB,EAAE+uB,eAAe/uB,EAAE+uB,cAAc9uB,EAAE,MAAM,KAAK,GAAqB,GAAG,QAArBD,EAAEvB,EAAE4R,eAA2B,OAAG,OAAOrQ,EAAEsQ,YAAkBsa,GAAEuK,GAAY,EAAVA,GAAExkB,SAAWlS,EAAE0R,OAAO,IAAI,MAAazR,EAAED,EAAEgS,MAAMwe,WAAmBqP,GAAG9/B,EAAEC,EAAEC,IAAGksB,GAAEuK,GAAY,EAAVA,GAAExkB,SAA8B,QAAnBnS,EAAEk+B,GAAGl+B,EAAEC,EAAEC,IAAmBF,EAAEkS,QAAQ,MAAKka,GAAEuK,GAAY,EAAVA,GAAExkB,SAAW,MAAM,KAAK,GAC7d,GADge3Q,KAAOtB,EACrfD,EAAEwwB,YAA4B,IAARzwB,EAAE2R,MAAW,CAAC,GAAGnQ,EAAE,OAAO0/B,GAAGlhC,EAAEC,EAAEC,GAAGD,EAAE0R,OAAO,GAAG,CAA6F,GAA1E,QAAlBlQ,EAAExB,EAAE4R,iBAAyBpQ,EAAEo/B,UAAU,KAAKp/B,EAAEu/B,KAAK,KAAKv/B,EAAEi4B,WAAW,MAAMtN,GAAEuK,GAAEA,GAAExkB,SAAY3Q,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOvB,EAAE4wB,MAAM,EAAE2N,GAAGx+B,EAAEC,EAAEC,GAAG,OAAOg+B,GAAGl+B,EAAEC,EAAEC,EAAE,CAwE7GopC,CAAGtpC,EAAEC,EAAEC,GAAG4wB,MAAgB,OAAR9wB,EAAE2R,MAAmB,MAAMmf,IAAG,EAAGpC,IAAgB,QAARzuB,EAAE0R,OAAgB0c,GAAGpuB,EAAE6tB,GAAG7tB,EAAEs1B,OAAiB,OAAVt1B,EAAE4wB,MAAM,EAAS5wB,EAAEkG,KAAK,KAAK,EAAE,IAAI3E,EAAEvB,EAAEiC,KAAK88B,GAAGh/B,EAAEC,GAAGD,EAAEC,EAAEgvB,aAAa,IAAIxtB,EAAEgrB,GAAGxsB,EAAEqsB,GAAEna,SAASue,GAAGzwB,EAAEC,GAAGuB,EAAEq2B,GAAG,KAAK73B,EAAEuB,EAAExB,EAAEyB,EAAEvB,GAAG,IAAIwB,EAAEy2B,KACvI,OAD4Il4B,EAAE0R,OAAO,EAAE,iBAAkBlQ,GAAG,OAAOA,GAAG,mBAAoBA,EAAE2E,aAAQ,IAAS3E,EAAE6E,UAAUrG,EAAEkG,IAAI,EAAElG,EAAE4R,cAAc,KAAK5R,EAAEyxB,YAC1e,KAAK7E,GAAGrrB,IAAIE,GAAE,EAAGyrB,GAAGltB,IAAIyB,GAAE,EAAGzB,EAAE4R,cAAc,OAAOpQ,EAAE0yB,YAAO,IAAS1yB,EAAE0yB,MAAM1yB,EAAE0yB,MAAM,KAAK1C,GAAGxxB,GAAGwB,EAAE2yB,QAAQf,GAAGpzB,EAAE+P,UAAUvO,EAAEA,EAAE8xB,gBAAgBtzB,EAAEu0B,GAAGv0B,EAAEuB,EAAExB,EAAEE,GAAGD,EAAEm/B,GAAG,KAAKn/B,EAAEuB,GAAE,EAAGE,EAAExB,KAAKD,EAAEkG,IAAI,EAAEuoB,IAAGhtB,GAAG4sB,GAAGruB,GAAG+9B,GAAG,KAAK/9B,EAAEwB,EAAEvB,GAAGD,EAAEA,EAAEgS,OAAchS,EAAE,KAAK,GAAGuB,EAAEvB,EAAE6uB,YAAY9uB,EAAE,CAAqF,OAApFg/B,GAAGh/B,EAAEC,GAAGD,EAAEC,EAAEgvB,aAAuBztB,GAAVC,EAAED,EAAEiF,OAAUjF,EAAEgF,UAAUvG,EAAEiC,KAAKV,EAAEC,EAAExB,EAAEkG,IAQtU,SAAYnG,GAAG,GAAG,mBAAoBA,EAAE,OAAOo+B,GAAGp+B,GAAG,EAAE,EAAE,GAAG,MAASA,EAAY,CAAc,IAAbA,EAAEA,EAAEsG,YAAgBlC,EAAG,OAAO,GAAG,GAAGpE,IAAIuE,EAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAR2LglC,CAAG/nC,GAAGxB,EAAE+vB,GAAGvuB,EAAExB,GAAUyB,GAAG,KAAK,EAAExB,EAAEs+B,GAAG,KAAKt+B,EAAEuB,EAAExB,EAAEE,GAAG,MAAMF,EAAE,KAAK,EAAEC,EAAE8+B,GAAG,KAAK9+B,EAAEuB,EAAExB,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAEg+B,GAAG,KAAKh+B,EAAEuB,EAAExB,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAEk+B,GAAG,KAAKl+B,EAAEuB,EAAEuuB,GAAGvuB,EAAEU,KAAKlC,GAAGE,GAAG,MAAMF,EAAE,MAAMiF,MAAMlF,EAAE,IACvgByB,EAAE,IAAK,CAAC,OAAOvB,EAAE,KAAK,EAAE,OAAOuB,EAAEvB,EAAEiC,KAAKT,EAAExB,EAAEgvB,aAA2CsP,GAAGv+B,EAAEC,EAAEuB,EAArCC,EAAExB,EAAE6uB,cAActtB,EAAEC,EAAEsuB,GAAGvuB,EAAEC,GAAcvB,GAAG,KAAK,EAAE,OAAOsB,EAAEvB,EAAEiC,KAAKT,EAAExB,EAAEgvB,aAA2C8P,GAAG/+B,EAAEC,EAAEuB,EAArCC,EAAExB,EAAE6uB,cAActtB,EAAEC,EAAEsuB,GAAGvuB,EAAEC,GAAcvB,GAAG,KAAK,EAAEF,EAAE,CAAO,GAANq/B,GAAGp/B,GAAM,OAAOD,EAAE,MAAMiF,MAAMlF,EAAE,MAAMyB,EAAEvB,EAAEgvB,aAA+BxtB,GAAlBC,EAAEzB,EAAE4R,eAAkBgU,QAAQoM,GAAGjyB,EAAEC,GAAG0yB,GAAG1yB,EAAEuB,EAAE,KAAKtB,GAAG,IAAIyB,EAAE1B,EAAE4R,cAA0B,GAAZrQ,EAAEG,EAAEkkB,QAAWnkB,EAAEwV,aAAa,IAAGxV,EAAE,CAACmkB,QAAQrkB,EAAE0V,cAAa,EAAG4xB,MAAMnnC,EAAEmnC,MAAMC,0BAA0BpnC,EAAEonC,0BAA0BpK,YAAYh9B,EAAEg9B,aAAa1+B,EAAEyxB,YAAYC,UAChfjwB,EAAEzB,EAAE4R,cAAcnQ,EAAU,IAARzB,EAAE0R,MAAU,CAAuB1R,EAAEs/B,GAAGv/B,EAAEC,EAAEuB,EAAEtB,EAAjCuB,EAAE+6B,GAAGv3B,MAAMlF,EAAE,MAAME,IAAmB,MAAMD,CAAC,CAAM,GAAGwB,IAAIC,EAAE,CAAuBxB,EAAEs/B,GAAGv/B,EAAEC,EAAEuB,EAAEtB,EAAjCuB,EAAE+6B,GAAGv3B,MAAMlF,EAAE,MAAME,IAAmB,MAAMD,CAAC,CAAM,IAAIyuB,GAAGjD,GAAGvrB,EAAE+P,UAAUmH,cAAchN,YAAYqkB,GAAGvuB,EAAEyuB,IAAE,EAAGC,GAAG,KAAKzuB,EAAE81B,GAAG/1B,EAAE,KAAKuB,EAAEtB,GAAGD,EAAEgS,MAAM/R,EAAEA,GAAGA,EAAEyR,OAAe,EAATzR,EAAEyR,MAAS,KAAKzR,EAAEA,EAAEgS,OAAO,KAAK,CAAM,GAAL0d,KAAQpuB,IAAIC,EAAE,CAACxB,EAAEi+B,GAAGl+B,EAAEC,EAAEC,GAAG,MAAMF,CAAC,CAACg+B,GAAGh+B,EAAEC,EAAEuB,EAAEtB,EAAE,CAACD,EAAEA,EAAEgS,KAAK,CAAC,OAAOhS,EAAE,KAAK,EAAE,OAAOw2B,GAAGx2B,GAAG,OAAOD,GAAGuvB,GAAGtvB,GAAGuB,EAAEvB,EAAEiC,KAAKT,EAAExB,EAAEgvB,aAAavtB,EAAE,OAAO1B,EAAEA,EAAE0vB,cAAc,KAAK/tB,EAAEF,EAAE6H,SAASmhB,GAAGjpB,EAAEC,GAAGE,EAAE,KAAK,OAAOD,GAAG+oB,GAAGjpB,EAAEE,KAAKzB,EAAE0R,OAAO,IACnfmtB,GAAG9+B,EAAEC,GAAG+9B,GAAGh+B,EAAEC,EAAE0B,EAAEzB,GAAGD,EAAEgS,MAAM,KAAK,EAAE,OAAO,OAAOjS,GAAGuvB,GAAGtvB,GAAG,KAAK,KAAK,GAAG,OAAO6/B,GAAG9/B,EAAEC,EAAEC,GAAG,KAAK,EAAE,OAAOo2B,GAAGr2B,EAAEA,EAAE+P,UAAUmH,eAAe3V,EAAEvB,EAAEgvB,aAAa,OAAOjvB,EAAEC,EAAEgS,MAAM8jB,GAAG91B,EAAE,KAAKuB,EAAEtB,GAAG89B,GAAGh+B,EAAEC,EAAEuB,EAAEtB,GAAGD,EAAEgS,MAAM,KAAK,GAAG,OAAOzQ,EAAEvB,EAAEiC,KAAKT,EAAExB,EAAEgvB,aAA2CgP,GAAGj+B,EAAEC,EAAEuB,EAArCC,EAAExB,EAAE6uB,cAActtB,EAAEC,EAAEsuB,GAAGvuB,EAAEC,GAAcvB,GAAG,KAAK,EAAE,OAAO89B,GAAGh+B,EAAEC,EAAEA,EAAEgvB,aAAa/uB,GAAGD,EAAEgS,MAAM,KAAK,EAAmD,KAAK,GAAG,OAAO+rB,GAAGh+B,EAAEC,EAAEA,EAAEgvB,aAAa3lB,SAASpJ,GAAGD,EAAEgS,MAAM,KAAK,GAAGjS,EAAE,CACxZ,GADyZwB,EAAEvB,EAAEiC,KAAKqE,SAAS9E,EAAExB,EAAEgvB,aAAavtB,EAAEzB,EAAEyvB,cAClf/tB,EAAEF,EAAEkG,MAAMykB,GAAE6D,GAAGzuB,EAAE+uB,eAAe/uB,EAAE+uB,cAAc5uB,EAAK,OAAOD,EAAE,GAAG6hB,GAAG7hB,EAAEiG,MAAMhG,IAAI,GAAGD,EAAE4H,WAAW7H,EAAE6H,WAAWijB,GAAGpa,QAAQ,CAAClS,EAAEi+B,GAAGl+B,EAAEC,EAAEC,GAAG,MAAMF,CAAC,OAAO,IAAc,QAAV0B,EAAEzB,EAAEgS,SAAiBvQ,EAAEgQ,OAAOzR,GAAG,OAAOyB,GAAG,CAAC,IAAImE,EAAEnE,EAAEivB,aAAa,GAAG,OAAO9qB,EAAE,CAAClE,EAAED,EAAEuQ,MAAM,IAAI,IAAInM,EAAED,EAAE+qB,aAAa,OAAO9qB,GAAG,CAAC,GAAGA,EAAEkrB,UAAUxvB,EAAE,CAAC,GAAG,IAAIE,EAAEyE,IAAI,EAACL,EAAEosB,IAAI,EAAEhyB,GAAGA,IAAKiG,IAAI,EAAE,IAAIP,EAAElE,EAAEgwB,YAAY,GAAG,OAAO9rB,EAAE,CAAY,IAAIoL,GAAfpL,EAAEA,EAAEksB,QAAeC,QAAQ,OAAO/gB,EAAElL,EAAEorB,KAAKprB,GAAGA,EAAEorB,KAAKlgB,EAAEkgB,KAAKlgB,EAAEkgB,KAAKprB,GAAGF,EAAEmsB,QAAQjsB,CAAC,CAAC,CAACpE,EAAEmvB,OAAO3wB,EAAgB,QAAd4F,EAAEpE,EAAE+P,aAAqB3L,EAAE+qB,OAAO3wB,GAAGswB,GAAG9uB,EAAEgQ,OAClfxR,EAAED,GAAG4F,EAAEgrB,OAAO3wB,EAAE,KAAK,CAAC4F,EAAEA,EAAEorB,IAAI,CAAC,MAAM,GAAG,KAAKxvB,EAAEyE,IAAIxE,EAAED,EAAEQ,OAAOjC,EAAEiC,KAAK,KAAKR,EAAEuQ,WAAW,GAAG,KAAKvQ,EAAEyE,IAAI,CAAY,GAAG,QAAdxE,EAAED,EAAEgQ,QAAmB,MAAMzM,MAAMlF,EAAE,MAAM4B,EAAEkvB,OAAO3wB,EAAgB,QAAd2F,EAAElE,EAAE8P,aAAqB5L,EAAEgrB,OAAO3wB,GAAGswB,GAAG7uB,EAAEzB,EAAED,GAAG0B,EAAED,EAAEwQ,OAAO,MAAMvQ,EAAED,EAAEuQ,MAAM,GAAG,OAAOtQ,EAAEA,EAAE+P,OAAOhQ,OAAO,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAGA,IAAI1B,EAAE,CAAC0B,EAAE,KAAK,KAAK,CAAa,GAAG,QAAfD,EAAEC,EAAEuQ,SAAoB,CAACxQ,EAAEgQ,OAAO/P,EAAE+P,OAAO/P,EAAED,EAAE,KAAK,CAACC,EAAEA,EAAE+P,MAAM,CAAChQ,EAAEC,CAAC,CAACq8B,GAAGh+B,EAAEC,EAAEwB,EAAE6H,SAASpJ,GAAGD,EAAEA,EAAEgS,KAAK,CAAC,OAAOhS,EAAE,KAAK,EAAE,OAAOwB,EAAExB,EAAEiC,KAAKV,EAAEvB,EAAEgvB,aAAa3lB,SAASonB,GAAGzwB,EAAEC,GAAWsB,EAAEA,EAAVC,EAAEsvB,GAAGtvB,IAAUxB,EAAE0R,OAAO,EAAEqsB,GAAGh+B,EAAEC,EAAEuB,EAAEtB,GACpfD,EAAEgS,MAAM,KAAK,GAAG,OAAgBxQ,EAAEsuB,GAAXvuB,EAAEvB,EAAEiC,KAAYjC,EAAEgvB,cAA6BkP,GAAGn+B,EAAEC,EAAEuB,EAAtBC,EAAEsuB,GAAGvuB,EAAEU,KAAKT,GAAcvB,GAAG,KAAK,GAAG,OAAOo+B,GAAGt+B,EAAEC,EAAEA,EAAEiC,KAAKjC,EAAEgvB,aAAa/uB,GAAG,KAAK,GAAG,OAAOsB,EAAEvB,EAAEiC,KAAKT,EAAExB,EAAEgvB,aAAaxtB,EAAExB,EAAE6uB,cAActtB,EAAEC,EAAEsuB,GAAGvuB,EAAEC,GAAGu9B,GAAGh/B,EAAEC,GAAGA,EAAEkG,IAAI,EAAE0mB,GAAGrrB,IAAIxB,GAAE,EAAGmtB,GAAGltB,IAAID,GAAE,EAAG0wB,GAAGzwB,EAAEC,GAAG+zB,GAAGh0B,EAAEuB,EAAEC,GAAG+yB,GAAGv0B,EAAEuB,EAAEC,EAAEvB,GAAGk/B,GAAG,KAAKn/B,EAAEuB,GAAE,EAAGxB,EAAEE,GAAG,KAAK,GAAG,OAAOghC,GAAGlhC,EAAEC,EAAEC,GAAG,KAAK,GAAG,OAAOs+B,GAAGx+B,EAAEC,EAAEC,GAAG,MAAM+E,MAAMlF,EAAE,IAAIE,EAAEkG,KAAM,EAYxC,IAAIqjC,GAAG,mBAAoBC,YAAYA,YAAY,SAASzpC,GAAG68B,QAAQC,MAAM98B,EAAE,EAAE,SAAS0pC,GAAG1pC,GAAG4B,KAAK+nC,cAAc3pC,CAAC,CACjI,SAAS4pC,GAAG5pC,GAAG4B,KAAK+nC,cAAc3pC,CAAC,CAC5J,SAAS6pC,GAAG7pC,GAAG,SAASA,GAAG,IAAIA,EAAE0K,UAAU,IAAI1K,EAAE0K,UAAU,KAAK1K,EAAE0K,SAAS,CAAC,SAASo/B,GAAG9pC,GAAG,SAASA,GAAG,IAAIA,EAAE0K,UAAU,IAAI1K,EAAE0K,UAAU,KAAK1K,EAAE0K,WAAW,IAAI1K,EAAE0K,UAAU,iCAAiC1K,EAAE2K,WAAW,CAAC,SAASo/B,KAAK,CAExa,SAASC,GAAGhqC,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,IAAIC,EAAExB,EAAEmjC,oBAAoB,GAAG3hC,EAAE,CAAC,IAAIC,EAAED,EAAE,GAAG,mBAAoBD,EAAE,CAAC,IAAIoE,EAAEpE,EAAEA,EAAE,WAAW,IAAIzB,EAAEmpC,GAAGxnC,GAAGkE,EAAE5C,KAAKjD,EAAE,CAAC,CAACkpC,GAAGjpC,EAAE0B,EAAE3B,EAAEyB,EAAE,MAAME,EADxJ,SAAY3B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAG,mBAAoBD,EAAE,CAAC,IAAIE,EAAEF,EAAEA,EAAE,WAAW,IAAIxB,EAAEmpC,GAAGxnC,GAAGD,EAAEuB,KAAKjD,EAAE,CAAC,CAAC,IAAI2B,EAAEsnC,GAAGhpC,EAAEuB,EAAExB,EAAE,EAAE,MAAK,EAAG,EAAG,GAAG+pC,IAAmF,OAA/E/pC,EAAEqjC,oBAAoB1hC,EAAE3B,EAAEspB,IAAI3nB,EAAEwQ,QAAQuW,GAAG,IAAI1oB,EAAE0K,SAAS1K,EAAE0P,WAAW1P,GAAG0nC,KAAY/lC,CAAC,CAAC,KAAKF,EAAEzB,EAAEyK,WAAWzK,EAAEoK,YAAY3I,GAAG,GAAG,mBAAoBD,EAAE,CAAC,IAAIqE,EAAErE,EAAEA,EAAE,WAAW,IAAIxB,EAAEmpC,GAAGrjC,GAAGD,EAAE5C,KAAKjD,EAAE,CAAC,CAAC,IAAI8F,EAAE+iC,GAAG7oC,EAAE,GAAE,EAAG,KAAK,GAAK,EAAG,EAAG,GAAG+pC,IAA0G,OAAtG/pC,EAAEqjC,oBAAoBv9B,EAAE9F,EAAEspB,IAAIxjB,EAAEqM,QAAQuW,GAAG,IAAI1oB,EAAE0K,SAAS1K,EAAE0P,WAAW1P,GAAG0nC,IAAG,WAAWwB,GAAGjpC,EAAE6F,EAAE5F,EAAEsB,EAAE,IAAUsE,CAAC,CACpUmkC,CAAG/pC,EAAED,EAAED,EAAEyB,EAAED,GAAG,OAAO2nC,GAAGxnC,EAAE,CAHpLioC,GAAG1oC,UAAUkF,OAAOsjC,GAAGxoC,UAAUkF,OAAO,SAASpG,GAAG,IAAIC,EAAE2B,KAAK+nC,cAAc,GAAG,OAAO1pC,EAAE,MAAMgF,MAAMlF,EAAE,MAAMmpC,GAAGlpC,EAAEC,EAAE,KAAK,KAAK,EAAE2pC,GAAG1oC,UAAUgpC,QAAQR,GAAGxoC,UAAUgpC,QAAQ,WAAW,IAAIlqC,EAAE4B,KAAK+nC,cAAc,GAAG,OAAO3pC,EAAE,CAAC4B,KAAK+nC,cAAc,KAAK,IAAI1pC,EAAED,EAAEmX,cAAcuwB,IAAG,WAAWwB,GAAG,KAAKlpC,EAAE,KAAK,KAAK,IAAGC,EAAEqpB,IAAI,IAAI,CAAC,EACzTsgB,GAAG1oC,UAAUipC,2BAA2B,SAASnqC,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAEyV,KAAK1V,EAAE,CAAC2W,UAAU,KAAKpH,OAAOvP,EAAEiX,SAAShX,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEkW,GAAGhW,QAAQ,IAAIH,GAAGA,EAAEmW,GAAGlW,GAAG+W,SAAS/W,KAAKkW,GAAGg0B,OAAOlqC,EAAE,EAAEF,GAAG,IAAIE,GAAG6W,GAAG/W,EAAE,CAAC,EAEXuV,GAAG,SAASvV,GAAG,OAAOA,EAAEmG,KAAK,KAAK,EAAE,IAAIlG,EAAED,EAAEgQ,UAAU,GAAG/P,EAAEkS,QAAQN,cAAcqF,aAAa,CAAC,IAAIhX,EAAEqU,GAAGtU,EAAEwU,cAAc,IAAIvU,IAAIkV,GAAGnV,EAAI,EAAFC,GAAKimC,GAAGlmC,EAAE6S,QAAY,EAAF0f,MAAOyP,GAAGnvB,KAAI,IAAI4a,MAAM,CAAC,MAAM,KAAK,GAAGga,IAAG,WAAW,IAAIznC,EAAEsxB,GAAGvxB,EAAE,GAAG,GAAG,OAAOC,EAAE,CAAC,IAAIC,EAAEuzB,KAAIE,GAAG1zB,EAAED,EAAE,EAAEE,EAAE,CAAC,IAAGmpC,GAAGrpC,EAAE,GAAG,EAC/bwV,GAAG,SAASxV,GAAG,GAAG,KAAKA,EAAEmG,IAAI,CAAC,IAAIlG,EAAEsxB,GAAGvxB,EAAE,WAAc,OAAOC,GAAa0zB,GAAG1zB,EAAED,EAAE,UAAXyzB,MAAwB4V,GAAGrpC,EAAE,UAAU,CAAC,EAAEyV,GAAG,SAASzV,GAAG,GAAG,KAAKA,EAAEmG,IAAI,CAAC,IAAIlG,EAAEyzB,GAAG1zB,GAAGE,EAAEqxB,GAAGvxB,EAAEC,GAAM,OAAOC,GAAayzB,GAAGzzB,EAAEF,EAAEC,EAAXwzB,MAAgB4V,GAAGrpC,EAAEC,EAAE,CAAC,EAAEyV,GAAG,WAAW,OAAOL,EAAC,EAAEM,GAAG,SAAS3V,EAAEC,GAAG,IAAIC,EAAEmV,GAAE,IAAI,OAAOA,GAAErV,EAAEC,GAAG,CAAC,QAAQoV,GAAEnV,CAAC,CAAC,EAClSyP,GAAG,SAAS3P,EAAEC,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAyB,GAAjBuI,EAAGxI,EAAEE,GAAGD,EAAEC,EAAE+F,KAAQ,UAAU/F,EAAEgC,MAAM,MAAMjC,EAAE,CAAC,IAAIC,EAAEF,EAAEE,EAAEwP,YAAYxP,EAAEA,EAAEwP,WAAsF,IAA3ExP,EAAEA,EAAEmqC,iBAAiB,cAAcC,KAAKC,UAAU,GAAGtqC,GAAG,mBAAuBA,EAAE,EAAEA,EAAEC,EAAEE,OAAOH,IAAI,CAAC,IAAIuB,EAAEtB,EAAED,GAAG,GAAGuB,IAAIxB,GAAGwB,EAAEgpC,OAAOxqC,EAAEwqC,KAAK,CAAC,IAAI/oC,EAAEwO,GAAGzO,GAAG,IAAIC,EAAE,MAAMwD,MAAMlF,EAAE,KAAK0H,EAAGjG,GAAGgH,EAAGhH,EAAEC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,WAAW+H,GAAGxJ,EAAEE,GAAG,MAAM,IAAK,SAAmB,OAAVD,EAAEC,EAAEyH,QAAeoB,GAAG/I,IAAIE,EAAEshC,SAASvhC,GAAE,GAAI,EAAEoQ,GAAGo3B,GAAGn3B,GAAGo3B,GACpa,IAAI+C,GAAG,CAACC,uBAAsB,EAAGC,OAAO,CAAC56B,GAAGyS,GAAGvS,GAAGC,GAAGE,GAAGq3B,KAAKmD,GAAG,CAACC,wBAAwB7zB,GAAG8zB,WAAW,EAAEC,QAAQ,SAASC,oBAAoB,aAC1IC,GAAG,CAACH,WAAWF,GAAGE,WAAWC,QAAQH,GAAGG,QAAQC,oBAAoBJ,GAAGI,oBAAoBE,eAAeN,GAAGM,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,gBAAgB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqBnoC,EAAGyzB,uBAAuB2U,wBAAwB,SAAS7rC,GAAW,OAAO,QAAfA,EAAEgS,GAAGhS,IAAmB,KAAKA,EAAEgQ,SAAS,EAAE66B,wBAAwBD,GAAGC,yBARjN,WAAc,OAAO,IAAI,EASpUiB,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,KAAKC,kBAAkB,kCAAkC,GAAG,oBAAqBC,+BAA+B,CAAC,IAAIC,GAAGD,+BAA+B,IAAIC,GAAGC,YAAYD,GAAGE,cAAc,IAAI34B,GAAGy4B,GAAGG,OAAOvB,IAAIp3B,GAAGw4B,EAAE,CAAC,MAAMrsC,IAAG,CAAC,CAACysC,EAAQ/oC,mDAAmD+mC,GAC9YgC,EAAQC,aAAa,SAAS1sC,EAAEC,GAAG,IAAIC,EAAE,EAAEC,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAI0pC,GAAG5pC,GAAG,MAAMgF,MAAMlF,EAAE,MAAM,OAbuH,SAAYC,EAAEC,EAAEC,GAAG,IAAIsB,EAAE,EAAErB,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACmG,SAASxC,EAAGqa,IAAI,MAAM3c,EAAE,KAAK,GAAGA,EAAE8H,SAAStJ,EAAEmX,cAAclX,EAAE01B,eAAez1B,EAAE,CAa1RysC,CAAG3sC,EAAEC,EAAE,KAAKC,EAAE,EAAEusC,EAAQG,WAAW,SAAS5sC,EAAEC,GAAG,IAAI4pC,GAAG7pC,GAAG,MAAMiF,MAAMlF,EAAE,MAAM,IAAIG,GAAE,EAAGsB,EAAE,GAAGC,EAAE+nC,GAA4P,OAAzP,MAAOvpC,KAAgB,IAAKA,EAAE4sC,sBAAsB3sC,GAAE,QAAI,IAASD,EAAEs8B,mBAAmB/6B,EAAEvB,EAAEs8B,uBAAkB,IAASt8B,EAAEkoC,qBAAqB1mC,EAAExB,EAAEkoC,qBAAqBloC,EAAE4oC,GAAG7oC,EAAE,GAAE,EAAG,KAAK,EAAKE,EAAE,EAAGsB,EAAEC,GAAGzB,EAAEspB,IAAIrpB,EAAEkS,QAAQuW,GAAG,IAAI1oB,EAAE0K,SAAS1K,EAAE0P,WAAW1P,GAAU,IAAI0pC,GAAGzpC,EAAE,EACrfwsC,EAAQK,YAAY,SAAS9sC,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAE0K,SAAS,OAAO1K,EAAE,IAAIC,EAAED,EAAEuzB,gBAAgB,QAAG,IAAStzB,EAAE,CAAC,GAAG,mBAAoBD,EAAEoG,OAAO,MAAMnB,MAAMlF,EAAE,MAAiC,MAA3BC,EAAEiB,OAAO6M,KAAK9N,GAAGo1B,KAAK,KAAWnwB,MAAMlF,EAAE,IAAIC,GAAI,CAAqC,OAA1B,QAAVA,EAAEgS,GAAG/R,IAAc,KAAKD,EAAEgQ,SAAkB,EAAEy8B,EAAQM,UAAU,SAAS/sC,GAAG,OAAO0nC,GAAG1nC,EAAE,EAAEysC,EAAQO,QAAQ,SAAShtC,EAAEC,EAAEC,GAAG,IAAI4pC,GAAG7pC,GAAG,MAAMgF,MAAMlF,EAAE,MAAM,OAAOiqC,GAAG,KAAKhqC,EAAEC,GAAE,EAAGC,EAAE,EAC/YusC,EAAQQ,YAAY,SAASjtC,EAAEC,EAAEC,GAAG,IAAI2pC,GAAG7pC,GAAG,MAAMiF,MAAMlF,EAAE,MAAM,IAAIyB,EAAE,MAAMtB,GAAGA,EAAEgtC,iBAAiB,KAAKzrC,GAAE,EAAGC,EAAE,GAAGC,EAAE6nC,GAAyO,GAAtO,MAAOtpC,KAAgB,IAAKA,EAAE2sC,sBAAsBprC,GAAE,QAAI,IAASvB,EAAEq8B,mBAAmB76B,EAAExB,EAAEq8B,uBAAkB,IAASr8B,EAAEioC,qBAAqBxmC,EAAEzB,EAAEioC,qBAAqBloC,EAAEgpC,GAAGhpC,EAAE,KAAKD,EAAE,EAAE,MAAME,EAAEA,EAAE,KAAKuB,EAAE,EAAGC,EAAEC,GAAG3B,EAAEspB,IAAIrpB,EAAEkS,QAAQuW,GAAG1oB,GAAMwB,EAAE,IAAIxB,EAAE,EAAEA,EAAEwB,EAAEpB,OAAOJ,IAA2ByB,GAAhBA,GAAPvB,EAAEsB,EAAExB,IAAOmtC,aAAgBjtC,EAAEktC,SAAS,MAAMntC,EAAE2oC,gCAAgC3oC,EAAE2oC,gCAAgC,CAAC1oC,EAAEuB,GAAGxB,EAAE2oC,gCAAgCz4B,KAAKjQ,EACvhBuB,GAAG,OAAO,IAAImoC,GAAG3pC,EAAE,EAAEwsC,EAAQrmC,OAAO,SAASpG,EAAEC,EAAEC,GAAG,IAAI4pC,GAAG7pC,GAAG,MAAMgF,MAAMlF,EAAE,MAAM,OAAOiqC,GAAG,KAAKhqC,EAAEC,GAAE,EAAGC,EAAE,EAAEusC,EAAQY,uBAAuB,SAASrtC,GAAG,IAAI8pC,GAAG9pC,GAAG,MAAMiF,MAAMlF,EAAE,KAAK,QAAOC,EAAEqjC,sBAAqBqE,IAAG,WAAWsC,GAAG,KAAK,KAAKhqC,GAAE,GAAG,WAAWA,EAAEqjC,oBAAoB,KAAKrjC,EAAEspB,IAAI,IAAI,GAAE,KAAG,EAAM,EAAEmjB,EAAQa,wBAAwB7F,GAC/UgF,EAAQc,oCAAoC,SAASvtC,EAAEC,EAAEC,EAAEsB,GAAG,IAAIsoC,GAAG5pC,GAAG,MAAM+E,MAAMlF,EAAE,MAAM,GAAG,MAAMC,QAAG,IAASA,EAAEuzB,gBAAgB,MAAMtuB,MAAMlF,EAAE,KAAK,OAAOiqC,GAAGhqC,EAAEC,EAAEC,GAAE,EAAGsB,EAAE,EAAEirC,EAAQ1B,QAAQ,iDChU7L,IAAI/5B,EAAI,EAAQ,KAEdy7B,EAAQG,WAAa57B,EAAE47B,WACvBH,EAAQQ,YAAcj8B,EAAEi8B,4BCH1B,SAASO,IAEP,GAC4C,oBAAnCpB,gCAC4C,mBAA5CA,+BAA+BoB,SAcxC,IAEEpB,+BAA+BoB,SAASA,EAC1C,CAAE,MAAOC,GAGP5Q,QAAQC,MAAM2Q,EAChB,CACF,CAKED,GACAE,EAAOjB,QAAU,EAAjB,oBCzBW,IAAI7mC,EAAEhC,OAAOC,IAAI,iBAAiBilB,EAAEllB,OAAOC,IAAI,gBAAgB9D,EAAE6D,OAAOC,IAAI,kBAAkB+uB,EAAEhvB,OAAOC,IAAI,qBAAqBgvB,EAAEjvB,OAAOC,IAAI,kBAAkBklB,EAAEnlB,OAAOC,IAAI,kBAAkBqlB,EAAEtlB,OAAOC,IAAI,iBAAiBtC,EAAEqC,OAAOC,IAAI,qBAAqBslB,EAAEvlB,OAAOC,IAAI,kBAAkBolB,EAAErlB,OAAOC,IAAI,cAAcivB,EAAElvB,OAAOC,IAAI,cAAcxB,EAAEuB,OAAOe,SACrWmO,EAAE,CAACwgB,UAAU,WAAW,OAAM,CAAE,EAAEO,mBAAmB,WAAW,EAAED,oBAAoB,WAAW,EAAEJ,gBAAgB,WAAW,GAAGne,EAAEpU,OAAO8D,OAAOojB,EAAE,CAAC,EAAE,SAASgE,EAAEnsB,EAAEC,EAAEwB,GAAGG,KAAK6yB,MAAMz0B,EAAE4B,KAAKovB,QAAQ/wB,EAAE2B,KAAKuxB,KAAKhL,EAAEvmB,KAAKwyB,QAAQ3yB,GAAGqR,CAAC,CACwI,SAASsW,IAAI,CAAyB,SAASgD,EAAEpsB,EAAEC,EAAEwB,GAAGG,KAAK6yB,MAAMz0B,EAAE4B,KAAKovB,QAAQ/wB,EAAE2B,KAAKuxB,KAAKhL,EAAEvmB,KAAKwyB,QAAQ3yB,GAAGqR,CAAC,CADxPqZ,EAAEjrB,UAAUunC,iBAAiB,CAAC,EACpQtc,EAAEjrB,UAAUysC,SAAS,SAAS3tC,EAAEC,GAAG,GAAG,iBAAkBD,GAAG,mBAAoBA,GAAG,MAAMA,EAAE,MAAMiF,MAAM,yHAAyHrD,KAAKwyB,QAAQZ,gBAAgB5xB,KAAK5B,EAAEC,EAAE,WAAW,EAAEksB,EAAEjrB,UAAU0sC,YAAY,SAAS5tC,GAAG4B,KAAKwyB,QAAQP,mBAAmBjyB,KAAK5B,EAAE,cAAc,EAAgBopB,EAAEloB,UAAUirB,EAAEjrB,UAAsF,IAAIorB,EAAEF,EAAElrB,UAAU,IAAIkoB,EACrfkD,EAAErlB,YAAYmlB,EAAE/W,EAAEiX,EAAEH,EAAEjrB,WAAWorB,EAAE0H,sBAAqB,EAAG,IAAItF,EAAE7lB,MAAMC,QAAQkgB,EAAE/nB,OAAOC,UAAUC,eAAeqxB,EAAE,CAACrgB,QAAQ,MAAMshB,EAAE,CAACtV,KAAI,EAAG6W,KAAI,EAAG6Y,QAAO,EAAGC,UAAS,GACtK,SAASnX,EAAE32B,EAAEC,EAAEwB,GAAG,IAAID,EAAEtB,EAAE,CAAC,EAAE4F,EAAE,KAAKD,EAAE,KAAK,GAAG,MAAM5F,EAAE,IAAIuB,UAAK,IAASvB,EAAE+0B,MAAMnvB,EAAE5F,EAAE+0B,UAAK,IAAS/0B,EAAEke,MAAMrY,EAAE,GAAG7F,EAAEke,KAAKle,EAAE+oB,EAAE/lB,KAAKhD,EAAEuB,KAAKiyB,EAAEtyB,eAAeK,KAAKtB,EAAEsB,GAAGvB,EAAEuB,IAAI,IAAIG,EAAExB,UAAUC,OAAO,EAAE,GAAG,IAAIuB,EAAEzB,EAAEoJ,SAAS7H,OAAO,GAAG,EAAEE,EAAE,CAAC,IAAI,IAAID,EAAEmH,MAAMlH,GAAGqP,EAAE,EAAEA,EAAErP,EAAEqP,IAAItP,EAAEsP,GAAG7Q,UAAU6Q,EAAE,GAAG9Q,EAAEoJ,SAAS5H,CAAC,CAAC,GAAG1B,GAAGA,EAAEgwB,aAAa,IAAIxuB,KAAKG,EAAE3B,EAAEgwB,kBAAe,IAAS9vB,EAAEsB,KAAKtB,EAAEsB,GAAGG,EAAEH,IAAI,MAAM,CAAC8E,SAASV,EAAE1D,KAAKlC,EAAEme,IAAIrY,EAAEkvB,IAAInvB,EAAE4uB,MAAMv0B,EAAE+0B,OAAOzC,EAAErgB,QAAQ,CAChV,SAASmlB,EAAEt3B,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEsG,WAAWV,CAAC,CAAoG,IAAI2xB,EAAE,OAAO,SAASK,EAAE53B,EAAEC,GAAG,MAAM,iBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAEme,IAA7K,SAAgBne,GAAG,IAAIC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAID,EAAEuD,QAAQ,SAAQ,SAASvD,GAAG,OAAOC,EAAED,EAAE,GAAE,CAA+E+tC,CAAO,GAAG/tC,EAAEme,KAAKle,EAAEiK,SAAS,GAAG,CAC/W,SAASsvB,EAAEx5B,EAAEC,EAAEwB,EAAED,EAAEtB,GAAG,IAAI4F,SAAS9F,EAAK,cAAc8F,GAAG,YAAYA,IAAE9F,EAAE,MAAK,IAAI6F,GAAE,EAAG,GAAG,OAAO7F,EAAE6F,GAAE,OAAQ,OAAOC,GAAG,IAAK,SAAS,IAAK,SAASD,GAAE,EAAG,MAAM,IAAK,SAAS,OAAO7F,EAAEsG,UAAU,KAAKV,EAAE,KAAKkjB,EAAEjjB,GAAE,GAAI,GAAGA,EAAE,OAAW3F,EAAEA,EAAN2F,EAAE7F,GAASA,EAAE,KAAKwB,EAAE,IAAIo2B,EAAE/xB,EAAE,GAAGrE,EAAEktB,EAAExuB,IAAIuB,EAAE,GAAG,MAAMzB,IAAIyB,EAAEzB,EAAEuD,QAAQg0B,EAAE,OAAO,KAAKiC,EAAEt5B,EAAED,EAAEwB,EAAE,IAAG,SAASzB,GAAG,OAAOA,CAAC,KAAI,MAAME,IAAIo3B,EAAEp3B,KAAKA,EADnW,SAAWF,EAAEC,GAAG,MAAM,CAACqG,SAASV,EAAE1D,KAAKlC,EAAEkC,KAAKic,IAAIle,EAAE+0B,IAAIh1B,EAAEg1B,IAAIP,MAAMz0B,EAAEy0B,MAAMQ,OAAOj1B,EAAEi1B,OAAO,CACyQoC,CAAEn3B,EAAEuB,IAAIvB,EAAEie,KAAKtY,GAAGA,EAAEsY,MAAMje,EAAEie,IAAI,IAAI,GAAGje,EAAEie,KAAK5a,QAAQg0B,EAAE,OAAO,KAAKv3B,IAAIC,EAAEkQ,KAAKjQ,IAAI,EAAyB,GAAvB2F,EAAE,EAAErE,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOktB,EAAE1uB,GAAG,IAAI,IAAI2B,EAAE,EAAEA,EAAE3B,EAAEI,OAAOuB,IAAI,CAC/e,IAAID,EAAEF,EAAEo2B,EADwe9xB,EACrf9F,EAAE2B,GAAeA,GAAGkE,GAAG2zB,EAAE1zB,EAAE7F,EAAEwB,EAAEC,EAAExB,EAAE,MAAM,GAAGwB,EAPsU,SAAW1B,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAsC,mBAAjCA,EAAEqC,GAAGrC,EAAEqC,IAAIrC,EAAE,eAA0CA,EAAE,IAAI,CAO5b8E,CAAE9E,GAAG,mBAAoB0B,EAAE,IAAI1B,EAAE0B,EAAEuB,KAAKjD,GAAG2B,EAAE,IAAImE,EAAE9F,EAAEkxB,QAAQ4E,MAA6BjwB,GAAG2zB,EAA1B1zB,EAAEA,EAAE6B,MAA0B1H,EAAEwB,EAAtBC,EAAEF,EAAEo2B,EAAE9xB,EAAEnE,KAAkBzB,QAAQ,GAAG,WAAW4F,EAAE,MAAM7F,EAAEme,OAAOpe,GAAGiF,MAAM,mDAAmD,oBAAoBhF,EAAE,qBAAqBgB,OAAO6M,KAAK9N,GAAGo1B,KAAK,MAAM,IAAIn1B,GAAG,6EAA6E,OAAO4F,CAAC,CACzZ,SAASu7B,EAAEphC,EAAEC,EAAEwB,GAAG,GAAG,MAAMzB,EAAE,OAAOA,EAAE,IAAIwB,EAAE,GAAGtB,EAAE,EAAmD,OAAjDs5B,EAAEx5B,EAAEwB,EAAE,GAAG,IAAG,SAASxB,GAAG,OAAOC,EAAEgD,KAAKxB,EAAEzB,EAAEE,IAAI,IAAUsB,CAAC,CAAC,SAASwgC,EAAEhiC,GAAG,IAAI,IAAIA,EAAEguC,QAAQ,CAAC,IAAI/tC,EAAED,EAAEiuC,SAAQhuC,EAAEA,KAAMmrB,MAAK,SAASnrB,GAAM,IAAID,EAAEguC,UAAU,IAAIhuC,EAAEguC,UAAQhuC,EAAEguC,QAAQ,EAAEhuC,EAAEiuC,QAAQhuC,EAAC,IAAE,SAASA,GAAM,IAAID,EAAEguC,UAAU,IAAIhuC,EAAEguC,UAAQhuC,EAAEguC,QAAQ,EAAEhuC,EAAEiuC,QAAQhuC,EAAC,KAAI,IAAID,EAAEguC,UAAUhuC,EAAEguC,QAAQ,EAAEhuC,EAAEiuC,QAAQhuC,EAAE,CAAC,GAAG,IAAID,EAAEguC,QAAQ,OAAOhuC,EAAEiuC,QAAQC,QAAQ,MAAMluC,EAAEiuC,OAAQ,CAC5Z,IAAI5L,EAAE,CAAClwB,QAAQ,MAAMqwB,EAAE,CAACxqB,WAAW,MAAM0qB,EAAE,CAACxL,uBAAuBmL,EAAExqB,wBAAwB2qB,EAAEzE,kBAAkBvL,GAAGia,EAAQ0B,SAAS,CAACC,IAAIhN,EAAE7+B,QAAQ,SAASvC,EAAEC,EAAEwB,GAAG2/B,EAAEphC,GAAE,WAAWC,EAAE8Q,MAAMnP,KAAKzB,UAAU,GAAEsB,EAAE,EAAE4sC,MAAM,SAASruC,GAAG,IAAIC,EAAE,EAAuB,OAArBmhC,EAAEphC,GAAE,WAAWC,GAAG,IAAUA,CAAC,EAAEquC,QAAQ,SAAStuC,GAAG,OAAOohC,EAAEphC,GAAE,SAASA,GAAG,OAAOA,CAAC,KAAI,EAAE,EAAEuuC,KAAK,SAASvuC,GAAG,IAAIs3B,EAAEt3B,GAAG,MAAMiF,MAAM,yEAAyE,OAAOjF,CAAC,GAAGysC,EAAQvZ,UAAU/G,EAAEsgB,EAAQ+B,SAASzuC,EACne0sC,EAAQgC,SAAS5b,EAAE4Z,EAAQiC,cAActiB,EAAEqgB,EAAQkC,WAAW/b,EAAE6Z,EAAQmC,SAASzlB,EAAEsjB,EAAQ/oC,mDAAmDg/B,EAC9I+J,EAAQoC,aAAa,SAAS7uC,EAAEC,EAAEwB,GAAG,GAAG,MAAOzB,EAAc,MAAMiF,MAAM,iFAAiFjF,EAAE,KAAK,IAAIwB,EAAE6T,EAAE,CAAC,EAAErV,EAAEy0B,OAAOv0B,EAAEF,EAAEme,IAAIrY,EAAE9F,EAAEg1B,IAAInvB,EAAE7F,EAAEi1B,OAAO,GAAG,MAAMh1B,EAAE,CAAoE,QAAnE,IAASA,EAAE+0B,MAAMlvB,EAAE7F,EAAE+0B,IAAInvB,EAAE2sB,EAAErgB,cAAS,IAASlS,EAAEke,MAAMje,EAAE,GAAGD,EAAEke,KAAQne,EAAEkC,MAAMlC,EAAEkC,KAAK8tB,aAAa,IAAIruB,EAAE3B,EAAEkC,KAAK8tB,aAAa,IAAItuB,KAAKzB,EAAE+oB,EAAE/lB,KAAKhD,EAAEyB,KAAK+xB,EAAEtyB,eAAeO,KAAKF,EAAEE,QAAG,IAASzB,EAAEyB,SAAI,IAASC,EAAEA,EAAED,GAAGzB,EAAEyB,GAAG,CAAC,IAAIA,EAAEvB,UAAUC,OAAO,EAAE,GAAG,IAAIsB,EAAEF,EAAE8H,SAAS7H,OAAO,GAAG,EAAEC,EAAE,CAACC,EAAEkH,MAAMnH,GACrf,IAAI,IAAIsP,EAAE,EAAEA,EAAEtP,EAAEsP,IAAIrP,EAAEqP,GAAG7Q,UAAU6Q,EAAE,GAAGxP,EAAE8H,SAAS3H,CAAC,CAAC,MAAM,CAAC2E,SAASV,EAAE1D,KAAKlC,EAAEkC,KAAKic,IAAIje,EAAE80B,IAAIlvB,EAAE2uB,MAAMjzB,EAAEyzB,OAAOpvB,EAAE,EAAE4mC,EAAQqC,cAAc,SAAS9uC,GAAqK,OAAlKA,EAAE,CAACsG,SAAS4iB,EAAEqH,cAAcvwB,EAAE+uC,eAAe/uC,EAAEgvC,aAAa,EAAEC,SAAS,KAAKC,SAAS,KAAKC,cAAc,KAAKC,YAAY,OAAQH,SAAS,CAAC3oC,SAASyiB,EAAExiB,SAASvG,GAAUA,EAAEkvC,SAASlvC,CAAC,EAAEysC,EAAQ1rC,cAAc41B,EAAE8V,EAAQ4C,cAAc,SAASrvC,GAAG,IAAIC,EAAE02B,EAAEhO,KAAK,KAAK3oB,GAAY,OAATC,EAAEiC,KAAKlC,EAASC,CAAC,EAAEwsC,EAAQ6C,UAAU,WAAW,MAAM,CAACn9B,QAAQ,KAAK,EAC9ds6B,EAAQ8C,WAAW,SAASvvC,GAAG,MAAM,CAACsG,SAAS/E,EAAE6E,OAAOpG,EAAE,EAAEysC,EAAQ+C,eAAelY,EAAEmV,EAAQgD,KAAK,SAASzvC,GAAG,MAAM,CAACsG,SAASwsB,EAAEtsB,SAAS,CAACwnC,SAAS,EAAEC,QAAQjuC,GAAGyG,MAAMu7B,EAAE,EAAEyK,EAAQiD,KAAK,SAAS1vC,EAAEC,GAAG,MAAM,CAACqG,SAAS2iB,EAAE/mB,KAAKlC,EAAEq+B,aAAQ,IAASp+B,EAAE,KAAKA,EAAE,EAAEwsC,EAAQkD,gBAAgB,SAAS3vC,GAAG,IAAIC,EAAEuiC,EAAExqB,WAAWwqB,EAAExqB,WAAW,CAAC,EAAE,IAAIhY,GAAG,CAAC,QAAQwiC,EAAExqB,WAAW/X,CAAC,CAAC,EAAEwsC,EAAQmD,aAAa,WAAW,MAAM3qC,MAAM,2DAA4D,EAC1cwnC,EAAQnR,YAAY,SAASt7B,EAAEC,GAAG,OAAOoiC,EAAElwB,QAAQmpB,YAAYt7B,EAAEC,EAAE,EAAEwsC,EAAQlR,WAAW,SAASv7B,GAAG,OAAOqiC,EAAElwB,QAAQopB,WAAWv7B,EAAE,EAAEysC,EAAQzQ,cAAc,WAAW,EAAEyQ,EAAQxQ,iBAAiB,SAASj8B,GAAG,OAAOqiC,EAAElwB,QAAQ8pB,iBAAiBj8B,EAAE,EAAEysC,EAAQjR,UAAU,SAASx7B,EAAEC,GAAG,OAAOoiC,EAAElwB,QAAQqpB,UAAUx7B,EAAEC,EAAE,EAAEwsC,EAAQpQ,MAAM,WAAW,OAAOgG,EAAElwB,QAAQkqB,OAAO,EAAEoQ,EAAQhR,oBAAoB,SAASz7B,EAAEC,EAAEwB,GAAG,OAAO4gC,EAAElwB,QAAQspB,oBAAoBz7B,EAAEC,EAAEwB,EAAE,EAC7bgrC,EAAQ/Q,mBAAmB,SAAS17B,EAAEC,GAAG,OAAOoiC,EAAElwB,QAAQupB,mBAAmB17B,EAAEC,EAAE,EAAEwsC,EAAQ9Q,gBAAgB,SAAS37B,EAAEC,GAAG,OAAOoiC,EAAElwB,QAAQwpB,gBAAgB37B,EAAEC,EAAE,EAAEwsC,EAAQ7Q,QAAQ,SAAS57B,EAAEC,GAAG,OAAOoiC,EAAElwB,QAAQypB,QAAQ57B,EAAEC,EAAE,EAAEwsC,EAAQ5Q,WAAW,SAAS77B,EAAEC,EAAEwB,GAAG,OAAO4gC,EAAElwB,QAAQ0pB,WAAW77B,EAAEC,EAAEwB,EAAE,EAAEgrC,EAAQ3Q,OAAO,SAAS97B,GAAG,OAAOqiC,EAAElwB,QAAQ2pB,OAAO97B,EAAE,EAAEysC,EAAQ1Q,SAAS,SAAS/7B,GAAG,OAAOqiC,EAAElwB,QAAQ4pB,SAAS/7B,EAAE,EAAEysC,EAAQrQ,qBAAqB,SAASp8B,EAAEC,EAAEwB,GAAG,OAAO4gC,EAAElwB,QAAQiqB,qBAAqBp8B,EAAEC,EAAEwB,EAAE,EAC/egrC,EAAQvQ,cAAc,WAAW,OAAOmG,EAAElwB,QAAQ+pB,eAAe,EAAEuQ,EAAQ1B,QAAQ,yBCtBjF2C,EAAOjB,QAAU,EAAjB,oBCMW,SAAS/qC,EAAE1B,EAAEC,GAAG,IAAIC,EAAEF,EAAEI,OAAOJ,EAAEmQ,KAAKlQ,GAAGD,EAAE,KAAK,EAAEE,GAAG,CAAC,IAAIsB,EAAEtB,EAAE,IAAI,EAAEuB,EAAEzB,EAAEwB,GAAG,KAAG,EAAEG,EAAEF,EAAExB,IAA0B,MAAMD,EAA7BA,EAAEwB,GAAGvB,EAAED,EAAEE,GAAGuB,EAAEvB,EAAEsB,CAAc,CAAC,CAAC,SAASqE,EAAE7F,GAAG,OAAO,IAAIA,EAAEI,OAAO,KAAKJ,EAAE,EAAE,CAAC,SAAS8F,EAAE9F,GAAG,GAAG,IAAIA,EAAEI,OAAO,OAAO,KAAK,IAAIH,EAAED,EAAE,GAAGE,EAAEF,EAAE6vC,MAAM,GAAG3vC,IAAID,EAAE,CAACD,EAAE,GAAGE,EAAEF,EAAE,IAAI,IAAIwB,EAAE,EAAEC,EAAEzB,EAAEI,OAAO+oB,EAAE1nB,IAAI,EAAED,EAAE2nB,GAAG,CAAC,IAAInY,EAAE,GAAGxP,EAAE,GAAG,EAAE6T,EAAErV,EAAEgR,GAAG8X,EAAE9X,EAAE,EAAEiY,EAAEjpB,EAAE8oB,GAAG,GAAG,EAAEnnB,EAAE0T,EAAEnV,GAAG4oB,EAAErnB,GAAG,EAAEE,EAAEsnB,EAAE5T,IAAIrV,EAAEwB,GAAGynB,EAAEjpB,EAAE8oB,GAAG5oB,EAAEsB,EAAEsnB,IAAI9oB,EAAEwB,GAAG6T,EAAErV,EAAEgR,GAAG9Q,EAAEsB,EAAEwP,OAAQ,MAAG8X,EAAErnB,GAAG,EAAEE,EAAEsnB,EAAE/oB,IAA0B,MAAMF,EAA7BA,EAAEwB,GAAGynB,EAAEjpB,EAAE8oB,GAAG5oB,EAAEsB,EAAEsnB,CAAa9oB,CAAC,CAAC,CAAC,OAAOC,CAAC,CAC3c,SAAS0B,EAAE3B,EAAEC,GAAG,IAAIC,EAAEF,EAAE8vC,UAAU7vC,EAAE6vC,UAAU,OAAO,IAAI5vC,EAAEA,EAAEF,EAAEoY,GAAGnY,EAAEmY,EAAE,CAAC,GAAG,iBAAkB23B,aAAa,mBAAoBA,YAAYz1B,IAAI,CAAC,IAAI1U,EAAEmqC,YAAYtD,EAAQ15B,aAAa,WAAW,OAAOnN,EAAE0U,KAAK,CAAC,KAAK,CAAC,IAAIva,EAAEsa,KAAKuY,EAAE7yB,EAAEua,MAAMmyB,EAAQ15B,aAAa,WAAW,OAAOhT,EAAEua,MAAMsY,CAAC,CAAC,CAAC,IAAIC,EAAE,GAAG9J,EAAE,GAAGG,EAAE,EAAE3nB,EAAE,KAAKuxB,EAAE,EAAEzwB,GAAE,EAAGyC,GAAE,EAAGgO,GAAE,EAAGqV,EAAE,mBAAoByC,WAAWA,WAAW,KAAKuB,EAAE,mBAAoBrB,aAAaA,aAAa,KAAK1B,EAAE,oBAAqB4mB,aAAaA,aAAa,KACnT,SAAS5jB,EAAEpsB,GAAG,IAAI,IAAIC,EAAE4F,EAAEkjB,GAAG,OAAO9oB,GAAG,CAAC,GAAG,OAAOA,EAAEqyB,SAASxsB,EAAEijB,OAAQ,MAAG9oB,EAAEgwC,WAAWjwC,GAAgD,MAA9C8F,EAAEijB,GAAG9oB,EAAE6vC,UAAU7vC,EAAEiwC,eAAexuC,EAAEmxB,EAAE5yB,EAAa,CAACA,EAAE4F,EAAEkjB,EAAE,CAAC,CAAC,SAASuD,EAAEtsB,GAAa,GAAV8S,GAAE,EAAGsZ,EAAEpsB,IAAO8E,EAAE,GAAG,OAAOe,EAAEgtB,GAAG/tB,GAAE,EAAG4pB,EAAE1F,OAAO,CAAC,IAAI/oB,EAAE4F,EAAEkjB,GAAG,OAAO9oB,GAAGuyB,EAAElG,EAAErsB,EAAEgwC,UAAUjwC,EAAE,CAAC,CACra,SAASgpB,EAAEhpB,EAAEC,GAAG6E,GAAE,EAAGgO,IAAIA,GAAE,EAAGqZ,EAAEsH,GAAGA,GAAG,GAAGpxB,GAAE,EAAG,IAAInC,EAAE4yB,EAAE,IAAS,IAAL1G,EAAEnsB,GAAOsB,EAAEsE,EAAEgtB,GAAG,OAAOtxB,MAAMA,EAAE2uC,eAAejwC,IAAID,IAAI22B,MAAM,CAAC,IAAIn1B,EAAED,EAAE+wB,SAAS,GAAG,mBAAoB9wB,EAAE,CAACD,EAAE+wB,SAAS,KAAKQ,EAAEvxB,EAAE4uC,cAAc,IAAI1uC,EAAED,EAAED,EAAE2uC,gBAAgBjwC,GAAGA,EAAEwsC,EAAQ15B,eAAe,mBAAoBtR,EAAEF,EAAE+wB,SAAS7wB,EAAEF,IAAIsE,EAAEgtB,IAAI/sB,EAAE+sB,GAAGzG,EAAEnsB,EAAE,MAAM6F,EAAE+sB,GAAGtxB,EAAEsE,EAAEgtB,EAAE,CAAC,GAAG,OAAOtxB,EAAE,IAAI4nB,GAAE,MAAO,CAAC,IAAInY,EAAEnL,EAAEkjB,GAAG,OAAO/X,GAAGwhB,EAAElG,EAAEtb,EAAEi/B,UAAUhwC,GAAGkpB,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ5nB,EAAE,KAAKuxB,EAAE5yB,EAAEmC,GAAE,CAAE,CAAC,CAD1a,oBAAqB+tC,gBAAW,IAASA,UAAUC,iBAAY,IAASD,UAAUC,WAAWC,gBAAgBF,UAAUC,WAAWC,eAAe3nB,KAAKynB,UAAUC,YAC2Q,IACzPjP,EAD6P/J,GAAE,EAAGC,EAAE,KAAK7D,GAAG,EAAE8D,EAAE,EAAEK,GAAG,EACvc,SAASjB,IAAI,QAAO8V,EAAQ15B,eAAe6kB,EAAEL,EAAO,CAAC,SAASiC,IAAI,GAAG,OAAOlC,EAAE,CAAC,IAAIt3B,EAAEysC,EAAQ15B,eAAe6kB,EAAE53B,EAAE,IAAIC,GAAE,EAAG,IAAIA,EAAEq3B,GAAE,EAAGt3B,EAAE,CAAC,QAAQC,EAAEmhC,KAAK/J,GAAE,EAAGC,EAAE,KAAK,CAAC,MAAMD,GAAE,CAAE,CAAO,GAAG,mBAAoBjO,EAAEgY,EAAE,WAAWhY,EAAEoQ,EAAE,OAAO,GAAG,oBAAqB+W,eAAe,CAAC,IAAIvO,EAAE,IAAIuO,eAAelO,EAAEL,EAAEwO,MAAMxO,EAAEyO,MAAMC,UAAUlX,EAAE4H,EAAE,WAAWiB,EAAEsO,YAAY,KAAK,CAAC,MAAMvP,EAAE,WAAWjZ,EAAEqR,EAAE,EAAE,EAAE,SAAS9K,EAAE1uB,GAAGs3B,EAAEt3B,EAAEq3B,IAAIA,GAAE,EAAG+J,IAAI,CAAC,SAAS5O,EAAExyB,EAAEC,GAAGwzB,EAAEtL,GAAE,WAAWnoB,EAAEysC,EAAQ15B,eAAe,GAAE9S,EAAE,CAC5dwsC,EAAQ94B,sBAAsB,EAAE84B,EAAQt5B,2BAA2B,EAAEs5B,EAAQh5B,qBAAqB,EAAEg5B,EAAQl5B,wBAAwB,EAAEk5B,EAAQmE,mBAAmB,KAAKnE,EAAQp5B,8BAA8B,EAAEo5B,EAAQh6B,wBAAwB,SAASzS,GAAGA,EAAEsyB,SAAS,IAAI,EAAEma,EAAQoE,2BAA2B,WAAW/rC,GAAGzC,IAAIyC,GAAE,EAAG4pB,EAAE1F,GAAG,EAC1UyjB,EAAQqE,wBAAwB,SAAS9wC,GAAG,EAAEA,GAAG,IAAIA,EAAE68B,QAAQC,MAAM,mHAAmHvF,EAAE,EAAEv3B,EAAE+T,KAAKg9B,MAAM,IAAI/wC,GAAG,CAAC,EAAEysC,EAAQx5B,iCAAiC,WAAW,OAAO6f,CAAC,EAAE2Z,EAAQuE,8BAA8B,WAAW,OAAOnrC,EAAEgtB,EAAE,EAAE4Z,EAAQwE,cAAc,SAASjxC,GAAG,OAAO8yB,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI7yB,EAAE,EAAE,MAAM,QAAQA,EAAE6yB,EAAE,IAAI5yB,EAAE4yB,EAAEA,EAAE7yB,EAAE,IAAI,OAAOD,GAAG,CAAC,QAAQ8yB,EAAE5yB,CAAC,CAAC,EAAEusC,EAAQyE,wBAAwB,WAAW,EAC9fzE,EAAQ55B,sBAAsB,WAAW,EAAE45B,EAAQ0E,yBAAyB,SAASnxC,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIE,EAAE4yB,EAAEA,EAAE9yB,EAAE,IAAI,OAAOC,GAAG,CAAC,QAAQ6yB,EAAE5yB,CAAC,CAAC,EAChMusC,EAAQl6B,0BAA0B,SAASvS,EAAEC,EAAEC,GAAG,IAAIsB,EAAEirC,EAAQ15B,eAA8F,OAAtC7S,EAAzC,iBAAkBA,GAAG,OAAOA,GAAe,iBAAZA,EAAEA,EAAEkxC,QAA6B,EAAElxC,EAAEsB,EAAEtB,EAAOsB,EAASxB,GAAG,KAAK,EAAE,IAAIyB,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzMzB,EAAE,CAACoY,GAAG8Q,IAAIoJ,SAASryB,EAAEkwC,cAAcnwC,EAAEiwC,UAAU/vC,EAAEgwC,eAAvDzuC,EAAEvB,EAAEuB,EAAoEquC,WAAW,GAAG5vC,EAAEsB,GAAGxB,EAAE8vC,UAAU5vC,EAAEwB,EAAEqnB,EAAE/oB,GAAG,OAAO6F,EAAEgtB,IAAI7yB,IAAI6F,EAAEkjB,KAAKjW,GAAGqZ,EAAEsH,GAAGA,GAAG,GAAG3gB,GAAE,EAAG0f,EAAElG,EAAEpsB,EAAEsB,MAAMxB,EAAE8vC,UAAUruC,EAAEC,EAAEmxB,EAAE7yB,GAAG8E,GAAGzC,IAAIyC,GAAE,EAAG4pB,EAAE1F,KAAYhpB,CAAC,EACneysC,EAAQ95B,qBAAqBgkB,EAAE8V,EAAQ4E,sBAAsB,SAASrxC,GAAG,IAAIC,EAAE6yB,EAAE,OAAO,WAAW,IAAI5yB,EAAE4yB,EAAEA,EAAE7yB,EAAE,IAAI,OAAOD,EAAE+Q,MAAMnP,KAAKzB,UAAU,CAAC,QAAQ2yB,EAAE5yB,CAAC,CAAC,CAAC,kBCf7JwtC,EAAOjB,QAAU,EAAjB,qkBCHF,gBACA,UACA,UACA,UAuBA,SAAsB6E,EAA8BpvC,EAAc0f,EAC1D/E,EAAuC,CAAC,EAAG00B,EAAmC,CAAC,4CAkBnF,MAhB2B,QAAvBrvC,EAAKM,gBACLof,GAAM,IAAA4vB,aAAY5vB,EAAK/E,GAAM,GAE7BA,EAAO,YAGY40B,MAAM7vB,EAAK,CAC9B8vB,OAAQxvC,EACRqvC,QAAS,OAAF,QACH,eAAgB,oBACZA,GAAW,CAAC,GAEpBI,SAAU,SACV7pC,KAAM+U,EAAOytB,KAAKC,UAAU1tB,GAAQ,MAI5C,IAQA,SAAgB+0B,EAAejqC,GAC3B,IAEI,OADA9G,OAAOgxC,gBAAgBlqC,IAChB,EACT,SACE,OAAO,EAEf,CAcA,SAAgBmqC,EAAwBnqC,GACpC,OAAOiqC,EAAejqC,GAChBA,EAEE,aAAcA,GAAmC,mBAAnBA,EAAMuC,SAClCvC,EAAMuC,WACNkU,OAAOzW,EAErB,CAzDA,kCA4BA,mBAqBA,yBAUA,yCACIoqC,OAAOC,QAAQC,UAAUC,aAAY,CAACC,EAASC,EAAQ9f,IAC3B,gBAApB6f,EAAQ1V,SACR6U,EAA8Ba,EAAQjwC,KAAMiwC,EAAQvwB,IAAKuwB,EAAQt1B,KAAMs1B,EAAQZ,SAASnmB,MAAYinB,GAAa,EAAD,gCAC5G,MAAMC,EAASH,EAAQI,QACf,IAAAC,wBAAwB,IAAAC,kBAChBJ,EAASK,OACf7pC,MAAM8pC,KAAK,IAAIC,iBAAiBP,EAASQ,gBAC7C,KAENvgB,EAAS,CACLwgB,aAAeX,EAAQI,OAAiC,SAAlBF,EAAS3wB,OAC/CqxB,eAAgBT,EAChBf,QAAUY,EAAQa,eAAiBX,EAASd,QAClC,IAAIc,EAASd,QAAQ0B,WAAWC,QAAO,CAACC,GAAMh1B,EAAKxW,MACjDwrC,EAAIh1B,GAAOxW,EACJwrC,IAEb,CAAC,GACD,KACNC,OAAQf,EAASe,OACjBpO,GAAIqN,EAASrN,IAErB,MAAG3Z,OAAMyR,IACLD,QAAQC,MAAM,0BAA2BA,GACzCxK,EAAS,CACLwK,MAAOgV,EAAqBhV,IAC9B,KAGC,GAGa,YAApBqV,EAAQ1V,WACR,IAAA4W,SAAQlB,EAAQxqC,MAAOwqC,EAAQmB,OAAOloB,KAAKkH,GAAUjH,OAAO5pB,IACxDo7B,QAAQC,MAAM,uBAAwBr7B,GACtC6wB,EAAS,CACLwK,MAAOgV,EAAqBrwC,IAC9B,KAGC,IAKnB,EAEA,qCAA0CS,EAAc0f,EAAa/E,EAAO,CAAC,EAAG00B,EAAU,CAAC,GACvF,OAAO,IAAIvmB,SAAQ,CAACG,EAASooB,KAEzBxB,OAAOC,QAAQwB,YAAY,CACvB/W,QAAS,cACTv6B,OACA0f,MACA/E,OACA00B,YACAc,IACI,UAAWA,EACXkB,EAAOlB,EAASvV,OAEhB3R,EAAQknB,KAEd,GAEV,EAEA,2CAAgDnwC,EAAc0f,EAAa/E,EAAO,CAAC,EAAG00B,EAAU,CAAC,GAC7F,OAAO,IAAIvmB,SAAQ,CAACG,EAASooB,KAEzBxB,OAAOC,QAAQwB,YAAY,CACvB/W,QAAS,cACTv6B,OACA0f,MACA/E,OACA00B,UACAgB,QAAQ,EACRS,eAAe,IACfX,IACI,UAAWA,EACXkB,EAAOlB,EAASvV,OAEhB3R,EAAQknB,KAEd,GAEV,EAWA,sBAA2BF,EAA8CsB,EAAgBC,GACrF,MAAM5rC,EAAQ,iBAAkBqqC,KAAY,IAAAwB,eAAcxB,EAAQW,cAAiB,KAAKX,EAAQW,eAAiB,GACjHjW,QAAQ+W,KAAK,IAAIH,iCAAsCtB,EAAQiB,eAAeM,YAA6B5rC,IAC/G,kFCzLa,EAAA+rC,QAA8B,oBAAd,QAAgD,oBAAb,OAA2B9B,OAAS,KAAoC+B,0FCIxI,kBAKI,WAAA7sC,CAAY8sC,EAAeC,EAAa,KACpCpyC,KAAKknC,MAAQ,CAAC,EACdlnC,KAAKmyC,KAAOA,EACZnyC,KAAKoyC,WAAaA,CACtB,CAEO,YAAAC,CAAa91B,GAChB,OAAOvc,KAAKknC,MAAM3qB,EACtB,CAEO,UAAA+1B,CAAW/1B,GACd,IAAKvc,KAAKknC,MAAM3qB,KACZvc,KAAKknC,MAAM3qB,GAAO,OAAH,wBACRvc,KAAKmyC,QAAM,CACdI,SAAU95B,KAAKC,QAGfrZ,OAAO6M,KAAKlM,KAAKknC,OAAO1oC,OAASwB,KAAKoyC,YAAY,CAClD,MAAMI,EAASnzC,OAAOgyC,QAAQrxC,KAAKknC,OAAOoK,QAAO,CAAClzC,EAAGC,IAAMD,EAAE,GAAGm0C,SAAWl0C,EAAE,GAAGk0C,SAAWn0C,EAAIC,WACxF2B,KAAKknC,MAAMsL,EAAO,IAIjC,OAAOxyC,KAAKknC,MAAM3qB,EACtB,CAEO,SAAAk2B,CAAUl2B,GAGb,OAFIvc,KAAKknC,MAAM3qB,KAAMvc,KAAKknC,MAAM3qB,GAAKg2B,SAAW95B,KAAKC,SAE5C1Y,KAAKknC,MAAM3qB,EACxB,4fCvCJ,gBAEMm2B,EAAmC,GA2BzC,SAAgBC,IACZ,MAAO,GAAGxC,OAAOC,QAAQ55B,YAC7B,CA5BA,8BAAmC8P,GAC/BosB,EAAiBnkC,KAAK+X,EAC1B,EAEA,kCACI,MAAMnZ,EAASwlC,IAETC,EAAUzE,YAAYz1B,MAC5BzZ,OAAO8vC,YAAY,CACf5hC,SACA0tB,QAqBG,kBAlBP57B,OAAO+P,iBAAiB,WAAY6rB,UAChC,IAAgB,QAAZ,EAAAA,EAAQ5f,YAAI,eAAE9N,SACP0tB,EAAQ5f,KAAK9N,SAAWA,GAgBhC,kBAfQ0tB,EAAQ5f,KAAK4f,SACbsT,YAAYz1B,MAAQk6B,EAAU,IAErC,IAAK,MAAMtsB,KAAYosB,EACnBpsB,MAIhB,EAEA,iBAIA,oCACI,MAAO,eACX,EAQA,gCAA2CusB,EAAiC,GAAIC,GAAqB,4CACjG,MAAMC,EAAUD,EAAqBD,EAAeA,EAAa3sB,OAAOiqB,OAAOC,QAAQ4C,cAAcC,iBAAmB,IACxH,GAAI,cAAe9C,OACf,IAAK,MAAM+C,KAAMH,EACb,IAAK,MAAMI,WAAa,EAAAlB,QAAQmB,KAAKC,MAAM,CAACrzB,IAAKkzB,EAAGI,UAC5CJ,EAAGK,KAAOL,EAAGK,IAAI/0C,OAAS,UACpB,EAAAyzC,QAAQuB,UAAUC,UAAU,CAC9B9lC,OAAQ,CAAC+lC,MAAOP,EAAI38B,IACpBm9B,MAAOT,EAAGK,KAAO,YAInB,EAAAtB,QAAQuB,UAAUI,cAAc,CAClCjmC,OAAQ,CAAC+lC,MAAOP,EAAI38B,IACpBm9B,MAAOT,EAAGW,IAAM,GAEhBC,MAAOZ,EAAU,OAAK,kBAKlC/C,OAAO4D,QAAQC,OAAO,CAClBC,UAAU,IACVF,YACA,IAAK,MAAM90C,KAAU80C,EACjB,GAAI90C,EAAOm0C,KACP,IAAK,MAAMD,KAAOl0C,EAAOm0C,KACrB,IAAK,MAAMc,KAAUnB,EACjB,GAAII,EAAInzB,MAA2B,QAApB,EAAc,QAAd,EAAAk0B,EAAOZ,eAAO,eAAEa,YAAI,uBAAI3wC,GAC/B2vC,EAAInzB,IAAKxc,MAAMA,EACN7B,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,UAAS,CACrC,GAAIuyC,EAAOL,GACP,IAAK,MAAMO,KAAQF,EAAOL,GACjB1D,OAAOiD,KAAKQ,cAAcT,EAAI38B,GAAK,CACpC49B,SAKZ,GAAIF,EAAOX,IACP,IAAK,MAAMa,KAAQF,EAAOX,IACjBpD,OAAOiD,KAAKK,UAAUN,EAAI38B,GAAK,CAChC49B,YAW5C,0dClGA,gBA4OA,SAAgBvD,IACZ,MAA6B,oBAAhB,WAAoD,yBAArBrC,UAAU6F,MAC1D,CAcA,SAAgBC,EAAU/3B,GACtB,OAAW,MAAPA,EACO,GACK,KAAPA,EACE,QACY,GAAdA,EAAI/d,OACF+d,EAAIxb,cAEJwb,CACf,CA5OA,oBAWI,WAAAlX,CAAakvC,EAAiBC,EACtBC,EAAuDC,GAAY,GAX3E,KAAAC,qBAA0E,GAC1E,KAAAC,oBAAyE,GAGzE,KAAAC,iBAA6B,KAC7B,KAAAC,mBAA+B,KAC/B,KAAAC,OAAmB,KACnB,KAAAC,MAAkB,KAClB,KAAAN,WAAY,EAIR10C,KAAKu0C,aAAeA,EACpBv0C,KAAKw0C,cAAgBA,EACrBx0C,KAAK00C,UAAYA,EAEZ10C,KAAKi1C,YAAYR,GAAuBjrB,MAAM0rB,IAC/Cl1C,KAAK+0C,OAASG,aAAM,EAANA,EAAQC,KACtBn1C,KAAKg1C,MAAQE,aAAM,EAANA,EAAQF,KAAK,GAElC,CAEA,WAAAI,GACIjF,OAAOkF,QAAQC,UAAUhF,aAAY,CAACiF,EAAwDC,KAC1F,GAAiB,SAAbA,EAAqB,CACrB,IAAK,MAAMj5B,KAAOg5B,EACdv1C,KAAK60C,iBAAkBt4B,GAAOg5B,EAAQh5B,GAAKk5B,SAG/C,IAAK,MAAM/kB,KAAY1wB,KAAK40C,oBACxBlkB,EAAS6kB,QAEV,GAAiB,UAAbC,EAAsB,CAC7B,IAAK,MAAMj5B,KAAOg5B,EACdv1C,KAAK80C,mBAAoBv4B,GAAOg5B,EAAQh5B,GAAKk5B,SAGjD,IAAK,MAAM/kB,KAAY1wB,KAAK20C,qBACxBjkB,EAAS6kB,OAKrB,IAAIG,EAAU,EACd,MAAMC,EAA4B,IAAIh3C,IACtC,IAAIi3C,EAAuC,KAE3C,MAAMC,EAAO71C,KACP81C,EAAyC,CAC3C,GAAAjyC,CAAiCkyC,EAAkBC,EAASjwC,GAGxD,GAFA8vC,EAAKhB,iBAAkBmB,GAAQjwC,EAE3B0S,KAAKC,MAAQg9B,EAAU,IAAK,CAE5B,GADAC,EAAa52C,IAAIi3C,IACZJ,EAAe,CAChB,MAAMK,EAAc,KAChB,MAAMC,EAAQ,IAAIP,GAClBA,EAAaQ,QAERhG,OAAOkF,QAAQF,KAAKtxC,IAAIqyC,EAAM1J,KAAK7sC,GAAM,CAACA,EAAGk2C,EAAKhB,iBAAkBl1C,MAAK2xC,QAAO,CAACC,GAAMrtC,EAAGvE,MAC3F4xC,EAAIrtC,GAAKvE,EACF4xC,IACR,CAAC,IAEJqE,EAAgB,IAAI,EAGxBA,EAAgB5sB,WAAWitB,EAAa,IAG5C,OAAO,EASX,OANK9F,OAAOkF,QAAQF,KAAKtxC,IAAI,CACzB,CAACmyC,GAAOjwC,IAGZ2vC,EAAUj9B,KAAKC,OAER,CACX,EAEA,GAAApT,CAAiCywC,EAAkBC,GAC/C,MAAM/6B,EAAO46B,EAAKhB,iBAAkBmB,GAEpC,OAAOD,EAAIC,IAAS/6B,CACxB,EAEAm7B,eAAc,CAACL,EAAkBC,KACxB7F,OAAOkF,QAAQF,KAAKkB,OAAgBL,IAElC,IAKTM,EAA2C,CAC7CzyC,IAAG,CAA+BkyC,EAAmBC,EAASjwC,KAC1D8vC,EAAKf,mBAAoBkB,GAAQjwC,EAE5BoqC,OAAOkF,QAAQL,MAAMnxC,IAAI,CAC1B,CAACmyC,GAAOjwC,KAGL,GAGX,GAAAT,CAAkCywC,EAAmBC,GACjD,MAAM/6B,EAAO46B,EAAKf,mBAAoBkB,GAEtC,OAAOD,EAAIC,IAAS/6B,CACxB,EAEAm7B,eAAc,CAACL,EAAmBC,KACzB7F,OAAOkF,QAAQL,MAAMqB,OAAgBL,IAEnC,IAKf,MAAO,CACHb,KAAM,IAAIoB,MAAS,CAAEC,QAASV,GAA+BA,GAC7Dd,MAAO,IAAIuB,MAAS,CAAEC,QAASF,GAAgCA,GAEvE,CAEA,eAAAG,CAAgBT,GACZ,MAAMjwC,EAAQ/F,KAAK60C,iBAAkBmB,GAChC7F,OAAOkF,QAAQF,KAAKtxC,IAAI,CACzB,CAACmyC,GAAOjwC,GAEhB,CAEA,gBAAA2wC,CAAiBV,GACb,MAAMjwC,EAAQ/F,KAAK80C,mBAAoBkB,GAElC7F,OAAOkF,QAAQL,MAAMnxC,IAAI,CAC1B,CAACmyC,GAAOjwC,IACT,KACC,MAAMm1B,EAAQiV,OAAOC,QAAQuG,UACzBzb,GAAkB,2BAAT8a,GACTY,MAAM,yBAAyBzG,OAAO0G,KAAKC,WAAW,qBAAqB5b,OAGvF,CAEM,WAAA6b,kDACI3tB,QAAQ4tB,IAAI,CAAC,IAAI5tB,SAAeG,IAClC4mB,OAAOkF,QAAQF,KAAK7vC,IAAI,MAAO4wC,IAC3Bl2C,KAAK60C,iBAAiCqB,OAERe,IAA1Bj3C,KAAK60C,mBACL70C,KAAK60C,iBAAmB,CAAC,GAErB70C,KAAK00C,WACEz1C,OAAO0d,SAAS6F,KAAKpe,SAAS,kBACrCwyC,MAAM,GAAGzG,OAAO0G,KAAKC,WAAW,yBAC5B92C,KAAK00C,UAAY,OAAOvE,OAAO0G,KAAKC,WAAW,gCAAkC,MACjF,IAAAlG,uBAAwBC,IAAa,OAAOV,OAAO0G,KAAKC,WAAW,oCAAsC,OAIrHvtB,GAAS,GACX,IACF,IAAIH,SAAeG,IACnB4mB,OAAOkF,QAAQL,MAAM1vC,IAAI,MAAO4wC,IAC5Bl2C,KAAK80C,mBAAoCoB,QAAAA,EAAS,CAAC,EACnD3sB,GAAS,GACX,KAEV,IAEM,WAAA0rB,CAAYR,4CACd,GAAuB,oBAAb,OAA0B,OAAO,WAErCz0C,KAAK+2C,cACX/2C,KAAKk3C,cACL,MAAMhC,EAASl1C,KAAKo1C,cAGpB,OAFAX,EAAsBS,EAAOC,KAAMD,EAAOF,OAEnCE,CACX,IAGA,WAAAgC,GACI,IAAK,MAAM36B,KAAOvc,KAAKu0C,aACnB,GAAIl1C,OAAOC,UAAUC,eAAe8B,KAAKrB,KAAK60C,iBAAkBt4B,IAEzD,GAAY,aAARA,EACP,IAAK,MAAM46B,KAAQn3C,KAAKu0C,aAAah4B,GAC7Bld,OAAOC,UAAUC,eAAe8B,KAAKrB,KAAK60C,iBAAkBt4B,GAAM46B,KAClEn3C,KAAK60C,iBAAkBt4B,GAAK46B,GAAQn3C,KAAKu0C,aAAah4B,GAAK46B,SAJnEn3C,KAAK60C,iBAAkBt4B,GAAOvc,KAAKu0C,aAAah4B,GAUxD,IAAK,MAAMA,KAAOvc,KAAKw0C,cACfn1C,OAAOC,UAAUC,eAAe8B,KAAKrB,KAAK80C,mBAAoBv4B,KAC9Dvc,KAAK80C,mBAAoBv4B,GAAOvc,KAAKw0C,cAAcj4B,GAG/D,CAEA,OAAA66B,GACI,OAAuB,OAAhBp3C,KAAK+0C,MAChB,GAGJ,aAIA,yBAA8BsC,EAAgBC,GAC1C,QAAa,MAATD,GAA2B,MAAVC,GACbC,QAAQF,EAAMG,MAAQD,QAAQD,EAAOE,MAAQD,QAAQF,EAAMI,OAASF,QAAQD,EAAOG,OAASF,QAAQF,EAAM1hC,QAAU4hC,QAAQD,EAAO3hC,QACtH,MAAb0hC,EAAM96B,KAA6B,MAAd86B,EAAM36B,MAA8B,MAAd46B,EAAO/6B,KAA8B,MAAf+6B,EAAO56B,QAE9D,MAAd26B,EAAM36B,MAA+B,MAAf46B,EAAO56B,KACtB26B,EAAM36B,OAAS46B,EAAO56B,KAChB,MAAb26B,EAAM96B,KAA6B,MAAd+6B,EAAO/6B,KACrB86B,EAAM96B,IAAIxb,gBAAkBu2C,EAAO/6B,IAAIxb,cAEtD,EAEA,cAWA,2BAAgC22C,GAC5B,GAAe,MAAXA,GAAkC,MAAfA,EAAQn7B,IAC3B,MAAO,GAEX,IAAIo7B,EAAM,GAQV,OAPID,EAAQD,OACRE,GAAO,WACPD,EAAQF,MACRG,GAAO,UACPD,EAAQ/hC,QACRgiC,GAAO,YAEJA,EAAOrD,EAAUoD,EAAQn7B,IACpC,qFCpRa,EAAAq7B,WAAa,CACxB,gBACA,kBACA,2BACA,oBACA,sBACA,sWCNF,SAAgBC,EAAU5zB,EAA6B6zB,GAAc,aACjE,IAAK7zB,EACD,OAAO,EAIX,GAAwB,UAApBA,EAAQ0Q,UACJ1Q,EAAQ8zB,UAAU51B,SAAS,qBAAsC,WAAf8B,EAAQzN,IAAkC,qBAAfyN,EAAQzN,KACT,IAA7E,IAAItX,SAASupC,iBAAiB,UAAUuP,QAAQr4C,GAAMA,EAAEs4C,WAAUz5C,QACjEylB,EAA6Bg0B,SACjC,OAAO,EAGX,GAA6B,IAAzBh0B,EAAQi0B,cAA+C,IAAxBj0B,EAAQk0B,cAAsBL,EAC7D,OAAO,EAGX,MAAMM,EAAen0B,aAAO,EAAPA,EAASo0B,wBACxBC,EAAiBp5C,SAASq5C,iBAAiBH,EAAal0B,KAAOk0B,EAAan7B,MAAQ,EACtFm7B,EAAah0B,IAAMg0B,EAAal7B,OAAS,IACtChe,SAASq5C,iBAAiBH,EAAal0B,KAAMk0B,EAAah0B,KAEjE,OAAKk0B,GACqB,iBAAfr0B,EAAQzN,IACR4hC,EAAah0B,IAAM,MAI1Bk0B,IAAmBr0B,GACTq0B,GAAkBr0B,EAAQ9B,SAASm2B,IACnCA,GAAkBA,EAAen2B,SAAS8B,KAShC,UAApBA,EAAQ0Q,aAC+C,QAA9C,EAAA2jB,aAAc,EAAdA,EAAgBE,QAAQ,8BAAsB,eAAEr2B,SAAS8B,QACJ,QAArD,EAA0C,QAA1C,EAAAA,aAAO,EAAPA,EAASu0B,QAAQ,iCAAyB,eAAET,iBAAS,eAAE51B,SAAS,iBAIjF,CAEA,SAAgBs2B,EAAkBx0B,EAA6B6zB,GAAc,EAAOY,GAAc,WAC9F,OAAOb,EAAU5zB,EAAS6zB,IAClBY,KAAiBz0B,IAAY4zB,EAAU5zB,EAAQ00B,cAAeb,IAAgBD,EAA8C,QAApC,EAAqB,QAArB,EAAA5zB,EAAQ00B,qBAAa,eAAEA,qBAAa,QAAI,KAAMb,GAClJ,CAMA,SAAgBc,EAAiBC,EAAmDf,GAAc,EAAOY,GAAc,GACnH,OAAOI,EAA8BD,EAAUf,EAAaY,EAChE,CAEA,SAASI,EAAiCC,EAAwCjB,GAAc,EAAOY,GAAc,EAAOM,GACxH,IAAK,MAAMjD,KAAOgD,EAAS,CACvB,MAAM90B,EAAU+0B,EAAYA,EAAUjD,GAAYA,EAClD,GAAI9xB,GAAWw0B,EAAkBx0B,EAAS6zB,EAAaY,GACnD,OAAOz0B,EAIf,OAAO,IACX,CAEA,SAAgBg1B,EAAsBC,EAAqBC,GACvD,IAAK,MAAMC,KAAYF,EAAW,CAC9B,MAAMj1B,EAAU/kB,SAASm6C,cAAcD,GACvC,GAAIn1B,GAAWk1B,EAAUl1B,GACrB,OAAOA,EAIf,OAAO,IACX,uNAhFA,cA+CA,sBAKA,wCAA6Ci1B,EAAqBpB,GAAc,EAAOY,GAAc,GACjG,OAAOI,EAA8BI,EAAWpB,EAAaY,GAAcU,GAAal6C,SAASm6C,cAAcD,IACnH,EAEA,qBAeA,0BAWA,+BAAoCF,GAChC,OAAOD,EAAsBC,GAAYj1B,IAAW,QAAC,OAA4B,QAA3B,EAAmB,QAAnB,EAAAA,EAAQnc,mBAAW,eAAEvE,cAAM,QAAI,IAAI/E,OAAS,CAAC,GACvG,EAYA,IAAI86C,GAAkC,EAClCC,EAAmD,KACnDC,EAAoC,GAwCxC,SAASC,IACL,IAAKF,EAAyB,CAC1B,MAAMG,EAAmBC,UACrB,MAAMC,EAA2B,GACjC,IAAK,MAAMC,KAAkBL,EAAiB,CAC1C,MAAM,SAAEJ,EAAQ,aAAEU,EAAY,YAAEhC,EAAW,YAAEY,EAAW,UAAEqB,GAAcF,EAExE,IAAIG,GAAyB,EAC7B,GAAIL,EAAW,CACX,IAAIM,GAAQ,EACZ,IAAK,MAAMC,KAAYP,EACnB,GAAsB,cAAlBO,EAAS55C,MAAwB45C,EAASC,WAAW37C,OAAS,EAAG,CACjE,GAAI07C,EAASvsC,kBAAkBysC,cACnBF,EAASvsC,OAAO2lC,QAAQ8F,IAAac,EAASvsC,OAAO0rC,cAAcD,IAAY,CACvFa,GAAQ,EACR,MAGJ,IAAK,MAAMl4B,KAAQm4B,EAASC,WACxB,GAAIp4B,aAAgBq4B,cACRr4B,EAAKuxB,QAAQ8F,IAAar3B,EAAKs3B,cAAcD,IAAY,CACjEa,GAAQ,EACR,MAIR,GAAIA,EACA,MAKPA,IACDD,GAAyB,GAIjC,MAAMK,EACFL,EAAyB96C,SAASupC,iBAAiB2Q,GAAYS,EAAehB,SAClF,GAAIwB,GAAoBA,EAAiB77C,OAAS,EAAG,CACjDq7C,EAAehB,SAAWwB,EAE1B,MAAMp2B,EAAU61B,EAAelB,EAAiByB,EAAkBvC,EAAaY,GAAe2B,EAAiB,GAC/G,GAAIp2B,EAAS,CACT,GAAkB,QAAd,EAAAksB,OAAOC,eAAO,eAAE55B,GAChB,IAAK,MAAMka,KAAYqpB,EACnBrpB,EAASzM,GAIjB21B,EAAerrC,KAAK6qC,KAKhCI,EAAkBA,EAAgBxB,QAAQ/zB,IAAa21B,EAAex1C,SAAS6f,EAAQm1B,YAExD,IAA3BI,EAAgBh7C,SAChB+6C,SAAAA,EAAyBe,aACzBf,EAA0B,KAC1BD,GAAkC,IAK1CI,IAEIF,EAAgBh7C,OAAS,IACzB+6C,EAA0B,IAAIgB,iBAAiBb,GAE/CH,EAAwBiB,QAAQt7C,SAAS4jB,gBAAiB,CACtD23B,WAAW,EACXC,SAAS,KAIzB,CAEA,SAAgBC,EAAWvB,EAAkBU,EAAuBhC,GAAc,EAAOY,GAAc,GACnG,OAAOoB,EAAelB,EAAiB15C,SAASupC,iBAAiB2Q,GAAWtB,EAAaY,GAAex5C,SAASm6C,cAAcD,EACnI,CArHA,0BAAqCA,EAAkBU,GAAe,EAAOhC,GAAc,EAAOY,GAAc,4CAC5G,aAAa,IAAItvB,SAASG,IACtB,MAAMqxB,EAAiBD,EAAWvB,EAAUU,EAAchC,EAAaY,GACvE,GAAIkC,EAEA,YADArxB,EAAQqxB,GAIZ,MAAMC,EAAyBrB,EAAgBsB,MAAMjB,GAAmBA,EAAeT,WAAaA,GAC7FS,EAAeC,eAAiBA,IAEnCe,EACAA,EAAuBd,UAAUxrC,KAAKgb,GAEtCiwB,EAAgBjrC,KAAK,CACjB6qC,WACAU,eACAhC,cACAY,cACAqB,UAAW,CAACxwB,KAIf+vB,IACDA,GAAkC,EAE9Bp6C,SAASgH,KACTuzC,IAEAx6C,OAAO+P,iBAAiB,oBAAoB,KACxCyqC,GAA8B,OAKlD,KAgFA,6BCnNA,SAAgBsB,IACZ,OAAO77C,SAASm6C,cAJT,qMAKX,mIAPA,yCAEI,MAAO,oMACX,EAEA,wBAIA,iCACI,MAAM2B,EAAYD,IAElB,GAAIC,EAAW,CACX,MAAMC,EAAgBD,EAAU3B,cAAc,wHAC9C,GAAI4B,EACA,OAAOA,EAAcC,UAErB,IAAK,MAAMC,KAAQH,EAAUtzC,SACzB,GAAsB,UAAlByzC,EAAKl2C,UAAwBk2C,EAAKpyC,WACD,KAA1BoyC,EAAKpyC,UAAUxF,OACtB,OAAO43C,EAAKpyC,UAM5B,OAAO,IACX,gBCsDA,SAAgBgpC,EAAc7rC,GAC1B,OAAOA,EAAK9B,SAAS,eAAiB8B,EAAK9B,SAAS,kBACxD,4LAnFA,qCAA0Cg3C,GACtC,MAAMC,EAAY,4CAA4CC,KAAKF,GAEnE,OAAkB,OAAdC,EACO,KAOI,MAJDA,EAAU,GAAKE,SAASF,EAAU,IAAM,GAItB,IAHhBA,EAAU,GAAKE,SAASF,EAAU,IAAM,KAAO,IAC/CA,EAAU,GAAKG,WAAWH,EAAU,GAAG15C,QAAQ,IAAK,MAAQ,EAGhF,EAEA,4BAAiC85C,EAAiBC,GAC9CD,EAAUtpC,KAAKwpC,IAAIF,EAAS,GAE5B,MAAMG,EAAQzpC,KAAKg9B,MAAMsM,EAAU,GAAK,IAClCI,EAAU1pC,KAAKg9B,MAAMsM,EAAU,IAAM,GAC3C,IAAIK,EAAiBt/B,OAAOq/B,GACxBE,EAAaN,EAAU,GACtBC,IACDK,EAAa5pC,KAAKg9B,MAAM4M,IAG5B,IAAIC,EAAiBx/B,OAAOk/B,EAAUK,EAAWE,QAAQ,GAAKF,GAU9D,OARIA,EAAa,KAEbC,EAAiB,IAAMA,GAEvBJ,GAASC,EAAU,KAEnBC,EAAiB,IAAMA,GAEvB36C,MAAMy6C,IAAUz6C,MAAM06C,GACf,MAGQD,EAAQA,EAAQ,IAAM,IAAME,EAAiB,IAAME,CAG1E,EAUA,gCAAqCE,EAAoBhL,GAErD,GAAmB,IAAfgL,EACA,OAAO/L,OAAO0G,KAAKC,WAAW,KAGlC,MAAMqF,EACDjL,IACQA,EAAa9sC,SAAS,gBAAiB8sC,EAAa9sC,SAAS,oBAC/D8sC,EAAa1yC,OAAS,GAEvB,IAAI0yC,IACJ,GAGV,IAAIkL,EAAcjM,OAAO0G,KAAKC,WAAW,GAAkB,MAAfoF,EAAqB,IAAMA,KAKvE,MAJoB,KAAhBE,IACAA,EAAcjM,OAAO0G,KAAKC,WAAW,oBAGlC,GAAGsF,KADcjM,OAAO0G,KAAKC,WAAW,aAAan1C,QAAQ,SAAU,GAAGu6C,IAAaC,MAElG,EAQA,kBAYA,+BAAoCD,EAAoBhL,GAEpD,GAAmB,IAAfgL,EACA,OAAO/L,OAAO0G,KAAKC,WAAW,KAGlC,MAAMuF,EAAWnL,IAAiBa,EAAcb,GAAiB,OAASA,EAAe,GAEzF,IAAIkL,EAAcjM,OAAO0G,KAAKC,WAAW,GAAkB,MAAfoF,EAAqB,IAAMA,KAMvE,MALoB,KAAhBE,IACAA,EAAcjM,OAAO0G,KAAKC,WAAW,oBAIlC,GAAGsF,KAFcjM,OAAO0G,KAAKC,WAAW,aAAan1C,QAAQ,SAAU,GAAGu6C,OAEtCG,IADV,MAAfH,GAAqC,MAAfA,EAAsB,OAAO/L,OAAO0G,KAAKC,WAAW,oBAAsB,IAEtH,EAQA,gCAAqC5b,GAEjC,MAAO,GADciV,OAAO0G,KAAKC,WAAW,sBACnB5b,GAC7B,wZCrHA,mBAAgDn1B,EAAU2rC,EAAQ,8CAC9D,GAAIA,GAAS,EAAG,MAAO,GAEvB,KAAM,WAAY4K,QAEd,OAAO,IAAIlzB,SAAQ,CAACG,EAASooB,IAAWxB,OAAOC,QAAQwB,YAAY,CAC/D/W,QAAS,UACT90B,QACA2rC,UACAjB,IACIA,EAASvV,MACTyW,EAAOlB,EAASvV,OAEhB3R,EAAQknB,QAKpB,IAAI8L,EAAkBx2C,EACtB,IAAK,IAAIy2C,EAAI,EAAGA,EAAI9K,EAAO8K,IAAK,CAC5B,MAAMC,QAAmBH,OAAOI,OAAO5hB,OAAO,WAAW,IAAI6hB,aAAcC,OAAOL,GAAS7L,QAG3F6L,EADkBt1C,MAAM8pC,KAAK,IAAIC,WAAWyL,IACxBjQ,KAAInuC,GAAKA,EAAEiK,SAAS,IAAIu0C,SAAS,EAAG,OAAMrpB,KAAK,IAGvE,OAAO+oB,CACX,wfC5BA,mBAAiCO,EAAoBC,EAAU,IAAMC,EAAQ,IAAK7D,4CAC9E,aAAa,IAAI/vB,SAAQ,CAACG,EAASooB,KAC/B,IAAIsL,EAAkC,KAEtC,MAAMC,EAAgB,KAClB,MAAMhI,EAAS4H,KACX3D,EAAYA,EAAUjE,GAAUA,KAChC3rB,EAAQ2rB,GACJ+H,GAAUE,cAAcF,KAIhCF,IACA/zB,YAAW,KACPm0B,cAAcF,GACdtL,EAAO,uBAAuBmL,aAAS,EAATA,EAAWx0C,eAAejF,QAAQC,QAAQ,GACzEy5C,GAEHE,EAAWG,YAAYF,EAAeF,IAI1CE,GAAe,GAEvB,KAEA,uBAA+Bl9B,EAAa/E,EAASoiC,GACjD,IAAIC,EAAU,EACd,IAAK,MAAM/gC,KAAOtB,EAAM,CACpB,MAAMsiC,EAAav9B,EAAI5b,SAAS,MAAQk5C,EAAU,EAAK,IAAOD,EAAsB,IAAM,GACpFt3C,EAA+B,iBAAfkV,EAAKsB,GAAsBtB,EAAKsB,GAA4BmsB,KAAKC,UAAU1tB,EAAKsB,IACtGyD,GAAOu9B,EAAY9+C,mBAAmB8d,GAAO,IAAM9d,mBAAmBsH,GAEtEu3C,IAGJ,OAAOt9B,CACX,EAEA,MAAaw9B,UAA+Bn6C,MAGxC,WAAAgC,CAAYo4C,GACRC,MAAM,qBAEN19C,KAAKy9C,QAAUA,CACnB,EAqBJ,IAAIE,EA5BJ,wBAUA,yBAAiCZ,GAC7B,OAAO,IAAI3zB,SAAQ,CAACG,EAASooB,KACrBoL,GACA/zB,YAAW,KACP2oB,EAAO,IAAI6L,EAAsB,GAClCT,KAGf,EAKA,+BAEI,MAA2B,oBAAd,OACjB,EAGA,gCAEI,OADAY,UAAAA,EAAoB,GAAGxN,OAAOC,QAAQ55B,OAAO25B,OAAOC,QAAQ4C,cAAc7J,WACnEwU,CACX,8nBCxEA,gBACA,UACA,UACA,UAsDa,EAAAC,mBAAqB,IAAI,EAAAC,WAAkC,KAAM,CAC1EC,aAAc,GACd7F,SAAU,KACV8F,UAAW,KACXC,OAAQ,KACRC,OAAQ,KACRC,WAAY,SAOhB,MAAMC,EAAwC,GAC9C,IAAIC,GAA2B,EAE/B,oCAEI,MAAMC,EAAiBn/C,SAASo/C,eAAe,gCAC/C,GAAID,EAAgB,CAChB,MAAME,EAAQF,EAAeG,aAAa,YACrCD,GAASA,IAAUpO,OAAOC,QAAQ55B,KACnC4nC,GAA2B,EAEtBG,GACDF,EAAe58C,aAAa,WAAY0uC,OAAOC,QAAQ55B,KAKnE,MAAM65B,EAAahwB,YACf,GAAyB,wCAAX,QAAV,EAAAA,EAAMpF,YAAI,eAAE3a,MAA+C,CAC3D,MAAM2a,EAAOoF,EAAMpF,KACnB,GAAIA,EAAKwjC,SAAWxjC,EAAKyjC,WAAa,EAAAd,mBAAmBvL,aAAap3B,EAAKwjC,SAAU,CACjF,MAAMC,EAAWzjC,EAAKyjC,SAChBC,EAAa,EAAAf,mBAAmBtL,WAAWr3B,EAAKwjC,SAEtDE,EAAWb,aAAeY,EAASZ,aACnCa,EAAW1G,SAAWyG,EAASzG,SAC/B0G,EAAWZ,UAAYW,EAASX,UAChCY,EAAWX,OAASU,EAASV,OAC7BW,EAAWV,OAASS,EAAST,OAC7BU,EAAWT,WAAaQ,EAASR,WAEjC,MAAMvqB,EAAQwqB,EAAmBS,WAAWC,GAASA,EAAKJ,UAAYxjC,EAAKwjC,WAC5D,IAAX9qB,IACAwqB,EAAmBxqB,GAAOomB,UAAUp5C,SAAS+vB,IACzCA,EAASzV,EAAKyjC,SAAS,IAG3BP,EAAmB3V,OAAO7U,EAAO,SAIb,yCAAX,QAAV,EAAAtT,EAAMpF,YAAI,eAAE3a,OAAoD+f,EAAMpF,KAAKwjC,WAAWK,GAC7FX,EAAmB5vC,KAAK,CACpBkwC,QAASp+B,EAAMpF,KAAKwjC,QACpB1E,UAAW,MAKvB96C,OAAO+P,iBAAiB,UAAWqhC,IAEnC,IAAA0O,qBAAmB,KACf9/C,OAAOgQ,oBAAoB,UAAWohC,EAAU,GAExD,EAEA,MAAMyO,EAA0D,CAAC,EACjE,SAAsBE,EAAmBP,EAAkBQ,EAAsBC,GAAqB,kDAClG,MAAMP,EAAa,EAAAf,mBAAmBvL,aAAaoM,GACnD,IAAKQ,GAAeN,GAAsC,OAAxBA,EAAW1G,SACzC,OAAO0G,EAGX,IAAIQ,EAAUhB,EAAmBrD,MAAM+D,GAASA,EAAKJ,UAAYA,IACjE,GAAIU,GAAWD,EACX,OAAO,IAAI91B,SAASG,IACX41B,IACDA,EAAU,CACNV,UACA1E,UAAW,IAGfoE,EAAmB5vC,KAAK4wC,IAG5BA,EAAQpF,UAAUxrC,MAAMmwC,IACpB,EAAAd,mBAAmBnL,UAAUgM,GAC7Bl1B,EAAQm1B,EAAS,GACnB,IAIV,IACI,MAAMxJ,EAAgC,QAAvB,EAAA4J,EAAeL,UAAQ,QAAI,KAAa,EAAD,gCAClDx/C,OAAO8vC,YAAY,CACfzuC,KAAM,sCACNm+C,WACD,KAEH,IAAIC,QAAiBU,EAA4BX,GAASh1B,OAAM,IAAM,OAMtE,IAHK,IAAA41B,aAAgBX,IACmB,IAA5BA,EAASY,QAAQ9gD,QAA+C,mBAA/BkgD,EAASa,qBAA0Cb,QAAiBU,EAA4BX,GAASh1B,OAAM,IAAM,QAE9Ji1B,EAAU,CACV,IAAIY,EAAUZ,EAASY,SACnB,IAAAzO,cACAyO,EAAUA,EAAQtH,QAAQwH,GAAWA,EAAOC,SAASr7C,SAAS,UAGlE,MAAMs7C,EAAcJ,EAAQnL,MAAMqL,GAAWA,EAAOC,SAASr7C,SAAS,SAEhEu7C,EAASL,EACVM,UACA5H,QAAQwH,GAAWA,EAAOviC,OAASuiC,EAAOtiC,UAAYwiC,GAAeF,EAAOC,SAASr7C,SAAS,UAC9Fy7C,MAAK,CAACzhD,EAAGC,KAAMD,aAAC,EAADA,EAAG6e,QAAQ5e,aAAC,EAADA,EAAG4e,SAE5B6iC,EAAa,EAAAlC,mBAAmBtL,WAAWmM,GAqBjD,OApBAqB,EAAWhC,aAAe6B,EAAOnT,KAAKgT,IAAW,CAC7Cx/B,IAAKw/B,EAAOx/B,IACZ/C,MAAOuiC,EAAOviC,MACdC,OAAQsiC,EAAOtiC,WAEnB4iC,EAAW7H,SAAWyG,EAASzG,SAC/B6H,EAAW/B,UAAYW,EAASX,UAChC+B,EAAW9B,OAASU,EAASV,OAC7B8B,EAAW7B,OAASS,EAAST,OAC7B6B,EAAW5B,WAAaQ,EAASR,WAGjCl1B,YAAW,WAAa81B,EAAeL,IAAU,KAEjDx/C,OAAO8vC,YAAY,CACfzuC,KAAM,qCACNm+C,UACAC,SAAUoB,GACX,KAEIA,EAgBX,OAbA7gD,OAAO8vC,YAAY,CACfzuC,KAAM,qCACNm+C,UACAC,SAAU,CACNzG,SAAU,KACV8F,UAAW,KACXC,OAAQ,KACRF,aAAc,GACdG,OAAQ,KACRC,WAAY,OAEjB,KAEI,CACHjG,SAAU,KACV8F,UAAW,KACXC,OAAQ,KACRF,aAAc,GACdG,OAAQ,KACRC,WAAY,KAEpB,IAtE0C,GAyE1C,OADAY,EAAeL,GAAWvJ,QACbA,EACf,MAAOr1C,GAAK,CAEd,MAAO,CACHo4C,SAAU,KACV8F,UAAW,KACXC,OAAQ,KACRF,aAAc,GACdG,OAAQ,KACRC,WAAY,SAoGpB,SAAsBkB,EAA4BX,4EAC9C,MACMxjC,EAAO,CACTmU,QAAS,CACL2wB,OAAQ,CACJC,WAAY,MACZC,cAAe,qBAGvBC,QAASzB,GAGb,IACI,MAAMvJ,QAAerF,MAZb,6CAYwB,CAC5B3pC,KAAMwiC,KAAKC,UAAU1tB,GACrB00B,QAAS,CACL,eAAgB,oBAEpBG,OAAQ,SAGZ,GAAIoF,EAAO9R,GAAI,CACX,MAAMqN,QAAiByE,EAAOiL,OAE9B,IADkD,QAA/B,EAAsB,QAAtB,EAAA1P,aAAQ,EAARA,EAAU2P,oBAAY,eAAEF,eAAO,QAAI,QACnCzB,EACf,MAAO,CACHa,QAAS,GACTrH,SAAU,KACV8F,UAAW,KACXC,OAAQ,KACRC,OAAQ,KACRC,WAAY,MAIpB,MAAMoB,GAAiC,QAAvB,EAAA7O,aAAQ,EAARA,EAAU4P,qBAAa,eAAEC,kBAAwC,GAC3ErI,GAAiC,QAAtB,EAAAxH,aAAQ,EAARA,EAAU2P,oBAAY,eAAEG,eAAgBhF,SAAS9K,EAAS2P,aAAaG,eAAiB,KACnGC,EAA6C,QAAjC,EAAsB,QAAtB,EAAA/P,aAAQ,EAARA,EAAU2P,oBAAY,eAAEI,iBAAS,QAAI,KACjDxC,EAAuC,QAA9B,EAAsB,QAAtB,EAAAvN,aAAQ,EAARA,EAAU2P,oBAAY,eAAEpC,cAAM,QAAI,KAC3CC,EAAuC,QAA9B,EAAsB,QAAtB,EAAAxN,aAAQ,EAARA,EAAU2P,oBAAY,eAAEnC,cAAM,QAAI,KAIjD,MAAO,CACHqB,UACArH,WACA8F,UAAWyC,EACXxC,SACAC,SACAC,WATiD,QAAlC,EAAsB,QAAtB,EAAAzN,aAAQ,EAARA,EAAU2P,oBAAY,eAAElC,kBAAU,QAAI,KAUrDqB,kBATyD,QAAnC,EAA2B,QAA3B,EAAA9O,aAAQ,EAARA,EAAU8O,yBAAiB,eAAE/N,cAAM,QAAI,OAavE,MAAO3xC,GAAK,CAEd,MAAO,CACHy/C,QAAS,GACTrH,SAAU,KACV8F,UAAW,KACXC,OAAQ,KACRC,OAAQ,KACRC,WAAY,SA9QpB,uBAgHA,uCAAkDO,4EAC9C,MAAMgC,EAEa,WAkBbxlC,EAAO,CACTmU,QAdY,CACZ2wB,OAAQ,CACJC,WAAY,UACZC,cAAeQ,EACfC,kBAAmB,GACnBC,OAAQ,UACRC,UATY,KAUZrZ,GAAI,KACJD,GAAI,OAOR4Y,QAASzB,EACToC,OAAQ,OACRC,gBAAiB,CACbC,uBAAwB,CACpBC,gBAAiB,qBAGzBC,gBAAgB,EAChBC,aAAa,GAGjB,IACI,MAAMhM,QAAerF,MAfb,yFAewB,CAC5B3pC,KAAMwiC,KAAKC,UAAU1tB,GACrB00B,QAAS,CACL,wBAlCI,IAmCJ,2BAA4B8Q,EAC5B,aAAc,8BAA8BA,gCAC5C,eAAgB,mBAChB,OAAU,kEACV,kBAAmB,iBACnB,iBAAkB,WAClB,WAAc,SAElB3Q,OAAQ,SAGZ,GAAIoF,EAAO9R,GAAI,CACX,MAAMqN,QAAiByE,EAAOiL,OAE9B,IADkD,QAA/B,EAAsB,QAAtB,EAAA1P,aAAQ,EAARA,EAAU2P,oBAAY,eAAEF,eAAO,QAAI,QACnCzB,EACf,MAAO,CACHa,QAAS,GACTrH,SAAU,KACV8F,UAAW,KACXC,OAAQ,KACRC,OAAQ,KACRC,WAAY,MAIpB,MAAMoB,EAAiC,QAAvB,EAAA7O,aAAQ,EAARA,EAAU4P,qBAAa,eAAEC,gBACnCrI,GAAiC,QAAtB,EAAAxH,aAAQ,EAARA,EAAU2P,oBAAY,eAAEG,eAAgBhF,SAAS9K,EAAS2P,aAAaG,eAAiB,KACnGC,EAA6C,QAAjC,EAAsB,QAAtB,EAAA/P,aAAQ,EAARA,EAAU2P,oBAAY,eAAEI,iBAAS,QAAI,KACjDxC,EAAuC,QAA9B,EAAsB,QAAtB,EAAAvN,aAAQ,EAARA,EAAU2P,oBAAY,eAAEpC,cAAM,QAAI,KAC3CC,EAAuC,QAA9B,EAAsB,QAAtB,EAAAxN,aAAQ,EAARA,EAAU2P,oBAAY,eAAEnC,cAAM,QAAI,KAC3CC,EAA+C,QAAlC,EAAsB,QAAtB,EAAAzN,aAAQ,EAARA,EAAU2P,oBAAY,eAAElC,kBAAU,QAAI,KACnDqB,EAAuD,QAAnC,EAA2B,QAA3B,EAAA9O,aAAQ,EAARA,EAAU8O,yBAAiB,eAAE/N,cAAM,QAAI,KACjE,GAAI8N,EACA,MAAO,CACHA,UACArH,WACA8F,UAAWyC,EACXxC,SACAC,SACAC,aACAqB,sBAKd,MAAO1/C,GAAK,CAEd,MAAO,CACHy/C,QAAS,GACTrH,SAAU,KACV8F,UAAW,KACXC,OAAQ,KACRC,OAAQ,KACRC,WAAY,UAIpB,gCAkEA,8BAAyCO,EACrCxhC,EAAgBC,EAAiB+hC,GAAc,sDAC/C,MAAMK,QAAgBN,EAAmBP,EAASQ,GAElD,GAAIhiC,GAASC,EAAQ,CACjB,MAAMikC,EAAwC,QAA3B,EAAqB,QAArB,EAAA7B,aAAO,EAAPA,EAASxB,oBAAY,eAAEhD,YAAI,uBAAGh7C,IAAKA,aAAC,EAADA,EAAGmd,QAASA,IAASnd,aAAC,EAADA,EAAGod,SAAUA,IAExF,GAAIikC,EAGA,OAFA,EAAAvD,mBAAmBnL,UAAUgM,GAEtB0C,OAER,IAAyB,QAArB,EAAA7B,aAAO,EAAPA,EAASxB,oBAAY,eAAEt/C,QAAS,EACvC,OAAO8gD,EAAQ,GAGnB,OAAO,SAGX,wBAAmCb,EAAkBS,GAAqB,4CACtE,MAAMR,QAAiBM,EAAmBP,GAAS,EAAOS,GAE1D,OAAIR,EACO,CACHX,UAAWW,EAASX,UACpBC,OAAQU,EAASV,QAIlB,CACHD,UAAW,KACXC,OAAQ,KAEhB,KAEA,4BAAiCS,GAC7B,MAAME,EAAa,EAAAf,mBAAmBvL,aAAaoM,GAEnD,OAAIE,EACO,CACHZ,UAAWY,EAAWZ,UACtBC,OAAQW,EAAWX,QAIpB,IACX,EAEA,4BAAuCS,4CACnC,MAAMxjC,QAAa+jC,EAAmBP,GAAS,GAC/C,OAAIxjC,EACOA,EAAKgjC,QAAUhjC,EAAKijC,WAGxB,IACX,KAEA,sBAA2BO,GACvB,MAAME,EAAa,EAAAf,mBAAmBvL,aAAaoM,GAEnD,OAAIE,EACOA,EAAWV,SAAWU,EAAWT,WAGrC,IACX,EAEA,mCACI,OAAOE,CACX,oHCtdA,sBACI,MAAoC,kBAA7Bn/C,OAAO0d,SAASykC,QAC3B,EAEA,8BACI,MAAoC,mBAA7BniD,OAAO0d,SAASykC,QAC3B,EAEA,yBACI,QAASliD,SAASmiD,IAAI79C,MAAM,kCAChC,yFCVA,gBACA,UAEA,wBAA6Bu/B,GACzB,MAAMue,EAAYpiD,SAASC,cAAc,UACzCmiD,EAAU9qC,GAAK,+BACf8qC,EAAU7/C,aAAa,UAAW,EAAA0nC,SAClCmY,EAAUl5C,UAAY26B,EAEtB,MAAMwe,EAAQriD,SAASqiD,MAAQriD,SAAS4jB,gBAClC0+B,EAAiBtiD,SAASo/C,eAAe,gCACzCmD,EAAwBD,aAAc,EAAdA,EAAgBhD,aAAa,YACvD+C,GAAUC,KAAkB,IAAAE,eAAc,EAAAvY,QAASsY,QAAAA,EAAyB,MACxED,IACAF,EAAU7/C,aAAa,WAAY,QACnC+/C,EAAenL,UAGnBkL,EAAK94C,YAAY64C,GAEzB,gBCSA,SAAgBK,EAAoB7hC,GAChC,MAAM8hC,EAAU9hC,EAAKne,QAAQ,kBAAkB,SAAS6B,EAAOq+C,GAC3D,OAAOA,EAAK1R,OAAO0G,KAAKC,WAAW+K,GAAIlgD,QAAQ,KAAM,SAChDA,QAAQ,KAAM,UAAUA,QAAQ,MAAO,SAAW,EAC3D,IAEA,OAAIigD,GAAW9hC,GACJ8hC,CAIf,mHAxCA,0BAA+BpjD,EAAS,IACpC,MAAMsjD,EAAU,iEAChB,IAAI5M,EAAS,GACb,MAAM6M,EAAgC,oBAAX9iD,OAAyBq9C,OAASr9C,OAAOq9C,OACpE,GAAIyF,GAAeA,EAAYC,gBAAiB,CACxC,MAAMC,EAAS,IAAIC,YAAY1jD,GAC/BujD,EAAYC,gBAAgBC,GAC5B,IAAK,IAAIzF,EAAI,EAAGA,EAAIh+C,EAAQg+C,IACpBtH,GAAU4M,EAAQG,EAAOzF,GAAKsF,IAEtC,OAAO5M,EAEP,IAAK,IAAIsH,EAAI,EAAGA,EAAIh+C,EAAQg+C,IACxBtH,GAAU4M,EAAQ3vC,KAAKg9B,MAAsB2S,GAAhB3vC,KAAK0U,WAEtC,OAAOquB,CAEnB,EAEA,8BAEI,MAAMiN,EAAiBR,EAAoBziD,SAASkjD,OAChDD,IAAgBjjD,SAASkjD,MAAQD,GAErC,MAAMj8C,EAAOhH,SAASm6C,cAAc,yBAC9BgJ,EAAmBV,EAAoBz7C,EAAMkC,UAAUE,YACzD+5C,IAAkBn8C,EAAMkC,UAAYi6C,EAC5C,EAEA,4PC7BA,gBAEA,SAAgBC,IACZ,OAAK,IAAAjD,YAQM,CACH,kCACA,qCACA,sBACA,sCACA,uCACA,gCAbG,CACH,gBACA,yBACA,+BACA,0BAYZ,CA4CA,SAAgBkD,KAAyBC,GAKrC,OAJmC,IAA/BA,EAAoBhkD,SACpBgkD,EAAsB,CAAC,KAGpBF,IAAuB9V,KAAKiW,GAAMD,EAAoBhW,KAAK4M,GAAa,GAAGqJ,IAAIrJ,MAAY5lB,KAAK,QAAOA,KAAK,KACvH,CApEA,yBAoBA,6CACI,MAAMkvB,EAAUJ,IAOhB,OALK,IAAAjD,cACDqD,EAAQn0C,KAAK,wBACbm0C,EAAQn0C,KAAK,oCAGVm0C,CACX,EAEA,wCACI,OAAK,IAAArD,YAGM,8FAFA,iNAIf,EAEA,4BAAiCsD,GAC7B,OAAK,IAAAtD,YAGMsD,EAAUtJ,cAAc,CAC3B,mCACA,wCACA,6BACA,uBACA,2CACF7lB,KAAK,OARAmvB,EAAUtJ,cAAckJ,EAAsB,MAU7D,EAEA,sCACI,OAAK,IAAAlD,YAIM,kCAFAkD,EAAsB,iBAAkB,wCAIvD,EAEA,4KChEA,gBACA,UACA,UACA,UACA,UAIMK,EAAoB,IAAItuC,IAC9B,IAAIuuC,EAAwB,EACxBC,EAA8C,KAC9C1J,GAAW,IAAAmJ,yBACXQ,EAAoB,gBAExB,SAAgBC,IACZ,OAAO,IAAAC,iBAAkBF,EAAoB3J,CACjD,CAFA,yBAIA,gCAAqC9yB,EAA6B48B,EAC1DC,EAA4BC,EACxBC,GACRP,EAAoBx8B,EAChB88B,IAAehK,EAAWgK,GAC1BC,IAAwBN,EAAoBM,GAEhD,MAAMC,EAAS,KACXJ,SAAAA,KAGK,IAAAK,UAAQ,IAA0B,QAApB,IAAAN,mBAA0Bz5B,MAAK,MAC1C,IAAAy5B,kBAAiBO,GAAe,GACtC,EAaN,GAV4B,aAAxBtkD,SAASukD,WACTH,IAEArkD,OAAO+P,iBAAiB,OAAQs0C,IAG/B,IAAAC,UAAQ,IAAMJ,KAAe,IAAM,IAAI35B,MAAK,KAC7Cg6B,GAAe,KAGf,IAAAnE,YAAY,CACZ,MAAMqE,EAAgB,IAAMC,IAC5B1kD,OAAO+P,iBAAiB,aAAc00C,GACtCzkD,OAAO+P,iBAAiB,WAAY00C,GACpCzkD,OAAO+P,iBAAiB,YAAa00C,GACrCzkD,OAAO+P,iBAAiB,oBAAqB00C,IAE7C,IAAA3E,qBAAmB,KACf9/C,OAAOgQ,oBAAoB,aAAcy0C,GACzCzkD,OAAOgQ,oBAAoB,WAAYy0C,GACvCzkD,OAAOgQ,oBAAoB,YAAay0C,GACxCzkD,OAAOgQ,oBAAoB,oBAAqBy0C,EAAc,KAItE,IAAA3E,qBAAmB,KACf,IAAK,MAAM6E,KAAoBhB,EAC3BgB,EAAiB,GAAGtJ,aAGxBsI,EAAkBzM,OAAO,GAEjC,EAEA,IAAI0N,EAAqB,EACrBC,EAA6C,KAEjD,SAAgBN,IACZ,GAAIrV,YAAYz1B,MAAQmrC,EAAqB,IAAMC,EAC/C,OAAIA,OACA,OAEAA,EAAwB96B,YAAW,KAC/B86B,EAAwB,KACxBN,GAAe,GAChB,KAKXK,EAAqB1V,YAAYz1B,MAEjC,MAAMqrC,EAAmBnB,EAAkB12C,OAErC83C,EAAa9kD,SAASupC,iBAAiBua,KACvCiB,EAAoC,GAC1C,IAAK,MAAMtB,KAAaqB,EACpB,IAAKpB,EAAkBn8B,IAAIk8B,GAAY,CACnCsB,EAAmB11C,KAAKo0C,GAExB,MAAMuB,EAAW,IAAI3J,kBAAkBZ,IACnC,IAAK,MAAMO,KAAYP,EACnB,GAAsB,eAAlBO,EAAS55C,MAAoD,SAA3B45C,EAASh6C,cAA0B,CACrE4iD,SAAAA,EAAoB,CAACH,IACrB,UAIZC,EAAkB/+C,IAAI8+C,EAAWuB,GAEjC,MAAMl3C,GAAO,IAAAm3C,kBAAiBxB,GAC1B31C,GAAMk3C,EAAS1J,QAAQxtC,EAAM,CAAEo3C,YAAY,IAG/C,MAAMC,EAAY,IAAI9J,kBAAkBZ,YACpC,IAAK,MAAMO,KAAYP,EACnB,GAAsB,cAAlBO,EAAS55C,OACqB,QAAtB,EAAA45C,EAASC,WAAW,UAAE,eAAEl1C,SAASrE,cAAcwD,SAAS,aAC7B,QAAxB,EAAA81C,EAASpwB,uBAAe,eAAE7kB,SAASrE,cAAcwD,SAAS,WAAW,CAChF0+C,SAAAA,EAAoB,CAACH,IACrB,UAKN2B,EAAU3B,EAAUtJ,cAAc,YACpCiL,GAASD,EAAU7J,QAAQ8J,EAAS,CAAE7J,WAAW,IAM7D,GAFAqI,SAAAA,EAAoBmB,GAEhB9V,YAAYz1B,MAAQmqC,EAAwB,IAAM,CAGlD,IAAK,MAAMF,KAAaoB,EACpB,GAAI7kD,SAASgH,OAAShH,SAASgH,KAAKic,SAASwgC,GAAY,CACrD,MAAMuB,EAAWtB,EAAkBt9C,IAAIq9C,GACvCuB,SAAAA,EAAU5J,aACVsI,EAAkBjuC,OAAOguC,GAIjCE,EAAwB1U,YAAYz1B,MAE5C,CApEA,kBAsEA,uBACQoqC,GAAmBA,EAAkB,IAAIF,EAAkB12C,QACnE,EAEA,MAAMq4C,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,KAAM,KAAM,IAAM,KAChF,IAAIC,EAAqC,KAKzC,SAASb,EAA0BhwB,EAAQ,GACvC,GAAIA,GAAS4wB,EAAiB/lD,OAAQ,OAClCgmD,GAAet7B,aAAas7B,GAEhC,MAAMzH,EAAUwH,EAAiB5wB,IAAUA,EAAQ,EAAI4wB,EAAiB5wB,EAAQ,GAAK,GACrF6wB,EAAgBx7B,YAAW,KACvBw6B,IACAG,EAA0BhwB,EAAQ,EAAE,GACrCopB,GAEHyG,GACJ,wFClKA,yBAA8BiB,EAAoBC,GAC9C,MAAMC,EAAkBF,EAAW/jD,MAAM,KACnCkkD,EAAkBF,EAAWhkD,MAAM,KACzC,GAAIikD,EAAgBnmD,SAAWomD,EAAgBpmD,OAAQ,OAAO,EAE9D,IAAK,IAAIg+C,EAAI,EAAGA,EAAImI,EAAgBnmD,OAAQg+C,IAAK,CAC7C,MAAMqI,EAAiBtJ,SAASoJ,EAAgBnI,IAC1CsI,EAAiBvJ,SAASqJ,EAAgBpI,IAEhD,GAAIqI,EAAiBC,EACjB,OAAO,EACJ,GAAID,EAAiBC,EACxB,OAAO,EAIf,OAAO,CACX,i/BCjBA,gBACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,IAAYC,EAWAC,GAXZ,SAAYD,GACR,oBACA,kBACA,gBACA,kBACA,kBACA,oBACA,eACH,CARD,CAAYA,EAAA,EAAAA,WAAA,EAAAA,SAAQ,KAWpB,SAAYC,GACR,2BACA,qBACA,sBACH,CAJD,CAAYA,EAAA,EAAAA,kBAAA,EAAAA,gBAAe,KAiC3B,MAAMC,EAAqB,gFACrBC,EAA8B,kHAEpC,IAAIC,EAAiC,KACjCC,EAA4B,KAC5BC,EAAiD,KACjDC,EAAmD,KAEvD,MAAMC,EAAkC,GACxC,IAIIC,EAiCAC,EArCAC,GAAqB,EAErBC,GAAc,EAIdlH,EAA0B,KAC1BmH,EAA8B,KAC9BC,GAAkB,EAClBC,GAAS,EACTC,GAAiB,EACjBC,EAAqBjB,EAASkB,QAC9BC,EAA+B,CAC/B1U,OAAQwT,EAAgBmB,SACxB3vC,GAAI,KACJwnC,OAAQ,MAERoI,GAAsB,EACtBC,EAAuC,KACvCC,GAAW,EAEXC,EAAa,EAEbC,GAAmB,EAEnB3F,EAA4B,CAC5B4F,cAAe,OACfC,gBAAiB,OACjBC,mBAAoB,OACpBC,WAAY,OACZC,YAAa,OACbC,sBAAuB,OACvBC,gBAAiB,OACjBC,oBAAqB,OACrB3I,eAAgB,GAChB4I,eAAe,GAuEnB,SAAeR,EAAcjwC,EAAoB0wC,GAAgB,oDAE7D,SAAK1wC,GAAMioC,IACFoC,EAAOoG,iBAA+B,QAAb,EAAQ,OAAR/nD,eAAQ,IAARA,cAAQ,EAARA,SAAUmiD,WAAG,eAAEj9C,SAAS,yBAItD8iD,GAAiB1wC,IACjBwS,YAAW,KAAWm+B,GAAyB,GAAE,KACjDn+B,YAAW,KAAWm+B,GAAyB,GAAE,MAIjD1I,IAAYjoC,KAAO,IAAAqhC,WAAUsN,IAAWA,IAUvC,IAAAtN,WAAUsN,IACNgC,IAsBTtG,EAAOgG,cAEPpI,EAAU,KACVuH,EAAWjB,EAASkB,QACpBC,EAAgB,CACZ1U,OAAQwT,EAAgBmB,SACxB3vC,GAAI,KACJwnC,OAAQ,MAEZwH,GAAiB,EACjBc,GAAW,EACXC,EAAa,EACbC,GAAmB,EAEnBb,GAAc,EAGd1mD,OAAO8vC,YAAY,CACf5hC,OAAQ,8BACRsxC,QAAS,MACV,KAtCHA,EAAUjoC,EACV8vC,EAAWY,GAGN1wC,UAGC,IAAA+sC,UAAQ,IAAMkC,IAAYrO,WAAW,IAAM,GAG5CgQ,EAAe5wC,GAEpBqqC,EAAO4F,cAAcjwC,GAEd,KA5BC6wC,MACI5I,IAC0B,QAA1B,EAAAoC,EAAOmG,2BAAmB,kBAG3B,QAkDf,SAAgBM,EAAkBtnC,GAG9B,OAFAA,IAAAA,EAAgB,OAAR9gB,eAAQ,IAARA,cAAQ,EAARA,SAAUmiD,KAEd2E,IAAajB,EAASwC,QAAgBC,GAA8B,EAAMzC,EAASwC,UAElF1G,EAAOoG,eAAiBjnC,EAAI5b,SAAS,qBAA6B,KAEnE4b,EAAI5b,SAAS,YAAc4b,EAAI5b,SAAS,eAAuBojD,GAA8B,EAAOzC,EAAS0C,QAE3GznC,EAAI5b,SAAS,gBAAmB4b,EAAIxc,MAAM,wCAAgDkkD,EAAyB1nC,GAErHqnC,KAA0BG,GAA8B,EAAMzC,EAASwC,SAEpEG,EAAyB1nC,IAAQwnC,GAA8B,EAC1E,CAEA,SAASA,EAA8BG,GAAW,EAAMC,EAAW7C,EAAS8C,eAExE,MAAM5jC,EAAU2jC,IAAa7C,EAAS0C,MAAQvoD,SAASm6C,cAAc4L,GAC9D2C,IAAa7C,EAASwC,QAAUroD,SAASm6C,cAAc6L,GACjB,QAAnC,EAAoB,QAApB,EAAAC,aAAK,EAALA,EAAOxM,qBAAa,eAAEA,qBAAa,eAAEU,cAAc4L,GACvD6C,EAAW7jC,aAAO,EAAPA,EAASu6B,aAAa,QACvC,OAAIsJ,GACAlC,EAAc+B,EAEd3B,EAAW4B,EACJF,EAAyBI,IAEzB,IAEf,CAKA,SAASJ,EAAyB1nC,GAC9B,MAAMk1B,EAAS6S,EAA2B/nC,GAE1C,OAAIk1B,EAAO8S,YAEF,IAAAzE,UAAQ,IAAMkC,IAAYrO,YAAW5tB,MAAK,IAAMi9B,EAAciB,EAAyB1nC,MAErF,OAGX4lC,EAAc1Q,EAAO0Q,YACrBC,EAAkB3Q,EAAO2Q,gBACzBC,EAAS5Q,EAAO4Q,OAChBC,EAAiB7Q,EAAO6Q,eAEjB7Q,EAAOuJ,QAClB,CAKA,SAAgBsJ,EAA2B/nC,SACnCA,EAAIioC,WAAW,kCAAiCjoC,EAAMA,EAAIre,QAAQ,IAAK,KACvEqe,EAAIioC,WAAW,iCAAgCjoC,EAAMA,EAAIre,QAAQ,WAAY,KACjF,IAAIikD,GAAc,EACdC,GAAkB,EAClBC,GAAS,EACTC,GAAiB,EAGjBmC,EAAwB,KAC5B,IACIA,EAAY,IAAI7G,IAAIrhC,GACtB,MAAOngB,GAEL,OADAo7B,QAAQC,MAAM,6BAA+Blb,GACtC,CACHy+B,QAAS,KACTmH,cACAC,kBACAC,SACAC,iBACAiC,WAAW,GAKnB,GAAI,EAAApQ,WAAWxzC,SAAS8jD,EAAUC,MAEP,kBAAnBD,EAAUC,OAA0BtC,GAAkB,GACnC,mBAAnBqC,EAAUC,OAA2BrC,GAAS,GAC3B,sBAAnBoC,EAAUC,OAA8BpC,GAAiB,GAC7DH,GAAc,MACX,KAAIH,IAAYrO,aAAmD,QAAtC,EAAAqO,IAAY1Q,OAAQqT,0BAAkB,eAAEhkD,SAAS8jD,EAAU9G,WAG3F,MAAO,CACH3C,QAAS,KACTmH,cACAC,kBACAC,SACAC,iBACAiC,WAAYvC,IAAYrO,WAR5BwO,GAAc,EAalB,GAAIsC,EAAUG,aAAa5hC,IAAI,MAAQ,CAAC,SAAU,WAAWriB,SAAS8jD,EAAUI,WAAaJ,EAAUI,SAASL,WAAW,aAAc,CACrI,MAAMzxC,EAAK0xC,EAAUG,aAAa/iD,IAAI,KACtC,MAAO,CACHm5C,QAAuB,KAAdjoC,aAAE,EAAFA,EAAIhY,QAAegY,EAAgB,KAC5CovC,cACAC,kBACAC,SACAC,iBACAiC,WAAW,GAEZ,GAAIE,EAAUI,SAAS9kD,MAAM,qCAA2D,mBAAnB0kD,EAAUC,MAA6BD,EAAUI,SAASL,WAAW,WAC7I,IACI,MAAMzxC,EAAK0xC,EAAUI,SAAS5nD,MAAM,KAAK,GACzC,IAAI8V,aAAE,EAAFA,EAAIhY,SAAU,GAAK,MAAO,CAC1BigD,QAASjoC,EAAGvV,MAAM,EAAG,IACrB2kD,cACAC,kBACAC,SACAC,iBACAiC,WAAW,GAEjB,MAAOnoD,GAEL,OADAo7B,QAAQC,MAAM,+BAAiClb,GACxC,CACHy+B,QAAS,KACTmH,cACAC,kBACAC,SACAC,iBACAiC,WAAW,GAKvB,MAAO,CACHvJ,QAAS,KACTmH,cACAC,kBACAC,SACAC,iBACAiC,WAAW,EAEnB,CAGA,SAAsBZ,EAAe3I,sEACjC,IACI2H,GAAsB,EAEtB,MAAMmC,EAAoB,EACtB,IAAAhF,UAAQ,IAAM2C,EAAc1U,SAAWwT,EAAgBwD,OAAO,IAAM,KACpE,IAAAC,cAAahK,IAAU,IAAAiK,2BAK3B,SAFMt/B,QAAQu/B,KAAKJ,GAEfrC,EAAc1U,SAAWwT,EAAgBwD,MAAO,CAChD,MAAMI,GAAc,IAAAC,kBAAiBpK,GAEjCmK,IACA1C,EAAgB,CACZ1U,OAAQwT,EAAgBwD,MACxBhyC,GAAIoyC,EAAY7K,UAChBC,OAAQ4K,EAAY5K,UAMlC,MAAOn+C,GACL,MAAMipD,EAA6E,QAA1D,EAAA5pD,SAASm6C,cAAc,0CAAmC,eAAEmF,aAAa,QAClG,IAAIuK,EAA+C,KAC/CD,GAAmBA,EAAgB1kD,SAAS,eAC5C2kD,EAA6E,QAAzD,EAAAD,EAAgBtlD,MAAM,2CAAmC,eAAG,IAIpFulD,UAAAA,EAI0G,QAJnF,EAIO,QAJR,oBAAC,sBAAA7pD,SAASm6C,cAAc,6CACvCn6C,SAASm6C,cAAc,2CACgD,QAAvE,EAAwD,QAAxD,EAAAn6C,SAASm6C,cAAc,yCAAiC,eAAEV,qBAAa,eAAEA,6BACzEz5C,SAASm6C,cAAc,qDACpBmF,aAAa,eAAO,eAAEh7C,MAAM,4EAAoE,eAAG,IAE7G,MAAMwlD,EAAkG,QAAhF,EAAA9pD,SAASm6C,cAAc,iDAAyD,eAAE6B,UAGtGgL,EADA6C,EACgB,CACZvX,OAAQwT,EAAgBwD,MACxBhyC,GAAIuyC,EACJ/K,OAAQgL,GAGI,CACZxX,OAAQwT,EAAgBiE,OACxBzyC,GAAI,KACJwnC,OAAQ,MAKpBoI,GAAsB,EACtBvF,EAAO6F,gBAAgBR,MAnV3B,4BAAiCgD,EAAiCnU,GAC9D8L,EAASqI,EACTzD,EAAY1Q,GAEZ,IAAAoU,wBA6gBJ,WACI,MAAMC,EAAmB,MAChB,IAAAvR,WAAUsN,IACNgC,KAITtG,EAAOxC,iBACP,IAAAgL,cAAaxI,EAAOxC,gBAGxBn/C,SAAS8P,iBAAiB,qBAAsBo6C,GAEhD,MAAME,EAAqB,WAClBpqD,SAASm6C,cAAc,gDACX,QAAjB,EAAAwH,EAAO+F,kBAAU,iBAAI,EAEzB3nD,OAAO+P,iBAAiB,aAAcs6C,GACtCrqD,OAAO+P,iBAAiB,UAAW83C,IAEnC,IAAA/H,qBAAmB,KACf7/C,SAAS+P,oBAAoB,qBAAsBm6C,GACnDnqD,OAAOgQ,oBAAoB,aAAcq6C,GACzCrqD,OAAOgQ,oBAAoB,UAAW63C,EAAsB,KAGhE,IAAAyC,yBACJ,CAtiBIC,IAGK,IAAAjG,UAAQ,IAAMkC,IAAYrO,WAAW,IAAM,GAAG5tB,MAAK,IAAMi9B,EAAca,OAGxE,EAAA1P,WAAWxzC,SAASuY,SAASwrC,QACrBjpD,SAASmiD,IAAIj9C,SAAS,YAAuC,aAAxBlF,SAASukD,YAA6B4D,QACnF,IAAAoC,gBAAepC,KAAoBnC,EAA8BD,GAC5Dz7B,MAAM3pB,IAAM,IAAA0jD,UAAQ,IAAM1jD,EAAE2+C,aAAa,YACzCh1B,MAAK,IAAMi9B,EAAca,OAEzB79B,OAAM,SAIf,MAAMigC,EAAyB,eAAgBzqD,OAC/C,GAAIyqD,EAAwB,CAExB,MAAMC,EAAsB9pD,IACnB4mD,EAAca,EAAmBznD,EAAwD+pD,YAAY5pC,KAAK,EAClH/gB,OAAkD4qD,WAAW76C,iBAAiB,WAAY26C,IAE3F,IAAA5K,qBAAmB,KACd9/C,OAAkD4qD,WAAW56C,oBAAoB,WAAY06C,EAAmB,KAIpH,IAAApG,UAAQ,IAAyB,OAAnBxO,IAASC,QAAgBxrB,MAAK,KACzCurB,IAASC,MAAO0U,yBAA2BA,IAC3C3U,IAASC,MAAO0U,uBAAyBA,EACzC3U,IAAS2B,iBAAiB,8BAIlCoT,KAEA,IAAA/K,qBAAmB,KACXsG,IACAA,EAAsB/K,aACtB+K,EAAwB,QAGpC,EAEA,wEACI,MAAM7uC,EAAK8wC,IAEX,OAAI9wC,IAAOioC,UACEgI,EAAcjwC,GAC/B,KAEA,yEACI,MAAMA,EAAK8wC,IAEX,aAAab,EAAcjwC,EAC/B,KAEA,gCAA2CA,4CACvC,aAAaiwC,EAAcjwC,EAC/B,KAuEA,sBAwDA,+BA0FA,mBA2DA,IAAIuzC,EAA4B,EAC5BC,EAAsC,KAC1C,SAASF,IACL,KAAKlE,GACiC,OAA1BP,IAAmC,IAAAxN,WAAUyN,EAA8B3M,gBAAiB,CAIpG,GADIqR,GAAc9gC,aAAa8gC,GAC3BvxC,KAAKC,MAAQqxC,EAA4B,IAEzC,YADAC,EAAehhC,WAAW8gC,EAA4B33C,KAAKwpC,IAAI,IAAMljC,KAAKC,MAAQqxC,KAItFA,EAA4BtxC,KAAKC,MACjC,MAAMuxC,GAAkB,IAAAtP,YAAW,iBAAiB,GACpD,IAAKsP,EAAiB,OAEtB,MAAMC,EAAiBD,EAAgB5Q,cAAc,0BACrD,IAAK6Q,EAAgB,OAEjB7E,GAAuBA,EAAsB/K,aAEjD+K,EAAwB,IAAI9K,iBAAiB4M,GAC7C7B,EAA+B4E,EAE/B7E,EAAsB7K,QAAQ0P,EAAgB,CAC1C9F,YAAY,EACZ3J,WAAW,EACXC,SAAS,IAGrB,CAEA,MAAMyP,EAAqE,GAC3E,0BACI,OAAIhF,EAAc/7B,QAAQG,QAAQ47B,GAE3B,IAAI/7B,SAASG,IAChB4gC,EAAyB57C,KAAKgb,EAAQ,GAE9C,EAGA,IAAI6gC,EAAe,GACfC,GAAkB,EAEtB,SAAelD,mDACX,GAAIzB,EAAoB,QAEnB,IAAA7N,WAAUsN,IAAWmF,MAAmBnF,EAAQ,MAErDO,GAAqB,EAErB,IAAI6E,GAAY,IAAA1Z,aAAc3xC,SAASm6C,cAAc,mCACxC,IAAAoQ,gBAAe,SAAS,IACjCe,GAAiB,EAIrB,GADyBtrD,SAASm6C,cAAc,sBAC1BkR,EAAU,CAC5B,MAAME,EAAiB,IAAIvrD,SAASupC,iBAAiB,UAAUuP,QAAQr4C,IAAM,IAAAk4C,WAAUl4C,KACvF,GAAI8qD,EAAejsD,OAAS,EAAG,CAC3B,MAAMksD,EAAcH,EAAStS,SACvB0S,EAAqBF,EAAe3P,MAAMn7C,IAAOA,EAAE64C,QAAQ,iBAC7DmS,IAAoBJ,EAAWI,GAE/BxpD,MAAMopD,EAAStS,kBACT,IAAAsL,UAAQ,MAAQgH,EAAStS,UAAU,IAAM,KAGnDuS,EAAiBE,IAAgBH,EAAStS,UAOlD,GAHAyN,GAAqB,EAGjBP,IAAUoF,GAAYnF,IAAemF,EAASx+C,MAAMkR,QAAUutC,EAAgB,OAElFrF,EAAQoF,EACRnF,EAAamF,EAASx+C,MAAMkR,MAC5B,MAAM2tC,GAAcrF,EAAYnhD,SAAS+gD,GAYzC,GAVIyF,GACArF,EAAYh3C,KAAK42C,GAGI,QAAzB,EAAAtE,EAAO8F,0BAAkB,gBAAGiE,EAAYzF,GACxCgF,EAAyBxpD,SAASqD,GAAMA,EAAEumD,KAC1CJ,EAAyB3rD,OAAS,EAElCsrD,IAEI5qD,SAASmiD,IAAIj9C,SAAS,WAAY,CAClC,GAAIimD,EACA,OAEJA,GAAkB,EAElB,MAAMlL,GAAU,IAAAsK,gBAAexE,GAC1Bz7B,MAAM3pB,IAAM,IAAA0jD,UAAQ,IAAM1jD,QAAGo3C,OAAWA,GAAYp3C,GAAMA,EAAE2+C,aAAa,UAAY4L,KAC7EvqD,EAAE2+C,aAAa,WAAa3+C,EAAEiI,gBAEtCq3C,EAAQ11B,OAAM,IAAM4gC,GAAkB,IACtClL,EAAQ31B,MAAM3pB,GAAMuqD,EAAevqD,EAAE2+C,aAAa,UAClDh1B,MAAK,IAAM6gC,GAAkB,IAC7B7gC,MAAK,IAAMi9B,EAAca,YAEzBb,EAAca,QAO3B,SAASgD,IACL,OAAO,IAAAzZ,eAAgB3xC,SAASm6C,cAAc,0BAClD,CAcA,SAASyN,EAAsBzmC,eAC3B,MAAMpF,EAAOoF,EAAMpF,KACb4vC,EAAW5vC,EAAK3a,KAEF,iBAAhB2a,EAAK9N,SACA0zC,EAAOoG,gBAA8B,QAAb,EAAQ,OAAR/nD,eAAQ,IAARA,cAAQ,EAARA,SAAUmiD,WAAG,eAAEj9C,SAAS,wBAExC,eAAbymD,IACA,IAAArH,iBAGa,eAAbqH,GAA6B5vC,EAAKwjC,SAClCuH,EAAW/qC,EAAK+qC,SAEZ/qC,EAAK8iC,YACLmI,EAAgB,CACZ1vC,GAAIyE,EAAK8iC,UACTC,OAAQ/iC,EAAK6vC,aACbtZ,OAAQwT,EAAgBwD,OAGvBpC,GACIgB,EAAensC,EAAKwjC,UAI5BgI,EAAcxrC,EAAKwjC,UACJ,OAAboM,EACHlF,GAAe1qC,EAAK8vC,UACpBpF,EAAc1qC,EAAK8vC,QAEG,QAAtB,EAAAlK,EAAOmK,uBAAe,kBAEN,SAAbH,GAAuB5vC,EAAKwjC,SAC9BxjC,EAAKqrC,WACND,EAAuBprC,EAAKwjC,SAG3BgI,EAAcxrC,EAAKwjC,QAASxjC,EAAKqrC,UAEtCd,EAAiBvqC,EAAKgjC,QAAUhjC,EAAKgwC,YACjB,eAAbJ,GACP,IAAArH,iBACoB,mBAAbqH,EACe,QAAtB,EAAAhK,EAAOkG,uBAAe,gBAAG9rC,EAAKiwC,UACV,eAAbL,EACPtE,EAAatrC,EAAKg9B,SACE,qBAAb4S,IACPrE,GAAmB,EAEnB5P,MAAM,GAAGzG,OAAO0G,KAAKC,WAAW,+DAA+D77B,EAAKkwC,eAAelwC,EAAKmwC,iBAGhG,QAA5B,EAAAvK,EAAOiG,6BAAqB,gBAAGzmC,GACnC,CAlEA,qCAA0CkqC,SACtCpF,EAAQoF,EACRnF,EAAamF,EAASx+C,MAAMkR,MAC5B,MAAM2tC,GAAcrF,EAAYnhD,SAAS+gD,GAErCyF,GACArF,EAAYh3C,KAAK42C,GAGI,QAAzB,EAAAtE,EAAO8F,0BAAkB,gBAAGiE,EAAYzF,EAC5C,EAuFA,0BAAqCn4C,4DACjC,MAAMq+C,EAA+B,QAAhB,EAAS,QAAT,EAAAr+C,EAAKwV,YAAI,eAAEhf,aAAK,sBAAG,yCACxC,IAAIi7C,GAAW4M,aAAY,EAAZA,EAAe,MAAMA,aAAY,EAAZA,EAAe,IAEnD,IAAK5M,EAAS,CACV,MAAM6M,EAAgBt+C,EAAKqsC,cAAc,mBACzC,GAAIiS,EAAe,CACf,MAAM9oC,EAAkE,QAA3D,EAAmC,QAAnC,EAAA8oC,EAAcv/C,MAAMw/C,uBAAe,eAAE/nD,MAAM,wBAAgB,eAAG,GACvEgf,IACAi8B,EAAsC,QAA5B,EAAAj8B,EAAKhf,MAAM,yBAAiB,eAAG,QAE1C,CACH,MAAMgoD,EAAQx+C,EAAKqsC,cAAc,+EACjC,GAAImS,EAAO,CACP,IAAIhpC,EAAOgpC,EAAMhN,aAAa,OACzBh8B,UAiBrB,SAAyBgpC,GACrB,MAAMC,EAAkBC,EAAiBpmD,IAAIkmD,GAC7C,QAAwBvU,IAApBwU,EAA+B,CAC/B,MAAMvW,EAAS,IAAI9rB,SAAeG,IAC9B,MAAM26B,EAAW,IAAI3J,kBAAkBZ,UACnC,GAAmB,QAAd,EAAAxJ,OAAOC,eAAO,eAAE55B,GAErB,IAAK,MAAM0jC,KAAYP,EACnB,GAA+B,QAA3BO,EAASh6C,eACY,KAAdsrD,EAAMzoB,IAAY,CACzBmhB,EAAS5J,aACT/wB,IAEAmiC,EAAiB/2C,OAAO62C,GACxB,UAKZtH,EAAS1J,QAAQgR,EAAO,CAAEpH,YAAY,GAAO,IAKjD,OAFAsH,EAAiB7nD,IAAI2nD,EAAOtW,GAErBA,EAGX,OAAOuW,CACX,CA3C0BE,CAAgBH,GACtBhpC,EAAOgpC,EAAMhN,aAAa,QAG1Bh8B,IACAi8B,EAAsC,QAA5B,EAAAj8B,EAAKhf,MAAM,yBAAiB,eAAG,MAMzD,OAAOi7C,MAGX,MAAMiN,EAAmB,IAAIp3C,IA+B7B,IAAIs3C,GAAc,EAClB,SAAgBC,KAWZ,OAVA/B,OAEM,IAAAjS,WAAUsN,IACJU,GAAmBV,GAAShkD,MAAMgkD,EAAMlN,YACzCx/B,KAAKC,MAAQkzC,GAAc,MAClCA,GAAcnzC,KAAKC,OACd,IAAAm/B,WAAUsN,IAAWmF,MAAmBnF,EAAQ,MAChDgC,KAGFhC,CACX,CAcA,SAAgB2G,WACZ,MAAM/rC,EAAiB,QAAV,EAAA8rC,YAAU,eAAEE,YACzB,OAAIhsC,EACOA,EAAOwmC,EAEPxmC,CAEf,CA4EA,SAAgBsnC,KACZ,QAASnoD,SAASmiD,IAAI79C,MAAM,+BAChC,CA/GA,cAcA,wBACI,OAAOi7C,CACX,EAEA,sBAA2BjoC,GACvBioC,EAAUjoC,CACd,EAEA,oCACI,OAAOrE,KAAKwpC,IAAI,GAAmB,QAAf,EAAAwJ,aAAK,EAALA,EAAOlN,gBAAQ,QAAI,GAAKsO,EAChD,EAEA,oBAWA,6BAAkCxmC,GAC1B8rC,MAAcA,KAAYG,QAC1B/sD,OAAO8vC,YAAY,CACf5hC,OAAQ,iBACR4S,KAAMA,QAAAA,EAAQ+rC,KACdG,QAASJ,KAAYE,aACtB,IAEX,EAEA,0BAA+BhsC,GACvB8rC,OACAA,KAAYE,YAAchsC,EAAOwmC,EAEzC,EAEA,2BACI,OAAOX,CACX,EAEA,+BACI,OAAOC,CACX,EAEA,8BACI,OAAOE,CACX,EAEA,sBACI,OAAOD,CACX,EAEA,oCACI,OAAOM,CACX,EAEA,8BACI,OAAOF,CACX,EAEA,2BAAgC1vC,EAAYwnC,GACxCkI,EAAgB,CACZ1U,OAAQwT,EAAgBwD,MACxBhyC,GAAIA,EACJwnC,SAER,EAEA,4BACI,OAAO2H,CACX,EAEA,0BAA+B5/C,GAC3B4/C,EAAc5/C,CAClB,EAEA,+BACI,OAAOy/C,CACX,EAEA,qCACI,OAAOa,CACX,EAEA,yBACI,OAAOC,CACX,EAEA,gCACI,OAAOE,CACX,EAEA,4HC9zBA,gBACA,UAEA,UACA,UACA,UAEA,IAAI0F,EAA2C,KA8L/C,SAASC,EAAqBC,GAC1B,OAAIA,GAAa/sD,OAAO4iD,OAAO,EAAAoK,mBAAmBjoD,SAASgoD,GAChDA,EAGJ,IACX,CAEA,SAASE,EAAoBC,GACzB,OAAIA,GAAYltD,OAAO4iD,OAAO,EAAAuK,kBAAkBpoD,SAASmoD,GAC9CA,EAGJ,IACX,CAEA,SAASE,EAAiB1mD,GACtB,IAAKA,EAAO,OAAO,KAEnB,IAAIA,EAAMkiD,WAAW,KAMd,CACH,MAAMyE,EAAWC,OAAO5mD,GACxB,OAAK5E,MAAMurD,GAIJ,KAHIA,EARX,IACI,OAAOhkB,KAAKkkB,MAAM7mD,GACpB,MAAOlG,GACL,OAAO,KAUnB,CA7NA,0CACI,MAAOgtD,EAAaC,GAAkBC,EAAM5yB,UAAS,IAC9C4a,EAAQiY,GAAaD,EAAM5yB,SA6NtC,SAAsB4a,GAClB,IAAIG,EAAS,GAEb,IAAK,MAAM+X,KAAWlY,EAAQ,CACtBkY,EAAQC,UACRhY,GAAU,MAAQ+X,EAAQC,QAAU,MAGxChY,GAAU,MACV,IAAIiY,GAAY,EAChB,IAAK,MAAMC,KAAQH,EAAQI,MAClBF,IACDjY,GAAU,SAGdA,GAAU,GAAGkY,EAAKhB,aAAagB,EAAKb,YAAY7jB,KAAKC,UAAUykB,EAAKrnD,SACpEonD,GAAY,EAGhB,OAAQF,EAAQK,YACZ,KAAK,EAAAC,mBAAmBC,SACpBtY,GAAU,aACV,MACJ,KAAK,EAAAqY,mBAAmBE,YACpBvY,GAAU,iBACV,MACJ,KAAK,EAAAqY,mBAAmBG,WACpBxY,GAAU,gBACV,MACJ,KAAK,EAAAqY,mBAAmBI,SACpBzY,GAAU,cACV,MACJ,QACI,OAAO,KAGfA,GAAU,OAGd,OAAOA,EAAO3xC,MAClB,CArQ+CqqD,CAAa,UAAO5Y,MAAM6Y,aAC9DC,EAAaC,GAAkBhB,EAAM5yB,UAAS,GAErD,OACI,2BACI,uBAAK6zB,UAAU,gBAAgBluB,QAAS,KACpCgtB,GAAgBD,EAAY,GAE3B1c,OAAO0G,KAAKC,WAAW,4BAIxB+V,GACA,uBAAKmB,UAAU,8BACX,uBAAKA,UAAW,gCACZ,qBAAGrgD,OAAO,SACFsgD,IAAI,sBACJzrC,KAAK,yDACR2tB,OAAO0G,KAAKC,WAAW,6BAG5B,wBAAMkX,UAAWF,EAAc,SAAW,2BACrC,MACA3d,OAAO0G,KAAKC,WAAW,0BAIhC,4BAAUkX,UAAW,oBAAsBF,EAAc,GAAK,2BAC1DI,KAAM,GACNniD,MAAO,CAAEkR,MAAO,OAChBlX,MAAOgvC,EACPoZ,YAAY,EACZC,SAAWvuD,IACPmtD,EAAUntD,EAAE8N,OAAO5H,OAEnB,MAAMsoD,EAoBlC,SAAuBtZ,GACnB,MAAMuZ,EAAkC,GAExC,IAAIrB,EAA+B,CAC/BI,MAAO,GACPC,WAAY,KACZJ,QAAS,IAGb,IAAK,MAAMqB,KAAQxZ,EAAOr0C,MAAM,MAAO,CACnC,GAA2B,IAAvB6tD,EAAKhrD,OAAO/E,OAEZ,SAGJ,MAAM0uD,EAAUqB,EAAK/qD,MAAM,iBAC3B,GAAI0pD,EAAJ,CACI,GAAID,EAAQI,MAAM7uD,OAAS,EAAG,CAE1B,KAA2B,OAAvByuD,EAAQK,YAAuBL,EAAQI,MAAM7uD,OAAS,GAStD,OAAO,KARP8vD,EAAS//C,KAAK0+C,GAEdA,EAAU,CACNI,MAAO,GACPC,WAAY,KACZJ,QAAS,IAOjBD,EAAQC,QAAQ1uD,OAAS,IACzByuD,EAAQC,SAAW,MAGvBD,EAAQC,SAAWA,EAAQ,GAAG3pD,YAI3B,GAAIgrD,EAAKtG,WAAW,OAAQ,CAC/B,GAAIgF,EAAQI,MAAM7uD,OAAS,EAAG,CAE1B,KAA2B,OAAvByuD,EAAQK,YAAuBL,EAAQI,MAAM7uD,OAAS,GAStD,OAAO,KARP8vD,EAAS//C,KAAK0+C,GAEdA,EAAU,CACNI,MAAO,GACPC,WAAY,KACZJ,QAAS,IAOrB,MAAMsB,EAAY,IAAID,EAAKE,SAAS,yDACpC,IAAK,MAAMC,KAAYF,EAAW,CAC9B,IAAKE,EAAS,GAAI,OAAO,KAEzB,MAAMC,EAAYD,EAAS,GAAGlrD,MAAM,8CACpC,GAAyB,IAArBmrD,EAAUnwD,OACV,OAAO,KAGX,MAAM4tD,EAAYD,EAAqBwC,EAAU,IAC3CpC,EAAWD,EAAoBqC,EAAU,IACzC5oD,EAAQ0mD,EAAiBkC,EAAU,IACzC,GAAkB,OAAdvC,GAAmC,OAAbG,GAA+B,OAAVxmD,EAC3C,OAAO,KAGX,GAAI,CAAC,EAAAymD,iBAAiBoC,MAAO,EAAApC,iBAAiBqC,UAAUzqD,SAASmoD,GAAW,CACxE,GAAIH,IAAc,EAAAC,kBAAkByC,WACxBC,EAAcC,aAAa5qD,SAAS2B,GAC5C,OAAO,KACJ,GAAIqmD,IAAc,EAAAC,kBAAkB4C,aAC/B,EAAAC,YAAY9qD,SAAS2B,GAC7B,OAAO,KACJ,GAAIqmD,IAAc,EAAAC,kBAAkB8C,SAC/B,CAAC,QAAS,UAAW,gBAAiB,UAAU/qD,SAAS2B,GACjE,OAAO,KAIfknD,EAAQI,MAAM9+C,KAAK,CACf69C,YACAG,WACAxmD,UAKR,GAAyB,IAArByoD,EAAUhwD,SAAiB+vD,EAAKa,SAASZ,EAAUA,EAAUhwD,OAAS,GAAG,IACzE,OAAO,SAER,CAEH,GAA6B,IAAzByuD,EAAQI,MAAM7uD,OACd,OAAO,KAGX,OAAQ+vD,EAAKhrD,OAAO3C,eAChB,IAAK,WACDqsD,EAAQK,WAAa,EAAAC,mBAAmBC,SACxC,MACJ,IAAK,eACDP,EAAQK,WAAa,EAAAC,mBAAmBE,YACxC,MACJ,IAAK,cACDR,EAAQK,WAAa,EAAAC,mBAAmBG,WACxC,MACJ,IAAK,YACDT,EAAQK,WAAa,EAAAC,mBAAmBI,SACxC,MACJ,QACI,OAAO,OAKvB,GAAIV,EAAQI,MAAM7uD,OAAS,GAA4B,OAAvByuD,EAAQK,WACpCgB,EAAS//C,KAAK0+C,QACX,GAAIA,EAAQI,MAAM7uD,OAAS,GAA4B,OAAvByuD,EAAQK,WAE3C,OAAO,KAGX,OAAOgB,CACX,CArJ6Ce,CAAcxvD,EAAE8N,OAAO5H,OACxCgoD,KAAiBM,GAAcxuD,EAAE8N,OAAO5H,MAAMvH,OAAS,GAAyB,IAApB6vD,EAAS7vD,SAEjE6vD,IACInC,GACAhjC,aAAagjC,GAGjBA,EAAoBljC,YAAW,KAC3B,UAAOgsB,MAAM6Y,UAAYQ,CAAQ,GAClC,UAQnC,wJChEA,gBAEA,UACA,UACA,SACA,UACA,UACA,UAEA,IAAIiB,EAAwD,KACxDC,EAA0D,KAqM9D,SAASC,GAAoB,wBAAEC,EAAuB,WAAEC,EAAU,cAAEC,YAEhE,MAAM9W,EAA0B,GAC1B+W,EAAgD,OAA5BH,EAAmC,EAAAlC,mBAAmBC,SAAW,EAAAD,mBAAmBsC,kBAE9G,IAAK,MAAMC,KAAYf,EAAcC,aACjCnW,EAAStqC,KACL,gBAAC,EAAAwhD,6BAA4B,CACzBD,SAAUA,EACVE,UAA4E,QAAjE,EAAyD,QAAzD,EAAAN,EAAW5U,MAAKkV,GAAaA,EAAU3rD,OAASyrD,WAAS,eAAEG,cAAM,QAAIL,EAChFM,gBAAkBD,IACd,MAAME,EAAoBT,EAAW5U,MAAKkV,GAAaA,EAAU3rD,OAASyrD,IACpEM,EAAqBH,IAAW,EAAA1C,mBAAmBC,UAAwC,OAA5BiC,GAC7DQ,IAAW,EAAA1C,mBAAmBsC,mBAAiD,OAA5BJ,EACvDU,GACAA,EAAkBF,OAASA,EAEvBG,GACAV,EAAWlnB,OAAOknB,EAAW1jD,QAAQmkD,GAAoB,IAErDC,GACRV,EAAWnhD,KAAK,CACZlK,KAAMyrD,EACNG,OAAQA,IAKhBP,EAAa,IAAIA,GAEjBW,EAAyBZ,EAAyB,qBAAsBC,EAAYC,EAAc,EAEtGW,gBAA6C,OAA5Bb,EACjBA,wBAAyBA,EACzBlzC,IAAKuzC,KAKjB,OAAO,gCACFjX,EAET,CAEA,SAAS0X,IACDjB,GACApmC,aAAaomC,GAGjBA,EAAiCtmC,YAAW,KACxC,UAAO0tB,iBAAiB,eAAe,GACxC,GACP,CAEA,SAAS8Z,IACDjB,GACArmC,aAAaqmC,GAGjBA,EAAmCvmC,YAAW,KAC1C,UAAO0tB,iBAAiB,wBAAwB,GACjD,GACP,CAEA,SAAS+Z,EAAkBC,EAA6CjB,GACpEiB,EAAmBrxD,OAAOgyC,QAAQ,UAAO2D,MAAO2b,uBAC3C3Y,QAAO,EAAE,CAAExhC,KAAQA,IAAOi5C,IAC1BjjB,KAAI,EAAEuR,KAAeA,IAAWvqB,KAAK,MAC9C,CAEA,SAASiyB,EAAUgK,GACf,OAAOA,EAA0B,UAAOza,MAAO4b,aAAanB,GAA2B,IAC3F,CAEA,SAAgBoB,EAAyBpB,EAAiDQ,EAAgB5pD,GACtG,OAAgC,OAA5BopD,OACqBxY,IAAjB5wC,EACOA,EAEA,UAAO0uC,OAAOkb,GAGlBxK,EAAUgK,GAAyBQ,EAElD,CAEA,SAAgBI,EAAyBZ,EAAiDQ,EAAgBlqD,EAAgB+qD,GACrH,GAAgC,OAA5BrB,EACD,UAAO1a,OAAOkb,GAAUlqD,MACrB,CACH,MAAMgvC,EAAS0Q,EAAUgK,GACX,OAAV1pD,EACAgvC,EAAOkb,GAAUlqD,SAEVgvC,EAAOkb,GAGlBM,IAGAO,GAAaA,EAAY/qD,EACjC,CAEA,SAASgrD,EAAsBl+B,GAC3B,MAAMzrB,EAA4B,CAAC,CAAC,CAChC4pD,UAAW,eACXC,MAAO9gB,OAAO0G,KAAKC,WAAW,gBAC9Bx2C,KAAM,WACN,CAAC,CACD0wD,UAAW,oBACXC,MAAO9gB,OAAO0G,KAAKC,WAAW,qBAC9Bx2C,KAAM,UACP,CACC0wD,UAAW,8BACXC,MAAO9gB,OAAO0G,KAAKC,WAAW,+BAC9Bx2C,KAAM,SACN4wD,yBAAyB,GAC1B,CACCF,UAAW,wBACXC,MAAO9gB,OAAO0G,KAAKC,WAAW,+BAC9Bqa,YAAahhB,OAAO0G,KAAKC,WAAW,6BACpCx2C,KAAM,WACN,CAAC,CACD0wD,UAAW,cACXC,MAAO9gB,OAAO0G,KAAKC,WAAW,eAC9Bqa,YAAahhB,OAAO0G,KAAKC,WAAW,0BACpCx2C,KAAM,YAGJ40C,EAAwB,GAE9B,IAAK,MAAMkc,KAAehqD,EAAS,CAC/B,MAAMiqD,EAA6B,GACnC,IAAK,MAAMpB,KAAUmB,EACjBC,EAAY9iD,KACR,gBAAC,EAAA+iD,qBAAoB,CACjBrB,OAAQA,EACRR,wBAAyB58B,EAAM48B,wBAC/BlzC,IAAK0zC,EAAOe,aAIxB9b,EAAO3mC,KACH,uBAAKy/C,UAAU,mBAAmBzxC,IAAK60C,EAAY5kB,KAAI+kB,GAAKA,EAAEP,YAAWx9B,KAAK,MACzE69B,IAKb,OAAQ,gCACHnc,EAET,CA3VA,sCACI,MAAOsc,EAAgBC,GAAqB1E,EAAM5yB,SAAS,UAAO6a,MAAO4b,eAClEnB,EAAyBiC,GAA8B3E,EAAM5yB,SAAiC,OAC9Fw3B,EAAiBjB,GAAsB3D,EAAM5yB,SAAS,KAEtDy3B,EAAmBC,GAAwB9E,EAAM5yB,SAAS,KAC1Du1B,EAAYC,GAAiB5C,EAAM5yB,SAA8B,IAExE4yB,EAAMnzB,WAAU,KACZi4B,EAAqBhB,EAAsBpB,EAAyB,OAAQ,KAE5EgB,EAAkBC,EAAoBjB,GACtCE,EAAckB,EAA2CpB,EAAyB,uBAElD,OAA5BA,EACAvwD,SAASupC,iBAAiB,2BAA2B9nC,SAASd,GAAMA,EAAEk4C,UAAU1B,OAAO,YAEvFn3C,SAASupC,iBAAiB,2BAA2B9nC,SAASd,GAAMA,EAAEk4C,UAAUh5C,IAAI,cAEzF,CAAC0wD,IAEJ,MAAMqC,EAAkB,KACpB,IAAIC,GAAQ,IAAAC,kBAAiB5lD,UAAU,EAAG,GAC1C,KAAO,UAAO4oC,MAAM4b,aAAamB,IAC7BA,GAAQ,IAAAC,kBAAiB5lD,UAAU,EAAG,GAG1C,MAAM6lD,EAAwC,CAC1C5tD,KAAM,GAAG8rC,OAAO0G,KAAKC,WAAW,uBAAuBz3C,OAAO6M,KAAK,UAAO8oC,MAAM4b,cAAcpyD,SAC9F0zD,mBAAoB,GACpBC,0BAA2B,KAC3BC,sBAAuB,KACvBC,+BAAgC,KAChCC,aAAc,KACdC,kBAAmB,KACnBC,sBAAuB,KACvBC,YAAa,MAGjB,UAAOzd,MAAO4b,aAAamB,GAASE,EACpC1B,IACAkB,EAAkB,UAAOzc,MAAO4b,cAChCc,EAA2BK,GAE3BtB,EAAkBC,EAAoBqB,EAAyB,EAQnE,OANAhF,EAAMnzB,WAAU,KACiB,gBAAzB36B,OAAO0d,SAAS+1C,MAChBZ,MAEL,IAGC,gCACI,uBAAK9D,UAAU,yBACX,gBAAC,EAAA2E,sBAAqB,CAClBn8C,GAAG,kBACH43C,SAAWroD,IACO,SAAVA,IAAkBA,EAAQ,MAE9B2rD,EAA2B3rD,GAC3B0qD,EAAkBC,EAAoB3qD,EAAyB,EAEnEA,MAAO0pD,EACProD,QAAS,CAAC,CACNrB,MAAO,OACPkrD,MAAO9gB,OAAO0G,KAAKC,WAAW,0BAC/B5wB,OAAO7mB,OAAOgyC,QAAQmgB,GAAgBhlB,KAAI,EAAEjwB,EAAKxW,MAAW,CAC3DA,MAAOwW,EACP00C,MAAOlrD,EAAM1B,YAIrB,uBACI2pD,UAAU,+BACVluB,QAAS,IAAMgyB,KACd3hB,OAAO0G,KAAKC,WAAW,sBAK5B2Y,GACA,uBAAKzB,UAAU,qBACX,yBACI1tD,KAAK,OACLkW,GAAG,oBACHzQ,MAAO6rD,EACPgB,YAAaziB,OAAO0G,KAAKC,WAAW,qBACpCsX,SAAWvuD,IACP,MAAMgzD,EAAUhzD,EAAE8N,OAAO5H,MACzB0/C,EAAUgK,GAA0BprD,KAAOwuD,EAC3ChB,EAAqBgB,GAErBtC,IACAkB,EAAkB,UAAOzc,MAAO4b,aAAa,IAGrD,2BACKzgB,OAAO0G,KAAKC,WAAW,8BAG5B,4BACIkX,UAAU,kBACVE,KAAM,GACNnoD,MAAO4rD,EACPvD,SAAWvuD,IACP,MAAMizD,EAAUjzD,EAAE8N,OAAO5H,MACzB2qD,EAAmBoC,GAEnB,MAAMC,EAAWD,EAAQpyD,MAAM,MAAM8rC,KAAKwmB,GAAYA,EAAQzvD,SAAQy0C,QAAQgb,GAAwB,KAAZA,IAC1F,GAAID,EAASv0D,OAAS,EAAG,CACrB,IAAK,MAAOu/C,EAAWvnC,KAAOnX,OAAOgyC,QAAQ,UAAO2D,MAAO2b,uBACnDn6C,IAAOi5C,IACFsD,EAAS3uD,SAAS25C,WACZ,UAAO/I,MAAO2b,sBAAsB5S,IAKvD,IAAK,MAAMiV,KAAWD,EAClB,UAAO/d,MAAO2b,sBAAsBqC,GAAWvD,EAIvDe,GAA6B,IAGrC,uBACIxC,UAAU,+BACVluB,QAAS,KACL,GAAImzB,QAAQ9iB,OAAO0G,KAAKC,WAAW,2BAA4B,QACpD,UAAO9B,MAAM4b,aAAanB,GACjCc,IAEA,IAAK,MAAOxS,EAAWvnC,KAAOnX,OAAOgyC,QAAQ,UAAO2D,MAAM2b,uBAClDn6C,IAAOi5C,UACA,UAAOza,MAAM2b,sBAAsB5S,GAGlDyS,IAEI,UAAOxb,MAAMke,iBAAmB,UAAOle,MAAMke,gBAAgBC,WAAa1D,IAC1E,UAAOza,MAAMke,gBAAkB,MAGnCzB,EAAkB,UAAOzc,MAAO4b,cAChC,MAAMmB,EAAQ1yD,OAAO6M,KAAK,UAAO8oC,MAAO4b,cAAc,GACtDc,EAA2BK,MAGlC5hB,OAAO0G,KAAKC,WAAW,yBAKpC,yBAAOtgC,GAAG,uBACNw3C,UAAU,wBACV,6BAEI,sBAAIx3C,GAAI,qBACAw3C,UAAU,4CACd,sBAAIx3C,GAAI,sBACH25B,OAAO0G,KAAKC,WAAW,aAG5B,sBAAItgC,GAAI,qBACJw3C,UAAU,cACT7d,OAAO0G,KAAKC,WAAW,eAG5B,sBAAItgC,GAAI,sBACJw3C,UAAU,eACT7d,OAAO0G,KAAKC,WAAW,iBAG5B,sBAAItgC,GAAI,6BACJw3C,UAAU,sBACT7d,OAAO0G,KAAKC,WAAW,kBAIhC,gBAAC0Y,EAAmB,CAChBC,wBAAyBA,EACzBC,WAAYA,EACZC,cAAeA,MAK3B,gBAACoB,EAAqB,CAClBtB,wBAAyBA,IAGzC,EA4EA,0BAYA,0JCrSA,gBAEA,UACA,UACA,UAEA,UACA,UACA,UACA,UA2LA,SAAS2D,EAAsBvgC,GAC3B,MAAMqiB,EAAS,GACf,IAAK,MAAM+a,KA8Df,SAAyBH,GACrB,OAAQA,GACJ,IAAK,UACD,MAAO,CAAC,CACJkB,UAAW,2BACXC,MAAO9gB,OAAO0G,KAAKC,WAAW,oBAC9Bx2C,KAAM,SACN+yD,aAAa,EACbnC,yBAAyB,GAC1B,CACCF,UAAW,8BACXC,MAAO9gB,OAAO0G,KAAKC,WAAW,+BAC9Bx2C,KAAM,SACN+yD,aAAa,EACbnC,yBAAyB,GAC1B,CACCF,UAAW,4BACXC,MAAO9gB,OAAO0G,KAAKC,WAAW,6BAC9Bx2C,KAAM,SACN+yD,aAAa,IAErB,IAAK,iBACD,MAAO,CAAC,CACJrC,UAAW,wBACXC,MAAO9gB,OAAO0G,KAAKC,WAAW,yBAC9Bx2C,KAAM,UACP,CACC0wD,UAAW,iCACXC,MAAO9gB,OAAO0G,KAAKC,WAAW,kCAC9Bx2C,KAAM,WAEd,QACI,MAAO,GAEnB,CAhGyBgzD,CAAgBzgC,EAAMi9B,UACvC5a,EAAO3mC,KACH,gBAAC+iD,EAAoB,CACjB/0C,IAAK0zC,EAAOe,UACZf,OAAQA,EACRR,wBAAyB58B,EAAM48B,2BAK3C,OACA,gCACKva,EAET,CAEA,SAAgBoc,GAAqB,OAACrB,EAAM,wBAAER,IAC1C,MAAO1pD,EAAOL,GAAYqnD,EAAM5yB,UAAS,IAAA02B,uBAAsBpB,EAAyBQ,EAAOe,YAK/F,OAJAjE,EAAMnzB,WAAU,KACZl0B,GAAS,IAAAmrD,uBAAsBpB,EAAyBQ,EAAOe,WAAW,GAC3E,CAACvB,IAGA,sBAAIlzC,IAAK0zC,EAAOe,UAAWhD,UAAciC,EAAOiB,yBAAuD,OAA5BzB,EAAmC,SAAW,IACrH,sBAAIj5C,GAAI,GAAGy5C,EAAOe,YAAahD,UAAU,wBAEjB,WAAhBiC,EAAO3vD,KACH,gBAAC,EAAAizD,sBAAqB,CAClBztD,QAASC,QAAAA,EAAS,UAAOgvC,OAAOkb,EAAOe,WACvCwC,gBAA2B,OAAVztD,EACjB0tD,gBAA2B,OAAV1tD,GAA8C,OAA5B0pD,EACnCrB,SAAWtoD,KACP,IAAAuqD,0BAAyBZ,EAAyBQ,EAAOe,UAAWlrD,EAASJ,EAAS,EAE1FguD,QAAS,MACL,IAAArD,0BAAyBZ,EAAyBQ,EAAOe,UAAW,KAAMtrD,EAAS,EAEvFurD,MAAOhB,EAAOgB,MACdE,YAAalB,EAAOkB,YACpBplD,MAAO,CAACkR,MAAO,aAGnB,gBAAC,EAAA02C,2BAA0B,CACvB5tD,MAAOA,QAAAA,EAAS,UAAOgvC,OAAOkb,EAAOe,WACrCwC,gBAA2B,OAAVztD,EACjB0tD,gBAA2B,OAAV1tD,GAA8C,OAA5B0pD,EACnCrB,SAAWroD,KACP,IAAAsqD,0BAAyBZ,EAAyBQ,EAAOe,UAAWjrD,EAAOL,EAAS,EAExFguD,QAAS,MACL,IAAArD,0BAAyBZ,EAAyBQ,EAAOe,UAAW,KAAMtrD,EAAS,EAEvFurD,MAAOhB,EAAOgB,MACdE,YAAalB,EAAOkB,YACpBplD,MAAO,CAACkR,MAAO,cAM3C,CAnOA,wCAA6C4V,WACzC,MAAOzT,EAAOw0C,GAAY7G,EAAM5yB,SAAStH,EAAMghC,eAAsD,QAAtC,YAAO9e,OAAO+e,SAASjhC,EAAMi9B,iBAAS,eAAE1wC,SAChG20C,EAAcC,GAAmBjH,EAAM5yB,SAAStH,EAAMohC,sBAA0E,QAAnD,YAAOlf,OAAO+e,SAAS,WAAajhC,EAAMi9B,iBAAS,eAAE1wC,QAEnI80C,EAAiBnH,EAAM/yB,SAAQ,KACjC,OAAQnH,EAAMm9B,WACV,KAAK,EAAAzC,mBAAmBE,YACpB,MAAO,cACX,KAAK,EAAAF,mBAAmBG,WACpB,MAAO,aACX,KAAK,EAAAH,mBAAmBI,SACpB,MAAO,WACX,KAAK,EAAAJ,mBAAmBsC,kBACpB,MAAO,oBACX,QACI,MAAO,aAEhB,CAACh9B,EAAMm9B,YAEJmE,EAAqBpH,EAAM7yB,OAA8B,MAE/D,OACI,gCACI,sBAAI1jB,GAAIqc,EAAMi9B,SAAW,aACrB9B,UAAW,wBACX,sBAAIx3C,GAAIqc,EAAMi9B,SAAW,aACrB9B,UAAU,sBACL7d,OAAO0G,KAAKC,WAAW,YAAcjkB,EAAMi9B,WAGpD,sBAAIt5C,GAAIqc,EAAMi9B,SAAW,aACrB9B,UAAU,cACV,0BACIA,UAAU,kBACVjoD,MAAOmuD,EACP9F,SAAWvuD,GA2EnC,SAA4BwgB,EACpByvC,EAAoBI,GACxB,IAAID,EACJ,OAAQ5vC,EAAM1S,OAAO5H,OACjB,IAAK,oBACDkqD,EAAS,EAAA1C,mBAAmBsC,kBAC5B,MACJ,IAAK,UACDI,EAAS,EAAA1C,mBAAmBC,SAC5B,MACJ,IAAK,cACDyC,EAAS,EAAA1C,mBAAmBE,YAC5B,MACJ,IAAK,aACDwC,EAAS,EAAA1C,mBAAmBG,WAC5B,MACJ,IAAK,WACDuC,EAAS,EAAA1C,mBAAmBI,SAEX,WAAbmC,GAA0B,UAAO/a,OAAOqf,OACnCnB,QAAQ9iB,OAAO0G,KAAKC,WAAW,oBAChCz2B,EAAM1S,OAAO5H,MAAQ,WAOrCmqD,EAAgBD,EACpB,CAxGyCoE,CAAmBx0D,EAAGgzB,EAAMi9B,SAAUj9B,EAAMq9B,kBA0GrF,SAAgCJ,EAAoBQ,GAChD,MAAMzX,EAA0B,GAEhC,IAAIyb,EAAc,CAAC,UAAW,cAAe,aAAc,aAC1C,YAAbxE,GACkB,qBAAbA,KADmBwE,EAAc,CAAC,UAAW,gBAGjDhE,IACDgE,EAAc,CAAC,qBAAqBpuC,OAAOouC,IAG/C,IAAK,MAAMC,KAAcD,EACrBzb,EAAStqC,KACL,0BAAQgO,IAAKg4C,EAAYxuD,MAAOwuD,GAC3BpkB,OAAO0G,KAAKC,WAA0B,YAAfyd,EAA2BA,GAAa,IAAAC,mBAAkB1E,GAC5ByE,IAAepkB,OAAO0G,KAAKC,WAAWyd,KAKxG,OAAO1b,CACX,CA9H6B4b,CAAuB5hC,EAAMi9B,SAAUj9B,EAAMy9B,mBAItC,YAAnBz9B,EAAMi9B,UACH,sBAAIt5C,GAAIqc,EAAMi9B,SAAW,cACrB9B,UAAU,eACV,yBACIA,UAAU,uCACV1tD,KAAK,QACLiH,UAAWsrB,EAAMy9B,gBACjBlC,SAAW/tC,IACH8zC,EAAmB5jD,SACnB2Y,aAAairC,EAAmB5jD,SAGpCqjD,EAASvzC,EAAM7I,cAAczR,OAC7B,UAAOgvC,OAAO+e,SAASjhC,EAAMi9B,UAAU1wC,MAAQiB,EAAM7I,cAAczR,MAGnEouD,EAAmB5jD,QAAUyY,YAAW,KACpC,UAAO+rB,OAAO+e,SAAW,UAAO/e,OAAO+e,QAAQ,GAChD,GAAG,EAEV/tD,MAAOqZ,MAIjB,CAAC,UAAW,oBAAoBhb,SAASyuB,EAAMi9B,WAC7C,sBAAIt5C,GAAIqc,EAAMi9B,SAAW,qBACrB9B,UAAU,sBACV,yBACIA,UAAU,uCACV1tD,KAAK,QACLiH,UAAWsrB,EAAMy9B,gBACjBlC,SAAW/tC,IACH8zC,EAAmB5jD,SACnB2Y,aAAairC,EAAmB5jD,SAGpCyjD,EAAgB3zC,EAAM7I,cAAczR,OACpC,UAAOgvC,OAAO+e,SAAS,WAAajhC,EAAMi9B,UAAU1wC,MAAQiB,EAAM7I,cAAczR,MAGhFouD,EAAmB5jD,QAAUyY,YAAW,KACpC,UAAO+rB,OAAO+e,SAAW,UAAO/e,OAAO+e,QAAQ,GAChD,GAAG,EAEV/tD,MAAOguD,MAMvB,sBAAIv9C,GAAIqc,EAAMi9B,SAAW,iBACrB9B,UAAW,8CACP,sBACI0G,QAAS,GACRvkB,OAAO0G,KAAKC,WAAW,YAAcjkB,EAAMi9B,SAAW,gBACtD,IACD,qBAAGttC,KAAMusC,EAAc4F,UAAU9hC,EAAMi9B,UAAWniD,OAAO,SAASsgD,IAAI,cACjE,GAAG9d,OAAO0G,KAAKC,WAAW,kBAK3C,gBAACsc,EAAqB,CAClBtD,SAAUj9B,EAAMi9B,SAChBL,wBAAyB58B,EAAM48B,0BAI/C,EA2EA,0FCtNA,gBACA,UACA,UACA,UACA,UAUA,IAAImF,EACAC,EAEJ,MAAMC,UAAyB/H,EAAMz7B,UACjC,WAAAjsB,CAAYwtB,GACR6qB,MAAM7qB,GACN7yB,KAAKuyB,MAAQ,CAACmlB,QAAS,UAAO3C,OAAO/0C,KAAK6yB,MAAMo9B,QACpD,CAEA,MAAAzrD,qBACI,OACI,gCACI,uBAAKwpD,UAAU,yBAAyB5L,MAAOjS,OAAO0G,KAAKC,WAAW,UAAWhX,QAAS,IAAM9/B,KAAK+0D,mBAC9E,QAAlB,EAAA/0D,KAAKuyB,MAAMmlB,eAAO,eAAED,OAAQ,uBAAKuW,UAAU,kBAAgB,SACzC,QAAlB,EAAAhuD,KAAKuyB,MAAMmlB,eAAO,eAAED,OAAQ,wBAAMuW,UAAU,cAAY,MACtC,QAAlB,EAAAhuD,KAAKuyB,MAAMmlB,eAAO,eAAEF,MAAO,uBAAKwW,UAAU,cAAY,QACpC,QAAlB,EAAAhuD,KAAKuyB,MAAMmlB,eAAO,eAAEF,MAAO,wBAAMwW,UAAU,UAAQ,MACjC,QAAlB,EAAAhuD,KAAKuyB,MAAMmlB,eAAO,eAAE/hC,QAAS,uBAAKq4C,UAAU,gBAAc,UACxC,QAAlB,EAAAhuD,KAAKuyB,MAAMmlB,eAAO,eAAE/hC,QAAS,wBAAMq4C,UAAU,YAAU,KAC5B,OAAT,QAAlB,EAAAhuD,KAAKuyB,MAAMmlB,eAAO,eAAEn7B,MAAe,uBAAKyxC,UAAU,gBAAe,IAAA1Z,WAAUt0C,KAAKuyB,MAAMmlB,QAAQn7B,MACxE,MAAtBvc,KAAKuyB,MAAMmlB,SAAmB,wBAAMsW,UAAU,WAAW7d,OAAO0G,KAAKC,WAAW,YAGlE,MAAtB92C,KAAKuyB,MAAMmlB,SACR,uBAAKsW,UAAU,sCAAsCluB,QAAS,IAAM9/B,KAAKg1D,UACpE7kB,OAAO0G,KAAKC,WAAW,WAKxC,CAEA,MAAAme,CAAOC,GACH,OAAO,IAAAC,eAAcn1D,KAAKuyB,MAAMmlB,QAASwd,EAC7C,CAEA,QAAA5sD,GACI,OAAO,IAAA8sD,iBAAgBp1D,KAAKuyB,MAAMmlB,QACtC,CAEA,cAAAqd,GACIH,EAASS,OAAOn2D,SAASC,cAAc,OACvCy1D,EAAOp+C,GAAK,iBACZ6+C,OAAOn2D,SAASgH,KAAKovD,QAAQV,GAC7BC,GAAO,IAAA7pB,YAAW4pB,GAClBC,EAAKrwD,OAAO,gBAAC,UAAsB,CAACyrD,OAAQjwD,KAAK6yB,MAAMo9B,OAAQsF,cAAgBC,GAAex1D,KAAKy1D,gBAAgBD,KACvH,CAEA,eAAAC,CAAgBD,GACZX,EAAKvsB,UACLssB,EAAOve,SACW,MAAdmf,GACAx1D,KAAK+rC,SAAS,CAAC2L,QAAS8d,GAChC,CAEA,MAAAR,GACIh1D,KAAK+rC,SAAS,CAAC2L,QAAS,OACxB,UAAO3C,OAAO/0C,KAAK6yB,MAAMo9B,QAAU,IACvC,EAGJ,UAAe6E,mEC3Ef,gBAEA,UACA,UAiBA,MAAMY,UAA+B3I,EAAMz7B,UAEvC,WAAAjsB,CAAYwtB,GACR6qB,MAAM7qB,GA+DV,KAAA8iC,kBAAqB91D,IACjB,KAAKA,EAAE6Z,QAAW7Z,EAAE4Z,UAAa5Z,EAAE2Z,SAAY3Z,EAAE8Z,SAAY9Z,EAAE+Z,iBAAiB,aAAa,CACzF,GAAc,UAAV/Z,EAAE6c,KAEF,YADA1c,KAAK6yB,MAAM0iC,cAAc,MAI7Bv1D,KAAK+rC,SAAS,CACVxvB,IAAK,CACDA,IAAK1c,EAAE0c,IACPG,KAAM7c,EAAE6c,KACR+6B,KAAMz3C,KAAKuyB,MAAMhW,IAAIk7B,KACrBD,IAAKx3C,KAAKuyB,MAAMhW,IAAIi7B,IACpB7hC,MAAO3V,KAAKuyB,MAAMhW,IAAI5G,SAC3B,IAAM3V,KAAK+rC,SAAS,CAAE7Q,MAAOl7B,KAAK41D,2BAI7C,KAAAC,uBAA0Bh2D,IACtB,MAAM2W,EAAK3W,EAAE8N,OAAO6I,GACds/C,EAAMj2D,EAAE8N,OAAO7H,QAErB9F,KAAK+rC,SAAS,CACVxvB,IAAK,CACDA,IAAKvc,KAAKuyB,MAAMhW,IAAIA,IACpBG,KAAM1c,KAAKuyB,MAAMhW,IAAIG,KACrB+6B,KAAY,uBAANjhC,EAA8Bs/C,EAAK91D,KAAKuyB,MAAMhW,IAAIk7B,KACxDD,IAAW,sBAANhhC,EAA6Bs/C,EAAK91D,KAAKuyB,MAAMhW,IAAIi7B,IACtD7hC,MAAa,wBAANa,EAA+Bs/C,EAAK91D,KAAKuyB,MAAMhW,IAAI5G,SAC/D,IAAM3V,KAAK+rC,SAAS,CAAE7Q,MAAOl7B,KAAK41D,wBAAwB,EA3F7D51D,KAAKuyB,MAAQ,CACThW,IAAK,CACDA,IAAK,KACLG,KAAM,KACN+6B,MAAM,EACND,KAAK,EACL7hC,OAAO,GAEXulB,MAAO,CACHL,QAAS,KACTk7B,UAAU,GAGtB,CAEA,MAAAvxD,WACI,OACI,gCACI,uBAAKwpD,UAAU,YACf,uBAAKA,UAAU,UACX,uBAAKx3C,GAAG,8BAA8B25B,OAAO0G,KAAKC,WAAW,uBAC7D,uBAAKtgC,GAAG,2BACJ,uBAAKA,GAAG,2BAA2Bw3C,UAAU,UACzC,2BACI,yBAAOx3C,GAAG,sBAAsBlW,KAAK,WAAW8tD,SAAUpuD,KAAK61D,yBAC/D,yBAAOG,QAAQ,uBAAqB,SAExC,2BACI,yBAAOx/C,GAAG,qBAAqBlW,KAAK,WAAW8tD,SAAUpuD,KAAK61D,yBAC9D,yBAAOG,QAAQ,sBAAoB,QAEvC,2BACI,yBAAOx/C,GAAG,uBAAuBlW,KAAK,WAAW8tD,SAAUpuD,KAAK61D,yBAChE,yBAAOG,QAAQ,wBAAsB,WAG7C,uBAAKhI,UAAU,eAAc,IAAA1Z,WAAUt0C,KAAKuyB,MAAMhW,IAAIA,OAE1D,uBAAK/F,GAAG,wBAAwC,QAAhB,EAAAxW,KAAKuyB,MAAM2I,aAAK,eAAEL,SAClD,uBAAKrkB,GAAG,0BACJ,uBAAKw3C,UAAW,qCAAuD,QAAhB,EAAAhuD,KAAKuyB,MAAM2I,aAAK,eAAE66B,WAAkC,MAAtB/1D,KAAKuyB,MAAMhW,IAAIA,IAAe,YAAc,IAAKujB,QAAS,IAAM9/B,KAAKi2D,QACrJ9lB,OAAO0G,KAAKC,WAAW,SAE5B,uBAAKkX,UAAU,qCAAqCluB,QAAS,IAAM9/B,KAAK6yB,MAAM0iC,cAAc,OACvFplB,OAAO0G,KAAKC,WAAW,aAMhD,CAEA,iBAAA5jB,GACImiC,OAAOn2D,SAAS8P,iBAAiB,UAAWhP,KAAK21D,mBACjDz2D,SAAS8P,iBAAiB,UAAWhP,KAAK21D,kBAC9C,CAEA,oBAAA3zB,GACIqzB,OAAOn2D,SAAS+P,oBAAoB,UAAWjP,KAAK21D,mBACpDz2D,SAAS+P,oBAAoB,UAAWjP,KAAK21D,kBACjD,CAkCA,kBAAAC,GACI,GAA0B,MAAtB51D,KAAKuyB,MAAMhW,IAAIA,IACf,OAAO,KAEX,IAAI25C,EAEAA,EADA,uBAAuB50D,KAAKtB,KAAKuyB,MAAMhW,IAAIA,KACxB,CAAC,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,IAAK5G,OAAO,GAAO,CAAC4G,IAAK,IAAK5G,OAAO,GAAO,CAAC4G,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,IAAK5G,OAAO,GAAO,CAAC4G,IAAK,IAAK5G,OAAO,GACzK,CAAC4G,IAAK,cAAe,CAACA,IAAK,aAAc,CAACA,IAAK,WAAY,CAACA,IAAK,aAAc,CAACA,IAAK,KAAM,CAACA,IAAK,KACjG,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,QAAS,CAACA,IAAK,OAC7I,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,KAAM,CAACA,IAAK,MAE3H,CAAC,CAACA,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,OAAQ/G,OAAO,GAAO,CAAC4G,IAAK,KAAMG,KAAM,OAAQ/G,OAAO,GAC1K,CAAC4G,IAAK,KAAMG,KAAM,SAAU,CAACH,IAAK,KAAMG,KAAM,UAAW,CAACH,IAAK,KAAMG,KAAM,QAAS/G,OAAO,GAAO,CAAC4G,IAAK,KAAMG,KAAM,SAAU/G,OAAO,GAAO,CAAC4G,IAAK,KAAMG,KAAM,SAC9J,CAACH,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,SAAU,CAACH,IAAK,KAAMG,KAAM,SAAU,CAACH,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,QACtL,CAACH,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,QAAS,CAACH,IAAK,KAAMG,KAAM,eAAgB,CAACH,IAAK,KAAMG,KAAM,iBAGnM,IAAK,MAAMy5C,KAAYD,EAAkB,CACrC,MAAME,EAAY/2D,OAAO8D,OAAO,CAAC,EAAGgzD,GAGpC,GAFK,QAAQ70D,KAAKtB,KAAKuyB,MAAMhW,IAAIA,OAC7B65C,EAAUzgD,OAAQ,GAClB3V,KAAKi1D,OAAOkB,IAAan2D,KAAKi1D,OAAOmB,GACrC,MAAO,CAACv7B,QAASsV,OAAO0G,KAAKC,WAAW,yBAA0Bif,UAAU,GAGpF,MAA0B,gBAAtB/1D,KAAK6yB,MAAMo9B,QAA4BjwD,KAAKi1D,OAAO,UAAOlgB,OAAoB,cACpD,kBAAtB/0C,KAAK6yB,MAAMo9B,QAA8BjwD,KAAKi1D,OAAO,UAAOlgB,OAAsB,gBAC5D,0BAAtB/0C,KAAK6yB,MAAMo9B,QAAsCjwD,KAAKi1D,OAAO,UAAOlgB,OAA8B,wBAC5E,mBAAtB/0C,KAAK6yB,MAAMo9B,QAA+BjwD,KAAKi1D,OAAO,UAAOlgB,OAAuB,iBAC9D,2BAAtB/0C,KAAK6yB,MAAMo9B,QAAuCjwD,KAAKi1D,OAAO,UAAOlgB,OAA+B,yBAC9E,wBAAtB/0C,KAAK6yB,MAAMo9B,QAAoCjwD,KAAKi1D,OAAO,UAAOlgB,OAA4B,sBACxE,oBAAtB/0C,KAAK6yB,MAAMo9B,QAAgCjwD,KAAKi1D,OAAO,UAAOlgB,OAAwB,kBAChE,kBAAtB/0C,KAAK6yB,MAAMo9B,QAA8BjwD,KAAKi1D,OAAO,UAAOlgB,OAAsB,eAC/E,CAACla,QAASsV,OAAO0G,KAAKC,WAAW,kBAAmBif,UAAU,GAElE,IACX,CAEA,MAAAd,CAAOC,GACH,OAAO,IAAAC,eAAcn1D,KAAKuyB,MAAMhW,IAAK24C,EACzC,CAEA,IAAAe,SAC8B,MAAtBj2D,KAAKuyB,MAAMhW,IAAIA,MAAgC,QAAhB,EAAAvc,KAAKuyB,MAAM2I,aAAK,eAAE66B,YACjD,UAAOhhB,OAAO/0C,KAAK6yB,MAAMo9B,QAAUjwD,KAAKuyB,MAAMhW,IAC9Cvc,KAAK6yB,MAAM0iC,cAAcv1D,KAAKuyB,MAAMhW,KAE5C,EAGJ,UAAem5C,uGCxKf,gBACA,UAcA,sCAA2C7iC,GACvC,OACI,uBAAKm7B,UAAW,oBAAoBn7B,EAAMtrB,SAAW,WAAa,MAAMsrB,EAAM2gC,gBAAkB,kBAAoB,MAChH,uBAAKznD,MAAO8mB,EAAM9mB,OACd,yBAAOiiD,UAAU,oBACb,wBAAMA,UAAU,eACXn7B,EAAMo+B,OAEX,yBAAOz6C,GAAIqc,EAAMo+B,MACbjD,UAAU,kBACV1tD,KAAK,SACL+1D,KAAK,MACLlzC,IAAI,IACJpd,MAAO8sB,EAAM9sB,MACbwB,SAAUsrB,EAAMtrB,SAChB6mD,SAAWvuD,GAAMgzB,EAAMu7B,SAASzB,OAAO9sD,EAAE8N,OAAO5H,WAIpD8sB,EAAM4gC,iBACF,wBAAMzF,UAAU,+BAA+B5L,MAAOjS,OAAO0G,KAAKC,WAAW,qBAAsBhX,QAAS,WAC3F,QAAb,EAAAjN,EAAM6gC,eAAO,gBAAI,GAEjB,gBAAC,UAAS,QAMtB7gC,EAAMs+B,aACF,uBAAKnD,UAAU,qBACVn7B,EAAMs+B,aAK/B,kGCnDA,gBACA,UAqBa,EAAAwB,sBAAyB9/B,UAClC,OACI,uBAAKm7B,UAAW,sBAAqC,QAAf,EAAAn7B,EAAMm7B,iBAAS,QAAI,KAAMjiD,MAAO8mB,EAAM9mB,OAEpE8mB,EAAMo+B,OACF,yBAAOjD,UAAU,iBAAiBgI,QAASnjC,EAAMrc,IAC5Cqc,EAAMo+B,OAGnB,0BAAQz6C,GAAIqc,EAAMrc,GACdw3C,UAAU,sCACVjoD,MAAO8sB,EAAM9sB,MACbq8C,MAAOvvB,EAAMuvB,MACbgM,SAAWvuD,IACPgzB,EAAMu7B,SAASvuD,EAAE8N,OAAO5H,MAAM,GAEtB8sB,EAAMzrB,QAgBfolC,KAAKyjB,GAEZ,0BAAQlqD,MAAOkqD,EAAOlqD,MAAOwW,IAAK0zC,EAAOlqD,OAAQkqD,EAAOgB,UAdpDp+B,EAAM4gC,iBACN,uBAAKzF,UAAU,eAAeluB,QAAS,WACtB,QAAb,EAAAjN,EAAM6gC,eAAO,gBAAI,GAEjB,gBAAC,UAAS,OAIzB,kGClDL,gBACA,UAcA,iCAAsC7gC,GAClC,OACI,uBAAKm7B,UAAW,oBAAoBn7B,EAAMtrB,SAAW,WAAa,MAAMsrB,EAAM2gC,gBAAkB,kBAAoB,MAChH,uBAAKxF,UAAU,mBAAmBjiD,MAAO8mB,EAAM9mB,OAC3C,yBAAOiiD,UAAU,UACb,yBAAOx3C,GAAIqc,EAAMo+B,MACb3wD,KAAK,WACLwF,QAAS+sB,EAAM/sB,QACfyB,SAAUsrB,EAAMtrB,SAChB6mD,SAAWvuD,GAAMgzB,EAAMu7B,SAASvuD,EAAE8N,OAAO7H,WAC7C,wBAAMkoD,UAAU,kBAEpB,yBAAOA,UAAU,eAAegI,QAASnjC,EAAMo+B,OAC1Cp+B,EAAMo+B,OAIPp+B,EAAM4gC,iBACF,uBAAKzF,UAAU,+BAA+B5L,MAAOjS,OAAO0G,KAAKC,WAAW,qBAAsBhX,QAAS,WAC1F,QAAb,EAAAjN,EAAM6gC,eAAO,gBAAI,GAEjB,gBAAC,UAAS,QAMtB7gC,EAAMs+B,aACF,uBAAKnD,UAAU,qBACVn7B,EAAMs+B,aAK/B,mECjDA,gBAEA,UACA,UAUA,MAAMmF,UAAsCvJ,EAAMz7B,UAE9C,WAAAjsB,CAAYwtB,GACR6qB,MAAM7qB,GAGN7yB,KAAKuyB,MAAQ,CAAC,CAGlB,CAEA,MAAA/tB,GAEI,OAA4D,GAAxDnF,OAAO6M,KAAK,UAAO8oC,MAAMuhB,qBAAqB/3D,OACvC,iCAGP,yBAAOgY,GAAG,wBACNw3C,UAAU,uBACVjiD,MAAO,CAACyqD,UAAW,SACnB,6BAEI,sBAAIhgD,GAAG,8BACCw3C,UAAU,4CACd,sBAAIx3C,GAAG,sBACF25B,OAAO0G,KAAKC,WAAW,YAG5B,sBAAItgC,GAAG,2BACF25B,OAAO0G,KAAKC,WAAW,iBAG5B,sBAAItgC,GAAG,2BACF25B,OAAO0G,KAAKC,WAAW,aAK/B92C,KAAKy2D,wBAItB,CAEA,oBAAAA,GACI,MAAM5d,EAA0B,GAEhC,IAAK,MAAM4F,KAAWp/C,OAAO6M,KAAK,UAAO8oC,MAAMuhB,qBAC3C1d,EAAStqC,KACL,gBAAC,UAAwB,CAACkwC,QAASA,EAASliC,IAAKkiC,KAKzD,OAAO5F,CACX,EAGJ,UAAeyd,mECvEf,gBAEA,UACA,UAUA,MAAMI,UAAiC3J,EAAMz7B,UAEzC,WAAAjsB,CAAYwtB,GACR6qB,MAAM7qB,GAGN7yB,KAAKuyB,MAAQ,CAAC,CAGlB,CAEA,MAAA/tB,WACI,MAAMmyD,EAA2E,QAA5D,EAAoD,QAApD,YAAO3hB,MAAMuhB,oBAAoBv2D,KAAK6yB,MAAM4rB,gBAAQ,eAAEjgD,cAAM,QAAI,EAErF,OACI,gCACI,sBAAIgY,GAAIxW,KAAK6yB,MAAM4rB,QAAU,yBACzBuP,UAAU,wBACV,sBAAIx3C,GAAIxW,KAAK6yB,MAAM4rB,QAAU,qBACzBuP,UAAU,sBACV,qBAAGxrC,KAAM,oBAAoBxiB,KAAK6yB,MAAM4rB,UACrC9wC,OAAO,SAASsgD,IAAI,cAClBjuD,KAAK6yB,MAAM4rB,UAIpB,sBAAIjoC,GAAIxW,KAAK6yB,MAAM4rB,QAAU,2BACxBkY,GAGL,sBAAIngD,GAAIxW,KAAK6yB,MAAM4rB,QAAU,2BACzB,uBAAKjoC,GAAIxW,KAAK6yB,MAAM4rB,QAAU,uBACzBuP,UAAU,mCACVluB,QAAS9/B,KAAK42D,eAAe7vC,KAAK/mB,OAClCmwC,OAAO0G,KAAKC,WAAW,mBAE3B,IACD,uBAAKtgC,GAAIxW,KAAK6yB,MAAM4rB,QAAU,4BACzBuP,UAAU,mCACVluB,QAAS9/B,KAAK62D,oBAAoB9vC,KAAK/mB,OACvCmwC,OAAO0G,KAAKC,WAAW,wBAE3B,IACD,uBAAKtgC,GAAIxW,KAAK6yB,MAAM4rB,QAAU,sBACzBuP,UAAU,mCACVluB,QAAS9/B,KAAK82D,cAAc/vC,KAAK/mB,OACjCmwC,OAAO0G,KAAKC,WAAW,iBAQhD,CAEA,aAAAggB,GACQ7D,QAAQ9iB,OAAO0G,KAAKC,WAAW,uBACxB,UAAO9B,MAAMuhB,oBAAoBv2D,KAAK6yB,MAAM4rB,SACnD,UAAO/H,iBAAiB,uBAEhC,CAEA,cAAAkgB,GACI52D,KAAK+2D,iBAAgB,IAAAC,aAAY,UAAOhiB,MAAMuhB,oBAAoBv2D,KAAK6yB,MAAM4rB,UACjF,CAEA,mBAAAoY,GACI72D,KAAK+2D,gBAAgB,+BAA+B/2D,KAAK6yB,MAAM4rB,WAAU,IAAAwY,wBAAuB,UAAOjiB,MAAMuhB,oBAAoBv2D,KAAK6yB,MAAM4rB,YAChJ,CAEA,eAAAsY,CAAgBj3C,GACZ0uB,UAAU0oB,UAAUC,UAAUr3C,GACzB0J,MAAK,KACFotB,MAAMzG,OAAO0G,KAAKC,WAAW,qBAAqB,IAErDrtB,OAAM,KACHmtB,MAAMzG,OAAO0G,KAAKC,WAAW,8BAA8B,GAEvE,EAGJ,UAAe4f,mEC/Ff,gBACA,UACA,UAUA,MAAMU,UAAmCrK,EAAMz7B,UAE3C,WAAAjsB,CAAYwtB,GACR6qB,MAAM7qB,GAEN7yB,KAAKuyB,MAAQ,CACT8kC,cAAc,EAEtB,CAEA,MAAA7yD,GACI,MAAM8yD,EAAaj4D,OAAO6M,KAAK,UAAO8oC,MAAMuhB,qBAAqB/3D,OAC3Dm4D,EAAet3D,OAAO4iD,OAAO,UAAOjN,MAAMuhB,qBAAqBjlB,QAAO,CAACC,EAAagmB,IAAwBhmB,EAAMgmB,EAAI/4D,QAAQ,GAEpI,OAAO,gCACH,uBAAKuN,MAAO,CAACyrD,aAAc,SACN,GAAhBb,EACGxmB,OAAO0G,KAAKC,WAAW,gCACvB3G,OAAO0G,KAAKC,WAAW,4BAClBn1C,QAAQ,MAAO,GAAGg1D,KAAgBxmB,OAAO0G,KAAKC,WAAW,uBAAyC,GAAhB6f,EAAoB,WAAa,cACnHh1D,QAAQ,MAAO,GAAG21D,KAAcnnB,OAAO0G,KAAKC,WAAW,UAA0B,GAAdwgB,EAAkB,WAAa,eAI9GA,EAAa,GAAK,uBAAKtJ,UAAU,uBAAuBluB,QAAS,IAAM9/B,KAAK+rC,SAAS,CAACsrB,cAAer3D,KAAKuyB,MAAM8kC,gBAC5GlnB,OAAO0G,KAAKC,WAAW92C,KAAKuyB,MAAM8kC,aAAe,0BAA4B,4BAEjF,IACD,uBAAKrJ,UAAU,uBAAuBluB,QAAS9/B,KAAKy3D,kBAC/CtnB,OAAO0G,KAAKC,WAAW,6BAG3B92C,KAAKuyB,MAAM8kC,cAAgB,gBAAC,UAA6B,MAElE,CAEA,gBAAAI,GACQxE,QAAQ9iB,OAAO0G,KAAKC,WAAW,sCAC/B,UAAO9B,MAAMuhB,oBAAsB,CAAC,EAC5C,EAGJ,UAAea,iGCtDf,gBACA,UACA,UACA,UA0KA,MAAMM,UAAoB,EAAAC,YACtB,cAAAC,GACIznB,OAAOkF,QAAQF,KAAKtxC,IAAI,OAAD,wBAChB7D,KAAKu0C,cAAY,CACpBsjB,OAAQ73D,KAAK+0C,OAAO8iB,OACpBC,aAAc93D,KAAK+0C,OAAO+iB,aAC1BC,UAAW/3D,KAAK+0C,OAAOgjB,UACvBC,wBAAyBh4D,KAAK+0C,OAAOijB,2BAGzC7nB,OAAOkF,QAAQL,MAAMnxC,IAAI,OAAD,UACjB7D,KAAKw0C,eAEhB,EAsJJ,MAsOMyjB,EAAS,IAAIP,EAtOE,CACjBG,OAAQ,KACRzD,OAAO,EACP8D,YAAa,CAAC,EACdC,gBAAiB,kBACjBC,sBAAuB,EAAAC,sBAAsBC,SAC7CC,0BAA0B,EAC1BC,mBAAmB,EACnBV,aAAc,EACdC,UAAW,EACXC,wBAAyB,EACzBS,+BAAgC,EAChCC,mBAAmB,EACnBC,iBAAiB,EACjBrG,cAAc,EACdC,mBAAmB,EACnBqG,6BAA6B,EAC7BpG,uBAAuB,EACvBqG,gBAAgB,EAChBC,yBAAyB,EACzBC,gBAAgB,EAChBC,yBAAyB,EACzBC,gBAAgB,EAChBC,oBAAoB,EACpBC,qBAAsB,EAAAC,qBAAqBC,iBAC3CC,yBAAyB,EACzBC,8BAA8B,EAC9BC,gCAAgC,EAChCC,gCAAgC,EAChCC,8BAA8B,EAC9BC,oBAAqB,EACrBC,iBAAiB,EACjBxR,mBAAoB,GACpByR,kBAAkB,EAClBC,cAAe/K,EAAc+K,cAC7BrH,YAAa,EACbsH,mBAAoB,EACpBC,yBAAyB,EACzBC,wBAAwB,EACxBC,eAAe,EACfC,yBAAyB,EACzBC,kBAAkB,EAClBC,kBAAkB,EAClBC,uBAAwB,EACxBC,aAAa,EACbC,sBAAsB,EACtBC,cAAe,EACfC,oBAAoB,EACpBtI,uBAAuB,EACvBC,gCAAgC,EAChCsI,wBAAwB,EACxBC,oBAAoB,EACpBC,YAAY,EACZC,wBAAwB,EACxBC,UAAU,EACVC,wBAAwB,EACxBC,+BAA+B,EAC/BC,6BAA6B,EAC7B/I,2BAA2B,EAC3BgJ,gBAAgB,EAChBC,iCAAiC,EACjCC,sBAAsB,EACtBC,kBAAkB,EAClBC,sBAAsB,EACtBC,uBAAuB,EACvBC,uBAAuB,EACvBC,sBAAsB,EACtBC,YAAY,EACZC,4BAA4B,EAC5BC,YAAY,EAEZC,mBAAoB,CAAC,EASrBC,YAAa,CAAEx/C,IAAK,SACpBy/C,uBAAwB,CAAEz/C,IAAK,QAASk7B,MAAM,GAC9CwkB,oBAAqB,CAAE1/C,IAAK,KAC5B2/C,cAAe,CAAE3/C,IAAK,KACtB4/C,sBAAuB,CAAE5/C,IAAK,IAAKk7B,MAAM,GACzC2kB,eAAgB,CAAE7/C,IAAK,IAAKk7B,MAAM,GAClC4kB,mBAAoB,CAAE9/C,IAAK,aAAck7B,MAAM,GAC/C6kB,uBAAwB,CAAE//C,IAAK,YAAak7B,MAAM,GAClD8kB,uBAAwB,CAAEhgD,IAAK,aAC/BigD,gBAAiB,CAAEjgD,IAAK,IAAK5G,OAAO,GACpC8mD,cAAe,CAAElgD,IAAK,IAAK5G,OAAO,GAElCu8C,mBAAoB,CAAC,CACjB7tD,KAAM,UACN4rD,OAAQ,EAAA1C,mBAAmBI,UAC5B,CACCtpD,KAAM,gBACN4rD,OAAQ,EAAA1C,mBAAmBG,YAC5B,CACCrpD,KAAM,mBACN4rD,OAAQ,EAAA1C,mBAAmBE,aAC5B,CACCppD,KAAM,UACN4rD,OAAQ,EAAA1C,mBAAmBE,cAG/BiP,SAAU,CACNC,WAAY,KACZC,UAAW,EACXC,cAAe,EACfC,YAAY,EACZC,iBAAiB,GAGrBC,aAAc,CACVC,IAAK,UACLC,MAAO,UACPC,OAAQ,WAIZrJ,SAAU,CACN,0BAA2B,CACvB10C,MAAO,UACPvU,QAAS,OAEb,QAAW,CACPuU,MAAO,UACPvU,QAAS,OAEb,kBAAmB,CACfuU,MAAO,UACPvU,QAAS,OAEb,UAAa,CACTuU,MAAO,UACPvU,QAAS,OAEb,oBAAqB,CACjBuU,MAAO,UACPvU,QAAS,OAEb,iBAAoB,CAChBuU,MAAO,UACPvU,QAAS,OAEb,YAAe,CACXuU,MAAO,UACPvU,QAAS,OAEb,sBAAuB,CACnBuU,MAAO,UACPvU,QAAS,OAEb,MAAS,CACLuU,MAAO,UACPvU,QAAS,OAEb,gBAAiB,CACbuU,MAAO,UACPvU,QAAS,OAEb,MAAS,CACLuU,MAAO,UACPvU,QAAS,OAEb,gBAAiB,CACbuU,MAAO,UACPvU,QAAS,OAEb,QAAW,CACPuU,MAAO,UACPvU,QAAS,OAEb,kBAAmB,CACfuU,MAAO,UACPvU,QAAS,OAEb,KAAQ,CACJuU,MAAO,UACPvU,QAAS,OAEb,eAAgB,CACZuU,MAAO,UACPvU,QAAS,OAEb,eAAkB,CACduU,MAAO,UACPvU,QAAS,OAEb,yBAA0B,CACtBuU,MAAO,UACPvU,QAAS,OAEb,cAAiB,CACbuU,MAAO,UACPvU,QAAS,OAEb,wBAAyB,CACrBuU,MAAO,UACPvU,QAAS,OAEb,OAAU,CACNuU,MAAO,UACPvU,QAAS,OAEb,iBAAkB,CACduU,MAAO,UACPvU,QAAS,OAEb,QAAW,CACPuU,MAAO,UACPvU,QAAS,OAKC,CAClBuyD,kBAAmB,CAAC,EACpB1T,uBAAwB,KACxB2T,kBAAkB,EAElB9G,oBAAqB,CAAC,EACtB1I,UAAW,GAEX8C,sBAAuB,CAAC,EACxBC,aAAc,CAAC,EACfsC,gBAAiB,OAtXrB,SAA+Bne,EAAkBC,GAC7C,GAAID,EAA4B,oBAAG,CAE/B,MAAMuoB,EAAsBvoB,EAA4B,oBAClDwoB,EAAiC,oBAEvCvoB,EAAM4b,aAAa2M,GAAiB,CAChCl5D,KAAM8rC,OAAO0G,KAAKC,WAAW,uBAC7Bob,mBAAoBnd,EAAOmd,mBACtBla,QAAQyK,IAAO,CAAC,mBAAoB,WAAWr+C,SAASq+C,EAAEp+C,QAC1DmoC,KAAIiW,IAAK,CACNp+C,KAAMo+C,EAAEp+C,KACR4rD,OAAQ,EAAA1C,mBAAmBE,gBAEnC0E,0BAA2B,KAC3BC,sBAAuB,KACvBC,+BAAgC,KAChCC,aAAc,KACdC,kBAAmB,KACnBC,sBAAuB,KACvBC,YAAa,MAEjBzd,EAAM4b,aAAe5b,EAAM4b,aAE3B,IAAK,MAAM7S,KAAauf,EACpBtoB,EAAM2b,sBAAsB5S,GAAawf,EAE7CvoB,EAAM2b,sBAAwB3b,EAAM2b,sBAEpCxgB,OAAOkF,QAAQF,KAAKkB,OAAO,uBAuD/B,GApDKtB,EAA2B,qBAC5BA,EAAO+e,SAAkB,QAAE10C,MAAQ,UACnC21B,EAA2B,oBAAI,EAC/B5E,OAAOkF,QAAQF,KAAKtxC,IAAI,CACpB,oBAAsB,EACtB,SAAYkxC,EAAO+e,YAIvB/e,EAA4B,qBAC5B5E,OAAOkF,QAAQF,KAAKkB,OAAO,uBAG3BtB,EAA4B,qBAAK11C,OAAO6M,KAAK6oC,EAA4B,qBAAGv2C,OAAS,GACrF2xC,OAAOkF,QAAQL,MAAMnxC,IAAI,CACrB0yD,oBAAqBxhB,EAA4B,sBAClD,KACC5E,OAAOkF,QAAQF,KAAKkB,OAAO,sBAAsB,IAIpDtB,EAA6B,uBAC9BA,EAA6B,sBAAI,EAE5BA,EAAOmd,mBAAmB/d,MAAMsO,GAAiB,YAAXA,EAAEp+C,SACzC0wC,EAAOmd,mBAAmB3jD,KAAK,CAC3BlK,KAAM,UACN4rD,OAAQ,EAAA1C,mBAAmBE,cAG/B1Y,EAAOmd,mBAAqBnd,EAAOmd,0BAIKjb,IAA5ClC,EAAsC,+BACtC5E,OAAOkF,QAAQF,KAAKkB,OAAO,sCAGAY,IAA3BlC,EAAqB,cACrB5E,OAAOkF,QAAQF,KAAKkB,OAAO,qBAEUY,IAArClC,EAA+B,wBAC/B5E,OAAOkF,QAAQF,KAAKkB,OAAO,+BAEWY,IAAtClC,EAAgC,yBAChC5E,OAAOkF,QAAQF,KAAKkB,OAAO,2BAG3BtB,EAA+B,wBAC/B5E,OAAOkF,QAAQF,KAAKkB,OAAO,2BAG1BtB,EAAoC,4BAAG,CACxCA,EAAoC,6BAAI,EACxC,IAAK,MAAMib,KAAajb,EAAOmd,mBAC3B,GAAuB,mBAAnBlC,EAAU3rD,MACP2rD,EAAUC,SAAW,EAAA1C,mBAAmBI,SAAU,CAErD5Y,EAAOqd,uBAAwB,EAC/B,OAKZ,GAAIrd,EAAwB,gBACxB,IAAK,MAAMib,KAAajb,EAAOmd,mBACJ,YAAnBlC,EAAU3rD,OACV2rD,EAAUC,OAAS,EAAA1C,mBAAmBG,WAEtCvd,OAAOkF,QAAQF,KAAKkB,OAAO,oBAKH,iBAAzBtB,EAAoB,cAC3BA,EAAoB,YAAI,CAAEx4B,IAAKw4B,EAAoB,cAGX,iBAAjCA,EAA4B,sBACnCA,EAA4B,oBAAI,CAAEx4B,IAAKw4B,EAA4B,sBAGjC,iBAA3BA,EAAsB,gBAC7BA,EAAsB,cAAI,CAAEx4B,IAAKw4B,EAAsB,gBAI3D,MAAMyoB,EAAW,CAAC,cAAe,sBAAuB,iBACxD,IAAK,IAAIhhB,EAAIghB,EAASh/D,OAAS,EAAGg+C,GAAK,EAAGA,IACtC,IAAK,IAAIihB,EAAI,EAAGA,EAAID,EAASh/D,OAAQi/D,IAC7BjhB,GAAKihB,IAEL,IAAAtI,eAAcpgB,EAAOyoB,EAAShhB,IAAKzH,EAAOyoB,EAASC,OACnD1oB,EAAOyoB,EAAShhB,IAAM,WAKDvF,IAA7BlC,EAAuB,gBACvB5E,OAAOkF,QAAQF,KAAKkB,OAAO,uBAEGY,IAA9BlC,EAAwB,iBACxB5E,OAAOkF,QAAQF,KAAKkB,OAAO,oBAI1BtB,EAAyB,kBAAKA,EAA2B,mBAAEv2C,OAASk/D,EAAcl/D,SACnFu2C,EAA2B,mBAAI,IAAI,IAAIp2C,IAAI,IAAI++D,KAAkB3oB,EAA2B,uBAG5FA,EAAwB,iBACxB5E,OAAOkF,QAAQF,KAAKkB,OAAO,kBAEnC,IAyOA,UAAe4hB,EAEf,kCAEI,MAAM0F,EAAS,CACXC,MAAO,CACHC,UAAWrvB,UAAUqvB,UACrBC,SAAUtvB,UAAUsvB,SACpBC,SAAUvvB,UAAUuvB,SACpBC,iBAAkB7tB,OAAOC,QAAQ4C,cAAc7J,SAEnD4L,OAAQrM,KAAKkkB,MAAMlkB,KAAKC,UAAUsvB,EAAOpjB,oBAU7C,cANO8oB,EAAO5oB,OAAO8iB,OACrB8F,EAAO5oB,OAAO+kB,cAAiB6D,EAAO5oB,OAAO+kB,gBAAkB/K,EAAc+K,cACvE,yBAA2B,wBACjC6D,EAAO5oB,OAAOqT,mBAAqBuV,EAAO5oB,OAAOqT,mBAAmB5pD,OACpEm/D,EAAO5oB,OAAO8Y,UAAY8P,EAAO5oB,OAAO8Y,UAAUrvD,OAE3CkqC,KAAKC,UAAUg1B,EAAQ,KAAM,EACxC,yYC7kBA,gBACA,UAEA,UACA,UAGA1+D,OAAOg/D,GAAK,UAEZ,eACA,UACA,UACA,UACA,SACA,UAEA,UACA,UACA,UACA,UACA,UACMC,EAAQ,IAAI,UAClB,IAAIvxD,GAAQ,EAEZ,MAAMwxD,EAAsC,GACtCC,EAAyC,GAQ/C,SAAejsB,6CAIX,IAHA,IAAAksB,oBAGqB,IAAjB1hD,SAAS+1C,KAAY,CACrB,MAAM4L,EAAS3hD,SAAS+1C,KAAKzxD,MAAM,GACnC,IAAIs9D,EAAWr/D,SAASm6C,cAAc,cAAcilB,OACpC,MAAZC,IACAA,EAAWr/D,SAASm6C,cAAc,0BACtCklB,EAASxmB,UAAUh5C,IAAI,iBAEvBG,SAASm6C,cAAc,yBAAyBtB,UAAUh5C,IAAI,YAMlE,GAHAG,SAASo/C,eAAe,WAAWpD,UAAY,MAAQ/K,OAAOC,QAAQ4C,cAAc7J,QAGvD,WAAzBlqC,OAAO0d,SAAS+1C,KAAmB,CACnC/lD,GAAQ,EACR,IAAK,MAAMsX,KAAW/kB,SAASs/D,uBAAuB,YAClDv6C,EAAQ8zB,UAAUh5C,IAAI,UAG1BG,SAASo/C,eAAe,WAAWvG,UAAUh5C,IAAI,SACjD0/D,IAGC,UAAO7pB,oBAAoBxwC,SAASs6D,IACrC,UAAO9pB,oBAAoBrmC,KAAKmwD,GAG/B,UAAO/pB,qBAAqBvwC,SAASu6D,IACtC,UAAOhqB,qBAAqBpmC,KAAKowD,SAG/BT,EAAMU,MAAK,IAAwB,OAAlB,UAAO7pB,SAEzB,UAAOA,OAAOgmB,UACf77D,SAAS4jB,gBAAgBrhB,aAAa,aAAc,SAGpD,UAAOszC,OAAO8mB,aACd38D,SAAS4jB,gBAAgBrhB,aAAa,aAAc,SAEnDvC,SAASo/C,eAAe,kBAAuCvb,IAAM,yBAG1E,MAAM87B,EAAS3/D,SAASo/C,eAAe,YACvCugB,EAAO7vD,iBAAiB,SAAS,IAAM,UAAO+lC,OAAO0lB,cAAgB,UAAO1lB,OAAO0lB,cAAgB,KAC9F,IAAAJ,qBACDwE,EAAO9mB,UAAUh5C,IAAI,UAIrB,UAAOg2C,OAAOylB,sBAAwB,UAAOzlB,OAAOwlB,aAAe,UAAOxlB,OAAOymB,wBACjF,IAAAsD,sBAAqBt1C,MAAMu1C,IACvB,IAAKA,EAAW,CACZ,MAAMC,EAAmB9/D,SAASo/C,eAAe,oBACjD0gB,EAAiBjnB,UAAU1B,OAAO,UAElC2oB,EAAiBhwD,iBAAiB,SAAS,IAAM,UAAO+lC,OAAOwmB,sBAAuB,IAElEyD,EAAiB3lB,cAAc,iBACvCrqC,iBAAiB,SAAUnP,IACnCA,EAAEgY,iBAEFmnD,EAAiBjnB,UAAUh5C,IAAI,UAC/B,UAAOg2C,OAAOwmB,sBAAuB,EACrC,UAAOxmB,OAAOymB,uBAAwB,CAAK,QAM5Bt8D,SAASm6C,cAAc,qDAC/B6B,UAAY,GAAG/K,OAAO0G,KAAKC,WAAW,oBAAoBn1C,QAAQ,MAAOwuC,OAAO0G,KAAKC,WAAW,2BAA2Bn1C,QAAQ,IAAK,OAG/J,MAAMs9D,EAAmB//D,SAASo/C,eAAe,WAC3C4gB,EAAkBD,EAAiBx2B,iBAAiB,KAE1D,IAAK,IAAI+T,EAAI,EAAGA,EAAI0iB,EAAgB1gE,OAAQg+C,IAAK,CAC7C,MAAM2iB,EAAkBD,EAAgB1iB,GAAGgC,aAAa,qBAClD4gB,EAAcH,EAAiB5lB,cAAc,eAAe8lB,OAClE,IAAIE,GAAwB,EAI5B,GAHID,IACAC,EAAyE,YAAjDD,EAAY5gB,aAAa,qBAAuG,SAAlE0gB,EAAgB1iB,GAAGgC,aAAa,uCAEhH8gB,EAAiBJ,EAAgB1iB,MAAQ4iB,IAAgBC,EAAwB,UAAOtqB,OAAOoqB,IAAoB,UAAOpqB,OAAOoqB,OACvID,EAAgB1iB,GAAGzE,UAAUh5C,IAAI,SAAU,WACtCqgE,GAAa,CACd,GAA0D,SAAtDF,EAAgB1iB,GAAGgC,aAAa,mBAA0D,sBAA1B0gB,EAAgB1iB,GAAGhmC,GAA4B,CAE/G,MAAM+oD,EAAUrgE,SAASC,cAAc,OACvCogE,EAAQrkB,UAAY/K,OAAO0G,KAAKC,WAAW,2BAE3C,MAAM9pC,EAAO9N,SAASC,cAAc,KACpC6N,EAAKjB,MAAM02B,QAAU,QACrB,MAAMziB,EAAM,iDACZhT,EAAKwV,KAAOxC,EACZhT,EAAKkuC,UAAYl7B,EAEjBu/C,EAAQ92D,YAAYuE,GAEpBkyD,EAAgB1iB,GAAG7D,cAAcnX,aAAa+9B,EAASL,EAAgB1iB,GAAGv6B,aAG9E,SAIR,MAAMguC,EAASiP,EAAgB1iB,GAAGgC,aAAa,aAE/C,OAAQ0gB,EAAgB1iB,GAAGgC,aAAa,cACpC,IAAK,SAAU,CACX,MAAMghB,EAAe,UAAOzqB,OAAOkb,GAE7BwP,EAAWP,EAAgB1iB,GAAGnD,cAAc,SAC5CuG,EAAkE,YAAxDsf,EAAgB1iB,GAAGgC,aAAa,oBAE1CkhB,EAAiBR,EAAgB1iB,GAAGgC,aAAa,wBACjDmhB,EAAuE,UAAvDT,EAAgB1iB,GAAGgC,aAAa,mBAElCvH,MAAhBuoB,IACAC,EAAS35D,QAAW85C,GAAW4f,EAAeA,GAIzC,qBADDvP,GAEA2P,EAAcH,EAAUxP,GAKhCwP,EAASzwD,iBAAiB,SAAS,IAAY,EAAD,gCAE1C,GAAI0wD,IAAoBC,GAAiBF,EAAS35D,UAAc65D,IAAkBF,EAAS35D,WAC/EmtD,QAAQ9iB,OAAO0G,KAAKC,WAAW4oB,IAEvC,YADAD,EAAS35D,SAAW25D,EAAS35D,SAOjC,OAHA,UAAOivC,OAAOkb,GAAUrQ,GAAW6f,EAAS35D,QAAU25D,EAAS35D,QAGvDmqD,GACJ,IAAK,mBACD4P,EAAiBJ,EAAUxP,GAC3B,MACJ,IAAK,kBACIwP,EAAS35D,UAEV,UAAOivC,OAAuB,gBAAI,EAEU71C,SAASm6C,cAAc,sDAClDvzC,SAAU,GAE/B,MACJ,IAAK,mBACG25D,EAAS35D,QACT5G,SAASo/C,eAAe,YAAYvG,UAAUh5C,IAAI,UAElDG,SAASo/C,eAAe,YAAYvG,UAAU1B,OAAO,UACzD,MACJ,IAAK,WACGopB,EAAS35D,QACT5G,SAAS4jB,gBAAgBrhB,aAAa,aAAc,QAEpDvC,SAAS4jB,gBAAgBrhB,aAAa,aAAc,SAExD,MACJ,IAAK,aACGg+D,EAAS35D,QACT5G,SAAS4jB,gBAAgBrhB,aAAa,aAAc,SAEhD,UAAOszC,OAAOgmB,SACd77D,SAAS4jB,gBAAgBrhB,aAAa,aAAc,QAEpDvC,SAAS4jB,gBAAgBrhB,aAAa,aAAc,SAG5D,MACJ,IAAK,iBACIg+D,EAAS35D,UACV,UAAOkvC,MAAMooB,kBAAoB,CAAC,GAM9C,MAAM0C,EAAab,EAAiBx2B,iBAAiB,uBAAuBwnB,OAC5E,IAAK,IAAIwN,EAAI,EAAGA,EAAIqC,EAAWthE,OAAQi/D,IAAK,CACxC,MAAMsC,EAAkF,SAA7DD,EAAWrC,GAAGjf,aAAa,sCAC3C8gB,EAAiBQ,EAAWrC,QAASsC,GAAsBN,EAAS35D,SAAWi6D,IAAuBN,EAAS35D,UACtHg6D,EAAWrC,GAAG1lB,UAAU1B,OAAO,UAC/BrtB,YAAW,IAAM82C,EAAWrC,GAAG1lB,UAAU1B,OAAO,WAAW,KAE3DypB,EAAWrC,GAAG1lB,UAAUh5C,IAAI,UAC5BiqB,YAAW,IAAM82C,EAAWrC,GAAG1lB,UAAUh5C,IAAI,WAAW,MAGpE,MACA,MAEJ,IAAK,cAAe,CAChB,MAAMihE,EAAqCd,EAAgB1iB,GAAGnD,cAAc,oBAEtE4mB,EAAoCf,EAAgB1iB,GAAGnD,cAAc,oBAE3E2mB,EAAgBj6D,MAAQ,UAAOgvC,OAAOkb,GAEtCgQ,EAAoBjxD,iBAAiB,SAAS,IAAY,EAAD,gCAErD,OAAQihD,GACJ,IAAK,gBAAiB,CAClB,MAAM/a,GAud9BpoC,GAHAA,GAD2BA,EAndkCkzD,EAAgBj6D,OAod/DxC,QAGA5B,QAAQ,OAAQ,KAGlBsmD,WAAW,aAAgBn7C,EAAMm7C,WAAW,WAOjDn7C,GALH8pC,MAAMzG,OAAO0G,KAAKC,WAAW,uBAEtB,MA5da,GAAe,OAAX5B,EAGA,OAIJ,GANI8qB,EAAgBj6D,MAAQmvC,GAMxB,IAAAtE,8BACgC,IAAIxnB,SAASG,IACzC4mB,OAAO+nB,YAAY3nB,QAAQ,CACvB2vB,QAAS,CAACF,EAAgBj6D,MAAQ,KAClCmyD,YAAa,IACd3uC,EAAQ,KAGS,OAG5B,OA+b5B,IAA+Bzc,EA3bX,UAAOioC,OAAOkb,GAAU+P,EAAgBj6D,KAC5C,MAG4Cm5D,EAAgB1iB,GAAGnD,cAAc,sBACvDrqC,iBAAiB,SAAS,KACvCikD,QAAQ9iB,OAAO0G,KAAKC,WAAW,sBAEpC,UAAO/B,OAAOkb,GAAU,UAAO1b,aAAa0b,GAE5C+P,EAAgBj6D,MAAQ,UAAOgvC,OAAOkb,GAAO,IAGjD,MAEJ,IAAK,sBAAuB,CACTiP,EAAgB1iB,GAAGnD,cAAc,mBACzCrqC,iBAAiB,SAAS,IAAMmxD,EAAwCjB,EAAgB1iB,MAEjF,KAAVyT,IACuBiP,EAAgB1iB,GAAGnD,cAAc,oBACzCrqC,iBAAiB,SAAS,IAAMoxD,EAAelB,EAAgB1iB,MAEzD0iB,EAAgB1iB,GAAGnD,cAAc,kBACzCrqC,iBAAiB,UAAWnP,GAAMwgE,EAAaxgE,EAAGq/D,EAAgB1iB,OAGnF,MAAM8jB,EAA0BpB,EAAgB1iB,GAAGgC,aAAa,aAGvD,uBADD8hB,GAEAC,EAAuCrB,EAAgB1iB,GAAI8jB,GAGnE,MAEJ,IAAK,eAAgB,CACjB,MAAME,EAAetB,EAAgB1iB,GAAGnD,cAAc,mBAChDqmB,EAAiBR,EAAgB1iB,GAAGgC,aAAa,wBAEvDgiB,EAAaxxD,iBAAiB,SAAS,KACnC,GAAuB,OAAnB0wD,GAA4BzM,QAAQ9iB,OAAO0G,KAAKC,WAAW4oB,IAG/D,OAAQR,EAAgB1iB,GAAGgC,aAAa,cACpC,IAAK,uBAiazBhQ,UAAU0oB,UAAUC,WAAU,IAAAsJ,yBAC7Bj3C,MAAK,KACFotB,MAAMzG,OAAO0G,KAAKC,WAAW,gCAAgC,IAEhErtB,OAAM,KACHmtB,MAAMzG,OAAO0G,KAAKC,WAAW,8BAA8B,IApavC,MACJ,IAAK,iBACD,UAAO8gB,iBACP5uC,YAAW,IAAM/pB,OAAO0d,SAAS+jD,UAAU,SAKvD,MAEJ,IAAK,kBACY,IAAA11B,YAAWk0B,EAAgB1iB,GAAGnD,cAAc,QACpD70C,OAAOuoD,EAAM5tD,cAAc,UAAkB,CAAC8wD,OAAQA,KAC3D,MAEJ,IAAK,UACD0Q,EAAmCzB,EAAgB1iB,IACnD,MAEJ,IAAK,gBAAiB,CAClB,MAAMokB,EAAc,UAAO7rB,OAAOkb,GAC5B4Q,EAAc3B,EAAgB1iB,GAAGnD,cAAc,SAEjDl4C,MAAMy/D,IAAgBA,EAAc,EACpCC,EAAY96D,MAAQ,UAAOwuC,aAAa0b,GAExC4Q,EAAY96D,MAAQ66D,EAGxBC,EAAY7xD,iBAAiB,SAAS,KAClC,UAAO+lC,OAAOkb,GAAU4Q,EAAY96D,KAAK,IAG7C,MAEJ,IAAK,WAAY,CACb,MAAM66D,EAAc,UAAO7rB,OAAOkb,GAC5B6Q,EAAkB5B,EAAgB1iB,GAAGnD,cAAc,qBACzDynB,EAAgB/6D,MAAQ66D,EAExBE,EAAgB9xD,iBAAiB,UAAU,KACvC,IAAIjJ,EAAyB+6D,EAAgB/6D,MACxC5E,MAAMwrD,OAAO5mD,MAASA,EAAQ4mD,OAAO5mD,IAE1C,UAAOgvC,OAAOkb,GAAUlqD,CAAK,IAEjC,MAEJ,IAAK,iCACDo4D,EAAiB5vD,KAAK,IAAI,UAAgB2wD,EAAgB1iB,KAC1D,MACJ,IAAK,qCACD,IAAI,UAAoB0iB,EAAgB1iB,IACxC,MACJ,IAAK,mCACD4hB,EAAkB7vD,KAAK,IAAI,UAAkB2wD,EAAgB1iB,MAMzE,MAAMukB,EAAc7hE,SAASs/D,uBAAuB,eACpD,IAAK,IAAIhiB,EAAI,EAAGA,EAAIukB,EAAYviE,OAAQg+C,IAAK,CACzC,MAAMwkB,EAASD,EAAYvkB,GAAGgC,aAAa,YAEvCuiB,EAAYvkB,GAAGzE,UAAU51B,SAAS,aAClCjjB,SAASo/C,eAAe0iB,GAAQjpB,UAAU1B,OAAO,UAErD0qB,EAAYvkB,GAAGxtC,iBAAiB,SAAS,KAChCrC,IAAOgQ,SAAS+1C,KAAOsO,GAE5BvC,IAEAv/D,SAASupC,iBAAiB,gBAAgB9nC,SAAQsjB,IAAaA,EAAQ8zB,UAAU1B,OAAO,WAAW,IACnG4oB,EAAiBx2B,iBAAiB,iBAAiB9nC,SAAQsjB,IAAaA,EAAQ8zB,UAAUh5C,IAAI,SAAS,IAEvGgiE,EAAYvkB,GAAGzE,UAAUh5C,IAAI,YAC7BG,SAASo/C,eAAe0iB,GAAQjpB,UAAU1B,OAAO,SAAS,IAIlEp3C,OAAO+P,iBAAiB,UAAU,IAAMyvD,MAExCQ,EAAiBlnB,UAAUh5C,IAAI,WACnC,IAEA,SAAS0/D,IACL,MAAMwC,EAAY/hE,SAASo/C,eAAe,qBACpCl3C,EAAUlI,SAASo/C,eAAe,YAEnC3xC,GAAS1N,OAAOiiE,YAAc,KAAOjiE,OAAOkiE,aAAe,KAAOliE,OAAOmiE,YAAc,MACnFH,EAAUlpB,UAAU51B,SAAS,YAC9B/a,EAAQ2E,MAAMyqD,UAAYpvD,EAAQi6D,UAAU/4D,WAAW,KACvD24D,EAAUlpB,UAAUh5C,IAAI,YAG5BqI,EAAQ2E,MAAMyqD,UAAY,QAC1ByK,EAAUlpB,UAAU1B,OAAO,UAEnC,CAOA,SAAeipB,EAAiBr7C,4CAC5B,MAAsD,SAA9CA,EAAQu6B,aAAa,8BA8TtB,IAAIp1B,SAASG,GAAY4mB,OAAOmxB,UAAUC,yBAAyBh4C,OA7TnB,SAA3CtF,EAAQu6B,aAAa,mBAAqD,yBAArBhQ,UAAU6F,MAC/E,IAKA,SAASqqB,IACL,MACMQ,EADmBhgE,SAASo/C,eAAe,WACR7V,iBAAiB,KAE1D,IAAK,IAAI+T,EAAI,EAAGA,EAAI0iB,EAAgB1gE,OAAQg+C,IAE/B,YADD0iB,EAAgB1iB,GAAGgC,aAAa,cAEhCmiB,EAAmCzB,EAAgB1iB,GAInE,CAEA,SAASmiB,EAAiCppB,GACtC,GAAIA,EAAQghB,oBACR,IAAK,MAAMiL,KAAWpD,EAClBoD,EAAQC,QAGpB,CAOA,SAASd,EAAqB18C,GAC1B,MAAMy9C,EAAgBz9C,EAAQu6B,aAAa,aACrCmjB,EAAc,UAAO5sB,OAAO2sB,GAIlC,OAHAz9C,EAAQi3B,UAAYymB,EAGZD,GACJ,IAAK,qBAAsB,CACvBz9C,EAAQi3B,UAAYymB,EAAYnuC,KAAK,MACrC,IAAIouC,EAAYD,EAAYnjE,QAAUk/D,EAAcl/D,OACpD,IAAK,IAAIg+C,EAAI,EAAGA,EAAIkhB,EAAcl/D,QAAUojE,EAAWplB,IAC/CmlB,EAAYnlB,IAAMkhB,EAAclhB,KAChColB,GAAY,GAEfA,GACmB39C,EAAQ00B,cAAcU,cAAc,6BAC5CtB,UAAU1B,OAAO,UAEjC,OAGZ,CAQA,SAASkqB,EAAyBt8C,EAAsBgsC,GACpD,MAAM4R,EAA6B59C,EAAQo1B,cAAc,oBACnDv/B,EAASmK,EAAQo1B,cAAc,mBAE/ByoB,EAAY79C,EAAQo1B,cAAc,oBAClC0oB,EAAe99C,EAAQo1B,cAAc,sBACrC2oB,EAAc/9C,EAAQo1B,cAAc,6BAC1CyoB,EAAU9yD,iBAAiB,SAAS,oDAChC,GAAqB,IAAjB6yD,EAAQ97D,OAAe87D,EAAQ97D,MAAM3B,SAAS,MAAQy9D,EAAQ97D,MAAM3B,SAAS,QAC7EwyC,MAAMzG,OAAO0G,KAAKC,WAAW,kCAC1B,CAEH,IAAImrB,EAAe,UAAOltB,OAAOkb,GAC5BgS,IAAcA,EAAe,IAElC,IAAIC,EAASL,EAAQ97D,MAAMxC,OAAO3C,cAC9BshE,EAAO99D,SAAS,OAChB89D,EAASA,EAAOxhE,MAAM,KAAK,IAG/BuhE,EAAa1zD,KAAK2zD,GAElB,UAAOntB,OAAOkb,GAAUgS,EAExB,MAAMxC,EAA8BvgE,SAASm6C,cAAc,4BAC3DomB,EAAS35D,SAAU,EAEnB+5D,EAAiBJ,EAAU,oBAE3BuC,EAAYjqB,UAAU1B,OAAO,UAG7BwrB,EAAQ97D,MAAQ,GAChBke,EAAQo1B,cAAc,0BAA0BtB,UAAUh5C,IAAI,UAC9D+a,EAAOi+B,UAAU1B,OAAO,YAEhC,OAEA0rB,EAAa/yD,iBAAiB,SAAS,oDACnC6yD,EAAQ97D,MAAQ,GAChBke,EAAQo1B,cAAc,0BAA0BtB,UAAUh5C,IAAI,UAC9D+a,EAAOi+B,UAAU1B,OAAO,WAC5B,OAEA2rB,EAAYhzD,iBAAiB,SAAS,WAC9BikD,QAAQ9iB,OAAO0G,KAAKC,WAAW,kCAE/B,UAAO/B,OAAOkb,GAAUyN,EACxBsE,EAAYjqB,UAAUh5C,IAAI,UAElC,GACJ,CAQA,SAAS6gE,EAAcH,EAA4BxP,GAC/CiO,EAAMiE,8BAA8B34C,MAAM0rB,IAClCA,GAAUuqB,EAAS35D,UACnB,UAAOivC,OAAOkb,GAAU/a,EAExBuqB,EAAS35D,QAAUovC,KAG/B,CAQA,SAAe2qB,EAAiBJ,EAA4BxP,4CACxD,MAAMmS,QAAgBlE,EAAMmE,0BAA0B5C,EAAS35D,QAASmqD,GACxEwP,EAAS35D,QAAUs8D,CACvB,IAOA,SAASjC,EAA0Bl8C,GAC/B,MAAMnK,EAASmK,EAAQo1B,cAAc,mBACrC,GAAIv/B,EAAOi+B,UAAU51B,SAAS,YAAa,OAE3CrI,EAAOi+B,UAAUh5C,IAAI,YAErB,MAAM8iE,EAA6B59C,EAAQo1B,cAAc,oBACnD4W,EAAShsC,EAAQu6B,aAAa,aAC9B8jB,EAAar+C,EAAQu6B,aAAa,kBAGxC,GACS,uBADDyR,EAGA,YADAhsC,EAAQo1B,cAAc,0BAA0BtB,UAAU1B,OAAO,UAIzE,IAAInB,EAAS,UAAOH,OAAOkb,GAGlB,MADDA,IAGI/a,EADe,UAAfotB,EACS55B,KAAKC,UAAU,UAAOmM,oBAEtBpM,KAAKC,UAAU,UAAOkM,mBAM3CgtB,EAAQ97D,MAAQmvC,EAEhB,MAAM4sB,EAAY79C,EAAQo1B,cAAc,oBACxCyoB,EAAU9yD,iBAAiB,SAAS,IAAY,EAAD,gCAC3CuzD,EAActS,EAAQhsC,EAAS49C,EAAQ97D,MAC3C,MAIS,WADDkqD,GAEI,UAAOlb,OAAOkb,KACd,IAAAuS,sBAAqB,MAAO,gBAAiB,CACzCC,cAAc,IAAAhxB,SAAQ,UAAOsD,OAAOkb,IACpChO,OAAQ,CAAC,WAAY,YACtBz4B,MAAM0rB,IACL,MAAMwtB,EAAWh6B,KAAKkkB,MAAM1X,EAAOhE,eAC/BwxB,EAASC,SAAW,GAAKD,EAASE,SAClCd,EAAU/pB,UAAUh5C,IAAI,aAE7B0qB,OAAM5pB,IACLo7B,QAAQC,MAAM,iEAAkEr7B,EAAE,IAOlGokB,EAAQo1B,cAAc,0BAA0BtB,UAAU1B,OAAO,SACrE,CAUA,SAAeksB,EAActS,EAAgBhsC,EAAsBle,EAAe88D,4CAC9E,MAAMnD,EAAiBz7C,EAAQu6B,aAAa,wBACtC8jB,EAAar+C,EAAQu6B,aAAa,kBAExC,GAAuB,OAAnBkhB,GAA2BzM,QAAQ9iB,OAAO0G,KAAKC,WAAW4oB,IAG1D,GACS,MADDzP,EAEA,IACI,MAAM6S,EAAYp6B,KAAKkkB,MAAM7mD,GAC7B,IAAK,MAAMwW,KAAOumD,EACK,UAAfR,EACA,UAAOttB,MAAMz4B,GAAOumD,EAAUvmD,GAE9B,UAAOw4B,OAAOx4B,GAAOumD,EAAUvmD,GAIvC,GAAmB,UAAf+lD,GAA0BQ,EAAUjJ,iBAAkB,CACtD,MAAM4F,EAA8BvgE,SAASm6C,cAAc,4CAE3DomB,EAAS35D,SAAU,QACb+5D,EAAiBJ,EAAU,oBAGrCz2C,YAAW,IAAM/pB,OAAO0d,SAAS+jD,UAAU,KAC7C,MAAO7gE,GACL+2C,MAAMzG,OAAO0G,KAAKC,WAAW,qCAKjC,UAAO/B,OAAOkb,GAAUlqD,MAGF,mBAAnB88D,GACPA,GAEZ,IAEA,SAASzC,EAAen8C,GACpB,MAAMq+C,EAAar+C,EAAQu6B,aAAa,kBAElCpK,EAAOl1C,SAASC,cAAc,KAC9B4jE,EAAWr6B,KAAKkkB,MAAMlkB,KAAKC,UAAyB,UAAf25B,EAAyB,UAAOxtB,mBAAqB,UAAOD,mBACjGmuB,GAAiB,IAAIvqD,MAAOwqD,SAASthE,QAAQ,IAAK,KAAKA,QAAQ,KAAM,KAAKA,QAAQ,SAAU,IAClGyyC,EAAK3yC,aAAa,OAAQ,gCAAgChD,mBAAmBiqC,KAAKC,UAAUo6B,OAC5F3uB,EAAK3yC,aAAa,WAAY,eAA8B,UAAf6gE,EAAyB,YAAc,YAAYU,UAChG9jE,SAASgH,KAAKg9D,OAAO9uB,GACrBA,EAAK+uB,QACL/uB,EAAKiC,QACT,CAEA,SAASgqB,EAAaxgE,EAAUokB,GAC5B,MAAMtW,EAAS9N,EAAE8N,OACjB,GAA2B,GAAvBA,EAAOgmC,MAAMn1C,OAAa,CAC1B,MAAM41C,EAAOzmC,EAAOgmC,MAAM,GACpByvB,EAAS,IAAIC,WACnBD,EAAOE,OAAS,SAASC,GACrBhB,EAAc,IAAKt+C,EAASs/C,EAAG51D,OAAOunC,QAAkB,KACpDvnC,EAAO5H,MAAQ,IAAI,GAE3B,EACAq9D,EAAOI,WAAWpvB,GAE1B,CAxqB4B,aAAxBl1C,SAASukD,WACTtR,IAEAjzC,SAAS8P,iBAAiB,mBAAoBmjC,oEC9BlD,gBACA,UAEA,UAWA,UATA,MACI,WAAA9sC,CAAY4e,IACK,IAAA+mB,YAAW/mB,GACnBzf,OACD,gBAAC,EAAAi/D,6BAA4B,MAErC,oECXJ,gBACA,UAEA,UAYA,UAVA,MAEI,WAAAp+D,CAAY4e,IACK,IAAA+mB,YAAW/mB,GACnBzf,OACD,gBAAC,EAAAk/D,yBAAwB,MAEjC,oECZJ,gBACA,UACA,UAqBA,UAnBA,MAII,WAAAr+D,CAAY4e,GACRjkB,KAAKozB,IAAM25B,EAAMrf,aAEJ,IAAA1C,YAAW/mB,GACnBzf,OACD,gBAAC,UAA0B,CAAC4uB,IAAKpzB,KAAKozB,MAE9C,CAEA,MAAAquC,SACoB,QAAhB,EAAAzhE,KAAKozB,IAAI7iB,eAAO,SAAEy7B,aACtB,oECnBJ,gBA+BA,UAvBkB,EAChBgiB,YAAY,GACZjiD,QAAQ,CAAC,EACT+zB,aAEA,uBACE6jC,MAAM,6BACNC,QAAQ,YACR5V,UAAWA,EACXjiD,MAAOA,EACP+zB,QAASA,GACT,wBACElgC,EAAE,4DACFikE,KAAK,OACLrtD,GAAG,QACHzK,MAAO,CAACJ,YAAa,UACvB,wBACE/L,EAAE,shBACF4W,GAAG,QACHzK,MAAO,CAACJ,YAAa,0BCI3B,IAoBYsjD,EAoLAoJ,EARAe,EAzBApU,EAhIA8e,EA1BAC,EAbAxW,kNAAAA,EAAA,EAAAA,qBAAA,EAAAA,mBAAkB,KAC1B,4CACA,4BACA,iCACA,+BACA,4BAQQwW,EAAA,EAAAA,kBAAA,EAAAA,gBAAe,KACvB,eAAU9sB,GAAS,UACnB,6BACA,yCACA,uBAGJ,SAAYgY,GACR,cACA,cACA,oBACA,cACA,WACH,CAND,CAAYA,EAAA,EAAAA,aAAA,EAAAA,WAAU,KAQT,EAAAC,YAAc,CACvBD,EAAW+U,KACX/U,EAAWgV,KACXhV,EAAWiV,QACXjV,EAAWkV,KACXlV,EAAWmV,MAMHN,EAAA,EAAAA,oBAAA,EAAAA,kBAAiB,KACzB,cAAS7sB,GAAS,SAClB,qBACA,yBACA,sCA4HQ+N,EAAA,EAAAA,kBAAA,EAAAA,gBAAe,KACvB,yBACA,qBACA,wBAsBQoU,EAAA,EAAAA,uBAAA,EAAAA,qBAAoB,KAC5B,yBACA,yCACA,+BACA,2CACA,kCAGQf,EAAA,EAAAA,wBAAA,EAAAA,sBAAqB,KAC7B,yBACA,iaCzOJ,gBACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,gBAgBI,WAAAhzD,CAAYg/D,EAAuD,MAVnE,KAAAxwB,GAAK,CACD,mBAEJ,KAAAN,IAAM,CACF,cACA,6BACA,YACA,cAIAvzC,KAAKqkE,0BAA4BA,CACrC,CAEM,IAAAzF,CAAQ9hB,EAAoBC,EAAU,IAAMC,EAAQ,8CACtD,OAAO,IAAAuG,SAAQzG,EAAWC,EAASC,EACvC,IAEA,kBAAAsnB,CAAmBpM,GACf,OAAO,IAAI9uC,SAASG,IAChB4mB,OAAO+nB,YAAY/1C,SAAS+1C,EAAa3uC,EAAQ,GAEzD,CAUA,yBAAAg7C,CAA0B7zC,GACtB,MAAMwnC,EAAc,IAChB,IAAArnB,aACAqnB,EAAY3pD,KAAK,iBAGrB4hC,OAAO+nB,YAAY3nB,QAAQ,CACvB2vB,QAASlgE,KAAKwkE,qBACdtM,YAAaA,IACPuM,GAAY,EAAD,gCACbA,EACAzkE,KAAK0kE,+BAEL1kE,KAAK2kE,8BAGTj0C,EAAS+zC,EACb,KACJ,CAEA,wBAAAG,GACI,MAAO,CACH/pC,QAAS,wBACTrkB,GAAI,YACJquD,WAAW,EACXhxB,GAAI7zC,KAAK6zC,GACTN,IAAKvzC,KAAKuzC,IACVD,QAAStzC,KAAKwkE,qBAEtB,CASA,4BAAAE,GACI,MAAMI,EAAe9kE,KAAK4kE,2BAEtB5kE,KAAKqkE,0BACLrkE,KAAKqkE,0BAA0BU,6BAA6BD,GAE5D30B,OAAOC,QAAQwB,YAAYkzB,EAEnC,CAKA,2BAAAH,GACI,MAAMnuD,EAAK,YAEPxW,KAAKqkE,0BACLrkE,KAAKqkE,0BAA0BW,+BAA+BxuD,GAE9D25B,OAAOC,QAAQwB,YAAY,CACvB/W,QAAS,0BACTrkB,GAAIA,IAIZ25B,OAAO+nB,YAAY7hB,OAAO,CACtB6pB,QAASlgE,KAAKwkE,sBAEtB,CAEA,yBAAAnC,CAA0B4C,EAAiBhV,EAAS,oBAChD,OAAO,IAAI7mC,SAASG,IACZ07C,EACAjlE,KAAKukE,2BAA2BE,IACvBA,IACD,UAAO1vB,OAAOkb,IAAU,GAG5B1mC,EAAQk7C,EAAQ,KAGpBzkE,KAAK2kE,8BACLp7C,GAAQ,MAGpB,CAEA,2BAAA44C,GACI,OAAO,IAAI/4C,SAASG,IAChB,MAAM2uC,EAAc,IAChB,IAAArnB,aACAqnB,EAAY3pD,KAAK,iBAGrB4hC,OAAO+nB,YAAY/1C,SAAS,CACxB+9C,QAASlgE,KAAKwkE,qBACdtM,YAAaA,IACd,SAAUhjB,GACT3rB,EAAQ2rB,EACZ,GAAE,GAEV,CAKA,mBAAAgwB,CAAoBC,GAChB,IAAIC,EAA8B,GAmClC,OA/BAD,EAAWxkE,SAASgf,IAEhB,MAAM0lD,EAAgBD,EAAQxmB,WAAWsW,GAAUv1C,EAAM,IAAMu1C,EAAM,IAAMv1C,EAAM,IAAMu1C,EAAM,KACvFoQ,EAAcF,EAAQxmB,WAAWsW,GAAUv1C,EAAM,IAAMu1C,EAAM,IAAMv1C,EAAM,IAAMu1C,EAAM,KAE3F,IAAKmQ,IAAkBC,EAAa,CAGhC,GAAID,IAAkBC,EAAa,OAGnC,MAAMC,EAASH,EAAQ58B,OAAOr2B,KAAKwpC,IAAI0pB,EAAeC,GAAc,GAAG,GACjEE,EAASJ,EAAQ58B,OAAOr2B,KAAKgR,IAAIkiD,EAAeC,GAAc,GAAG,GAGvEF,EAAQ72D,KAAK,CAAC4D,KAAKgR,IAAIoiD,EAAO,GAAIC,EAAO,IAAKrzD,KAAKwpC,IAAI4pB,EAAO,GAAIC,EAAO,WACjEH,EAERD,EAAQC,GAAe,GAAK1lD,EAAM,IAC1B2lD,EAERF,EAAQE,GAAa,GAAK3lD,EAAM,GAGhCylD,EAAQ72D,KAAKoR,EAAM1e,SAIvBmkE,EAAUA,EAAQptB,QAAQkd,KAAYA,EAAM,GAAKv1C,EAAM,IAAMu1C,EAAM,GAAKv1C,EAAM,KAAI,IAG/EylD,CACX,CAKA,qBAAAK,CAAsBN,GAClB,OAAOnlE,KAAKklE,oBAAoBC,GAAY7zB,QAAO,CAACC,EAAK5xB,IAC9C4xB,EAAM5xB,EAAM,GAAKA,EAAM,IAC/B,EACP,CAEA,uBAAA+lD,CAAwBC,EAA6BC,GACjD,IAAK,IAAIppB,EAAI,EAAGA,EAAImpB,EAAannE,OAAQg+C,IACrC,GAAImpB,EAAanpB,GAAGopB,OAASD,EAAanpB,GAAGopB,KAAK3d,WAAW2d,IAASA,EAAK3d,WAAW0d,EAAanpB,GAAGopB,OAClG,OAAOppB,EAIf,OAAQ,CACZ,CAEA,sBAAAqpB,CAAuBF,EAA6BC,GAChD,OAAOD,EAAa3lE,KAAK0lE,wBAAwBC,EAAcC,GACnE,CAKA,kBAAApB,CAAmBsB,EAAoB,IACnC,MAAMC,EAA4B,GACX,IAAnBD,EAAQtnE,SACRsnE,EAAU,IAAI,UAAO/wB,OAAOqT,qBAGhC,IAAK,MAAMpoC,KAAO8lD,EACdC,EAAgBx3D,KAAK,aAAeyR,EAAM,MAC1C+lD,EAAgBx3D,KAAK,YAAcyR,EAAM,MAG7C,OAAO+lD,CACX,CAEA,iBAAAC,WAeI,IAAIC,GAAgB,IAAAC,8BAdF,CACd,uBACA,gBACA,sBACA,aACA,oBACA,kCACA,8BACA,yCACA,yBACA,+BACA,qBAIJ,GAAqB,MAAjBD,EAAuB,CAEvB,MAAME,EAASjnE,SAASo/C,eAAe,UAEvC,GADA2nB,EAAgBE,aAAM,EAANA,EAAQ59D,WACpB09D,EAAe,CACf,IAAItyC,EAAQ,EAGZ,KAAOA,EAAQwyC,EAAOz+D,SAASlJ,WAAmC,QAAvB,EAAAynE,EAAcluB,iBAAS,eAAE51B,SAAS,0BAAiD,QAAvB,EAAA8jD,EAAcluB,iBAAS,eAAE51B,SAAS,gBACrI8jD,EAAgBE,EAAOz+D,SAASisB,GAEhCA,KAKZ,OAAOsyC,CACX,CAEA,eAAAG,GACI,MAAoC,UAA7BnnE,OAAO0d,SAAS0pD,UAAqD,WAA7BpnE,OAAO0d,SAAS0pD,QACnE,CAEA,KAAAC,CAAMC,GACF,OAAOhvB,QAAQgvB,EAAI/iE,MAAM,gBAC7B,CAEM,gBAAAgjE,CAAiB/nB,EAAkBgoB,EAAqBC,4CAC1D,GAAKv2B,OAAOmxB,UAAUqF,qBAAuB,UAAO5xB,OAAOikB,0BAC/C,UAAOjkB,OAAOgkB,eAAgB,OAE1C,GAAI0N,EAAYjoE,OAAS,GAAI,CACzB,IAAIooE,EACJ,IACIA,QAAsB,IAAApE,sBAAqB,MAAO,iBAAkB,CAChEoD,KAAMa,EACNhoB,YAEN,MAAO5+C,GAGL,OAFAo7B,QAAQC,MAAM,0EAA2Er7B,QACzF+2C,MAAM,GAAGzG,OAAO0G,KAAKC,WAAW,0BAAyB,IAAA+vB,sBAAqBhnE,MAIlF,IAAI+mE,EAAcxjC,KAAMwjC,EAAc11B,aAKlC,OAFA,IAAA41B,YAAWF,EAAe,KAAM,gCAChChwB,MAAM,GAAGzG,OAAO0G,KAAKC,WAAW,0BAAyB,IAAAiwB,qBAAoBH,EAAcp1B,OAAQo1B,EAAc11B,iBAHjHu1B,EAAcG,EAAc11B,aAQpC,MAAM81B,SAAuB,IAAAv1B,SAAQgN,EAAS,IAAIx9C,MAAM,EAAG,GACrDgmE,QAAiB,IAAAx1B,SAAQg1B,EAAa,GAEtCS,EAAe,UAAOlyB,MAAMooB,kBAC5B+J,EAAmBD,EAAaF,IAAkB,CAAEI,SAAU,GAAIC,WAAY,GAEpFF,EAAiBE,WAAa5uD,KAAKC,MACnC,MAAM4uD,EAAeH,EAAiBC,SAAStsB,MAAMysB,GAAYA,EAAQC,OAASP,IAC9EP,IAAW,EAAA3C,gBAAgB0D,SAC3BN,EAAiBC,SAAS5+B,OAAO2+B,EAAiBC,SAASp7D,QAAQs7D,GAAe,GAEzC,IAArCH,EAAiBC,SAAS5oE,eACnB0oE,EAAaF,KAGpBM,EACAA,EAAaZ,OAASA,EAEtBS,EAAiBC,SAAS74D,KAAK,CAC3Bi5D,KAAMP,EACNP,WAIRQ,EAAaF,GAAiBG,GAGlC,MAAM91B,EAAUhyC,OAAOgyC,QAAQ61B,GAC/B,GAAI71B,EAAQ7yC,OAAS,IAAO,CACxB,IAAI2kB,EAAgC,KACpC,IAAK,IAAIq5B,EAAI,EAAGA,EAAInL,EAAQ,GAAG7yC,OAAQg+C,KACvB,OAARr5B,GAAgBkuB,EAAQmL,GAAG,GAAG6qB,WAAalkD,EAAI,GAAGkkD,cAClDlkD,EAAMkuB,EAAQmL,WAIf0qB,EAAa/jD,EAAI,IAG5B,UAAOuzB,iBAAiB,oBAC5B,2LCrVJ,gBAEA,2BAAgC0wB,EAAyBM,GACrD,MAAMC,EAAex3B,OAAO0G,KAAKC,WAAWswB,EAAS5oE,OAAS,EAAI,mBAC5D,YAAc4oE,EAAS,GAAGtX,SAAW,WAAa3f,OAAO0G,KAAKC,WAAW,YAAcswB,EAAS,GAAGtX,UACzG,GAAI4X,EAAU,CACV,IAAIE,EAAY,GAChB,OAAQR,EAAS,GAAGS,YAChB,KAAK,EAAA5Y,WAAWiV,QAChB,KAAK,EAAAjV,WAAW+U,KACZ4D,EAAY,UACZ,MACJ,KAAK,EAAA3Y,WAAWgV,KACZ2D,EAAY,QACZ,MACJ,KAAK,EAAA3Y,WAAWmV,IACZwD,EAAY,sBAIpB,OAAOz3B,OAAO0G,KAAKC,WAAW8wB,GAAWjmE,QAAQ,MAAOgmE,GACrD,CACH,IAAIC,EAAY,GAChB,OAAQR,EAAS,GAAGS,YAChB,KAAK,EAAA5Y,WAAWiV,QAChB,KAAK,EAAAjV,WAAW+U,KACZ4D,EAAY,gBACZ,MACJ,KAAK,EAAA3Y,WAAWgV,KACZ2D,EAAY,gBACZ,MACJ,KAAK,EAAA3Y,WAAWmV,IACZwD,EAAY,mBAIpB,OAAOz3B,OAAO0G,KAAKC,WAAW8wB,GAAWjmE,QAAQ,MAAOgmE,GAEhE,EAEA,2BAAgCP,GAC5B,MAAMO,EAAex3B,OAAO0G,KAAKC,WAAWswB,EAAS5oE,OAAS,EAAI,mBAC5D,YAAc4oE,EAAS,GAAGtX,SAAW,WAAa3f,OAAO0G,KAAKC,WAAW,YAAcswB,EAAS,GAAGtX,UAGzG,OAAO3f,OAAO0G,KAAKC,WADD,YACuBn1C,QAAQ,MAAOgmE,EAC5D,EAEA,uBAA4BP,GACxB,MAAMO,EAAex3B,OAAO0G,KAAKC,WAAWswB,EAAS5oE,OAAS,EAAI,mBAC5D,YAAc4oE,EAAS,GAAGtX,SAAW,WAAa3f,OAAO0G,KAAKC,WAAW,YAAcswB,EAAS,GAAGtX,UAGzG,OAAO3f,OAAO0G,KAAKC,WADD,YACuBn1C,QAAQ,MAAOgmE,EAC5D,EAGA,6BAAkC7X,GAC9B,OAAIA,EAAS7H,WAAW,QACb,OACa,qBAAb6H,EACA,QACa,YAAbA,EACA,WAEA,EAEf,EAEA,6BAAkC6X,GAC9B,OAAOx3B,OAAO0G,KAAKC,WAAW,YAAc6wB,EAAe,WAAax3B,OAAO0G,KAAKC,WAAW,YAAc6wB,EACjH,EACa,EAAAG,iBAAmB,4GCxEhC,gBAEA,8BACI,MAA4B,yBAArBt5B,UAAU6F,QAAqC,UAAOU,OAAOslB,gBACxE,6HCJA,gBAEA,UACA,UACA,UA+BA,SAAgB0N,IACZ,OAAI,IAAAl3B,YACOke,EAAciZ,oBAAoBC,QAClC,IAAAr3B,qBACAme,EAAciZ,oBAAoBE,QAElCnZ,EAAciZ,oBAAoBG,QAEjD,CArCA,gCACI,OAAI,UAAOpzB,OAAOumB,iBACPlyC,QAAQG,SAAQ,GAEhB,IAAIH,SAASG,IAChB,MAAM6+C,EAAeL,IAErB,IAAIt7B,EAAQ,EACZ,IAAK,MAAMj2B,KAAM4xD,EACbj4B,OAAOC,QAAQwB,YAAYp7B,EAAI,CAAEqkB,QAAS,gBAAkB4V,IACxD,GAAIN,OAAOC,QAAQuG,UAMf,OALAlK,SAEIA,IAAU27B,EAAa5pE,QACvB+qB,GAAQ,IAKhBA,EAAQknB,GACJA,IACA,UAAOsE,OAAOumB,kBAAmB,QAMzD,EAEA,oLCnCA,gBACA,UACA,UACA,UACA,UAEM+M,EAA2B,oBAAXl4B,OAEhBm4B,EAAevZ,EAAcC,aAAahX,QAAQt7B,GAAkB,YAATA,IAC5D8vB,KAAK9vB,IAAS,CACXA,OACA6rD,MAAQF,EAAiF,CAAC3rD,GAAzE,CAACyzB,OAAO0G,KAAKC,WAAW,YAAcp6B,IAAO,IAAA8rD,mBAAkB9rD,QAexF,SAAS+rD,EAAWlB,GAChB,MAAMljE,EAAOkjE,EAAQpW,cAAe,IAAAqX,mBAAkBjB,EAAQzX,UAE9D,MAAO,IAAG,IAAA4Y,kBAAiBnB,EAAQA,QAAQ,IAAI,KAC3CA,EAAQA,QAAQ,IAAMA,EAAQA,QAAQ,KAAOA,EAAQA,QAAQ,GACvD,OAAM,IAAAmB,kBAAiBnB,EAAQA,QAAQ,IAAI,KAAU,MAAMljE,GACzE,CAkEA,SAASskE,EAAS5iE,EAAe6iE,GAC7B,IAAI1zB,EAASnvC,EACb,IAAK,MAAM8iE,KAAWD,EACbC,EAAQ/rB,YAAa+rB,EAAQ/rB,UAAU/2C,KACxCmvC,EAASA,EAAOvzC,QAAQknE,EAAQA,QAAS,KAIjD,OAAO3zB,CACX,CA7FA,uBAA4BkyB,GACxB,IAAIlyB,EAAS,GACb,IAAK,MAAMqyB,KAAWH,EACb,CAAC,EAAAnY,WAAWkV,KAAM,EAAAlV,WAAWgV,MAAM7/D,SAASmjE,EAAQM,aAC7C,CAAC,EAAA/D,kBAAkBgF,QAAS,EAAAhF,kBAAkBiF,eAAe3kE,SAASmjE,EAAQp6D,UACtF+nC,GAAUuzB,EAAWlB,GAAW,MAIxC,OAAOryB,EAAOvzC,QAAQ,MAAO,GACjC,EAUA,uBAA4BsZ,EAAc+tD,SACtC,MAAMC,EAAQhuD,EAAKva,MAAM,MACnBwoE,EAAY,0DACZC,EAAiBF,EAAM90B,MAAMoa,GAAS2a,EAAU5nE,KAAKitD,KAErDrZ,EAAwB,GAC9B,IAAK,MAAMqZ,KAAQ0a,EAAO,CACtB,MAAMzlE,EAAQ+qD,EAAK/qD,MAAM0lE,GACzB,GAAI1lE,EAAO,CACP,MAAM6qC,GAAY,IAAA+6B,2BAA0B5lE,EAAM,IAClD,GAAkB,OAAd6qC,EAAoB,CAEpB,MAAMg7B,EAAsB,CAAC,CACzBR,QAAS,mDACV,CACCA,QAAS,cACT/rB,UAAY/2C,KAAYA,EAAMvC,MAAM,YAElC8lE,EAAYX,EAASpa,EAAK7tD,MAAM8C,EAAM,IAAI,GAAI6lE,GACpD,IAAIE,EAAa,KACjB,MAAMC,EAASjb,EAAK7tD,MAAM8C,EAAM,IAAMA,EAAM,IAC5C+lE,EAAaZ,EAASa,EAAOA,EAAOhrE,OAAS,GAAI6qE,GAEjD,MAAMjnB,GAAQknB,aAAS,EAATA,EAAW9qE,SAAS+qE,aAAU,EAAVA,EAAY/qE,QAAS8qE,EAAYC,EAC7DE,EAAoE,QAA/C,EAAAnB,EAAaxtB,MAAKx8C,GAAKA,EAAEiqE,MAAMnkE,SAASg+C,YAAO,eAAE1lC,KAEtEozC,EAAW1N,EAASqnB,QAAAA,EAAuB,UAA0B,kBACrElC,EAAuB,CACzBA,QAAS,CAACl5B,GAAW,IAAA+6B,2BAA0B5lE,EAAM,KACrDssD,WACA+X,WAAyB,YAAb/X,EAAyB,EAAAb,WAAWiV,QAAU,EAAAjV,WAAW+U,KACrE7S,YAA0B,YAAbrB,EAAyB1N,EAAQ,KAC9Cj1C,OAAQ,EAAA22D,kBAAkB4F,MAC1B9D,MAAM,IAAA5T,mBAGN9c,EAAO12C,OAAS,GAA8C,OAAzC02C,EAAOA,EAAO12C,OAAS,GAAG+oE,QAAQ,KACvDryB,EAAOA,EAAO12C,OAAS,GAAG+oE,QAAQ,GAAKA,EAAQA,QAAQ,IAG3DryB,EAAO3mC,KAAKg5D,SAEb,IAAK4B,EAAgB,CAExB,MAAM5B,EAAuB,CACzBA,QAAS,CAAC,EAAG,GACbzX,SAAU,UACV+X,WAAY,EAAA5Y,WAAWiV,QACvB/S,YAAa5C,EACbphD,OAAQ,EAAA22D,kBAAkB4F,MAC1B9D,MAAM,IAAA5T,mBAGV9c,EAAO3mC,KAAKg5D,IAQpB,OAJIryB,EAAO12C,OAAS,GAA8C,OAAzC02C,EAAOA,EAAO12C,OAAS,GAAG+oE,QAAQ,KACvDryB,EAAOA,EAAO12C,OAAS,GAAG+oE,QAAQ,GAAKyB,GAGpC9zB,CACX,EAaA,kCAAuCkyB,GACnC,MAAMuC,EAAoBvC,EAAS56B,KAAI+6B,GAAY,OAAD,QAC9CM,WAAYN,EAAQM,WACpB/X,SAAUyX,EAAQzX,SAClByX,QAASA,EAAQA,SACbA,EAAQpW,YAAc,CAACA,YAAaoW,EAAQpW,aAAe,CAAC,KAGpE,MAAO,aAAazoB,KAAKC,UAAUghC,IACvC,EAGA,gCAAqCxY,GACjC,OAAOA,EAAYvwD,cAAce,QAAQ,kBAAmB,IAAIA,QAAQ,OAAQ,IACpF,uaC3HA,gBACA,UACA,UASA,gCAA2CrB,EAAcspE,EAAiB3uD,EAAO,CAAC,EAAG00B,EAAU,CAAC,4CAC5F,MAAMmqB,EAAgB,UAAO/kB,OAAOmlB,cAAgBnL,EAAc8a,qBAAuB,UAAO90B,OAAO+kB,cAEvG,aAAc,IAAAgQ,2BAA0BxpE,EAAMw5D,EAAgB8P,EAAS3uD,EAAM00B,EACjF,uTCfA,gBACA,UACA,UAEA,IAAIo6B,EAAyC,KAE7C,SAAgBC,IACZ,OAAqC,OAAjC,UAAOh1B,MAAMke,iBAA4B,UAAOle,MAAMke,gBAAgBnzC,KAAOtH,KAAKC,MAAQ,KACnF,UAAOs8B,MAAMke,gBAAgBC,SAE7B,IAEf,CAEA,SAAgB8W,IACZ,OAAOF,CACX,CAMA,SAAgBG,UACZ,OAAuD,QAAhD,YAAOl1B,MAAM2b,uBAAsB,IAAAwZ,sBAAa,QAAI,IAC/D,CAEA,SAAgBC,YACZ,MAAMxhB,GAAc,IAAAyhB,oBAEpB,OAAKzhB,GAKwD,QADtD,EAAkD,QAAlD,YAAO5T,MAAM2b,sBAAsB/H,EAAYpyC,WAAG,QAClD,UAAOw+B,MAAM2b,sBAAsB/H,EAAY5K,eAAO,QAJlD,IAMf,CAEA,SAAgBssB,cACZ,MAAMnX,EAG2B,QAF7B,EAC2B,QAD3B,EAAyB,QAAzB,EAAA6W,WAAyB,QACtBC,WAAwB,QACxBC,WAA0B,QAC1BE,IAEP,OAAOjX,QAAAA,EAAY,IACvB,CAEA,SAAgBoX,IACZ,MAAMpX,EAAWmX,IAEjB,OAAInX,EACO,UAAOne,MAAM4b,aAAauC,GAG9B,IACX,CAcA,SAAgBqX,EAAkBjuD,GAC9B,OAAOkuD,EAA4BluD,EACvC,CAEA,SAASkuD,EAAuBluD,GAC5B,MAAMmuD,EAAUH,IAChB,OAAIG,GAA4B,OAAjBA,EAAQnuD,GACZmuD,EAAQnuD,GAGZ,UAAOw4B,OAAOx4B,EACzB,CA3EA,4BAQA,2BAIA,oCAAyC42C,GACrC4W,EAAwB5W,QAAAA,EAAY,IACxC,EAEA,6BAIA,+BAYA,qBAUA,mBAkBA,8BAAmC52C,GAC/B,OAAOkuD,EAA6BluD,EACxC,EAEA,sBAaA,gCAAqCopD,GACjC,MAAMlT,EAAc+X,EAAkB,eAEtC,GAAoB,IAAhB/X,EACA,IAAK,MAAM8U,KAAW5B,EAAc,CAChC,MAAM1tB,EAAWsvB,EAAQA,QAAQ,GAAKA,EAAQA,QAAQ,GAClDtvB,EAAW,GAAKA,EAAWwa,IAAgB8U,EAAQb,SAAW,EAAA3C,gBAAgB0D,SAAW,EAAA1D,gBAAgB4G,iBACzGpD,EAAQb,OAAS,EAAA3C,gBAAgB4G,gBAC1BpD,EAAQb,SAAW,EAAA3C,gBAAgB4G,kBAC1CpD,EAAQb,OAAS,EAAA3C,gBAAgB0D,SAIjD,sKChGA,gBACA,UACA,UACA,UACA,UAOA,IAAYpb,EAiBAG,EAqHZ,SAASoe,EAAkBrD,EAA6Cna,GACpE,MAAMrnD,EA5DV,SAA0BwhE,EAA6Cna,uBACnE,OAAQA,EAAKhB,WACT,KAAKC,EAAkBwe,UACnB,OAAuC,QAA/B,EAAAtD,EAAwBA,eAAO,eAAG,GAC9C,KAAKlb,EAAkBye,QACnB,OAAuC,QAA/B,EAAAvD,EAAwBA,eAAO,eAAG,GAC9C,KAAKlb,EAAkB0e,SACnB,OAAuC,QAAhC,EAACxD,EAAwBA,eAAO,eAAG,KAAqC,QAA/B,EAAAA,EAAwBA,eAAO,eAAG,IACtF,KAAKlb,EAAkB2e,iBAAkB,CACrC,MAAM38B,EAA4C,QAA/B,EAAAk5B,EAAwBA,eAAO,eAAG,GACrD,QAAkBtwB,IAAd5I,EAAyB,OAE7B,OAAOA,GAAY,IAAA48B,oBAAqB,IAE5C,KAAK5e,EAAkB6e,eAAgB,CACnC,MAAMC,EAA0C,QAA/B,EAAA5D,EAAwBA,eAAO,eAAG,GACnD,QAAgBtwB,IAAZk0B,EAAuB,OAE3B,OAAOA,GAAU,IAAAF,oBAAqB,IAE1C,KAAK5e,EAAkB+e,gBAAiB,CACpC,MAAM/8B,EAA4C,QAA/B,EAAAk5B,EAAwBA,eAAO,eAAG,GAC/C4D,EAA0C,QAA/B,EAAA5D,EAAwBA,eAAO,eAAG,GACnD,QAAkBtwB,IAAd5I,QAAuC4I,IAAZk0B,EAAuB,OAEtD,OAAQA,EAAU98B,IAAa,IAAA48B,oBAAqB,IAExD,KAAK5e,EAAkByC,SACnB,OAAOyY,EAAQzX,SACnB,KAAKzD,EAAkB4C,WACnB,OAAQsY,EAAwBM,WACpC,KAAKxb,EAAkBgf,YACnB,OAAQ9D,EAAwBpW,aAAe,GACnD,KAAK9E,EAAkB8C,OACnB,OAASoY,EAAwBp6D,QAC7B,KAAK,EAAA22D,kBAAkB4F,MACnB,MAAO,QACX,KAAK,EAAA5F,kBAAkBgF,QACnB,MAAO,UACX,KAAK,EAAAhF,kBAAkBiF,cACnB,MAAO,gBACX,KAAK,EAAAjF,kBAAkBwH,OACnB,MAAO,SACX,QACI,OAEZ,KAAKjf,EAAkBkf,UACnB,OAAO,IAAAlB,oBAAmB7zD,GAC9B,KAAK61C,EAAkBmf,YACnB,OAAO,IAAAnB,oBAAmBrsB,OAC9B,KAAKqO,EAAkBof,cACnB,OAAO,IAAAR,oBACX,KAAK5e,EAAkBqf,MACnB,OAAO,IAAAC,wBAAyB,GACpC,QACI,OAEZ,CAGkBlf,CAAiB8a,EAASna,GAExC,OAAQA,EAAKb,UACT,KAAKC,EAAiBof,KAClB,MAAwB,iBAAV7lE,GAAsBA,EAASqnD,EAAKrnD,MACtD,KAAKymD,EAAiBqf,YAClB,MAAwB,iBAAV9lE,GAAsBA,GAAUqnD,EAAKrnD,MACvD,KAAKymD,EAAiBsf,QAClB,MAAwB,iBAAV/lE,GAAsBA,EAASqnD,EAAKrnD,MACtD,KAAKymD,EAAiBuf,eAClB,MAAwB,iBAAVhmE,GAAsBA,GAAUqnD,EAAKrnD,MACvD,KAAKymD,EAAiBoC,MAClB,OAAO7oD,IAAUqnD,EAAKrnD,MAC1B,KAAKymD,EAAiBqC,SAClB,OAAO9oD,IAAUqnD,EAAKrnD,MAC1B,KAAKymD,EAAiBwf,SAClB,OAAOxvD,OAAOzW,GAAOkmE,oBAAoB7nE,SAASoY,OAAO4wC,EAAKrnD,OAAOkmE,qBACzE,KAAKzf,EAAiB0f,YAClB,OAAQ1vD,OAAOzW,GAAOkmE,oBAAoB7nE,SAASoY,OAAO4wC,EAAKrnD,OAAOkmE,qBAC1E,KAAKzf,EAAiB2f,MAClB,OAAO,IAAIC,OAAOhf,EAAKrnD,OAAiBzE,KAAKkb,OAAOzW,IACxD,KAAKymD,EAAiB6f,gBAClB,OAAO,IAAID,OAAOhf,EAAKrnD,MAAiB,KAAKzE,KAAKkb,OAAOzW,IAC7D,KAAKymD,EAAiB8f,SAClB,OAAQ,IAAIF,OAAOhf,EAAKrnD,OAAiBzE,KAAKkb,OAAOzW,IACzD,KAAKymD,EAAiB+f,mBAClB,OAAQ,IAAIH,OAAOhf,EAAKrnD,MAAiB,KAAKzE,KAAKkb,OAAOzW,IAC9D,QACI,OAAO,EAEnB,EArKA,SAAYsmD,GACR,yBACA,qBACA,2BACA,uCACA,mCACA,yCACA,sBACA,0BACA,6BACA,0BACA,yBACA,6BACA,iCACA,qBACH,CAfD,CAAYA,EAAA,EAAAA,oBAAA,EAAAA,kBAAiB,KAiB7B,SAAYG,GACR,WACA,mBACA,cACA,sBACA,aACA,gBACA,gBACA,oBACA,aACA,wBACA,iBACA,2BACH,CAbD,CAAYA,EAAA,EAAAA,mBAAA,EAAAA,iBAAgB,KA2B5B,gCAAqC+a,GAEjC,IAAK,MAAMta,KAAW,UAAOjY,MAAM6Y,UAC/B,GAAIZ,EAAQI,MAAMmf,OAAOpf,GAASwd,EAAkBrD,EAASna,KACzD,MAAO,CAAE/oD,KAAMkjE,EAAQzX,SAAUG,OAAQhD,EAAQK,YAKzD,GAAI,eAAgBia,GAAmD,SAAvCA,EAAwBM,cAA0B,IAAA4E,oBAAmB,gBACjG,MAAO,CAAEpoE,KAAMkjE,EAAQzX,SAAUG,OAAQ,EAAA1C,mBAAmBC,UAIhE,MAAMkd,GAAU,IAAAH,kBAChB,GAAIG,EAAS,CACT,MAAMgC,EAAmBhC,EAAQxY,mBAAmBpX,MAAKkV,GAAaA,EAAU3rD,OAASkjE,EAAQzX,WACjG,GAAI4c,EACA,OAAOA,EAKf,IAAK,MAAM1c,KAAa,UAAOjb,OAAOmd,mBAClC,GAAIlC,EAAU3rD,OAASkjE,EAAQzX,SAC3B,OAAOE,EAGf,MAAO,CAAE3rD,KAAMkjE,EAAQzX,SAAUG,OAAQ,EAAA1C,mBAAmBC,SAChE,EA8FA,uCAA4CsC,GACxC,IAAK,MAAME,KAAa,UAAOjb,OAAOmd,mBAClC,GAAIlC,EAAU3rD,OAASyrD,EACnB,OAAOE,EAGf,MAAO,CAAE3rD,KAAMyrD,EAAUG,OAAQ,EAAA1C,mBAAmBC,SACxD,mlECxLImf,EAA2B,CAAC,GAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB51B,IAAjB61B,EACH,OAAOA,EAAajiC,QAGrB,IAAIiB,EAAS6gC,EAAyBE,GAAY,CAGjDhiC,QAAS,CAAC,GAOX,OAHAkiC,EAAoBF,GAAUxrE,KAAKyqC,EAAOjB,QAASiB,EAAQA,EAAOjB,QAAS+hC,GAGpE9gC,EAAOjB,OACf,CCnB0B+hC,CAAoB","sources":["webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./maze-utils/src/background-request-proxy.ts","webpack:///./maze-utils/src/browserApi.ts","webpack:///./maze-utils/src/cache.ts","webpack:///./maze-utils/src/cleanup.ts","webpack:///./maze-utils/src/config.ts","webpack:///./maze-utils/src/const.ts","webpack:///./maze-utils/src/dom.ts","webpack:///./maze-utils/src/elements.ts","webpack:///./maze-utils/src/formating.ts","webpack:///./maze-utils/src/hash.ts","webpack:///./maze-utils/src/index.ts","webpack:///./maze-utils/src/metadataFetcher.ts","webpack:///./maze-utils/src/pageInfo.ts","webpack:///./maze-utils/src/scriptInjector.ts","webpack:///./maze-utils/src/setup.ts","webpack:///./maze-utils/src/thumbnail-selectors.ts","webpack:///./maze-utils/src/thumbnailManagement.ts","webpack:///./maze-utils/src/versionHigher.ts","webpack:///./maze-utils/src/video.ts","webpack:///./src/components/options/AdvancedSkipOptionsComponent.tsx","webpack:///./src/components/options/CategoryChooserComponent.tsx","webpack:///./src/components/options/CategorySkipOptionsComponent.tsx","webpack:///./src/components/options/KeybindComponent.tsx","webpack:///./src/components/options/KeybindDialogComponent.tsx","webpack:///./src/components/options/NumberInputOptionComponent.tsx","webpack:///./src/components/options/SelectOptionComponent.tsx","webpack:///./src/components/options/ToggleOptionComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListComponent.tsx","webpack:///./src/components/options/UnsubmittedVideoListItem.tsx","webpack:///./src/components/options/UnsubmittedVideosComponent.tsx","webpack:///./src/config.ts","webpack:///./src/options.ts","webpack:///./src/render/AdvancedSkipOptions.tsx","webpack:///./src/render/CategoryChooser.tsx","webpack:///./src/render/UnsubmittedVideos.tsx","webpack:///./src/svg-icons/resetIcon.tsx","webpack:///./src/types.ts","webpack:///./src/utils.ts","webpack:///./src/utils/categoryUtils.ts","webpack:///./src/utils/configUtils.ts","webpack:///./src/utils/crossExtension.ts","webpack:///./src/utils/exporter.ts","webpack:///./src/utils/requests.ts","webpack:///./src/utils/skipProfiles.ts","webpack:///./src/utils/skipRule.ts","webpack:///webpack/bootstrap","webpack:///webpack/startup"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","import { isFirefoxOrSafari, objectToURI } from \".\";\nimport { isSafari } from \"./config\";\nimport { isBodyGarbage } from \"./formating\";\nimport { getHash } from \"./hash\";\n\nexport interface FetchResponse {\n responseText: string;\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\nexport interface FetchResponseBinary {\n responseBinary: Blob | number[];\n headers: Record | null;\n status: number;\n ok: boolean;\n}\n\n/**\n * Sends a request to the specified url\n *\n * @param type The request type \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback\n */\nexport async function sendRealRequestToCustomServer(type: string, url: string,\n data: Record | null = {}, headers: Record = {}) {\n // If GET, convert JSON to parameters\n if (type.toLowerCase() === \"get\") {\n url = objectToURI(url, data, true);\n\n data = null;\n }\n\n const response = await fetch(url, {\n method: type,\n headers: {\n 'Content-Type': 'application/json',\n ...(headers || {})\n },\n redirect: 'follow',\n body: data ? JSON.stringify(data) : null\n });\n\n return response;\n}\n\n/**\n * Checks whether the value is safe to send using .postMessage()\n *\n * @param value The value to check\n * @returns true if the value is serializable, false otherwise\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n window.structuredClone(value);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface MaybeError {\n toString?: () => string,\n}\n\n/**\n * Ensures the value is serializable by converting to a string if it's not\n *\n * Useful for sending errors cause you never really know what \"error\" you may get with JS\n *\n * @param value The value to check\n * @returns Unmodified value if serializable, stringified version otherwise\n */\nexport function serializeOrStringify(value: T & MaybeError): T | string {\n return isSerializable(value)\n ? value\n : (\n \"toString\" in value && typeof value.toString === 'function'\n ? value.toString()\n : String(value)\n );\n}\n\nexport function setupBackgroundRequestProxy() {\n chrome.runtime.onMessage.addListener((request, sender, callback) => {\n if (request.message === \"sendRequest\") {\n sendRealRequestToCustomServer(request.type, request.url, request.data, request.headers).then(async (response) => {\n const buffer = request.binary \n ? ((isFirefoxOrSafari() && !isSafari())\n ? await response.blob()\n : Array.from(new Uint8Array(await response.arrayBuffer())))\n : null;\n\n callback({\n responseText: !request.binary ? await response.text() : \"\",\n responseBinary: buffer,\n headers: (request.returnHeaders && response.headers)\n ? [...response.headers.entries()].reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }\n , {})\n : null,\n status: response.status,\n ok: response.ok\n });\n }).catch(error => {\n console.error(\"Proxied request failed:\", error)\n callback({\n error: serializeOrStringify(error),\n });\n });\n\n return true;\n }\n\n if (request.message === \"getHash\") {\n getHash(request.value, request.times).then(callback).catch((e) => {\n console.error(\"Hash request failed:\", e)\n callback({\n error: serializeOrStringify(e),\n });\n });\n\n return true;\n }\n\n return false;\n });\n}\n\nexport function sendRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\nexport function sendBinaryRequestToCustomServer(type: string, url: string, data = {}, headers = {}): Promise {\n return new Promise((resolve, reject) => {\n // Ask the background script to do the work\n chrome.runtime.sendMessage({\n message: \"sendRequest\",\n type,\n url,\n data,\n headers,\n binary: true,\n returnHeaders: true\n }, (response) => {\n if (\"error\" in response) {\n reject(response.error);\n } else {\n resolve(response);\n }\n });\n });\n}\n\n/**\n * Formats and `console.warn`s the given request\n *\n * Use this to log failed requests.\n *\n * @param request The request to log\n * @param prefix Extension prefix, such as \"SB\" or \"CB\". Brackets will be added automatically\n * @param requestDescription A string describing what the failed request was, such as \"segment skip log\", which would produce \"Server responded ... to a segment skip log request\"\n */\nexport function logRequest(request: FetchResponse | FetchResponseBinary, prefix: string, requestDescription: string) {\n const body = (\"responseText\" in request && !isBodyGarbage(request.responseText)) ? `: ${request.responseText}` : \"\"\n console.warn(`[${prefix}] Server responded with code ${request.status} to a ${requestDescription} request${body}`);\n}\n","export const chromeP = typeof(browser) === \"undefined\" ? (typeof(chrome) !== \"undefined\" ? chrome : null as unknown as typeof chrome) : browser;","interface CacheRecord {\n lastUsed: number;\n}\n\nexport class DataCache {\n private cache: Record;\n private init: () => V;\n private cacheLimit: number;\n\n constructor(init: () => V, cacheLimit = 2000) {\n this.cache = {};\n this.init = init;\n this.cacheLimit = cacheLimit;\n }\n\n public getFromCache(key: T): V & CacheRecord | undefined {\n return this.cache[key];\n }\n\n public setupCache(key: T): V & CacheRecord {\n if (!this.cache[key]) {\n this.cache[key] = {\n ...this.init(),\n lastUsed: Date.now()\n };\n\n if (Object.keys(this.cache).length > this.cacheLimit) {\n const oldest = Object.entries(this.cache).reduce((a, b) => a[1].lastUsed < b[1].lastUsed ? a : b);\n delete this.cache[oldest[0]];\n }\n }\n\n return this.cache[key];\n }\n\n public cacheUsed(key: T): boolean {\n if (this.cache[key]) this.cache[key].lastUsed = Date.now();\n\n return !!this.cache[key];\n }\n}","import { chromeP } from \"./browserApi\";\n\nconst cleanupListeners: (() => void)[] = [];\nexport function addCleanupListener(listener: () => void) {\n cleanupListeners.push(listener);\n}\n\nexport function setupCleanupListener() {\n const source = getCleanupId();\n\n const started = performance.now();\n window.postMessage({\n source,\n message: getCleanupStartMessage()\n });\n\n window.addEventListener(\"message\", (message) => {\n if (message.data?.source \n && message.data.source === source\n && message.data.message === getCleanupStartMessage()\n && performance.now() - started > 5000) {\n\n for (const listener of cleanupListeners) {\n listener();\n }\n }\n });\n}\n\nexport function getCleanupId() {\n return `${chrome.runtime.id}-cleanup`;\n}\n\nexport function getCleanupStartMessage() {\n return \"cleanup-start\"\n}\n\nexport interface InjectedScript {\n matches?: string[];\n js?: string[];\n css?: string[];\n}\n\nexport async function injectUpdatedScripts(extraScripts: InjectedScript[] = [], ignoreNormalScipts = false) {\n const scripts = ignoreNormalScipts ? extraScripts : extraScripts.concat(chrome.runtime.getManifest().content_scripts || []);\n if (\"scripting\" in chrome) {\n for (const cs of scripts) {\n for (const tab of await chromeP.tabs.query({url: cs.matches})) {\n if (cs.css && cs.css.length > 0) {\n await chromeP.scripting.insertCSS({\n target: {tabId: tab.id!},\n files: cs.css || [],\n })\n }\n \n await chromeP.scripting.executeScript({\n target: {tabId: tab.id!},\n files: cs.js || [],\n \n world: cs[\"world\"] || \"ISOLATED\"\n })\n }\n }\n } else {\n chrome.windows.getAll({\n populate: true\n }, (windows) => {\n for (const window of windows) {\n if (window.tabs) {\n for (const tab of window.tabs) {\n for (const script of scripts) {\n if (tab.url && script.matches?.some?.((match) => \n tab.url!.match(match\n .replace(/\\//g, \"\\\\/\")\n .replace(/\\./g, \"\\\\.\")\n .replace(/\\*/g, \".*\")))) {\n if (script.js) {\n for (const file of script.js) {\n void chrome.tabs.executeScript(tab.id!, {\n file\n });\n }\n }\n \n if (script.css) {\n for (const file of script.css) {\n void chrome.tabs.insertCSS(tab.id!, {\n file\n });\n }\n }\n }\n }\n }\n }\n }\n });\n }\n}","import { isFirefoxOrSafari } from \".\";\n\nexport interface SyncStorage {\n invidiousInstances: string[];\n}\n\nexport interface LocalStorage {\n navigationApiAvailable: boolean;\n}\n\ninterface StorageObjects {\n sync: T;\n local: U;\n}\n\nexport type StorageChangesObject = { [key: string]: chrome.storage.StorageChange };\n\nexport type Keybind = {\n key: string | null;\n code?: string | null;\n ctrl?: boolean | null;\n alt?: boolean | null;\n shift?: boolean | null;\n}\n\nexport class ProtoConfig {\n configLocalListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n configSyncListeners: Array<(changes: StorageChangesObject) => unknown> = [];\n syncDefaults: T;\n localDefaults: U;\n cachedSyncConfig: T | null = null;\n cachedLocalStorage: U | null = null;\n config: T | null = null;\n local: U | null = null;\n inDeArrow = false;\n\n constructor (syncDefaults: T, localDefaults: U,\n migrateOldSyncFormats: (config: T, local?: U) => void, inDeArrow = false) {\n this.syncDefaults = syncDefaults;\n this.localDefaults = localDefaults;\n this.inDeArrow = inDeArrow;\n\n void this.setupConfig(migrateOldSyncFormats).then((result) => {\n this.config = result?.sync;\n this.local = result?.local;\n });\n }\n\n configProxy(): StorageObjects {\n chrome.storage.onChanged.addListener((changes: {[key: string]: chrome.storage.StorageChange}, areaName) => {\n if (areaName === \"sync\") {\n for (const key in changes) {\n this.cachedSyncConfig![key] = changes[key].newValue;\n }\n \n for (const callback of this.configSyncListeners) {\n callback(changes);\n }\n } else if (areaName === \"local\") {\n for (const key in changes) {\n this.cachedLocalStorage![key] = changes[key].newValue;\n }\n \n for (const callback of this.configLocalListeners) {\n callback(changes);\n }\n }\n });\n\n let lastSet = 0;\n const nextToUpdate: Set = new Set();\n let activeTimeout: NodeJS.Timeout | null = null;\n\n const self = this;\n const syncHandler: ProxyHandler = {\n set(obj: SyncStorage, prop: K, value: SyncStorage[K]) {\n self.cachedSyncConfig![prop] = value;\n\n if (Date.now() - lastSet < 100) {\n nextToUpdate.add(prop);\n if (!activeTimeout) {\n const delayUpdate = () => {\n const items = [...nextToUpdate];\n nextToUpdate.clear();\n\n void chrome.storage.sync.set(items.map((v) => [v, self.cachedSyncConfig![v]]).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}));\n\n activeTimeout = null;\n }\n\n activeTimeout = setTimeout(delayUpdate, 20);\n }\n\n return true;\n }\n \n void chrome.storage.sync.set({\n [prop]: value\n });\n\n lastSet = Date.now();\n \n return true;\n },\n \n get(obj: SyncStorage, prop: K): SyncStorage[K] {\n const data = self.cachedSyncConfig![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: SyncStorage, prop: keyof SyncStorage) {\n void chrome.storage.sync.remove( prop);\n \n return true;\n }\n \n };\n \n const localHandler: ProxyHandler = {\n set(obj: LocalStorage, prop: K, value: LocalStorage[K]) {\n self.cachedLocalStorage![prop] = value;\n \n void chrome.storage.local.set({\n [prop]: value\n });\n \n return true;\n },\n \n get(obj: LocalStorage, prop: K): LocalStorage[K] {\n const data = self.cachedLocalStorage![prop];\n \n return obj[prop] || data;\n },\n \n deleteProperty(obj: LocalStorage, prop: keyof LocalStorage) {\n void chrome.storage.local.remove( prop);\n \n return true;\n }\n \n };\n \n return {\n sync: new Proxy({ handler: syncHandler } as unknown as T, syncHandler),\n local: new Proxy({ handler: localHandler } as unknown as U, localHandler)\n };\n }\n \n forceSyncUpdate(prop: string): void {\n const value = this.cachedSyncConfig![prop];\n void chrome.storage.sync.set({\n [prop]: value\n });\n }\n \n forceLocalUpdate(prop: string): void {\n const value = this.cachedLocalStorage![prop];\n\n void chrome.storage.local.set({\n [prop]: value\n }, () => {\n const error = chrome.runtime.lastError;\n if (error && prop !== \"navigationApiAvailable\") {\n alert(`SponsorBlock/DeArrow: ${chrome.i18n.getMessage(\"storageFull\")}\\n\\n${error}`);\n }\n });\n }\n \n async fetchConfig(): Promise {\n await Promise.all([new Promise((resolve) => {\n chrome.storage.sync.get(null, (items) => {\n this.cachedSyncConfig = items;\n\n if (this.cachedSyncConfig === undefined) {\n this.cachedSyncConfig = {} as T;\n\n if (this.inDeArrow \n || window.location.href.includes(\"options.html\")) {\n alert(`${chrome.i18n.getMessage(\"syncDisabledWarning\")}${\n this.inDeArrow ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledWarningDeArrow\")}` : ``}${\n isFirefoxOrSafari() && !isSafari() ? `\\n\\n${chrome.i18n.getMessage(\"syncDisabledFirefoxSuggestions\")}` : ``}`);\n }\n }\n\n resolve();\n });\n }), new Promise((resolve) => {\n chrome.storage.local.get(null, (items) => {\n this.cachedLocalStorage = (items ?? {});\n resolve();\n });\n })]);\n }\n \n async setupConfig(migrateOldSyncFormats: (config: T, local?: U) => void): Promise> {\n if (typeof(chrome) === \"undefined\") return null as unknown as StorageObjects;\n \n await this.fetchConfig();\n this.addDefaults();\n const result = this.configProxy();\n migrateOldSyncFormats(result.sync, result.local);\n \n return result;\n }\n \n // Add defaults\n addDefaults() {\n for (const key in this.syncDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig, key)) {\n this.cachedSyncConfig![key] = this.syncDefaults[key];\n } else if (key === \"barTypes\") {\n for (const key2 in this.syncDefaults[key]) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedSyncConfig![key], key2)) {\n this.cachedSyncConfig![key][key2] = this.syncDefaults[key][key2];\n }\n }\n }\n }\n \n for (const key in this.localDefaults) {\n if(!Object.prototype.hasOwnProperty.call(this.cachedLocalStorage, key)) {\n this.cachedLocalStorage![key] = this.localDefaults[key];\n }\n }\n }\n\n isReady(): boolean {\n return this.config !== null;\n }\n}\n\nexport function isSafari(): boolean {\n return typeof(navigator) !== \"undefined\" && navigator.vendor === \"Apple Computer, Inc.\";\n}\n\nexport function keybindEquals(first: Keybind, second: Keybind): boolean {\n if (first == null || second == null ||\n Boolean(first.alt) != Boolean(second.alt) || Boolean(first.ctrl) != Boolean(second.ctrl) || Boolean(first.shift) != Boolean(second.shift) ||\n first.key == null && first.code == null || second.key == null && second.code == null)\n return false;\n if (first.code != null && second.code != null)\n return first.code === second.code;\n if (first.key != null && second.key != null)\n return first.key.toUpperCase() === second.key.toUpperCase();\n return false;\n}\n\nexport function formatKey(key: string): string {\n if (key == null)\n return \"\";\n else if (key == \" \")\n return \"Space\";\n else if (key.length == 1)\n return key.toUpperCase();\n else\n return key;\n}\n\nexport function keybindToString(keybind: Keybind): string {\n if (keybind == null || keybind.key == null)\n return \"\";\n\n let ret = \"\";\n if (keybind.ctrl)\n ret += \"Ctrl + \";\n if (keybind.alt)\n ret += \"Alt + \";\n if (keybind.shift)\n ret += \"Shift + \";\n\n return ret += formatKey(keybind.key);\n}","export const YT_DOMAINS = [\n \"m.youtube.com\",\n \"www.youtube.com\",\n \"www.youtube-nocookie.com\",\n \"music.youtube.com\",\n \"www.youtubekids.com\",\n \"tv.youtube.com\"\n]","export function isVisible(element: HTMLElement | null, ignoreWidth = false): boolean {\n if (!element) {\n return false;\n }\n\n // Special case for when a video is first loaded, and the main video element is technically hidden\n if (element.tagName === \"VIDEO\" \n && (element.classList.contains(\"html5-main-video\") || element.id === \"player\" || element.id === \"player_html5_api\")\n && [...document.querySelectorAll(\"video\")].filter((v) => v.duration).length === 1\n && (element as HTMLVideoElement).duration) {\n return true;\n }\n \n if (element.offsetHeight === 0 || (element.offsetWidth === 0 && !ignoreWidth)) {\n return false;\n }\n\n const boundingRect = element?.getBoundingClientRect();\n const elementAtPoint = document.elementFromPoint(boundingRect.left + boundingRect.width / 2,\n boundingRect.top + boundingRect.height / 2)\n || document.elementFromPoint(boundingRect.left, boundingRect.top);\n\n if (!elementAtPoint \n && element.id === \"movie_player\"\n && boundingRect.top < 0) {\n return true;\n }\n\n if (elementAtPoint === element \n || (!!elementAtPoint && element.contains(elementAtPoint))\n || (!!elementAtPoint && elementAtPoint.contains(element))) {\n return true;\n }\n\n // Hover previews will have their controls appear on top, go back to the nearest player\n // to make sure this is the correct element.\n // If a hover preview is inactive, it will instead have the thumbnail as the top element, which\n // is at a different tree to the video player, so it will properly return false for this.\n // In newer players, it will instead have the \"playing-mode\" class\n if (element.tagName === \"VIDEO\") {\n return !!elementAtPoint?.closest(\".html5-video-player\")?.contains(element)\n || !!element?.closest(\"#inline-preview-player\")?.classList?.contains(\"playing-mode\");\n }\n\n return false;\n}\n\nexport function isVisibleOrParent(element: HTMLElement | null, ignoreWidth = false, checkParent = true): boolean {\n return isVisible(element, ignoreWidth) \n || (checkParent && !!element && (isVisible(element.parentElement, ignoreWidth) || isVisible(element.parentElement?.parentElement ?? null, ignoreWidth)));\n}\n\nexport function findValidElementFromSelector(selectors: string[], ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(selectors, ignoreWidth, checkParent, (selector) => document.querySelector(selector));\n}\n\nexport function findValidElement(elements: HTMLElement[] | NodeListOf, ignoreWidth = false, checkParent = false): HTMLElement | null {\n return findValidElementFromGenerator(elements, ignoreWidth, checkParent);\n}\n\nfunction findValidElementFromGenerator(objects: T[] | NodeListOf, ignoreWidth = false, checkParent = false, generator?: (obj: T) => HTMLElement | null): HTMLElement | null {\n for (const obj of objects) {\n const element = generator ? generator(obj as T) : obj as HTMLElement;\n if (element && isVisibleOrParent(element, ignoreWidth, checkParent)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findPredicatedElement(selectors: string[], predicate: (element: HTMLElement) => boolean): HTMLElement | null {\n for (const selector of selectors) {\n const element = document.querySelector(selector) as HTMLElement;\n if (element && predicate(element)) {\n return element;\n }\n }\n\n return null;\n}\n\nexport function findNonEmptyElement(selectors: string[]): HTMLElement | null {\n return findPredicatedElement(selectors, (element) => (element.textContent?.trim() ?? \"\").length > 0);\n}\n\ninterface WaitingElement {\n selector: string;\n visibleCheck: boolean;\n ignoreWidth: boolean;\n checkParent: boolean;\n callbacks: Array<(element: Element) => void>;\n elements?: NodeListOf;\n}\n\n/* Used for waitForElement */\nlet creatingWaitingMutationObserver = false;\nlet waitingMutationObserver: MutationObserver | null = null;\nlet waitingElements: WaitingElement[] = [];\n\n/* Uses a mutation observer to wait asynchronously */\nexport async function waitForElement(selector: string, visibleCheck = false, ignoreWidth = false, checkParent = false): Promise {\n return await new Promise((resolve) => {\n const initialElement = getElement(selector, visibleCheck, ignoreWidth, checkParent);\n if (initialElement) {\n resolve(initialElement);\n return;\n }\n\n const existingWaitingElement = waitingElements.find((waitingElement) => waitingElement.selector === selector \n && waitingElement.visibleCheck === visibleCheck);\n\n if (existingWaitingElement) {\n existingWaitingElement.callbacks.push(resolve);\n } else {\n waitingElements.push({\n selector,\n visibleCheck,\n ignoreWidth,\n checkParent,\n callbacks: [resolve]\n });\n }\n\n if (!creatingWaitingMutationObserver) {\n creatingWaitingMutationObserver = true;\n\n if (document.body) {\n setupWaitingMutationListener();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n setupWaitingMutationListener();\n });\n }\n }\n });\n}\n\nfunction setupWaitingMutationListener(): void {\n if (!waitingMutationObserver) {\n const checkForObjects = (mutations?: MutationRecord[]) => {\n const foundSelectors: string[] = [];\n for (const waitingElement of waitingElements) {\n const { selector, visibleCheck, ignoreWidth, checkParent, callbacks } = waitingElement;\n\n let updatePossibleElements = true;\n if (mutations) {\n let found = false;\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n if (mutation.target instanceof HTMLElement \n && (mutation.target.matches(selector) || mutation.target.querySelector(selector))) {\n found = true;\n break;\n }\n\n for (const node of mutation.addedNodes) {\n if (node instanceof HTMLElement \n && (node.matches(selector) || node.querySelector(selector))) {\n found = true;\n break;\n }\n }\n\n if (found) {\n break;\n }\n }\n }\n\n if (!found) {\n updatePossibleElements = false;\n }\n }\n\n const possibleElements: NodeListOf | undefined =\n updatePossibleElements ? document.querySelectorAll(selector) : waitingElement.elements;\n if (possibleElements && possibleElements.length > 0) {\n waitingElement.elements = possibleElements;\n\n const element = visibleCheck ? findValidElement(possibleElements, ignoreWidth, checkParent) : possibleElements[0] as HTMLElement;\n if (element) {\n if (chrome.runtime?.id) {\n for (const callback of callbacks) {\n callback(element);\n }\n }\n\n foundSelectors.push(selector);\n }\n }\n }\n\n waitingElements = waitingElements.filter((element) => !foundSelectors.includes(element.selector));\n \n if (waitingElements.length === 0) {\n waitingMutationObserver?.disconnect();\n waitingMutationObserver = null;\n creatingWaitingMutationObserver = false;\n }\n };\n\n // Do an initial check over all objects\n checkForObjects();\n\n if (waitingElements.length > 0) {\n waitingMutationObserver = new MutationObserver(checkForObjects);\n\n waitingMutationObserver.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n }\n }\n}\n\nexport function getElement(selector: string, visibleCheck: boolean, ignoreWidth = false, checkParent = false) {\n return visibleCheck ? findValidElement(document.querySelectorAll(selector), ignoreWidth, checkParent) : document.querySelector(selector) as HTMLElement;\n}","export function getYouTubeTitleNodeSelector(): string {\n // New YouTube Title, YouTube, Mobile YouTube, Invidious, YouTube videoPrimaryInfoRenderer (2021) layout, Vorapis v3, tv.youtube.com\n return \"#title h1, .ytd-video-primary-info-renderer.title, .slim-video-information-title, #player-container + .h-box > h1, .ytd-video-primary-info-renderer > h1.title, #watch7-headline, .ypcs-video-info\";\n}\n\nexport function getYouTubeTitleNode(): HTMLElement {\n return document.querySelector(getYouTubeTitleNodeSelector()) as HTMLElement;\n}\n\nexport function getCurrentPageTitle(): string | null {\n const titleNode = getYouTubeTitleNode();\n\n if (titleNode) {\n const formattedText = titleNode.querySelector(\"yt-formatted-string.ytd-watch-metadata, .slim-video-information-title .yt-core-attributed-string:not(.cbCustomTitle)\") as HTMLElement;\n if (formattedText) {\n return formattedText.innerText;\n } else {\n for (const elem of titleNode.children) {\n if (elem.nodeName === \"#text\" && elem.nodeValue \n && elem.nodeValue.trim() !== \"\") {\n return elem.nodeValue;\n }\n }\n }\n }\n\n return null;\n}","export function getFormattedTimeToSeconds(formatted: string): number | null {\n const fragments = /^(?:(?:(\\d+):)?(\\d+):)?(\\d*(?:[.,]\\d+)?)$/.exec(formatted);\n\n if (fragments === null) {\n return null;\n }\n\n const hours = fragments[1] ? parseInt(fragments[1]) : 0;\n const minutes = fragments[2] ? parseInt(fragments[2] || '0') : 0;\n const seconds = fragments[3] ? parseFloat(fragments[3].replace(',', '.')) : 0;\n\n return hours * 3600 + minutes * 60 + seconds;\n}\n\nexport function getFormattedTime(seconds: number, precise?: boolean): string | null {\n seconds = Math.max(seconds, 0);\n \n const hours = Math.floor(seconds / 60 / 60);\n const minutes = Math.floor(seconds / 60) % 60;\n let minutesDisplay = String(minutes);\n let secondsNum = seconds % 60;\n if (!precise) {\n secondsNum = Math.floor(secondsNum);\n }\n\n let secondsDisplay = String(precise ? secondsNum.toFixed(3) : secondsNum);\n \n if (secondsNum < 10) {\n //add a zero\n secondsDisplay = \"0\" + secondsDisplay;\n }\n if (hours && minutes < 10) {\n //add a zero\n minutesDisplay = \"0\" + minutesDisplay;\n }\n if (isNaN(hours) || isNaN(minutes)) {\n return null;\n }\n\n const formatted = (hours ? hours + \":\" : \"\") + minutesDisplay + \":\" + secondsDisplay;\n\n return formatted;\n}\n\n/**\n * Gets the error message in a nice string\n *\n * The result should be a single line string, suitable for small display spaces.\n * \n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getShortErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const errorMessage = (\n (responseText\n && !(responseText.includes(`cf-wrapper`) || responseText.includes(\"\"))\n && responseText.length < 64 // this value is very much arbitrary\n )\n ? ` ${responseText}`\n : \"\"\n );\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}${errorMessage}`);\n return `${introString} ${errorCodeString}`;\n}\n\n/**\n * Checks if the body is worth displaying to the user/logs\n *\n * @param body the body\n * @returns true if the body should be considered \"garbage\", false if it's potentially valuable\n */\nexport function isBodyGarbage(body: string): boolean {\n return body.includes(`cf-wrapper`) || body.includes(\"\");\n}\n\n/**\n * Gets the error message in a nice string\n * \n * The result will be a longer, multiline string, suitable for long-lived error notices or alerts.\n *\n * @param {int} statusCode \n * @returns {string} errorMessage\n */\nexport function getLongErrorMessage(statusCode: number, responseText: string): string {\n // timeout\n if (statusCode === 0) {\n return chrome.i18n.getMessage(\"0\");\n }\n // prep the strings\n const postFix = (responseText && !isBodyGarbage(responseText)) ? \"\\n\\n\" + responseText : \"\";\n // use the 502 string for 503s\n let introString = chrome.i18n.getMessage(`${statusCode === 503 ? 502 : statusCode}`);\n if (introString === \"\") {\n introString = chrome.i18n.getMessage(\"connectionError\");\n }\n const errorCodeString = chrome.i18n.getMessage(\"errorCode\").replace(\"{code}\", `${statusCode}`);\n const reminder = (statusCode === 502 || statusCode === 503) ? `\\n\\n${chrome.i18n.getMessage(\"statusReminder\")}` : \"\";\n return `${introString} ${errorCodeString}${postFix}${reminder}`;\n}\n\n/**\n * Formats the JS error message in a nice string\n * \n * @param error The error to format\n * @returns {string} The nice string\n */\nexport function formatJSErrorMessage(error: string | Error): string {\n const introString = chrome.i18n.getMessage(\"connectionError\");\n return `${introString} ${error}`\n}\n","export type HashedValue = string & { __hashBrand: unknown };\n\nexport async function getHash(value: T, times = 5000): Promise {\n if (times <= 0) return \"\" as T & HashedValue;\n\n if (!(\"subtle\" in crypto)) {\n // Run in background script instead\n return new Promise((resolve, reject) => chrome.runtime.sendMessage({\n message: \"getHash\",\n value,\n times\n }, (response) => {\n if (response.error) {\n reject(response.error);\n } else {\n resolve(response);\n }\n }));\n }\n\n let hashHex: string = value;\n for (let i = 0; i < times; i++) {\n const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(hashHex).buffer);\n\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n return hashHex as T & HashedValue;\n}","/** Function that can be used to wait for a condition before returning. */\nexport async function waitFor(condition: () => T, timeout = 5000, check = 100, predicate?: (obj: T) => boolean): Promise {\n return await new Promise((resolve, reject) => {\n let interval: NodeJS.Timeout | null = null;\n\n const intervalCheck = () => {\n const result = condition();\n if (predicate ? predicate(result) : result) {\n resolve(result);\n if (interval) clearInterval(interval);\n }\n };\n\n if (timeout) {\n setTimeout(() => {\n clearInterval(interval!);\n reject(`TIMEOUT waiting for ${condition?.toString()}: ${Error().stack}`);\n }, timeout);\n\n interval = setInterval(intervalCheck, check);\n }\n \n // Run the check once first, this speeds it up a lot\n intervalCheck();\n });\n}\n\nexport function objectToURI(url: string, data: T, includeQuestionMark: boolean): string {\n let counter = 0;\n for (const key in data) {\n const seperator = (url.includes(\"?\") || counter > 0) ? \"&\" : (includeQuestionMark ? \"?\" : \"\");\n const value = (typeof(data[key]) === \"string\") ? data[key] as unknown as string : JSON.stringify(data[key]);\n url += seperator + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n\n counter++;\n }\n\n return url;\n}\n\nexport class PromiseTimeoutError extends Error {\n promise?: Promise;\n\n constructor(promise?: Promise) {\n super(\"Promise timed out\");\n\n this.promise = promise;\n }\n}\n\nexport function timeoutPomise(timeout?: number): Promise {\n return new Promise((resolve, reject) => {\n if (timeout) {\n setTimeout(() => {\n reject(new PromiseTimeoutError());\n }, timeout);\n }\n });\n}\n\n/**\n* web-extensions\n*/\nexport function isFirefoxOrSafari(): boolean {\n // @ts-ignore\n return typeof(browser) !== \"undefined\";\n}\n\nlet cachedUserAgent: string;\nexport function extensionUserAgent(): string {\n cachedUserAgent ??= `${chrome.runtime.id}/v${chrome.runtime.getManifest().version}`;\n return cachedUserAgent;\n}\n","import { DataCache } from \"./cache\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { isSafari } from \"./config\";\nimport { onMobile } from \"./pageInfo\";\nimport { ChannelID, VideoID } from \"./video\";\n\nexport interface PlaybackUrl {\n url: string;\n width: number;\n height: number;\n}\n\ninterface VideoMetadata {\n playbackUrls: PlaybackUrl[];\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n}\n\nexport interface Format {\n url: string;\n width: number;\n height: number;\n}\n\ninterface InnerTubeFormat {\n url: string;\n width: number;\n height: number;\n mimeType: string;\n}\n\n\ninterface InnerTubeMetadataBase {\n duration: number | null;\n channelID: ChannelID | null;\n author: string | null;\n isLive: boolean | null;\n isUpcoming: boolean | null;\n playabilityStatus?: string;\n}\n\ninterface InnerTubeMetadata extends InnerTubeMetadataBase {\n formats: InnerTubeFormat[];\n}\n\ninterface VideoMetadata extends InnerTubeMetadataBase {\n playbackUrls: PlaybackUrl[];\n}\n\nexport interface ChannelInfo {\n channelID: string | null;\n author: string | null;\n}\n\nexport const videoMetadataCache = new DataCache(() => ({\n playbackUrls: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n}));\n\ninterface MetadataWaiting {\n videoID: VideoID;\n callbacks: Array<(metadata: VideoMetadata) => void>;\n}\nconst waitingForMetadata: MetadataWaiting[] = [];\nlet claimMainMetadataFetcher = false;\n\nexport function setupMetadataOnRecieve() {\n // Try to claim fetcher for channel data\n const documentScript = document.getElementById(\"sponsorblock-document-script\");\n if (documentScript) {\n const claim = documentScript.getAttribute(\"claim-id\");\n if (!claim || claim === chrome.runtime.id) {\n claimMainMetadataFetcher = true;\n \n if (!claim) {\n documentScript.setAttribute(\"claim-id\", chrome.runtime.id);\n }\n }\n }\n\n const onMessage = (event: MessageEvent) => {\n if (event.data?.type === \"maze-utils:video-metadata-received\") {\n const data = event.data;\n if (data.videoID && data.metadata && !videoMetadataCache.getFromCache(data.videoID)) {\n const metadata = data.metadata as VideoMetadata;\n const cachedData = videoMetadataCache.setupCache(data.videoID);\n \n cachedData.playbackUrls = metadata.playbackUrls;\n cachedData.duration = metadata.duration;\n cachedData.channelID = metadata.channelID;\n cachedData.author = metadata.author;\n cachedData.isLive = metadata.isLive;\n cachedData.isUpcoming = metadata.isUpcoming;\n\n const index = waitingForMetadata.findIndex((item) => item.videoID === data.videoID);\n if (index !== -1) {\n waitingForMetadata[index].callbacks.forEach((callback) => {\n callback(data.metadata);\n });\n \n waitingForMetadata.splice(index, 1);\n }\n }\n\n } else if (event.data?.type === \"maze-utils:video-metadata-requested\" && !(event.data.videoID in activeRequests)) {\n waitingForMetadata.push({\n videoID: event.data.videoID,\n callbacks: []\n });\n }\n };\n\n window.addEventListener(\"message\", onMessage);\n\n addCleanupListener(() => {\n window.removeEventListener(\"message\", onMessage);\n });\n}\n\nconst activeRequests: Record> = {};\nexport async function fetchVideoMetadata(videoID: VideoID, ignoreCache: boolean, waitForOtherScript = false): Promise {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n if (!ignoreCache && cachedData && cachedData.duration !== null) {\n return cachedData;\n }\n\n let waiting = waitingForMetadata.find((item) => item.videoID === videoID);\n if (waiting || waitForOtherScript) {\n return new Promise((resolve) => {\n if (!waiting) {\n waiting = {\n videoID,\n callbacks: []\n };\n\n waitingForMetadata.push(waiting);\n }\n\n waiting.callbacks.push((metadata) => {\n videoMetadataCache.cacheUsed(videoID);\n resolve(metadata);\n });\n });\n }\n\n try {\n const result = activeRequests[videoID] ?? (async () => {\n window.postMessage({\n type: \"maze-utils:video-metadata-requested\",\n videoID\n }, \"*\");\n\n let metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n // Don't retry for LOGIN_REQUIRED, they will never have urls\n if (!onMobile() && (!metadata \n || (metadata.formats.length === 0 && metadata.playabilityStatus !== \"LOGIN_REQUIRED\"))) metadata = await fetchVideoDataDesktopClient(videoID).catch(() => null);\n\n if (metadata) {\n let formats = metadata.formats;\n if (isSafari()) {\n formats = formats.filter((format) => format.mimeType.includes(\"avc\"));\n }\n\n const containsVp9 = formats.some((format) => format.mimeType.includes(\"vp9\"));\n // Should already be reverse sorted, but reverse sort just incase (not slow if it is correct already)\n const sorted = formats\n .reverse()\n .filter((format) => format.width && format.height && (!containsVp9 || format.mimeType.includes(\"vp9\")))\n .sort((a, b) => a?.width - b?.width);\n\n const videoCache = videoMetadataCache.setupCache(videoID);\n videoCache.playbackUrls = sorted.map((format) => ({\n url: format.url,\n width: format.width,\n height: format.height\n }));\n videoCache.duration = metadata.duration;\n videoCache.channelID = metadata.channelID;\n videoCache.author = metadata.author;\n videoCache.isLive = metadata.isLive;\n videoCache.isUpcoming = metadata.isUpcoming;\n\n // Remove this from active requests after it's been dealt with in other places\n setTimeout(() => delete activeRequests[videoID], 500);\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: videoCache\n }, \"*\");\n\n return videoCache;\n }\n\n window.postMessage({\n type: \"maze-utils:video-metadata-received\",\n videoID,\n metadata: {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }\n }, \"*\");\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n }; \n })();\n\n activeRequests[videoID] = result;\n return await result;\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n duration: null,\n channelID: null,\n author: null,\n playbackUrls: [],\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataAndroidClient(videoID: VideoID): Promise {\n const innertubeDetails = {\n apiKey: \"AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w\",\n clientVersion: \"17.31.35\",\n clientName: \"3\",\n androidVersion: \"12\"\n }\n\n const context = {\n client: {\n clientName: \"ANDROID\",\n clientVersion: innertubeDetails.clientVersion,\n androidSdkVersion: 31,\n osName: \"Android\",\n osVersion: innertubeDetails.androidVersion,\n hl: \"en\",\n gl: \"US\"\n }\n }\n\n const url = `https://www.youtube.com/youtubei/v1/player?key=${innertubeDetails.apiKey}`;\n const data = {\n context: context,\n videoId: videoID,\n params: \"8AEB\",\n playbackContext: {\n contentPlaybackContext: {\n html5Preference: \"HTML5_PREF_WANTS\"\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n \"X-Youtube-Client-Name\": innertubeDetails.clientName,\n \"X-Youtube-Client-Version\": innertubeDetails.clientVersion,\n \"User-Agent\": `com.google.android.youtube/${innertubeDetails.clientVersion} (Linux; U; Android ${innertubeDetails.androidVersion}) gzip`,\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n \"Accept-Language\": \"en-us,en;q=0.5\",\n \"Sec-Fetch-Mode\": \"navigate\",\n \"Connection\": \"close\"\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n if (formats) {\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function fetchVideoDataDesktopClient(videoID: VideoID): Promise {\n const url = \"https://www.youtube.com/youtubei/v1/player\";\n const data = {\n context: {\n client: {\n clientName: \"WEB\",\n clientVersion: \"2.20230327.07.00\"\n }\n },\n videoId: videoID\n };\n\n try {\n const result = await fetch(url, {\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n },\n method: \"POST\"\n });\n\n if (result.ok) {\n const response = await result.json();\n const newVideoID = response?.videoDetails?.videoId ?? null;\n if (newVideoID !== videoID) {\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n }\n\n const formats = response?.streamingData?.adaptiveFormats as InnerTubeFormat[] || [];\n const duration = response?.videoDetails?.lengthSeconds ? parseInt(response.videoDetails.lengthSeconds) : null;\n const channelId = response?.videoDetails?.channelId ?? null;\n const author = response?.videoDetails?.author ?? null;\n const isLive = response?.videoDetails?.isLive ?? null;\n const isUpcoming = response?.videoDetails?.isUpcoming ?? null;\n const playabilityStatus = response?.playabilityStatus?.status ?? null;\n\n return {\n formats,\n duration,\n channelID: channelId,\n author,\n isLive,\n isUpcoming,\n playabilityStatus\n };\n }\n\n } catch (e) { } //eslint-disable-line no-empty\n\n return {\n formats: [],\n duration: null,\n channelID: null,\n author: null,\n isLive: null,\n isUpcoming: null\n };\n}\n\nexport async function getPlaybackFormats(videoID: VideoID,\n width?: number, height?: number, ignoreCache = false): Promise {\n const formats = await fetchVideoMetadata(videoID, ignoreCache);\n\n if (width && height) {\n const bestFormat = formats?.playbackUrls?.find?.(f => f?.width >= width && f?.height >= height);\n\n if (bestFormat) {\n videoMetadataCache.cacheUsed(videoID);\n\n return bestFormat;\n }\n } else if (formats?.playbackUrls?.length > 0) {\n return formats[0];\n }\n\n return null;\n}\n\nexport async function getChannelID(videoID: VideoID, waitForOtherScript = false): Promise {\n const metadata = await fetchVideoMetadata(videoID, false, waitForOtherScript);\n\n if (metadata) {\n return {\n channelID: metadata.channelID,\n author: metadata.author\n };\n }\n\n return {\n channelID: null,\n author: null\n };\n}\n\nexport function getChannelIDSync(videoID: VideoID): ChannelInfo | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return {\n channelID: cachedData.channelID,\n author: cachedData.author\n };\n }\n\n return null;\n}\n\nexport async function isLiveOrUpcoming(videoID: VideoID): Promise {\n const data = await fetchVideoMetadata(videoID, false);\n if (data) {\n return data.isLive || data.isUpcoming;\n }\n\n return null;\n}\n\nexport function isLiveSync(videoID: VideoID): boolean | null {\n const cachedData = videoMetadataCache.getFromCache(videoID);\n\n if (cachedData) {\n return cachedData.isLive && !cachedData.isUpcoming;\n }\n\n return null;\n}\n\nexport function isMainMetadataFetcher(): boolean {\n return claimMainMetadataFetcher;\n}","export function onMobile() {\n return window.location.hostname === \"m.youtube.com\";\n}\n\nexport function onYouTubeCableTV() {\n return window.location.hostname === \"tv.youtube.com\";\n}\n\nexport function onVideoPage() {\n return !!document.URL.match(/\\/watch|\\/shorts|\\/live|\\/embed/);\n}","import { versionHigher } from \"./versionHigher\";\nimport { version } from \"./version.json\";\n\nexport function injectScript(src: string) {\n const docScript = document.createElement(\"script\");\n docScript.id = \"sponsorblock-document-script\";\n docScript.setAttribute(\"version\", version)\n docScript.innerHTML = src;\n\n const head = (document.head || document.documentElement);\n const existingScript = document.getElementById(\"sponsorblock-document-script\");\n const existingScriptVersion = existingScript?.getAttribute(\"version\");\n if (head && (!existingScript || versionHigher(version, existingScriptVersion ?? \"\"))) {\n if (existingScript) {\n docScript.setAttribute(\"teardown\", \"true\");\n existingScript.remove();\n }\n\n head.appendChild(docScript);\n }\n}","export function generateUserID(length = 36): string {\n const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n const cryptoFuncs = typeof window === \"undefined\" ? crypto : window.crypto;\n if (cryptoFuncs && cryptoFuncs.getRandomValues) {\n const values = new Uint32Array(length);\n cryptoFuncs.getRandomValues(values);\n for (let i = 0; i < length; i++) {\n result += charset[values[i] % charset.length];\n }\n return result;\n } else {\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n }\n}\n\nexport function localizeHtmlPage(): void {\n // Localize by replacing __MSG_***__ meta tags\n const localizedTitle = getLocalizedMessage(document.title);\n if (localizedTitle) document.title = localizedTitle;\n\n const body = document.querySelector(\".sponsorBlockPageBody\");\n const localizedMessage = getLocalizedMessage(body!.innerHTML.toString());\n if (localizedMessage) body!.innerHTML = localizedMessage;\n}\n\nexport function getLocalizedMessage(text: string): string | false {\n const valNewH = text.replace(/__MSG_(\\w+)__/g, function(match, v1) {\n return v1 ? chrome.i18n.getMessage(v1).replace(/\") : \"\";\n });\n\n if (valNewH != text) {\n return valNewH;\n } else {\n return false;\n }\n}","import { onMobile } from \"../../maze-utils/src/pageInfo\";\n\nexport function getThumbnailElements() {\n if (!onMobile()) {\n return [\n \"ytd-thumbnail\", \n \"ytd-playlist-thumbnail\",\n \"ytm-shorts-lockup-view-model\",\n \"yt-thumbnail-view-model\"\n ];\n } else {\n return [\n \".media-item-thumbnail-container\",\n \".video-thumbnail-container-compact\",\n \"ytm-thumbnail-cover\",\n \".video-thumbnail-container-vertical\",\n \"ytm-hero-playlist-thumbnail-renderer\",\n \"ytm-shorts-lockup-view-model\"\n ];\n }\n}\n\nexport function getThumbnailElementsToListenFor() {\n const results = getThumbnailElements();\n\n if (!onMobile()) {\n results.push(\"yt-lockup-view-model\");\n results.push(\"ytm-shorts-lockup-view-model-v2\");\n }\n\n return results;\n}\n\nexport function getThumbnailImageSelectors() {\n if (!onMobile()) {\n return \"ytd-thumbnail:not([hidden]) img, ytd-playlist-thumbnail yt-image:not(.blurred-image) img, yt-img-shadow.ytd-hero-playlist-thumbnail-renderer img, ytm-shorts-lockup-view-model img, yt-thumbnail-view-model img\";\n } else {\n return \"img.video-thumbnail-img, img.amsterdam-playlist-thumbnail, ytm-shorts-lockup-view-model img\";\n }\n}\n\nexport function getThumbnailLink(thumbnail: HTMLElement): HTMLElement | null {\n if (!onMobile()) {\n return thumbnail.querySelector(getThumbnailSelectors(\" a\"));\n } else {\n return thumbnail.querySelector([\n \"a.media-item-thumbnail-container\",\n \"ytm-channel-featured-video-renderer a\",\n \"a.compact-media-item-image\",\n \"a.reel-item-endpoint\",\n \".amsterdam-playlist-thumbnail-wrapper a\"\n ].join(\", \"));\n }\n}\n\nexport function getThumbnailBoxSelectors() {\n if (!onMobile()) {\n // Hero thumbnail appears as hidden even though it is not\n return getThumbnailSelectors(\":not([hidden])\", \".ytd-hero-playlist-thumbnail-renderer\");\n } else {\n return \".media-item-thumbnail-container\";\n }\n}\n\nexport function getThumbnailSelectors(...additionalSelectors: string[]) {\n if (additionalSelectors.length === 0) {\n additionalSelectors = [\"\"];\n }\n\n return getThumbnailElements().map((s) => additionalSelectors.map((selector) => `${s}${selector}`).join(\", \")).join(\", \");\n}","import { waitFor } from \".\";\nimport { addCleanupListener } from \"./cleanup\";\nimport { onMobile } from \"./pageInfo\";\nimport { getThumbnailLink, getThumbnailSelectors } from \"./thumbnail-selectors\";\nimport { isOnInvidious } from \"./video\";\n\nexport type ThumbnailListener = (newThumbnails: HTMLElement[]) => void;\n\nconst handledThumbnails = new Map();\nlet lastGarbageCollection = 0;\nlet thumbnailListener: ThumbnailListener | null = null;\nlet selector = getThumbnailSelectors();\nlet invidiousSelector = \"div.thumbnail\";\n\nexport function getThumbnailSelector(): string {\n return isOnInvidious() ? invidiousSelector : selector;\n}\n\nexport function setThumbnailListener(listener: ThumbnailListener, onInitialLoad: () => void,\n configReady: () => boolean, selectorParam?: string,\n invidiousSelectorParam?: string): void {\n thumbnailListener = listener;\n if (selectorParam) selector = selectorParam;\n if (invidiousSelectorParam) invidiousSelector = invidiousSelectorParam;\n\n const onLoad = () => {\n onInitialLoad?.();\n\n // Label thumbnails on load if on Invidious (wait for variable initialization before checking)\n void waitFor(() => isOnInvidious() !== null).then(() => {\n if (isOnInvidious()) newThumbnails();\n });\n };\n\n if (document.readyState === \"complete\") {\n onLoad();\n } else {\n window.addEventListener(\"load\", onLoad);\n }\n\n void waitFor(() => configReady(), 5000, 10).then(() => {\n newThumbnails();\n });\n\n if (onMobile()) {\n const eventListener = () => mobileNewThumbnailHandler()\n window.addEventListener(\"touchstart\", eventListener);\n window.addEventListener(\"touchend\", eventListener);\n window.addEventListener(\"scrollend\", eventListener);\n window.addEventListener(\"state-navigateend\", eventListener);\n\n addCleanupListener(() => {\n window.removeEventListener(\"touchstart\", eventListener);\n window.removeEventListener(\"touchend\", eventListener);\n window.removeEventListener(\"scrollend\", eventListener);\n window.removeEventListener(\"state-navigateend\", eventListener);\n });\n }\n\n addCleanupListener(() => {\n for (const handledThumbnail of handledThumbnails) {\n handledThumbnail[1].disconnect();\n }\n\n handledThumbnails.clear();\n });\n}\n\nlet lastThumbnailCheck = 0;\nlet thumbnailCheckTimeout: NodeJS.Timer | null = null;\n\nexport function newThumbnails() {\n if (performance.now() - lastThumbnailCheck < 50 || thumbnailCheckTimeout) {\n if (thumbnailCheckTimeout) {\n return;\n } else {\n thumbnailCheckTimeout = setTimeout(() => {\n thumbnailCheckTimeout = null;\n newThumbnails();\n }, 50);\n return;\n }\n }\n\n lastThumbnailCheck = performance.now();\n\n const notNewThumbnails = handledThumbnails.keys();\n\n const thumbnails = document.querySelectorAll(getThumbnailSelector()) as NodeListOf;\n const newThumbnailsFound: HTMLElement[] = [];\n for (const thumbnail of thumbnails) {\n if (!handledThumbnails.has(thumbnail)) {\n newThumbnailsFound.push(thumbnail);\n \n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"href\") {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n handledThumbnails.set(thumbnail, observer);\n\n const link = getThumbnailLink(thumbnail);\n if (link) observer.observe(link, { attributes: true });\n\n // For channel pages where video thumbnails become shorts thumbnails\n const observer2 = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === \"childList\" \n && (mutation.addedNodes[0]?.nodeName.toLowerCase().includes(\"shorts\"))\n || mutation.previousSibling?.nodeName.toLowerCase().includes(\"shorts\")) {\n thumbnailListener?.([thumbnail]);\n break;\n }\n }\n });\n\n const content = thumbnail.querySelector(\"#content\");\n if (content) observer2.observe(content, { childList: true });\n }\n }\n\n thumbnailListener?.(newThumbnailsFound);\n\n if (performance.now() - lastGarbageCollection > 5000) {\n // Clear old ones (some will come back if they are still on the page)\n // But are handled by happening to be when new ones are added too\n for (const thumbnail of notNewThumbnails) {\n if (document.body && !document.body.contains(thumbnail)) {\n const observer = handledThumbnails.get(thumbnail);\n observer?.disconnect();\n handledThumbnails.delete(thumbnail);\n }\n }\n\n lastGarbageCollection = performance.now();\n }\n}\n\nexport function updateAll(): void {\n if (thumbnailListener) thumbnailListener([...handledThumbnails.keys()]);\n}\n\nconst mobileCheckTimes = [100, 200, 300, 400, 500, 750, 1000, 1500, 2500, 5000, 10000];\nlet mobileTimeout: NodeJS.Timer | null = null;\n\n/**\n * Will check multiple times up to 5 seconds in the future\n */\nfunction mobileNewThumbnailHandler(index = 0) {\n if (index >= mobileCheckTimes.length) return;\n if (mobileTimeout) clearTimeout(mobileTimeout);\n\n const timeout = mobileCheckTimes[index] - (index > 0 ? mobileCheckTimes[index - 1] : 0);\n mobileTimeout = setTimeout(() => {\n newThumbnails();\n mobileNewThumbnailHandler(index + 1);\n }, timeout);\n\n newThumbnails();\n}","export function versionHigher(newVersion: string, oldVersion: string): boolean {\n const newVersionParts = newVersion.split(\".\");\n const oldVersionParts = oldVersion.split(\".\");\n if (newVersionParts.length !== oldVersionParts.length) return true;\n\n for (let i = 0; i < newVersionParts.length; i++) {\n const newVersionPart = parseInt(newVersionParts[i]);\n const oldVersionPart = parseInt(oldVersionParts[i]);\n\n if (newVersionPart > oldVersionPart) {\n return true;\n } else if (newVersionPart < oldVersionPart) {\n return false;\n }\n }\n\n return false;\n}","import { waitFor } from \".\";\nimport { LocalStorage, ProtoConfig, SyncStorage, isSafari } from \"./config\";\nimport { getElement, isVisible, waitForElement } from \"./dom\";\nimport { newThumbnails } from \"./thumbnailManagement\";\nimport { YT_DOMAINS } from \"./const\";\nimport { addCleanupListener, setupCleanupListener } from \"./cleanup\";\nimport { injectScript } from \"./scriptInjector\";\nimport { getChannelID, getChannelIDSync, isMainMetadataFetcher, setupMetadataOnRecieve } from \"./metadataFetcher\";\n\nexport enum PageType {\n Unknown = \"unknown\",\n Shorts = \"shorts\",\n Watch = \"watch\",\n Search = \"search\",\n Browse = \"browse\",\n Channel = \"channel\",\n Embed = \"embed\"\n}\nexport type VideoID = string & { __videoID: never };\nexport type ChannelID = string & { __channelID: never };\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\nexport interface ChannelIDInfo {\n id: ChannelID | null;\n author: string | null;\n status: ChannelIDStatus;\n}\nexport interface ParsedVideoURL {\n videoID: VideoID | null;\n onInvidious: boolean;\n onMobileYouTube: boolean;\n onYTTV: boolean;\n onYouTubeMusic: boolean;\n callLater: boolean;\n}\n\ninterface VideoModuleParams {\n videoIDChange: (videoID: VideoID) => void;\n channelIDChange: (channelIDInfo: ChannelIDInfo) => void;\n videoElementChange?: (newVideo: boolean, video: HTMLVideoElement | null) => void;\n playerInit?: () => void;\n updatePlayerBar?: () => void;\n resetValues: () => void;\n windowListenerHandler?: (event: MessageEvent) => void;\n newVideosLoaded?: (videoIDs: VideoID[]) => void; // Used to pre-cache data for videos\n onNavigateToChannel?: () => void;\n documentScript: string;\n allowClipPage?: boolean;\n}\n\nconst embedTitleSelector = \"a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\nconst channelTrailerTitleSelector = \"ytd-channel-video-player-renderer a.ytp-title-link[data-sessionlink='feature=player-title']:not(.cbCustomTitle)\";\n\nlet video: HTMLVideoElement | null = null;\nlet videoWidth: string | null = null;\nlet videoMutationObserver: MutationObserver | null = null;\nlet videoMutationListenerElement: HTMLElement | null = null;\n// What videos have run through setup so far\nconst videosSetup: HTMLVideoElement[] = [];\nlet waitingForNewVideo = false;\n\nlet isAdPlaying = false;\n// if video is live or premiere\nlet isLivePremiere: boolean\n\nlet videoID: VideoID | null = null;\nlet onInvidious: boolean | null = null;\nlet onMobileYouTube = false;\nlet onYTTV = false;\nlet onYouTubeMusic = false;\nlet pageType: PageType = PageType.Unknown;\nlet channelIDInfo: ChannelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n};\nlet waitingForChannelID = false;\nlet lastNonInlineVideoID: VideoID | null = null;\nlet isInline = false;\n// For server-side rendered ads\nlet adDuration = 0;\n// If server-side ad couldn't be removed from current time properly\nlet currentTimeWrong = false;\n\nlet params: VideoModuleParams = {\n videoIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n channelIDChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n videoElementChange: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n playerInit: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n resetValues: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n windowListenerHandler: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n newVideosLoaded: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n onNavigateToChannel: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function\n documentScript: \"\",\n allowClipPage: false\n};\nlet getConfig: () => ProtoConfig;\nexport function setupVideoModule(moduleParams: VideoModuleParams, config: () => ProtoConfig) {\n params = moduleParams;\n getConfig = config;\n\n setupCleanupListener();\n\n addPageListeners();\n\n // Direct Links after the config is loaded\n void waitFor(() => getConfig().isReady(), 1000, 1).then(() => videoIDChange(getYouTubeVideoID()));\n\n // If on embed, or on channel page and the extension just reloaded\n if (YT_DOMAINS.includes(location.host) \n && (document.URL.includes(\"/embed/\") || (document.readyState === \"complete\" && isOnChannelPage()))) {\n waitForElement(isOnChannelPage() ? channelTrailerTitleSelector : embedTitleSelector)\n .then((e) => waitFor(() => e.getAttribute(\"href\")))\n .then(() => videoIDChange(getYouTubeVideoID()))\n // Ignore if not an embed\n .catch(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function\n }\n\n // Register listener for URL change via Navigation API\n const navigationApiAvailable = \"navigation\" in window;\n if (navigationApiAvailable) {\n // TODO: Remove type cast once type declarations are updated\n const navigationListener = (e) =>\n void videoIDChange(getYouTubeVideoID((e as unknown as Record>).destination.url));\n (window as unknown as { navigation: EventTarget }).navigation.addEventListener(\"navigate\", navigationListener);\n\n addCleanupListener(() => {\n (window as unknown as { navigation: EventTarget }).navigation.removeEventListener(\"navigate\", navigationListener);\n });\n }\n // Record availability of Navigation API\n void waitFor(() => config().local !== null).then(() => {\n if (config().local!.navigationApiAvailable !== navigationApiAvailable) {\n config().local!.navigationApiAvailable = navigationApiAvailable;\n config().forceLocalUpdate(\"navigationApiAvailable\");\n }\n });\n\n setupVideoMutationListener();\n\n addCleanupListener(() => {\n if (videoMutationObserver) {\n videoMutationObserver.disconnect();\n videoMutationObserver = null;\n }\n });\n}\n\nexport async function checkIfNewVideoID(): Promise {\n const id = getYouTubeVideoID();\n\n if (id === videoID) return false;\n return await videoIDChange(id);\n}\n\nexport async function checkVideoIDChange(): Promise {\n const id = getYouTubeVideoID();\n \n return await videoIDChange(id);\n}\n\nexport async function triggerVideoIDChange(id: VideoID): Promise {\n return await videoIDChange(id);\n}\n\nasync function videoIDChange(id: VideoID | null, isInlineParam = false): Promise {\n // don't switch to invalid value\n if (!id && videoID &&\n (params.allowClipPage || !document?.URL?.includes(\"youtube.com/clip/\"))) {\n return false;\n }\n\n if (isInlineParam && id) {\n setTimeout(() => void refreshVideoAttachments(), 200);\n setTimeout(() => void refreshVideoAttachments(), 1000);\n }\n\n //if the id has not changed return unless the video element has changed\n if (videoID === id && (isVisible(video) || !video)) {\n if (isOnChannelPage()) {\n if (videoID) {\n params.onNavigateToChannel?.();\n }\n }\n return false;\n }\n\n // Make sure the video is still visible\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n\n resetValues();\n videoID = id;\n isInline = isInlineParam;\n\n\t//id is not valid\n if (!id) return false;\n\n // Wait for options to be ready\n await waitFor(() => getConfig().isReady(), 5000, 1);\n\n // Update whitelist data when the video data is loaded\n void whitelistCheck(id);\n\n params.videoIDChange(id);\n\n return true;\n}\n\nfunction resetValues() {\n params.resetValues();\n\n videoID = null;\n pageType = PageType.Unknown;\n channelIDInfo = {\n status: ChannelIDStatus.Fetching,\n id: null,\n author: null\n };\n isLivePremiere = false;\n isInline = false;\n adDuration = 0;\n currentTimeWrong = false;\n\n isAdPlaying = false;\n\n // Reset the last media session link\n window.postMessage({\n source: \"sb-reset-media-session-link\",\n videoID: null\n }, \"/\");\n}\n\nexport function getYouTubeVideoID(url?: string): VideoID | null {\n url ||= document?.URL;\n // pageType shortcut\n if (pageType === PageType.Channel) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // clips should never skip, going from clip to full video has no indications.\n if (!params.allowClipPage && url.includes(\"youtube.com/clip/\")) return null;\n // skip to document and don't hide if on /embed/\n if (url.includes(\"/embed/\") && url.includes(\"youtube.com\")) return getYouTubeVideoIDFromDocument(false, PageType.Embed);\n // skip to URL if matches youtube watch or invidious or matches youtube pattern\n if ((!url.includes(\"youtube.com\")) || url.match(/\\/watch|\\/shorts\\/|playlist|\\/live\\//)) return getYouTubeVideoIDFromURL(url);\n // skip to document if matches pattern\n if (isOnChannelPage()) return getYouTubeVideoIDFromDocument(true, PageType.Channel);\n // not sure, try URL then document\n return getYouTubeVideoIDFromURL(url) || getYouTubeVideoIDFromDocument(false);\n}\n\nfunction getYouTubeVideoIDFromDocument(hideIcon = true, pageHint = PageType.Watch): VideoID | null {\n // get ID from document (channel trailer / embedded playlist)\n const element = pageHint === PageType.Embed ? document.querySelector(embedTitleSelector)\n : (pageHint === PageType.Channel ? document.querySelector(channelTrailerTitleSelector)\n : video?.parentElement?.parentElement?.querySelector(embedTitleSelector));\n const videoURL = element?.getAttribute(\"href\");\n if (videoURL) {\n onInvidious = hideIcon;\n // if href found, hint was correct\n pageType = pageHint;\n return getYouTubeVideoIDFromURL(videoURL);\n } else {\n return null;\n }\n}\n\n/**\n * Parse with side effects\n */\nfunction getYouTubeVideoIDFromURL(url: string): VideoID | null {\n const result = parseYouTubeVideoIDFromURL(url);\n\n if (result.callLater) {\n // Call this later, in case this is an Invidious tab\n void waitFor(() => getConfig().isReady()).then(() => videoIDChange(getYouTubeVideoIDFromURL(url)));\n\n return null;\n }\n\n onInvidious = result.onInvidious;\n onMobileYouTube = result.onMobileYouTube;\n onYTTV = result.onYTTV;\n onYouTubeMusic = result.onYouTubeMusic;\n\n return result.videoID;\n}\n\n/**\n * Parse without side effects\n */\nexport function parseYouTubeVideoIDFromURL(url: string): ParsedVideoURL {\n if (url.startsWith(\"https://www.youtube.com/tv#/\")) url = url.replace(\"#\", \"\");\n if (url.startsWith(\"https://www.youtube.com/tv?\")) url = url.replace(/\\?[^#]+#/, \"\");\n let onInvidious = false;\n let onMobileYouTube = false;\n let onYTTV = false;\n let onYouTubeMusic = false;\n\n //Attempt to parse url\n let urlObject: URL | null = null;\n try {\n urlObject = new URL(url);\n } catch (e) {\n console.error(\"[SB] Unable to parse URL: \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n\n // Check if valid hostname\n if (YT_DOMAINS.includes(urlObject.host)) {\n // on YouTube\n if (urlObject.host === \"m.youtube.com\") onMobileYouTube = true;\n if (urlObject.host === \"tv.youtube.com\") onYTTV = true;\n if (urlObject.host === \"music.youtube.com\") onYouTubeMusic = true;\n onInvidious = false;\n } else if (getConfig().isReady() && getConfig().config!.invidiousInstances?.includes(urlObject.hostname)) {\n onInvidious = true;\n } else { // fail to invidious\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: !getConfig().isReady() // Might be an Invidious tab\n };\n }\n\n //Get ID from searchParam\n if (urlObject.searchParams.has(\"v\") && [\"/watch\", \"/watch/\"].includes(urlObject.pathname) || urlObject.pathname.startsWith(\"/tv/watch\")) {\n const id = urlObject.searchParams.get(\"v\");\n return {\n videoID: id?.length == 11 ? id as VideoID : null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } else if (urlObject.pathname.match(/^\\/embed\\/|^\\/shorts\\/|^\\/live\\//) || (urlObject.host === \"tv.youtube.com\" && urlObject.pathname.startsWith(\"/watch/\"))) {\n try {\n const id = urlObject.pathname.split(\"/\")[2]\n if (id?.length >= 11 ) return {\n videoID: id.slice(0, 11) as VideoID,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n } catch (e) {\n console.error(\"[SB] Video ID not valid for \" + url);\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n }\n }\n\n return {\n videoID: null,\n onInvidious,\n onMobileYouTube,\n onYTTV,\n onYouTubeMusic,\n callLater: false\n };\n}\n\n//checks if this channel is whitelisted, should be done only after the channelID has been loaded\nexport async function whitelistCheck(videoID: VideoID) {\n try {\n waitingForChannelID = true;\n \n const channelIDPromises = [\n waitFor(() => channelIDInfo.status === ChannelIDStatus.Found, 6000, 20),\n getChannelID(videoID, !isMainMetadataFetcher())\n ];\n\n await Promise.race(channelIDPromises);\n\n if (channelIDInfo.status !== ChannelIDStatus.Found) {\n const channelInfo = getChannelIDSync(videoID);\n\n if (channelInfo) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelInfo.channelID as ChannelID,\n author: channelInfo.author\n }\n }\n }\n\n // If found, continue on, it was set by the listener\n } catch (e) {\n const videoButtonHref = (document.querySelector(\"#social-links yt-button-shape a\"))?.getAttribute(\"href\")\n let channelIDFallback: string | null | undefined = null;\n if (videoButtonHref && videoButtonHref.includes(\"/channel/\")) {\n channelIDFallback = videoButtonHref.match(/\\/channel\\/(UC[a-zA-Z0-9_-]{22})/)?.[1] as ChannelID;\n }\n\n // Try fallback\n channelIDFallback ??= (document.querySelector(\"a.ytd-video-owner-renderer\") // YouTube\n ?? document.querySelector(\"a.ytp-title-channel-logo\") // YouTube Embed\n ?? document.querySelector(\".channel-profile #channel-name\")?.parentElement?.parentElement // Invidious\n ?? document.querySelector(\"a.slim-owner-icon-and-title\")) // Mobile YouTube\n ?.getAttribute(\"href\")?.match(/\\/(?:(?:channel|c|user|)\\/|@)(UC[a-zA-Z0-9_-]{22}|[a-zA-Z0-9_-]+)/)?.[1];\n \n const authorFallback = (document.querySelector(\"ytd-channel-name a.yt-formatted-string\") as HTMLElement)?.innerText\n\n if (channelIDFallback) {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: channelIDFallback as ChannelID,\n author: authorFallback\n };\n } else {\n channelIDInfo = {\n status: ChannelIDStatus.Failed,\n id: null,\n author: null\n };\n }\n }\n\n waitingForChannelID = false;\n params.channelIDChange(channelIDInfo);\n}\n\nlet lastMutationListenerCheck = 0;\nlet checkTimeout: NodeJS.Timeout | null = null;\nfunction setupVideoMutationListener() {\n if (!onInvidious \n && (videoMutationObserver === null || !isVisible(videoMutationListenerElement!.parentElement))) {\n\n // Delay it if it was checked recently\n if (checkTimeout) clearTimeout(checkTimeout);\n if (Date.now() - lastMutationListenerCheck < 2000) {\n checkTimeout = setTimeout(setupVideoMutationListener, Math.max(1000, Date.now() - lastMutationListenerCheck));\n return;\n }\n\n lastMutationListenerCheck = Date.now();\n const mainVideoObject = getElement(\"#movie_player\", true);\n if (!mainVideoObject) return;\n\n const videoContainer = mainVideoObject.querySelector(\".html5-video-container\") as HTMLElement;\n if (!videoContainer) return;\n\n if (videoMutationObserver) videoMutationObserver.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n videoMutationObserver = new MutationObserver(refreshVideoAttachments);\n videoMutationListenerElement = videoContainer;\n\n videoMutationObserver.observe(videoContainer, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }\n}\n\nconst waitingForVideoListeners: Array<(video: HTMLVideoElement) => void> = [];\nexport function waitForVideo(): Promise {\n if (video) return Promise.resolve(video);\n\n return new Promise((resolve) => {\n waitingForVideoListeners.push(resolve);\n });\n}\n\n// Used only for embeds to wait until the url changes\nlet embedLastUrl = \"\";\nlet waitingForEmbed = false;\n\nasync function refreshVideoAttachments(): Promise {\n if (waitingForNewVideo) return;\n\n if (!isVisible(video) && !isVinegarActive()) video = null;\n\n waitingForNewVideo = true;\n // Compatibility for Vinegar extension\n let newVideo = (isSafari() && document.querySelector('video[vinegared=\"true\"]') as HTMLVideoElement) \n || await waitForElement(\"video\", true) as HTMLVideoElement;\n let durationChange = false;\n\n // To handle the case with a paused miniplayer while playing a hover preview\n const isOnMiniplayer = !!document.querySelector(\".miniplayer video\");\n if (isOnMiniplayer && newVideo) {\n const possibleVideos = [...document.querySelectorAll(\"video\")].filter((v) => isVisible(v));\n if (possibleVideos.length > 1) {\n const oldDuration = newVideo.duration;\n const nonMiniplayerVideo = possibleVideos.find((v) => !v.closest(\".miniplayer\")) as HTMLVideoElement;\n if (nonMiniplayerVideo) newVideo = nonMiniplayerVideo;\n\n if (isNaN(newVideo.duration)) {\n await waitFor(() => !!newVideo.duration, 5000, 50);\n }\n\n durationChange = oldDuration !== newVideo.duration;\n }\n }\n\n waitingForNewVideo = false;\n\n // Width used because sometimes video element is copied to a new place\n if (video === newVideo && videoWidth === newVideo.style.width && !durationChange) return;\n\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n waitingForVideoListeners.forEach((l) => l(newVideo));\n waitingForVideoListeners.length = 0;\n\n setupVideoMutationListener();\n\n if (document.URL.includes(\"/embed/\")) {\n if (waitingForEmbed) {\n return;\n }\n waitingForEmbed = true;\n\n const waiting = waitForElement(embedTitleSelector)\n .then((e) => waitFor(() => e, undefined, undefined, (e) => e.getAttribute(\"href\") !== embedLastUrl \n && !!e.getAttribute(\"href\") && !!e.textContent));\n\n void waiting.catch(() => waitingForEmbed = false);\n void waiting.then((e) => embedLastUrl = e.getAttribute(\"href\")!)\n .then(() => waitingForEmbed = false)\n .then(() => videoIDChange(getYouTubeVideoID()));\n } else {\n void videoIDChange(getYouTubeVideoID());\n }\n}\n\n/**\n * To handle compatibility with the Vinegar extension on Safari\n */\nfunction isVinegarActive(): boolean {\n return isSafari() && !!document.querySelector('video[vinegared=\"true\"]');\n}\n\nexport function triggerVideoElementChange(newVideo: HTMLVideoElement): void {\n video = newVideo;\n videoWidth = newVideo.style.width;\n const isNewVideo = !videosSetup.includes(video);\n\n if (isNewVideo) {\n videosSetup.push(video);\n }\n\n params.videoElementChange?.(isNewVideo, video);\n}\n\nfunction windowListenerHandler(event: MessageEvent): void {\n const data = event.data;\n const dataType = data.type;\n\n if (data.source !== \"sponsorblock\"\n || (!params.allowClipPage && document?.URL?.includes(\"youtube.com/clip/\"))) return;\n\n if (dataType === \"navigation\") {\n newThumbnails();\n }\n\n if (dataType === \"navigation\" && data.videoID) {\n pageType = data.pageType;\n\n if (data.channelID) {\n channelIDInfo = {\n id: data.channelID,\n author: data.channelTitle,\n status: ChannelIDStatus.Found\n };\n\n if (!waitingForChannelID) {\n void whitelistCheck(data.videoID);\n }\n }\n\n void videoIDChange(data.videoID);\n } else if (dataType === \"ad\") {\n if (isAdPlaying != data.playing) {\n isAdPlaying = data.playing\n \n params.updatePlayerBar?.();\n }\n } else if (dataType === \"data\" && data.videoID) {\n if (!data.isInline) {\n lastNonInlineVideoID = data.videoID;\n }\n\n void videoIDChange(data.videoID, data.isInline);\n\n isLivePremiere = data.isLive || data.isPremiere\n } else if (dataType === \"newElement\") {\n newThumbnails();\n } else if (dataType === \"videoIDsLoaded\") {\n params.newVideosLoaded?.(data.videoIDs);\n } else if (dataType === \"adDuration\") {\n adDuration = data.duration;\n } else if (dataType === \"currentTimeWrong\") {\n currentTimeWrong = true;\n\n alert(`${chrome.i18n.getMessage(\"submissionFailedServerSideAds\")}\\n\\nInclude the following:\\n${data.playerTime}\\n${data.expectedTime}`);\n }\n\n params.windowListenerHandler?.(event);\n}\n\nfunction addPageListeners(): void {\n const refreshListeners = () => {\n if (!isVisible(video)) {\n void refreshVideoAttachments();\n }\n };\n\n if (params.documentScript) {\n injectScript(params.documentScript);\n }\n\n document.addEventListener(\"yt-navigate-finish\", refreshListeners);\n // piped player init\n const playerInitListener = () => {\n if (!document.querySelector('meta[property=\"og:title\"][content=\"Piped\"]')) return;\n params.playerInit?.();\n };\n window.addEventListener(\"playerInit\", playerInitListener);\n window.addEventListener(\"message\", windowListenerHandler);\n\n addCleanupListener(() => {\n document.removeEventListener(\"yt-navigate-finish\", refreshListeners);\n window.removeEventListener(\"playerInit\", playerInitListener);\n window.removeEventListener(\"message\", windowListenerHandler);\n });\n\n setupMetadataOnRecieve();\n}\n\nexport async function extractVideoID(link: HTMLAnchorElement) {\n const videoIDRegex = link.href?.match?.(/(?:\\?|&)v=(\\S{11})|\\/shorts\\/(\\S{11})/);\n let videoID = (videoIDRegex?.[1] || videoIDRegex?.[2]) as VideoID;\n\n if (!videoID) {\n const imgBackground = link.querySelector(\".ytp-tooltip-bg\") as HTMLElement;\n if (imgBackground) {\n const href = imgBackground.style.backgroundImage?.match(/url\\(\"(.+)\"\\)/)?.[1];\n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n } else {\n const image = link.querySelector(`yt-image img, img.video-thumbnail-img, yt-img-shadow:not([id=\"avatar\"]) img`) as HTMLImageElement;\n if (image) {\n let href = image.getAttribute(\"src\");\n if (!href) {\n // wait source to be setup\n await waitForImageSrc(image);\n href = image.getAttribute(\"src\");\n }\n \n if (href) {\n videoID = href.match(/\\/vi\\/(\\S{11})/)?.[1] as VideoID;\n }\n }\n }\n }\n\n return videoID;\n}\n\nconst imagesWaitingFor = new Map>();\nfunction waitForImageSrc(image: HTMLImageElement): Promise {\n const existingPromise = imagesWaitingFor.get(image);\n if (existingPromise === undefined) {\n const result = new Promise((resolve) => {\n const observer = new MutationObserver((mutations) => {\n if (!chrome.runtime?.id) return;\n\n for (const mutation of mutations) {\n if (mutation.attributeName === \"src\"\n && image.src !== \"\") {\n observer.disconnect();\n resolve();\n\n imagesWaitingFor.delete(image);\n break;\n }\n }\n });\n\n observer.observe(image, { attributes: true });\n });\n\n imagesWaitingFor.set(image, result);\n\n return result;\n }\n\n return existingPromise;\n}\n\nlet lastRefresh = 0;\nexport function getVideo(): HTMLVideoElement | null {\n setupVideoMutationListener();\n\n if ((!isVisible(video)\n || (onMobileYouTube && video && isNaN(video.duration)))\n && Date.now() - lastRefresh > 500) {\n lastRefresh = Date.now();\n if (!isVisible(video) && !isVinegarActive()) video = null;\n void refreshVideoAttachments();\n }\n\n return video;\n}\n\nexport function getVideoID(): VideoID | null {\n return videoID;\n}\n\nexport function setVideoID(id: VideoID | null): void {\n videoID = id;\n}\n\nexport function getVideoDuration(): number {\n return Math.max(0, (video?.duration ?? 0) - adDuration);\n}\n\nexport function getCurrentTime(): number | undefined {\n const time = getVideo()?.currentTime;\n if (time) {\n return time - adDuration;\n } else {\n return time;\n }\n}\n\n// Called when creating time to verify there aren't any\n// undetected server-side ads causing issues\nexport function verifyCurrentTime(time?: number): void {\n if (getVideo() && getVideo()!.paused) {\n window.postMessage({\n source: \"sb-verify-time\",\n time: time ?? getCurrentTime(),\n rawTime: getVideo()!.currentTime\n }, \"/\");\n }\n}\n\nexport function setCurrentTime(time: number): void {\n if (getVideo()) {\n getVideo()!.currentTime = time + adDuration;\n }\n}\n\nexport function isOnInvidious(): boolean | null {\n return onInvidious;\n}\n\nexport function isOnMobileYouTube(): boolean {\n return onMobileYouTube;\n}\n\nexport function isOnYouTubeMusic(): boolean {\n return onYouTubeMusic;\n}\n\nexport function isOnYTTV(): boolean {\n return onYTTV;\n}\n\nexport function getWaitingForChannelID(): boolean {\n return waitingForChannelID;\n}\n\nexport function getChannelIDInfo(): ChannelIDInfo {\n return channelIDInfo;\n}\n\nexport function setChanelIDInfo(id: string, author: string): void {\n channelIDInfo = {\n status: ChannelIDStatus.Found,\n id: id as ChannelID,\n author\n };\n}\n\nexport function getIsAdPlaying(): boolean {\n return isAdPlaying;\n}\n\nexport function setIsAdPlaying(value: boolean): void {\n isAdPlaying = value;\n}\n\nexport function getIsLivePremiere(): boolean {\n return isLivePremiere;\n}\n\nexport function getLastNonInlineVideoID(): VideoID | null {\n return lastNonInlineVideoID;\n}\n\nexport function getIsInline(): boolean {\n return isInline;\n}\n\nexport function isCurrentTimeWrong(): boolean {\n return currentTimeWrong;\n}\n\nexport function isOnChannelPage(): boolean {\n return !!document.URL.match(/@|\\/c\\/|\\/channel\\/|\\/user\\//);\n}","import * as React from \"react\";\nimport * as CompileConfig from \"../../../config.json\";\n\nimport Config from \"../../config\";\nimport { AdvancedSkipRuleSet, SkipRuleAttribute, SkipRuleOperator } from \"../../utils/skipRule\";\nimport { ActionType, ActionTypes, CategorySkipOption } from \"../../types\";\n\nlet configSaveTimeout: NodeJS.Timeout | null = null;\n\nexport function AdvancedSkipOptionsComponent() {\n const [optionsOpen, setOptionsOpen] = React.useState(false);\n const [config, setConfig] = React.useState(configToText(Config.local.skipRules));\n const [configValid, setConfigValid] = React.useState(true);\n\n return (\n
\n
{\n setOptionsOpen(!optionsOpen);\n }}>\n {chrome.i18n.getMessage(\"openAdvancedSkipOptions\")}\n
\n\n {\n optionsOpen &&\n
\n
\n \n {chrome.i18n.getMessage(\"advancedSkipSettingsHelp\")}\n \n\n \n {\" - \"}\n {chrome.i18n.getMessage(\"advancedSkipNotSaved\")}\n \n
\n\n \n\n \n \n
\n )\n}\n","import * as React from \"react\";\nimport { VideoID } from \"../types\";\nimport Config from \"../config\";\nimport { Message, MessageResponse } from \"../messageTypes\";\nimport { LoadingStatus } from \"./PopupComponent\";\n\ninterface SegmentSubmissionComponentProps {\n videoID: VideoID;\n status: LoadingStatus;\n\n sendMessage: (request: Message) => Promise;\n}\n\nexport const SegmentSubmissionComponent = (props: SegmentSubmissionComponentProps) => {\n const segments = Config.local.unsubmittedSegments[props.videoID];\n\n const [showSubmitButton, setShowSubmitButton] = React.useState(segments && segments.length > 0);\n const [showStartSegment, setShowStartSegment] = React.useState(!segments || segments[segments.length - 1].segment.length === 2);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"recordTimesDescription\")}\n

\n \n {chrome.i18n.getMessage(\"popupHint\")}\n \n
\n \n \n
\n \n {chrome.i18n.getMessage(\"submissionEditHint\")}\n \n
\n );\n};","import * as React from \"react\";\nimport { getHash } from \"../../maze-utils/src/hash\";\nimport { formatJSErrorMessage, getShortErrorMessage } from \"../../maze-utils/src/formating\";\nimport Config from \"../config\";\nimport { asyncRequestToServer } from \"../utils/requests\";\nimport PencilIcon from \"../svg-icons/pencilIcon\";\nimport ClipboardIcon from \"../svg-icons/clipboardIcon\";\nimport CheckIcon from \"../svg-icons/checkIcon\";\nimport { showDonationLink } from \"../utils/configUtils\";\nimport { FetchResponse, logRequest } from \"../../maze-utils/src/background-request-proxy\";\n\nexport const YourWorkComponent = () => {\n const [isSettingUsername, setIsSettingUsername] = React.useState(false);\n const [username, setUsername] = React.useState(\"\");\n const [newUsername, setNewUsername] = React.useState(\"\");\n const [usernameSubmissionStatus, setUsernameSubmissionStatus] = React.useState(\"\");\n const [submissionCount, setSubmissionCount] = React.useState(\"\");\n const [viewCount, setViewCount] = React.useState(0);\n const [minutesSaved, setMinutesSaved] = React.useState(0);\n const [showDonateMessage, setShowDonateMessage] = React.useState(false);\n\n React.useEffect(() => {\n (async () => {\n const values = [\"userName\", \"viewCount\", \"minutesSaved\", \"vip\", \"permissions\", \"segmentCount\"];\n let result: FetchResponse;\n try {\n result = await asyncRequestToServer(\"GET\", \"/api/userInfo\", {\n publicUserID: await getHash(Config.config!.userID!),\n values\n });\n } catch (e) {\n console.error(\"[SB] Caught error while fetching user info\", e);\n return\n }\n\n if (result.ok) {\n const userInfo = JSON.parse(result.responseText);\n setUsername(userInfo.userName);\n setSubmissionCount(Math.max(Config.config.sponsorTimesContributed ?? 0, userInfo.segmentCount).toLocaleString());\n setViewCount(userInfo.viewCount);\n setMinutesSaved(userInfo.minutesSaved);\n\n if (username === \"sponege\") {\n Config.config.prideTheme = true;\n }\n\n Config.config!.isVip = userInfo.vip;\n Config.config!.permissions = userInfo.permissions;\n\n setShowDonateMessage(Config.config.showDonationLink && Config.config.donateClicked <= 0 && Config.config.showPopupDonationCount < 5\n && viewCount < 50000 && !Config.config.isVip && Config.config.skipCount > 10 && showDonationLink());\n } else {\n logRequest(result, \"SB\", \"user info\");\n }\n })();\n }, []);\n\n return (\n
\n

\n {chrome.i18n.getMessage(\"yourWork\")}\n

\n
\n {/* Username */}\n
\n

\n {chrome.i18n.getMessage(\"Username\")}:\n {/* loading/errors */}\n \n {usernameSubmissionStatus}\n \n

\n
\n

{username}

\n \n \n
\n
\n {\n setNewUsername(e.target.value);\n }}/>\n \n
\n
\n \n
\n\n \n\n {showDonateMessage && {\n setShowDonateMessage(false);\n Config.config.showPopupDonationCount = 100;\n }} />}\n\n
\n );\n};\n\nfunction SubmissionCounts(props: { isSettingUsername: boolean; submissionCount: string }): JSX.Element {\n return <>\n
\n

\n {chrome.i18n.getMessage(\"Submissions\")}:\n

\n

{props.submissionCount}

\n
\n \n}\n\nfunction TimeSavedMessage({ viewCount, minutesSaved }: { viewCount: number; minutesSaved: number }): JSX.Element {\n return (\n <>\n {\n viewCount > 0 &&\n

\n {chrome.i18n.getMessage(\"savedPeopleFrom\")}\n \n {viewCount.toLocaleString()}{\" \"}\n \n {viewCount !== 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}\n
\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(minutesSaved)}{\" \"}\n {minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {chrome.i18n.getMessage(\"youHaveSavedTimeEnd\")}{\" \"}\n {\" )\"}\n \n

\n }\n

\n {chrome.i18n.getMessage(\"youHaveSkipped\")}\n \n {Config.config.skipCount}{\" \"}\n \n {Config.config.skipCount > 1 ? chrome.i18n.getMessage(\"Segments\") : chrome.i18n.getMessage(\"Segment\")}{\" \"}\n \n {\"(\"}{\" \"}\n \n {getFormattedHours(Config.config.minutesSaved)}{\" \"}\n {Config.config.minutesSaved !== 1 ? chrome.i18n.getMessage(\"minsLower\") : chrome.i18n.getMessage(\"minLower\")}{\" \"}\n \n {\")\"}\n \n

\n \n );\n}\n\nfunction DonateMessage(props: { onClose: () => void }): JSX.Element {\n return (\n \n );\n}\n\n/**\n * Converts time in minutes to 2d 5h 25.1\n * If less than 1 hour, just returns minutes\n *\n * @param {float} minutes\n * @returns {string}\n */\nfunction getFormattedHours(minutes) {\n minutes = Math.round(minutes * 10) / 10;\n const years = Math.floor(minutes / 525600); // Assumes 365.0 days in a year\n const days = Math.floor(minutes / 1440) % 365;\n const hours = Math.floor(minutes / 60) % 24;\n return (years > 0 ? years + chrome.i18n.getMessage(\"yearAbbreviation\") + \" \" : \"\") + (days > 0 ? days + chrome.i18n.getMessage(\"dayAbbreviation\") + \" \" : \"\") + (hours > 0 ? hours + chrome.i18n.getMessage(\"hourAbbreviation\") + \" \" : \"\") + (minutes % 60).toFixed(1);\n}\n","import * as React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { PopupComponent } from \"./PopupComponent\";\nimport { waitFor } from \"../../maze-utils/src\";\nimport Config from \"../config\";\n\n\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n await waitFor(() => Config.isReady());\n\n const root = createRoot(document.body);\n root.render();\n})","import { Message, MessageResponse } from \"../messageTypes\";\n\nexport function copyToClipboardPopup(text: string, sendMessage: (request: Message) => Promise): void {\n if (window === window.top) {\n window.navigator.clipboard.writeText(text);\n } else {\n sendMessage({\n message: \"copyToClipboard\",\n text\n });\n }\n}","import * as React from \"react\";\nimport { createRoot, Root } from 'react-dom/client';\nimport NoticeComponent from \"../components/NoticeComponent\";\n\nimport Utils from \"../utils\";\nconst utils = new Utils();\n\nimport { ContentContainer } from \"../types\";\nimport NoticeTextSelectionComponent from \"../components/NoticeTextSectionComponent\";\nimport { ButtonListener } from \"../../maze-utils/src/components/component-types\";\nimport { getVideo } from \"../../maze-utils/src/video\";\n\nexport interface TextBox {\n icon: string;\n text: string;\n}\n\nexport interface NoticeOptions {\n title: string;\n referenceNode?: HTMLElement;\n textBoxes?: TextBox[];\n buttons?: ButtonListener[];\n fadeIn?: boolean;\n timed?: boolean;\n style?: React.CSSProperties;\n extraClass?: string;\n maxCountdownTime?: () => number;\n dontPauseCountdown?: boolean;\n hideLogo?: boolean;\n hideRightInfo?: boolean;\n}\n\nexport default class GenericNotice {\n // Contains functions and variables from the content script needed by the skip notice\n contentContainer: ContentContainer;\n\n noticeElement: HTMLDivElement;\n noticeRef: React.MutableRefObject;\n idSuffix: string;\n root: Root;\n\n constructor(contentContainer: ContentContainer, idSuffix: string, options: NoticeOptions) {\n this.noticeRef = React.createRef();\n this.idSuffix = idSuffix;\n\n this.contentContainer = contentContainer;\n\n const referenceNode = options.referenceNode ?? utils.findReferenceNode();\n \n this.noticeElement = document.createElement(\"div\");\n this.noticeElement.className = \"sponsorSkipNoticeContainer\";\n this.noticeElement.id = \"sponsorSkipNoticeContainer\" + idSuffix;\n\n referenceNode.prepend(this.noticeElement);\n\n this.root = createRoot(this.noticeElement);\n\n this.update(options);\n }\n\n update(options: NoticeOptions): void {\n this.root.render(\n this.close()} >\n {options.textBoxes?.length > 0 ?\n \n \n {this.getMessageBoxes(this.idSuffix, options.textBoxes)}\n \n \n : null}\n\n {!options.hideLogo ?\n <>\n \n \n\n \n \n {this.getButtons(options.buttons)}\n \n \n \n : null}\n\n \n );\n }\n\n getMessageBoxes(idSuffix: string, textBoxes: TextBox[]): JSX.Element[] { \n if (textBoxes) {\n const result = [];\n for (let i = 0; i < textBoxes.length; i++) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n getButtons(buttons?: ButtonListener[]): JSX.Element[] {\n if (buttons) {\n const result: JSX.Element[] = [];\n\n for (const button of buttons) {\n result.push(\n \n )\n }\n\n return result;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.root.unmount();\n\n this.noticeElement.remove();\n }\n}","import * as React from \"react\";\n\nexport interface CheckIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst CheckIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: CheckIconProps): JSX.Element => (\n \n \n \n);\n\nexport default CheckIcon;","import * as React from \"react\";\n\nexport interface ClipboardIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ClipboardIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: ClipboardIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ClipboardIcon;","import * as React from \"react\";\n\nexport interface PencilIconProps {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst PencilIcon = ({\n id = \"\",\n className = \"\",\n style = {},\n onClick\n}: PencilIconProps): JSX.Element => (\n \n \n \n);\n\nexport default PencilIcon;","import * as React from \"react\";\n\nexport interface AddIconProps {\n style?: React.CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nconst ResetIcon = ({\n className = \"\",\n style = {},\n onClick\n}: AddIconProps): JSX.Element => (\n \n \n \n \n);\n\nexport default ResetIcon;","import * as React from \"react\";\n\nexport interface SbIconProps {\n id?: string;\n fill?: string;\n className?: string;\n width?: string;\n height?: string;\n onClick?: () => void;\n}\n\nexport default function SbSvg({\n id = \"\",\n fill = \"#ff0000\",\n className = \"\",\n onClick\n}: SbIconProps): JSX.Element {\n return (\n onClick?.() } >\n \n \n \n \n \n \n \n \n );\n}","import SubmissionNotice from \"./render/SubmissionNotice\";\nimport SkipNoticeComponent from \"./components/SkipNoticeComponent\";\nimport SkipNotice from \"./render/SkipNotice\";\n\nexport interface ContentContainer {\n (): {\n vote: (type: number, UUID: SegmentUUID, category?: Category, skipNotice?: SkipNoticeComponent) => void;\n dontShowNoticeAgain: () => void;\n unskipSponsorTime: (segment: SponsorTime, unskipTime: number, forceSeek?: boolean, voteNotice?: boolean) => void;\n sponsorTimes: SponsorTime[];\n sponsorTimesSubmitting: SponsorTime[];\n skipNotices: SkipNotice[];\n sponsorVideoID;\n reskipSponsorTime: (segment: SponsorTime, forceSeek?: boolean) => void;\n updatePreviewBar: () => void;\n onMobileYouTube: boolean;\n sponsorSubmissionNotice: SubmissionNotice;\n resetSponsorSubmissionNotice: (callRef?: boolean) => void;\n updateEditButtonsOnPlayer: () => void;\n previewTime: (time: number, unpause?: boolean) => void;\n videoInfo: VideoInfo;\n getRealCurrentTime: () => number;\n lockedCategories: string[];\n channelIDInfo: ChannelIDInfo;\n };\n}\n\nexport interface VideoDurationResponse {\n duration: number;\n}\n\nexport enum CategorySkipOption {\n FallbackToDefault = -2,\n Disabled = -1,\n ShowOverlay,\n ManualSkip,\n AutoSkip\n}\n\nexport interface CategorySelection {\n name: Category;\n option: CategorySkipOption;\n}\n\nexport enum SponsorHideType {\n Visible = undefined,\n Downvoted = 1,\n MinimumDuration,\n Hidden,\n}\n\nexport enum ActionType {\n Skip = \"skip\",\n Mute = \"mute\",\n Chapter = \"chapter\",\n Full = \"full\",\n Poi = \"poi\"\n}\n\nexport const ActionTypes = [\n ActionType.Skip,\n ActionType.Mute,\n ActionType.Chapter,\n ActionType.Full,\n ActionType.Poi\n];\n\nexport type SegmentUUID = string & { __segmentUUIDBrand: unknown };\nexport type Category = string & { __categoryBrand: unknown };\n\nexport enum SponsorSourceType {\n Server = undefined,\n Local = 1,\n YouTube = 2,\n Autogenerated = 3\n}\n\nexport interface SegmentContainer {\n segment: [number] | [number, number];\n}\n\nexport interface SponsorTime extends SegmentContainer {\n UUID: SegmentUUID;\n locked?: number;\n\n category: Category;\n actionType: ActionType;\n description?: string;\n\n hidden?: SponsorHideType;\n source: SponsorSourceType;\n videoDuration?: number;\n}\n\nexport interface ScheduledTime extends SponsorTime {\n scheduledTime: number;\n}\n\nexport interface PreviewBarOption {\n color: string;\n opacity: string;\n}\n\n\nexport interface Registration {\n message: string;\n id: string;\n allFrames: boolean;\n js: string[];\n css: string[];\n matches: string[];\n}\n\nexport interface BackgroundScriptContainer {\n registerFirefoxContentScript: (opts: Registration) => void;\n unregisterFirefoxContentScript: (id: string) => void;\n}\n\nexport interface VideoInfo {\n responseContext: {\n serviceTrackingParams: Array<{service: string; params: Array<{key: string; value: string}>}>;\n webResponseContextExtensionData: {\n hasDecorated: boolean;\n };\n };\n playabilityStatus: {\n status: string;\n playableInEmbed: boolean;\n miniplayer: {\n miniplayerRenderer: {\n playbackMode: string;\n };\n };\n };\n streamingData: unknown;\n playbackTracking: unknown;\n videoDetails: {\n videoId: string;\n title: string;\n lengthSeconds: string;\n keywords: string[];\n channelId: string;\n isOwnerViewing: boolean;\n shortDescription: string;\n isCrawlable: boolean;\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n averageRating: number;\n allowRatings: boolean;\n viewCount: string;\n author: string;\n isPrivate: boolean;\n isUnpluggedCorpus: boolean;\n isLiveContent: boolean;\n };\n playerConfig: unknown;\n storyboards: unknown;\n microformat: {\n playerMicroformatRenderer: {\n thumbnail: {\n thumbnails: Array<{url: string; width: number; height: number}>;\n };\n embed: {\n iframeUrl: string;\n flashUrl: string;\n width: number;\n height: number;\n flashSecureUrl: string;\n };\n title: {\n simpleText: string;\n };\n description: {\n simpleText: string;\n };\n lengthSeconds: string;\n ownerProfileUrl: string;\n externalChannelId: string;\n availableCountries: string[];\n isUnlisted: boolean;\n hasYpcMetadata: boolean;\n viewCount: string;\n category: Category;\n publishDate: string;\n ownerChannelName: string;\n uploadDate: string;\n };\n };\n trackingParams: string;\n attestation: unknown;\n messages: unknown;\n}\n\nexport type VideoID = string;\n\nexport type UnEncodedSegmentTimes = [string, SponsorTime[]][];\n\nexport enum ChannelIDStatus {\n Fetching,\n Found,\n Failed\n}\n\nexport interface ChannelIDInfo {\n id: string;\n status: ChannelIDStatus;\n}\n\nexport interface SkipToTimeParams {\n v: HTMLVideoElement; \n skipTime: number[]; \n skippingSegments: SponsorTime[]; \n openNotice: boolean; \n forceAutoSkip?: boolean;\n unskipTime?: number;\n}\n\nexport interface ToggleSkippable {\n toggleSkip: () => void;\n setShowKeybindHint: (show: boolean) => void;\n}\n\nexport enum NoticeVisibilityMode {\n FullSize = 0,\n MiniForAutoSkip = 1,\n MiniForAll = 2,\n FadedForAutoSkip = 3,\n FadedForAll = 4\n}\n\nexport enum SegmentListDefaultTab {\n Segments,\n Chapters,\n}","import Config, { VideoDownvotes } from \"./config\";\nimport { SponsorTime, BackgroundScriptContainer, Registration, VideoID, SponsorHideType } from \"./types\";\n\nimport { getHash, HashedValue } from \"../maze-utils/src/hash\";\nimport { waitFor } from \"../maze-utils/src\";\nimport { findValidElementFromSelector } from \"../maze-utils/src/dom\";\nimport { isSafari } from \"../maze-utils/src/config\";\nimport { asyncRequestToServer } from \"./utils/requests\";\nimport { FetchResponse, logRequest } from \"../maze-utils/src/background-request-proxy\";\nimport { formatJSErrorMessage, getLongErrorMessage } from \"../maze-utils/src/formating\";\n\nexport default class Utils {\n \n // Contains functions needed from the background script\n backgroundScriptContainer: BackgroundScriptContainer | null;\n\n // Used to add content scripts and CSS required\n js = [\n \"./js/content.js\"\n ];\n css = [\n \"content.css\",\n \"./libs/Source+Sans+Pro.css\",\n \"popup.css\",\n \"shared.css\"\n ];\n\n constructor(backgroundScriptContainer: BackgroundScriptContainer = null) {\n this.backgroundScriptContainer = backgroundScriptContainer;\n }\n\n async wait(condition: () => T, timeout = 5000, check = 100): Promise {\n return waitFor(condition, timeout, check);\n }\n\n containsPermission(permissions: chrome.permissions.Permissions): Promise {\n return new Promise((resolve) => {\n chrome.permissions.contains(permissions, resolve)\n });\n }\n\n /**\n * Asks for the optional permissions required for all extra sites.\n * It also starts the content script registrations.\n * \n * For now, it is just SB.config.invidiousInstances.\n * \n * @param {CallableFunction} callback\n */\n setupExtraSitePermissions(callback: (granted: boolean) => void): void {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.request({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, async (granted) => {\n if (granted) {\n this.setupExtraSiteContentScripts();\n } else {\n this.removeExtraSiteRegistration();\n }\n\n callback(granted);\n });\n }\n\n getExtraSiteRegistration(): Registration {\n return {\n message: \"registerContentScript\",\n id: \"invidious\",\n allFrames: true,\n js: this.js,\n css: this.css,\n matches: this.getPermissionRegex()\n };\n }\n\n /**\n * Registers the content scripts for the extra sites.\n * Will use a different method depending on the browser.\n * This is called by setupExtraSitePermissions().\n * \n * For now, it is just SB.config.invidiousInstances.\n */\n setupExtraSiteContentScripts(): void {\n const registration = this.getExtraSiteRegistration();\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.registerFirefoxContentScript(registration);\n } else {\n chrome.runtime.sendMessage(registration);\n }\n }\n\n /**\n * Removes the permission and content script registration.\n */\n removeExtraSiteRegistration(): void {\n const id = \"invidious\";\n\n if (this.backgroundScriptContainer) {\n this.backgroundScriptContainer.unregisterFirefoxContentScript(id);\n } else {\n chrome.runtime.sendMessage({\n message: \"unregisterContentScript\",\n id: id\n });\n }\n\n chrome.permissions.remove({\n origins: this.getPermissionRegex()\n });\n }\n\n applyInvidiousPermissions(enable: boolean, option = \"supportInvidious\"): Promise {\n return new Promise((resolve) => {\n if (enable) {\n this.setupExtraSitePermissions((granted) => {\n if (!granted) {\n Config.config[option] = false;\n }\n\n resolve(granted);\n });\n } else {\n this.removeExtraSiteRegistration();\n resolve(false);\n }\n });\n }\n\n containsInvidiousPermission(): Promise {\n return new Promise((resolve) => {\n const permissions = [];\n if (isSafari()) {\n permissions.push(\"webNavigation\");\n }\n\n chrome.permissions.contains({\n origins: this.getPermissionRegex(),\n permissions: permissions\n }, function (result) {\n resolve(result);\n });\n })\n }\n\n /**\n * Merges any overlapping timestamp ranges into single segments and returns them as a new array.\n */\n getMergedTimestamps(timestamps: number[][]): [number, number][] {\n let deduped: [number, number][] = [];\n\n // Cases ([] = another segment, <> = current range):\n // [<]>, <[>], <[]>, [<>], [<][>]\n timestamps.forEach((range) => {\n // Find segments the current range overlaps\n const startOverlaps = deduped.findIndex((other) => range[0] >= other[0] && range[0] <= other[1]);\n const endOverlaps = deduped.findIndex((other) => range[1] >= other[0] && range[1] <= other[1]);\n\n if (~startOverlaps && ~endOverlaps) {\n // [<][>] Both the start and end of this range overlap another segment\n // [<>] This range is already entirely contained within an existing segment\n if (startOverlaps === endOverlaps) return;\n\n // Remove the range with the higher index first to avoid the index shifting\n const other1 = deduped.splice(Math.max(startOverlaps, endOverlaps), 1)[0];\n const other2 = deduped.splice(Math.min(startOverlaps, endOverlaps), 1)[0];\n\n // Insert a new segment spanning the start and end of the range\n deduped.push([Math.min(other1[0], other2[0]), Math.max(other1[1], other2[1])]);\n } else if (~startOverlaps) {\n // [<]> The start of this range overlaps another segment, extend its end\n deduped[startOverlaps][1] = range[1];\n } else if (~endOverlaps) {\n // <[>] The end of this range overlaps another segment, extend its beginning\n deduped[endOverlaps][0] = range[0];\n } else {\n // No overlaps, just push in a copy\n deduped.push(range.slice() as [number, number]);\n }\n\n // <[]> Remove other segments contained within this range\n deduped = deduped.filter((other) => !(other[0] > range[0] && other[1] < range[1]));\n });\n\n return deduped;\n }\n\n /**\n * Returns the total duration of the timestamps, taking into account overlaps.\n */\n getTimestampsDuration(timestamps: number[][]): number {\n return this.getMergedTimestamps(timestamps).reduce((acc, range) => {\n return acc + range[1] - range[0];\n }, 0);\n }\n\n getSponsorIndexFromUUID(sponsorTimes: SponsorTime[], UUID: string): number {\n for (let i = 0; i < sponsorTimes.length; i++) {\n if (sponsorTimes[i].UUID && (sponsorTimes[i].UUID.startsWith(UUID) || UUID.startsWith(sponsorTimes[i].UUID))) {\n return i;\n }\n }\n\n return -1;\n }\n\n getSponsorTimeFromUUID(sponsorTimes: SponsorTime[], UUID: string): SponsorTime {\n return sponsorTimes[this.getSponsorIndexFromUUID(sponsorTimes, UUID)];\n }\n\n /**\n * @returns {String[]} Domains in regex form\n */\n getPermissionRegex(domains: string[] = []): string[] {\n const permissionRegex: string[] = [];\n if (domains.length === 0) {\n domains = [...Config.config.invidiousInstances];\n }\n\n for (const url of domains) {\n permissionRegex.push(\"https://*.\" + url + \"/*\");\n permissionRegex.push(\"http://*.\" + url + \"/*\");\n }\n\n return permissionRegex;\n }\n\n findReferenceNode(): HTMLElement {\n const selectors = [\n \"#player-container-id\", // Mobile YouTube\n \"#movie_player\",\n \".html5-video-player\", // May 2023 Card-Based YouTube Layout\n \"#c4-player\", // Channel Trailer\n \"#player-container\", // Preview on hover\n \"#main-panel.ytmusic-player-page\", // YouTube music\n \"#player-container .video-js\", // Invidious\n \".main-video-section > .video-container\", // Cloudtube\n \".shaka-video-container\", // Piped\n \"#player-container.ytk-player\", // YT Kids\n \"#id-tv-container\" // YTTV\n ];\n\n let referenceNode = findValidElementFromSelector(selectors)\n if (referenceNode == null) {\n //for embeds\n const player = document.getElementById(\"player\");\n referenceNode = player?.firstChild as HTMLElement;\n if (referenceNode) {\n let index = 1;\n\n //find the child that is the video player (sometimes it is not the first)\n while (index < player.children.length && (!referenceNode.classList?.contains(\"html5-video-player\") || !referenceNode.classList?.contains(\"ytp-embed\"))) {\n referenceNode = player.children[index] as HTMLElement;\n\n index++;\n }\n }\n }\n\n return referenceNode;\n }\n\n isContentScript(): boolean {\n return window.location.protocol === \"http:\" || window.location.protocol === \"https:\";\n }\n\n isHex(num: string): boolean {\n return Boolean(num.match(/^[0-9a-f]+$/i));\n }\n\n async addHiddenSegment(videoID: VideoID, segmentUUID: string, hidden: SponsorHideType) {\n if ((chrome.extension.inIncognitoContext && !Config.config.trackDownvotesInPrivate)\n || !Config.config.trackDownvotes) return;\n\n if (segmentUUID.length < 60) {\n let segmentIDData: FetchResponse;\n try {\n segmentIDData = await asyncRequestToServer(\"GET\", \"/api/segmentID\", {\n UUID: segmentUUID,\n videoID\n });\n } catch (e) {\n console.error(\"[SB] Caught error while trying to resolve the segment UUID to be hidden\", e);\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${formatJSErrorMessage(e)}`);\n return;\n }\n\n if (segmentIDData.ok && segmentIDData.responseText) {\n segmentUUID = segmentIDData.responseText;\n } else {\n logRequest(segmentIDData, \"SB\", \"segment UUID resolution\");\n alert(`${chrome.i18n.getMessage(\"segmentHideFailed\")}\\n${getLongErrorMessage(segmentIDData.status, segmentIDData.responseText)}`);\n return;\n }\n }\n\n const hashedVideoID = (await getHash(videoID, 1)).slice(0, 4) as VideoID & HashedValue;\n const UUIDHash = await getHash(segmentUUID, 1);\n\n const allDownvotes = Config.local.downvotedSegments;\n const currentVideoData = allDownvotes[hashedVideoID] || { segments: [], lastAccess: 0 };\n\n currentVideoData.lastAccess = Date.now();\n const existingData = currentVideoData.segments.find((segment) => segment.uuid === UUIDHash);\n if (hidden === SponsorHideType.Visible) {\n currentVideoData.segments.splice(currentVideoData.segments.indexOf(existingData), 1);\n\n if (currentVideoData.segments.length === 0) {\n delete allDownvotes[hashedVideoID];\n }\n } else {\n if (existingData) {\n existingData.hidden = hidden;\n } else {\n currentVideoData.segments.push({\n uuid: UUIDHash,\n hidden\n });\n }\n\n allDownvotes[hashedVideoID] = currentVideoData;\n }\n\n const entries = Object.entries(allDownvotes);\n if (entries.length > 10000) {\n let min: [string, VideoDownvotes] = null;\n for (let i = 0; i < entries[0].length; i++) {\n if (min === null || entries[i][1].lastAccess < min[1].lastAccess) {\n min = entries[i];\n }\n }\n\n delete allDownvotes[min[0]];\n }\n\n Config.forceLocalUpdate(\"downvotedSegments\");\n }\n}\n","import { ActionType, Category, SponsorTime } from \"../types\";\n\nexport function getSkippingText(segments: SponsorTime[], autoSkip: boolean): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n if (autoSkip) {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skipped\";\n break;\n case ActionType.Mute:\n messageId = \"muted\";\n break;\n case ActionType.Poi:\n messageId = \"skipped_to_category\";\n break;\n }\n \n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n } else {\n let messageId = \"\";\n switch (segments[0].actionType) {\n case ActionType.Chapter:\n case ActionType.Skip:\n messageId = \"skip_category\";\n break;\n case ActionType.Mute:\n messageId = \"mute_category\";\n break;\n case ActionType.Poi:\n messageId = \"skip_to_category\";\n break;\n }\n\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n }\n}\n\nexport function getUpcomingText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"upcoming\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\nexport function getVoteText(segments: SponsorTime[]): string {\n const categoryName = chrome.i18n.getMessage(segments.length > 1 ? \"multipleSegments\" \n : \"category_\" + segments[0].category + \"_short\") || chrome.i18n.getMessage(\"category_\" + segments[0].category);\n \n const messageId = \"voted_on\";\n return chrome.i18n.getMessage(messageId).replace(\"{0}\", categoryName);\n}\n\n\nexport function getCategorySuffix(category: Category): string {\n if (category.startsWith(\"poi_\")) {\n return \"_POI\";\n } else if (category === \"exclusive_access\") {\n return \"_full\";\n } else if (category === \"chapter\") {\n return \"_chapter\";\n } else {\n return \"\";\n }\n}\n\nexport function shortCategoryName(categoryName: string): string {\n return chrome.i18n.getMessage(\"category_\" + categoryName + \"_short\") || chrome.i18n.getMessage(\"category_\" + categoryName);\n}\nexport const DEFAULT_CATEGORY = \"chooseACategory\";","import Config from \"../config\";\n\nexport function showDonationLink(): boolean {\n return navigator.vendor !== \"Apple Computer, Inc.\" && Config.config.showDonationLink;\n}","import { ActionType, Category, SegmentUUID, SponsorSourceType, SponsorTime } from \"../types\";\nimport { shortCategoryName } from \"./categoryUtils\";\nimport * as CompileConfig from \"../../config.json\";\nimport { getFormattedTime, getFormattedTimeToSeconds } from \"../../maze-utils/src/formating\";\nimport { generateUserID } from \"../../maze-utils/src/setup\";\n\nconst inTest = typeof chrome === \"undefined\";\n\nconst chapterNames = CompileConfig.categoryList.filter((code) => code !== \"chapter\")\n .map((code) => ({\n code,\n names: !inTest ? [chrome.i18n.getMessage(\"category_\" + code), shortCategoryName(code)] : [code]\n }));\n\nexport function exportTimes(segments: SponsorTime[]): string {\n let result = \"\";\n for (const segment of segments) {\n if (![ActionType.Full, ActionType.Mute].includes(segment.actionType)\n && ![SponsorSourceType.YouTube, SponsorSourceType.Autogenerated].includes(segment.source)) {\n result += exportTime(segment) + \"\\n\";\n }\n }\n\n return result.replace(/\\n$/, \"\");\n}\n\nfunction exportTime(segment: SponsorTime): string {\n const name = segment.description || shortCategoryName(segment.category);\n\n return `${getFormattedTime(segment.segment[0], true)}${\n segment.segment[1] && segment.segment[0] !== segment.segment[1] \n ? ` - ${getFormattedTime(segment.segment[1], true)}` : \"\"} ${name}`;\n}\n\nexport function importTimes(data: string, videoDuration: number): SponsorTime[] {\n const lines = data.split(\"\\n\");\n const timeRegex = /(?:((?:\\d+:)?\\d+:\\d+)+(?:\\.\\d+)?)|(?:\\d+(?=s| second))/g;\n const anyLineHasTime = lines.some((line) => timeRegex.test(line));\n\n const result: SponsorTime[] = [];\n for (const line of lines) {\n const match = line.match(timeRegex);\n if (match) {\n const startTime = getFormattedTimeToSeconds(match[0]);\n if (startTime !== null) {\n // Remove \"seconds\", \"at\", special characters, and \")\" if there was a \"(\"\n const specialCharMatchers = [{\n matcher: /^(?:\\s+seconds?)?[-:()\\s]*|(?:\\s+at)?[-:(\\s]+$/g\n }, {\n matcher: /[-:()\\s]*$/g,\n condition: (value) => !!value.match(/^\\s*\\(/)\n }];\n const titleLeft = removeIf(line.split(match[0])[0], specialCharMatchers);\n let titleRight = null;\n const split2 = line.split(match[1] || match[0]);\n titleRight = removeIf(split2[split2.length - 1], specialCharMatchers)\n\n const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight;\n const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category;\n\n const category = title ? (determinedCategory ?? (\"chapter\" as Category)) : \"chooseACategory\" as Category;\n const segment: SponsorTime = {\n segment: [startTime, getFormattedTimeToSeconds(match[1])],\n category,\n actionType: category === \"chapter\" ? ActionType.Chapter : ActionType.Skip,\n description: category === \"chapter\" ? title : null,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = segment.segment[0];\n }\n\n result.push(segment);\n }\n } else if (!anyLineHasTime) {\n // Adding chapters with placeholder times\n const segment: SponsorTime = {\n segment: [0, 0],\n category: \"chapter\" as Category,\n actionType: ActionType.Chapter,\n description: line,\n source: SponsorSourceType.Local,\n UUID: generateUserID() as SegmentUUID\n };\n\n result.push(segment);\n }\n }\n\n if (result.length > 0 && result[result.length - 1].segment[1] === null) {\n result[result.length - 1].segment[1] = videoDuration;\n }\n\n return result;\n}\n\nfunction removeIf(value: string, matchers: Array<{ matcher: RegExp; condition?: (value: string) => boolean }>): string {\n let result = value;\n for (const matcher of matchers) {\n if (!matcher.condition || matcher.condition(value)) {\n result = result.replace(matcher.matcher, \"\");\n }\n }\n\n return result;\n}\n\nexport function exportTimesAsHashParam(segments: SponsorTime[]): string {\n const hashparamSegments = segments.map(segment => ({\n actionType: segment.actionType,\n category: segment.category,\n segment: segment.segment,\n ...(segment.description ? {description: segment.description} : {}) // don't include the description param if empty\n }));\n\n return `#segments=${JSON.stringify(hashparamSegments)}`;\n}\n\n\nexport function normalizeChapterName(description: string): string {\n return description.toLowerCase().replace(/[.:'’`‛‘\"‟”-]/ug, \"\").replace(/\\s+/g, \" \");\n}","import Config from \"../config\";\nimport * as CompileConfig from \"../../config.json\";\nimport { FetchResponse, sendRequestToCustomServer } from \"../../maze-utils/src/background-request-proxy\";\n\n/**\n * Sends a request to the SponsorBlock server with address added as a query\n * \n * @param type The request type. \"GET\", \"POST\", etc.\n * @param address The address to add to the SponsorBlock server address\n * @param callback \n */ \nexport async function asyncRequestToServer(type: string, address: string, data = {}, headers = {}): Promise {\n const serverAddress = Config.config.testingServer ? CompileConfig.testingServerAddress : Config.config.serverAddress;\n\n return await (sendRequestToCustomServer(type, serverAddress + address, data, headers));\n}\n","import { getChannelIDInfo, getVideoID } from \"../../maze-utils/src/video\";\nimport Config, { ConfigurationID, CustomConfiguration } from \"../config\";\nimport { SponsorHideType, SponsorTime } from \"../types\";\n\nlet currentTabSkipProfile: ConfigurationID = null;\n\nexport function getSkipProfileIDForTime(): ConfigurationID | null {\n if (Config.local.skipProfileTemp !== null && Config.local.skipProfileTemp.time > Date.now() - 60 * 60 * 1000) {\n return Config.local.skipProfileTemp.configID;\n } else {\n return null;\n }\n}\n\nexport function getSkipProfileIDForTab(): ConfigurationID | null {\n return currentTabSkipProfile;\n}\n\nexport function setCurrentTabSkipProfile(configID: ConfigurationID | null) {\n currentTabSkipProfile = configID ?? null;\n}\n\nexport function getSkipProfileIDForVideo(): ConfigurationID | null {\n return Config.local.channelSkipProfileIDs[getVideoID()] ?? null;\n}\n\nexport function getSkipProfileIDForChannel(): ConfigurationID | null {\n const channelInfo = getChannelIDInfo();\n\n if (!channelInfo) {\n return null;\n }\n\n return Config.local.channelSkipProfileIDs[channelInfo.id]\n ?? Config.local.channelSkipProfileIDs[channelInfo.author]\n ?? null;\n}\n\nexport function getSkipProfileID(): ConfigurationID | null {\n const configID =\n getSkipProfileIDForTime()\n ?? getSkipProfileIDForTab()\n ?? getSkipProfileIDForVideo()\n ?? getSkipProfileIDForChannel();\n \n return configID ?? null;\n}\n\nexport function getSkipProfile(): CustomConfiguration | null {\n const configID = getSkipProfileID();\n \n if (configID) {\n return Config.local.skipProfiles[configID];\n }\n\n return null;\n}\n\ntype SkipProfileBoolKey =\n \"showAutogeneratedChapters\"\n | \"autoSkipOnMusicVideos\"\n | \"skipNonMusicOnlyOnYoutubeMusic\"\n | \"muteSegments\"\n | \"fullVideoSegments\"\n | \"manualSkipOnFullVideo\";\n\nexport function getSkipProfileBool(key: SkipProfileBoolKey): boolean {\n return getSkipProfileValue(key);\n}\n\nexport function getSkipProfileNum(key: \"minDuration\"): number {\n return getSkipProfileValue(key);\n}\n\nfunction getSkipProfileValue(key: keyof CustomConfiguration): T {\n const profile = getSkipProfile();\n if (profile && profile[key] !== null) {\n return profile[key] as T;\n }\n\n return Config.config[key];\n}\n\nexport function hideTooShortSegments(sponsorTimes: SponsorTime[]) {\n const minDuration = getSkipProfileNum(\"minDuration\");\n\n if (minDuration !== 0) {\n for (const segment of sponsorTimes) {\n const duration = segment.segment[1] - segment.segment[0];\n if (duration > 0 && duration < minDuration && (segment.hidden === SponsorHideType.Visible || SponsorHideType.MinimumDuration)) {\n segment.hidden = SponsorHideType.MinimumDuration;\n } else if (segment.hidden === SponsorHideType.MinimumDuration) {\n segment.hidden = SponsorHideType.Visible;\n }\n }\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4901);\n"],"names":["aa","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","q","r","y","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","join","uh","vh","index","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","escape","_status","_result","default","Children","map","count","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","AnimationUtils","applyLoadingAnimation","animationEndListener","setupAutoHideAnimation","container","enabled","rightSlide","hide","show","setupCustomHideAnimation","classList","mouseEntered","remove","enableAutoHideAnimation","disableAutoHideAnimation","sendRealRequestToCustomServer","headers","objectToURI","fetch","method","redirect","isSerializable","structuredClone","serializeOrStringify","chrome","runtime","onMessage","addListener","request","sender","response","buffer","binary","isFirefoxOrSafari","isSafari","blob","from","Uint8Array","arrayBuffer","responseText","responseBinary","returnHeaders","entries","reduce","acc","status","getHash","times","reject","sendMessage","prefix","requestDescription","isBodyGarbage","warn","chromeP","browser","init","cacheLimit","getFromCache","setupCache","lastUsed","oldest","cacheUsed","cleanupListeners","getCleanupId","started","extraScripts","ignoreNormalScipts","scripts","getManifest","content_scripts","cs","tab","tabs","query","matches","css","scripting","insertCSS","tabId","files","executeScript","js","world","windows","getAll","populate","script","some","file","vendor","formatKey","syncDefaults","localDefaults","migrateOldSyncFormats","inDeArrow","configLocalListeners","configSyncListeners","cachedSyncConfig","cachedLocalStorage","config","local","setupConfig","result","sync","configProxy","storage","onChanged","changes","areaName","newValue","lastSet","nextToUpdate","activeTimeout","self","syncHandler","obj","prop","delayUpdate","items","clear","deleteProperty","localHandler","Proxy","handler","forceSyncUpdate","forceLocalUpdate","lastError","alert","i18n","getMessage","fetchConfig","all","undefined","addDefaults","key2","isReady","first","second","Boolean","alt","ctrl","keybind","ret","YT_DOMAINS","isVisible","ignoreWidth","filter","duration","offsetHeight","offsetWidth","boundingRect","getBoundingClientRect","elementAtPoint","elementFromPoint","closest","isVisibleOrParent","checkParent","parentElement","findValidElement","elements","findValidElementFromGenerator","objects","generator","findPredicatedElement","selectors","predicate","selector","querySelector","creatingWaitingMutationObserver","waitingMutationObserver","waitingElements","setupWaitingMutationListener","checkForObjects","mutations","foundSelectors","waitingElement","visibleCheck","callbacks","updatePossibleElements","found","mutation","addedNodes","HTMLElement","possibleElements","disconnect","MutationObserver","observe","childList","subtree","getElement","initialElement","existingWaitingElement","find","formatted","fragments","exec","parseInt","parseFloat","seconds","precise","max","hours","minutes","minutesDisplay","secondsNum","secondsDisplay","toFixed","statusCode","errorMessage","introString","postFix","crypto","hashHex","i","hashBuffer","subtle","TextEncoder","encode","padStart","condition","timeout","check","interval","intervalCheck","clearInterval","setInterval","includeQuestionMark","counter","seperator","PromiseTimeoutError","promise","super","cachedUserAgent","videoMetadataCache","DataCache","playbackUrls","channelID","author","isLive","isUpcoming","waitingForMetadata","claimMainMetadataFetcher","documentScript","getElementById","claim","getAttribute","videoID","metadata","cachedData","findIndex","item","activeRequests","addCleanupListener","fetchVideoMetadata","ignoreCache","waitForOtherScript","waiting","fetchVideoDataDesktopClient","onMobile","formats","playabilityStatus","format","mimeType","containsVp9","sorted","reverse","sort","videoCache","client","clientName","clientVersion","videoId","json","videoDetails","streamingData","adaptiveFormats","lengthSeconds","channelId","innertubeDetails","androidSdkVersion","osName","osVersion","params","playbackContext","contentPlaybackContext","html5Preference","contentCheckOk","racyCheckOk","bestFormat","hostname","URL","docScript","head","existingScript","existingScriptVersion","versionHigher","getLocalizedMessage","valNewH","v1","charset","cryptoFuncs","getRandomValues","values","Uint32Array","localizedTitle","title","localizedMessage","getThumbnailElements","getThumbnailSelectors","additionalSelectors","s","results","thumbnail","handledThumbnails","lastGarbageCollection","thumbnailListener","invidiousSelector","getThumbnailSelector","isOnInvidious","onInitialLoad","configReady","selectorParam","invidiousSelectorParam","onLoad","waitFor","newThumbnails","readyState","eventListener","mobileNewThumbnailHandler","handledThumbnail","lastThumbnailCheck","thumbnailCheckTimeout","notNewThumbnails","thumbnails","newThumbnailsFound","observer","getThumbnailLink","attributes","observer2","content","mobileCheckTimes","mobileTimeout","newVersion","oldVersion","newVersionParts","oldVersionParts","newVersionPart","oldVersionPart","PageType","ChannelIDStatus","embedTitleSelector","channelTrailerTitleSelector","video","videoWidth","videoMutationObserver","videoMutationListenerElement","videosSetup","isLivePremiere","getConfig","waitingForNewVideo","isAdPlaying","onInvidious","onMobileYouTube","onYTTV","onYouTubeMusic","pageType","Unknown","channelIDInfo","Fetching","waitingForChannelID","lastNonInlineVideoID","isInline","adDuration","currentTimeWrong","videoIDChange","channelIDChange","videoElementChange","playerInit","resetValues","windowListenerHandler","newVideosLoaded","onNavigateToChannel","allowClipPage","isInlineParam","refreshVideoAttachments","whitelistCheck","isOnChannelPage","getYouTubeVideoID","Channel","getYouTubeVideoIDFromDocument","Embed","getYouTubeVideoIDFromURL","hideIcon","pageHint","Watch","videoURL","parseYouTubeVideoIDFromURL","callLater","startsWith","urlObject","host","invidiousInstances","searchParams","pathname","channelIDPromises","Found","getChannelID","isMainMetadataFetcher","race","channelInfo","getChannelIDSync","videoButtonHref","channelIDFallback","authorFallback","innerText","Failed","moduleParams","setupCleanupListener","refreshListeners","injectScript","playerInitListener","setupMetadataOnRecieve","addPageListeners","waitForElement","navigationApiAvailable","navigationListener","destination","navigation","setupVideoMutationListener","lastMutationListenerCheck","checkTimeout","mainVideoObject","videoContainer","waitingForVideoListeners","embedLastUrl","waitingForEmbed","isVinegarActive","newVideo","durationChange","possibleVideos","oldDuration","nonMiniplayerVideo","isNewVideo","dataType","channelTitle","playing","updatePlayerBar","isPremiere","videoIDs","playerTime","expectedTime","videoIDRegex","imgBackground","backgroundImage","image","existingPromise","imagesWaitingFor","waitForImageSrc","lastRefresh","getVideo","getCurrentTime","currentTime","paused","rawTime","CountdownMode","bounds","NoticeComponent","React","handleMouseMoveBinded","handleMouseMove","parentRef","maxCountdownTime","skipNoticeDuration","countdownInterval","amountOfPreviousNotices","idSuffix","countdownTime","countdownMode","Timer","mouseHovering","startFaded","mouseDownInfo","mouseMoved","right","bottom","showInSecondSlot","startCountdown","noticeStyle","userSelect","className","extraClass","onMouseEnter","onMouseLeave","timerMouseLeave","onMouseDown","onMouseUp","fadeIn","prideTheme","limitWidth","hideLogo","getURL","fill","logoFill","float","marginRight","noticeTitle","firstColumn","firstRow","hideRightInfo","timed","toggleManualPause","getCountdownElements","biggerCloseButton","close","smaller","bottomRow","visibility","paddingTop","Paused","Stopped","fadedMouseEnter","timerMouseEnter","pauseCountdown","countdown","fadeOut","notice","removeProperty","removeFadeAnimation","dontPauseCountdown","setupInterval","resetCountdown","silent","closeListener","addNoticeInfoMessage","message2","previousInfoMessage","previousInfoMessage2","thanksForVotingText","thanksForVotingText2","mouseX","mouseY","parent","clientWidth","clientHeight","NoticeTextSelectionComponent","cursor","textDecoration","icon","getTextElements","textParts","textPart","rel","SelectOptionComponent","label","htmlFor","onChange","option","showResetButton","onReset","ConfigClass","ProtoConfig","resetToDefault","userID","minutesSaved","skipCount","sponsorTimesContributed","Config","isVip","permissions","defaultCategory","segmentListDefaultTab","SegmentListDefaultTab","Segments","renderSegmentsAsChapters","forceChannelCheck","submissionCountSinceCategories","showTimeWithSkips","disableSkipping","muteSegments","fullVideoSegments","fullVideoLabelsOnThumbnails","manualSkipOnFullVideo","trackViewCount","trackViewCountInPrivate","trackDownvotes","trackDownvotesInPrivate","dontShowNotice","showUpcomingNotice","noticeVisibilityMode","NoticeVisibilityMode","FadedForAutoSkip","hideVideoPlayerControls","hideInfoButtonPlayerControls","hideDeleteButtonPlayerControls","hideUploadButtonPlayerControls","hideSkipButtonPlayerControls","hideDiscordLaunches","hideDiscordLink","supportInvidious","serverAddress","CompileConfig","minDuration","audioNotificationOnSkip","checkForUnlistedVideos","testingServer","ytInfoPermissionGranted","allowExpirements","showDonationLink","showPopupDonationCount","showUpsells","showNewFeaturePopups","donateClicked","autoHideInfoButton","autoSkipOnMusicVideos","skipNonMusicOnlyOnYoutubeMusic","scrollToEditTimeUpdate","categoryPillUpdate","hookUpdate","showChapterInfoMessage","darkMode","showCategoryGuidelines","showCategoryWithoutPermission","showSegmentNameInChapterBar","showAutogeneratedChapters","useVirtualTime","showSegmentFailedToFetchWarning","allowScrollingToEdit","deArrowInstalled","showDeArrowPromotion","showDeArrowInSettings","shownDeArrowPromotion","showZoomToFillError2","cleanPopup","hideSegmentCreationInPopup","categoryPillColors","skipKeybind","skipToHighlightKeybind","startSponsorKeybind","submitKeybind","actuallySubmitKeybind","previewKeybind","nextChapterKeybind","previousChapterKeybind","closeSkipNoticeKeybind","downvoteKeybind","upvoteKeybind","categorySelections","CategorySkipOption","AutoSkip","ManualSkip","ShowOverlay","payments","licenseKey","lastCheck","lastFreeCheck","freeAccess","chaptersAllowed","colorPalette","red","white","locked","barTypes","downvotedSegments","alreadyInstalled","unsubmittedSegments","skipRules","channelSkipProfileIDs","skipProfiles","skipProfileTemp","whitelistedChannels","skipProfileID","selection","keybinds","j","keybindEquals","invidiousList","output","debug","userAgent","platform","language","extensionVersion","parse","LoadingStatus","loadRetryCount","loadSegments","updating","segmentsLoaded","setStatus","NoVideo","SegmentsFound","JSError","NoSegmentsFound","ConnectionError","StillLoading","setVideoID","Video","setCurrentTime","setChanelIDInfo","channelAuthor","setCurrentTabSkipProfile","currentTabSkipProfileID","setSegments","sponsorTimes","segment","SponsorSourceType","Server","actionType","ActionType","Full","setLoopedChapter","loopedChapter","active","currentWindow","setupComPort","port","connect","onDisconnect","msg","SkipProfileButton","menuOpen","setMenuOpen","channelSkipProfileSet","getSkipProfileIDForChannel","skipProfileSet","getSkipProfileID","role","tabIndex","setShowForceChannelCheckWarning","viewBox","SkipProfileMenu","open","PopupComponent","Loading","extensionEnabled","setExtensionEnabled","showForceChannelCheckWarning","showNoticeButton","setShowNoticeButton","segments","forwardClickEvents","getVideoStatusText","stopAnimation","SegmentListComponent","SegmentSubmissionComponent","YourWorkComponent","logs","copyToClipboardPopup","generateDebugDetails","origin","endsWith","skipProfileOptions","getSkipProfileIDForTime","getSkipProfileIDForTab","getSkipProfileIDForVideo","configID","setConfigID","selectedSkipProfileAction","setSelectedSkipProfileAction","allSkipProfiles","setAllSkipProfiles","getChannelIDInfo","isOnYTTV","position","hash","updateSkipProfileSetting","SkipProfileRadioButtons","setSelected","updateConfig","alreadySelected","highlighted","overridden","SkipOptionActionComponent","getVideoID","SegmentListTab","isSegment","Chapter","isChapter","SegmentListItem","tabFilter","voteMessage","setVoteMessage","hidden","setHidden","SponsorHideType","Visible","isLooped","setIsLooped","UUID","extraInfo","Downvoted","MinimumDuration","Hidden","onDoubleClick","skipSegment","selectSegment","backgroundColor","category","description","shortCategoryName","margin","getFormattedTime","Poi","vote","segmentIDData","asyncRequestToServer","logRequest","loopChapter","Skip","Mute","newState","innerChapters","InnerChapterList","chapters","chapter","messageDuration","formatJSErrorMessage","getShortErrorMessage","ImportSegments","importMenuVisible","setImportMenuVisible","textArea","exportTimes","referenceNode","minWidth","rows","setTab","setIsVip","hasSegments","hasChapters","setTabBasedOnConfig","preferChapters","Chapters","segmentsWithNesting","chapterStack","seg","lastChapter","showSubmitButton","setShowSubmitButton","showStartSegment","setShowStartSegment","textAlign","SubmissionCounts","isSettingUsername","submissionCount","TimeSavedMessage","viewCount","toLocaleString","getFormattedHours","DonateMessage","alignItems","justifyContent","paddingLeft","onClose","round","years","days","setIsSettingUsername","username","setUsername","newUsername","setNewUsername","usernameSubmissionStatus","setUsernameSubmissionStatus","setSubmissionCount","setViewCount","setMinutesSaved","showDonateMessage","setShowDonateMessage","publicUserID","userInfo","userName","segmentCount","vip","clipboard","writeText","placeholder","utils","contentContainer","noticeRef","findReferenceNode","noticeElement","prepend","root","update","textBoxes","maxHeight","getMessageBoxes","getButtons","xmlns","points","ActionTypes","backgroundScriptContainer","wait","containsPermission","setupExtraSitePermissions","origins","getPermissionRegex","granted","setupExtraSiteContentScripts","removeExtraSiteRegistration","getExtraSiteRegistration","allFrames","registration","registerFirefoxContentScript","unregisterFirefoxContentScript","applyInvidiousPermissions","enable","containsInvidiousPermission","getMergedTimestamps","timestamps","deduped","startOverlaps","other","endOverlaps","other1","other2","getTimestampsDuration","getSponsorIndexFromUUID","getSponsorTimeFromUUID","domains","permissionRegex","findValidElementFromSelector","player","isContentScript","protocol","isHex","num","addHiddenSegment","segmentUUID","extension","inIncognitoContext","getLongErrorMessage","hashedVideoID","UUIDHash","allDownvotes","currentVideoData","lastAccess","existingData","uuid","autoSkip","categoryName","messageId","DEFAULT_CATEGORY","inTest","chapterNames","categoryList","names","exportTime","removeIf","matchers","matcher","YouTube","Autogenerated","videoDuration","lines","timeRegex","anyLineHasTime","line","getFormattedTimeToSeconds","specialCharMatchers","titleLeft","titleRight","split2","determinedCategory","Local","generateUserID","hashparamSegments","address","testingServerAddress","sendRequestToCustomServer","currentTabSkipProfile","getSkipProfile","getSkipProfileNum","getSkipProfileValue","profile","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file