From 92b17a272f7eb2f0a86af8af6f3b7b18a0e59fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Murat=20Go=CC=88zel?= Date: Wed, 26 Jun 2024 20:28:19 +0300 Subject: [PATCH] fix: id of the twitter description tag (2) --- dist/index.cjs | 2 +- dist/index.cjs.map | 2 +- dist/index.js | 2 +- dist/index.js.map | 2 +- package.json | 2 +- src/index.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dist/index.cjs b/dist/index.cjs index 7f12200..09b2af0 100755 --- a/dist/index.cjs +++ b/dist/index.cjs @@ -120,7 +120,7 @@ class Metapatcher { if (this.features.includes("twitterTags")) { const idTw = this.idPrefix + "-description-tw"; this.removeOne("meta", { id: idTw }); - this.set("meta", { idTw, name: "twitter:description", content: description }); + this.set("meta", { id: idTw, name: "twitter:description", content: description }); } return this; } diff --git a/dist/index.cjs.map b/dist/index.cjs.map index 8db968f..695636f 100644 --- a/dist/index.cjs.map +++ b/dist/index.cjs.map @@ -1 +1 @@ -{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["export class Metapatcher {\n features: MetapatcherFeatures[] = []\n\n // all ids when setting meta tags will be prefixed with this to prevent collision with other tags\n idPrefix = 'metapatcher'\n idCounters = { preload: 0, prefetch: 0, preconnect: 0, dnsPrefetch: 0 }\n\n // it uses memory instead of dom when dom is not available\n isDomAvailable = typeof document !== 'undefined'\n memory: string[] = []\n\n htmlVoidElements = ['base', 'link', 'meta']\n\n mimeTypesByExtension = {\n 'svg': 'image/svg+xml',\n 'png': 'image/png',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'ico': 'image/x-icon',\n 'gif': 'image/gif',\n 'webp': 'image/webp',\n 'bmp': 'image/bmp'\n }\n\n reImageSizeFromStr = /[0-9]{2,3}x[0-9]{2,3}/g\n\n appleTouchIconSizes = ['120x120', '180x180', '152x152', '167x167', '1024x1024']\n webAppManifestIconSizes = ['72x72', '96x96', '128x128', '144x144', '152x152', '192x192', '384x384', '512x512']\n msTilesNamingMap = {\n '70x70': 'msapplication-square70x70logo',\n '150x150': 'msapplication-square150x150logo',\n '310x310': 'msapplication-square310x310logo',\n '310x150': 'msapplication-wide310x150logo'\n }\n\n // all features except browserconfig.xml are enabled\n constructor () {\n this.features = ['structuredData', 'msTags', 'appleTags', 'openGraphTags', 'twitterTags', 'webAppManifest']\n // disable default requests made by browsers\n this.setMsApplicationConfig('none')\n }\n\n configure (features?: MetapatcherFeatures[], settings?: MetapatcherSettings) {\n if (settings?.idPrefix) this.idPrefix = settings.idPrefix\n if (features) this.features = features\n\n if (this.features.includes('appleTags')) {\n const id = this.idPrefix + '-apple-mobile-web-app-capable'\n this.set('meta', { id, name: 'apple-mobile-web-app-capable', content: 'yes' })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-twitter-card'\n this.set('meta', { id: idTw, name: 'twitter:card', content: 'summary' })\n }\n }\n\n setIcons(list: string[]): this {\n const msTileIconSizes = Object.keys(this.msTilesNamingMap)\n\n for (const url of list) {\n const mimeType = this.findMimeType(url)\n const sizeMatches = url.match(this.reImageSizeFromStr)\n const size = sizeMatches && sizeMatches.length > 0 ? sizeMatches[0] : undefined\n if (!size || !mimeType) continue\n\n if (this.features.includes('webAppManifest') && this.webAppManifestIconSizes.includes(size)) {\n const idWam = this.idPrefix + '-icon-' + size + '-wam'\n this.removeOne('link', { id: idWam })\n this.set('link', { id: idWam, rel: 'icon', href: url, sizes: size, type: mimeType })\n }\n\n if (this.features.includes('appleTags') && this.appleTouchIconSizes.includes(size)) {\n const idApple = this.idPrefix + '-icon-' + size + '-apple'\n this.removeOne('link', { id: idApple })\n this.set('link', { id: idApple, rel: 'apple-touch-icon', href: url, sizes: size })\n }\n\n if (this.features.includes('msTags') && msTileIconSizes.includes(size)) {\n const idMs = this.idPrefix + '-icon-' + size + '-ms'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: this.msTilesNamingMap[size as keyof typeof this.msTilesNamingMap], content: url })\n }\n }\n\n return this\n }\n\n setPageDetails (params: MetapatcherPageParams): this {\n if (params.title) this.setPageTitle(params.title)\n if (params.description) this.setPageDescription(params.description)\n if (params.path) this.setPageUrl(params.path)\n if (params.image) this.setPageImage(params.image)\n if (params.robots) this.setRobots(params.robots)\n if (params.locale) this.setPageLocale(params.locale)\n if (params.canonical) this.setCanonical(params.canonical)\n if (params.localVersions) this.setLocalVersions(params.localVersions, params.locale ?? '')\n if (params.breadcrumb) this.setBreadcrumb(params.breadcrumb)\n\n return this\n }\n\n setPageTitle (title: string): this {\n this.setDocumentTitle(title)\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + 'og-title'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:title', content: title })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + 'tw-title'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { id: idTw, name: 'twitter:title', content: title })\n }\n\n return this\n }\n\n setPageDescription (description: string): this {\n const id = this.idPrefix + '-description'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'description', content: description })\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-description-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:description', content: description })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-description-tw'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { idTw, name: 'twitter:description', content: description })\n }\n\n return this\n }\n\n setPageUrl (url: string): this {\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-url-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:url', content: url })\n }\n\n return this\n }\n\n setPageImage (param: string | MetapatcherPageImage): this {\n const img: MetapatcherPageImage = typeof param === 'string' ? { path: param } : param\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-image-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:image', content: img.path })\n\n const idOgw = this.idPrefix + '-image-w-og'\n this.removeOne('meta', { id: idOgw })\n if (img.width) {\n this.set('meta', { id: idOgw, property: 'og:image:width', content: img.width.toString() })\n }\n\n const idOgh = this.idPrefix + '-image-h-og'\n this.removeOne('meta', { id: idOgh })\n if (img.height) {\n this.set('meta', { id: idOgh, property: 'og:image:height', content: img.height.toString() })\n }\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-image-tw'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { id: idTw, property: 'twitter:image', content: img.path })\n }\n\n return this\n }\n\n setPageLocale (locale: string) {\n locale = locale.replace('_', '-')\n\n if (this.isDomAvailable) {\n document.documentElement.setAttribute('lang', locale)\n }\n\n if (this.features.includes('openGraphTags')) {\n const id = this.idPrefix + '-locale-og'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, property: 'og:locale', content: locale })\n }\n }\n\n setProjectDetails (params: MetapatcherProjectParams): this {\n if (params.favicon) this.setFavicon(params.favicon)\n if (params.name) this.setProjectName(params.name)\n if (params.url) this.setProjectUrl(params.url)\n if (params.robots) this.setRobots(params.robots)\n if (params.logo && params.url) this.setProjectLogo(params.logo, params.url)\n if (params.themeColor) this.setThemeColor(params.themeColor)\n if (params.twitterSite) this.setTwitterSite(params.twitterSite)\n if (params.safariPinnedTab) this.setSafariPinnedTab(params.safariPinnedTab)\n if (params.icons) this.setIcons(params.icons)\n\n return this\n }\n\n setProjectName (name: string): this {\n const idMs = this.idPrefix + '-project-name'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: 'application-name', content: name })\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-project-name-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:site_name', content: name })\n }\n else if (this.features.includes('appleTags')) {\n const idApple = this.idPrefix + '-project-name-apple'\n this.removeOne('meta', { id: idApple })\n this.set('meta', { id: idApple, name: 'apple-mobile-web-app-title', content: name })\n }\n\n return this\n }\n\n setProjectUrl (url: string): this {\n if (this.features.includes('msTags')) {\n const id = this.idPrefix + '-project-url'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'msapplication-starturl', content: url })\n }\n return this\n }\n\n setProjectLogo (logo: string, url: string): HTMLScriptElement | string {\n if (this.features.includes('structuredData')) {\n const id = this.idPrefix + '-project-logo'\n const json = {\n '@type': 'Organization',\n logo: logo,\n url: url\n }\n const _data = JSON.stringify(json)\n\n this.removeOne('script', { id: id })\n\n return this.isDomAvailable ? this.setJsonLdDom(id, _data) : this.setJsonLdMemory(id, _data)\n }\n\n return ''\n }\n\n setThemeColor (colorHexCode: string): this {\n const id = this.idPrefix + '-theme-color'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'theme-color', content: colorHexCode })\n\n if (this.features.includes('msTags')) {\n const idMs = this.idPrefix + '-theme-color-ms'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: 'msapplication-TileColor', content: colorHexCode })\n }\n\n return this\n }\n\n setTwitterSite (username: string): this {\n const id = this.idPrefix + '-twitter-site'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'twitter:site', content: username })\n return this\n }\n\n addDnsPrefetch (param: string | MetapatcherDnsPrefetchAttrs): this {\n const id = this.idPrefix + '-dns-prefetch-' + this.idCounters.dnsPrefetch.toString()\n this.idCounters.dnsPrefetch += 1\n const attrs: MetapatcherDnsPrefetchAttrs = typeof param === 'string'\n ? { id, rel: 'dns-prefetch', href: param }\n : Object.assign({}, param, { id, rel: 'dns-prefetch' })\n this.removeOne('link', { rel: 'dns-prefetch', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPreconnect (param: string | MetapatcherPreconnectAttrs): this {\n const id = this.idPrefix + '-preconnect-' + this.idCounters.preconnect.toString()\n this.idCounters.preconnect += 1\n const attrs: MetapatcherPreconnectAttrs = typeof param === 'string'\n ? { id, rel: 'preconnect', href: param }\n : Object.assign({}, param, { id, rel: 'preconnect' })\n this.removeOne('link', { rel: 'preconnect', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPrefetch (param: string | MetapatcherPrefetchAttrs): this {\n const id = this.idPrefix + '-prefetch-' + this.idCounters.prefetch.toString()\n this.idCounters.prefetch += 1\n const attrs: MetapatcherPrefetchAttrs = typeof param === 'string'\n ? { id, rel: 'prefetch', href: param }\n : Object.assign({}, param, { id, rel: 'prefetch' })\n this.removeOne('link', { rel: 'prefetch', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPreload (param: string | MetapatcherPreloadAttrs): this {\n const id = this.idPrefix + '-preload-' + this.idCounters.preload.toString()\n this.idCounters.preload += 1\n const attrs: MetapatcherPreloadAttrs = typeof param === 'string'\n ? { id, rel: 'preload', href: param }\n : Object.assign({}, param, { id, rel: 'preload' })\n this.removeOne('link', { rel: 'preload', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n setRobots(param: string | MetapatcherRobotsAttrs): this {\n const id = this.idPrefix + '-robots'\n const attrs: MetapatcherRobotsAttrs = typeof param === 'string'\n ? { id, name: 'robots', content: param }\n : Object.assign({}, param, { id, name: 'robots' })\n this.removeOne('meta', { id })\n this.set('meta', attrs)\n return this\n }\n\n setDocumentTitle(title: string): this {\n if (!this.isDomAvailable) {\n const predicate = (line: string) => line.includes('') && line.includes('')\n if (this.memory.some(predicate)) {\n this.memory = this.memory.map((line) => predicate(line) ? `${title}` : line)\n }\n else this.memory.push(`${title}`)\n }\n else document.title = title\n return this\n }\n\n setFavicon(param: string | MetapatcherFaviconAttrs): this {\n const mime = this.findMimeType(typeof param === 'string' ? param : param.href)\n if (!mime) return this\n\n const id = this.idPrefix + '-favicon'\n const attrs: MetapatcherFaviconAttrs = typeof param === 'string'\n ? { id, rel: 'shortcut icon', href: param }\n : Object.assign({}, param, { id, rel: 'shortcut icon' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n return this\n }\n\n setMsApplicationConfig (param: string | MetapatcherMsApplicationConfigAttrs) {\n const id = this.idPrefix + '-msapplication-config'\n const attrs: MetapatcherMsApplicationConfigAttrs = typeof param === 'string'\n ? { id, name: 'msapplication-config', content: param }\n : Object.assign({}, param, { id, name: 'msapplication-config' })\n this.removeOne('meta', { id })\n this.set('meta', attrs)\n return this\n }\n\n setSafariPinnedTab(attrs: MetapatcherSafariPinnedTabAttrs): this {\n const id = this.idPrefix + '-safari-pinned-tab'\n const _attrs: MetapatcherSafariPinnedTabAttrs = Object.assign({}, attrs, { id, rel: 'mask-icon' })\n this.removeOne('link', { id })\n this.set('link', _attrs)\n return this\n }\n\n setAppleStatusBarStyle (content: 'default' | 'black' | 'black-translucent' = 'default'): this {\n const id = this.idPrefix + '-apple-status-bar-style'\n this.removeOne('meta', { id })\n this.set('meta', { id, name: 'apple-mobile-web-app-status-bar-style', content })\n return this\n }\n\n setBreadcrumb (data: MetapatcherBreadcrumb[]): HTMLScriptElement | string {\n if (!this.features.includes('structuredData')) return ''\n\n const id = this.idPrefix + '-breadcrumb'\n const json = {\n '@type': 'BreadcrumbList',\n 'itemListElement': data.map(({title, url}, ind) => ({\n '@type': 'ListItem',\n 'position': ind + 1,\n 'name': title,\n 'item': url\n }))\n }\n const _data = JSON.stringify(json)\n\n this.removeOne('script', { id })\n\n return this.isDomAvailable ? this.setJsonLdDom(id, _data) : this.setJsonLdMemory(id, _data)\n }\n\n setJsonLdDom (id: string, data: string) {\n const elem = document.createElement('script')\n elem.id = id\n elem.type = 'application/ld+json'\n elem.text = data\n\n document.head.insertBefore(elem, null)\n\n return elem\n }\n\n setJsonLdMemory (id: string, data: string) {\n const _data = ``\n this.memory.push(_data)\n return _data\n }\n\n setCanonical (param: string | MetapatcherCanonicalLinkAttrs): this {\n const id = this.idPrefix + '-canonical'\n const attrs: MetapatcherCanonicalLinkAttrs = typeof param === 'string'\n ? { id, rel: 'canonical', href: param }\n : Object.assign({}, param, { id, rel: 'canonical' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n\n return this\n }\n\n setMeta (name: string, content: string): this {\n this.removeOne('meta', { name })\n this.set('meta', { name, content })\n\n return this\n }\n\n setMobileVariant (param: string | MetapatcherMobileVariantLinkAttrs): this {\n const id = this.idPrefix + '-mobile-variant'\n const attrs: MetapatcherMobileVariantLinkAttrs = typeof param === 'string'\n ? { id, rel: 'alternate', href: param, media: 'only screen and (max-width: 640px)' }\n : Object.assign({}, param, { id, rel: 'alternate' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n\n return this\n }\n\n setLocalVersions (param: MetapatcherLocalVersionLinkAttrs[], currentLang = ''): this {\n this.removeMany('link', { rel: 'alternate', hreflang: true })\n\n if (this.features.includes('openGraphTags')) {\n currentLang = currentLang.replace('_', '-')\n this.removeMany('meta', { property: 'og:locale:alternate' })\n this.removeOne('meta', { property: 'og:locale' })\n }\n\n for (const _attrs of param) {\n const id = this.idPrefix + '-local-version-' + _attrs.hreflang\n _attrs.hreflang = _attrs.hreflang.replace('_', '-')\n const attrs: MetapatcherLocalVersionLinkAttrs = Object.assign({}, _attrs, { id, rel: 'alternate' })\n\n this.set('link', attrs)\n\n if (this.features.includes('openGraphTags')) {\n const _id = this.idPrefix + '-local-version-og-' + _attrs.hreflang\n const suffix = currentLang === _attrs.hreflang ? '' : ':alternate'\n const __attrs = { id: _id, property: 'og:locale' + suffix, content: _attrs.hreflang.replace('-', '_') }\n this.set('meta', __attrs)\n }\n }\n\n return this\n }\n\n setJsonLd (id: string, data: Record): HTMLScriptElement | string {\n const str = JSON.stringify(data)\n this.removeOne('script', { id })\n return this.isDomAvailable ? this.setJsonLdDom(id, str) : this.setJsonLdMemory(id, str)\n }\n\n removeOne (tagName: string, attrs: Record): this {\n if (!this.isDomAvailable) {\n const queries = [`<${tagName}`].concat(Object.keys(attrs).map((key) => `${key}=\"${attrs[key]}\"`))\n this.memory = this.memory.filter((item) => !queries.every((query) => item.includes(query)))\n return this\n }\n\n const params = Object.keys(attrs).reduce((memo: string, key: string) => {\n memo += `[${key}=\"${attrs[key]}\"]`\n return memo\n }, '')\n const query = `${tagName}${params}`\n\n const elem = document.head.querySelector(query)\n if (elem) {\n elem.parentNode!.removeChild(elem)\n }\n return this\n }\n\n removeMany (tagName: string, attrs: Record): this {\n if (!this.isDomAvailable) {\n const queries = [`<${tagName}`].concat(Object.keys(attrs).map((key) => typeof attrs[key] === 'boolean' ? `${key}` : `${key}=\"${attrs[key]}\"`))\n this.memory = this.memory.filter((item) => !queries.every((query) => item.includes(query)))\n return this\n }\n\n const params = Object.keys(attrs).reduce((memo: string, key: string) => {\n memo += typeof attrs[key] === 'boolean' ? `[${key}]` : `[${key}=\"${attrs[key]}\"]`\n return memo\n }, '')\n const query = `${tagName}${params}`\n\n const elems = document.head.querySelectorAll(query)\n if (elems && elems.length > 0) {\n elems.forEach((elem) => {\n elem.parentNode!.removeChild(elem)\n })\n }\n return this\n }\n\n dump(): string {\n if (this.isDomAvailable) return ''\n\n return this.memory.join('\\n')\n }\n\n flushMemory(): this {\n this.memory = []\n return this\n }\n\n set (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, settings?: MetapatcherSetSettings): string | HTMLElement {\n tagName = tagName.toLowerCase()\n\n const isVoid = settings && Object.hasOwn(settings, 'void') ? settings.void! : this.htmlVoidElements.includes(tagName)\n\n return this.isDomAvailable\n ? this.setDom(tagName, attrs, { void: isVoid })\n : this.setMemory(tagName, attrs, { void: isVoid })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setDom (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, _settings: MetapatcherSetSettings): HTMLElement {\n const elem = document.createElement(tagName)\n\n this.setElementAttrs(elem, attrs)\n\n document.head.insertBefore(elem, null)\n\n return elem\n }\n\n setMemory (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, settings: MetapatcherSetSettings): string {\n const closingTag = settings.void ? ` />` : `>`\n const html = `<${tagName}${this.serializeAttrs(attrs)}${closingTag}`\n this.memory.push(html)\n return html\n }\n\n setElementAttrs (elem: HTMLElement, attrs: MetapatcherHtmlTagAttrs = {}) {\n for (const name of Object.keys(attrs)) {\n const v = attrs[name]!\n if (typeof v === 'string') elem.setAttribute(name, v)\n else if (v === true) elem.setAttribute(name, '')\n }\n }\n\n async setScript (attrs: MetapatcherSetJsAttrs, settings: MetapatcherSetJsSettings = {}): Promise {\n attrs = Object.assign({}, { type: 'text/javascript' }, attrs)\n settings = Object.assign({}, { location: 'headEnd', waitForLoad: '', timeout: 10000 }, settings)\n\n return new Promise((resolve, reject) => {\n if (!this.isDomAvailable) {\n return resolve(this.setMemory('script', attrs, { void: this.htmlVoidElements.includes('script') }))\n }\n\n const timeout = setTimeout(() => {\n reject(new Error('Timeout.'))\n }, settings.timeout)\n\n const elem = document.createElement('script')\n\n const { src, ...rest } = attrs\n this.setElementAttrs(elem, rest)\n\n function onDone () {\n clearTimeout(timeout)\n\n if (settings.waitForLoad!.length === 0) {\n return resolve(elem)\n }\n else {\n const interval = setInterval(() => {\n if (Object.hasOwn(window, settings.waitForLoad!)) {\n clearInterval(interval)\n return resolve(elem)\n }\n }, 100)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function onError (_event: Event) {\n clearTimeout(timeout)\n reject(new Error('Error loading resource'))\n }\n\n elem.addEventListener('load', onDone)\n elem.addEventListener('error', onError)\n\n elem.src = src\n\n if (settings.location === 'headEnd') document.head.insertBefore(elem, null)\n else if (settings.location === 'bodyEnd') document.body.insertBefore(elem, null)\n else if (settings.location === 'bodyStart') document.body.insertBefore(elem, document.body.firstChild)\n else document.body.insertBefore(elem, null)\n })\n }\n\n async setStylesheet (attrs: MetapatcherSetStylesheetAttrs, settings: MetapatcherSetStylesheetSettings = {}): Promise {\n attrs = Object.assign({}, { rel: 'stylesheet' }, attrs)\n settings = Object.assign({}, { location: 'headEnd', timeout: 10000 }, settings)\n\n return new Promise((resolve, reject) => {\n if (!this.isDomAvailable) {\n return resolve(this.setMemory('link', attrs, { void: this.htmlVoidElements.includes('link') }))\n }\n\n const timeout = setTimeout(() => {\n reject(new Error('Timeout.'))\n }, settings.timeout)\n\n const elem = document.createElement('link')\n\n const { href, ...rest } = attrs\n this.setElementAttrs(elem, Object.assign({}, rest, { media: 'only x' }))\n\n function onDone () {\n elem.media = attrs.media ?? 'all'\n clearTimeout(timeout)\n return resolve(elem)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function onError (_event: Event) {\n clearTimeout(timeout)\n return reject(new Error('Error loading resource'))\n }\n\n elem.addEventListener('load', onDone)\n elem.addEventListener('error', onError)\n\n elem.href = href\n\n if (settings.location === 'headEnd') document.head.insertBefore(elem, null)\n else if (settings.location === 'bodyEnd') document.body.insertBefore(elem, null)\n else if (settings.location === 'bodyStart') document.body.insertBefore(elem, document.body.firstChild)\n else document.body.insertBefore(elem, null)\n })\n }\n\n serializeAttrs (attrs: MetapatcherHtmlTagAttrs = {}): string {\n return Object.keys(attrs).reduce((memo, name) => {\n memo += ` ${name}=\"${attrs[name]}\"`\n return memo\n }, '')\n }\n\n findMimeType(path: string): string | undefined {\n const lastind = path.lastIndexOf('.')\n if (lastind < 1) return undefined\n\n const ext = path.slice(lastind + 1)\n if (!ext) return undefined\n\n return Object.hasOwn(this.mimeTypesByExtension, ext)\n ? this.mimeTypesByExtension[ext as keyof typeof this.mimeTypesByExtension]\n : undefined\n }\n}\n\nexport type MetapatcherFeatures = 'structuredData' |\n 'webAppManifest' |\n 'msTags' |\n 'appleTags' |\n 'openGraphTags' |\n 'twitterTags'\n\nexport interface MetapatcherSettings {\n idPrefix?: string\n}\n\nexport type MetapatcherHtmlTagAttrs = Record\n\nexport interface MetapatcherSetStylesheetAttrs {\n id: string\n readonly rel?: 'stylesheet'\n href: string\n media?: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherSetStylesheetSettings {\n location?: 'headEnd' | 'bodyEnd' | 'bodyStart'\n timeout?: number\n}\n\nexport interface MetapatcherSetJsAttrs {\n id: string\n type?: string\n src: string\n async?: boolean\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherSetJsSettings {\n location?: 'headEnd' | 'bodyEnd' | 'bodyStart'\n waitForLoad?: string\n timeout?: number\n}\n\nexport interface MetapatcherSetSettings {\n void?: boolean\n}\n\nexport interface MetapatcherCanonicalLinkAttrs {\n readonly rel?: 'canonical'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherMobileVariantLinkAttrs {\n readonly rel?: 'alternate'\n id?: string\n media: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherLocalVersionLinkAttrs {\n readonly rel?: 'alternate'\n id?: string\n hreflang: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherBreadcrumb {\n title: string\n url: string\n}\n\nexport interface MetapatcherSafariPinnedTabAttrs {\n readonly rel?: 'mask-icon'\n id?: string\n href: string\n color: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherFaviconAttrs {\n readonly rel?: 'shortcut icon'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherRobotsAttrs {\n readonly name?: 'robots'\n id?: string\n content: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPreloadAttrs {\n readonly rel?: 'preload'\n id?: string\n href: string\n as?: MetapatcherPreloadAs\n type?: string\n media?: string\n crossorigin?: boolean\n [index: string]: string | boolean\n}\n\nexport type MetapatcherPreloadAs = 'audio' | 'document' | 'embed' | 'fetch' | 'font' | 'image' | 'object' | 'script' | 'style' | 'track' | 'worker' | 'video'\n\nexport interface MetapatcherPrefetchAttrs {\n readonly rel?: 'prefetch'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPreconnectAttrs {\n readonly rel?: 'preconnect'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherDnsPrefetchAttrs {\n readonly rel?: 'dns-prefetch'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherProjectParams {\n favicon?: string | MetapatcherFaviconAttrs\n name?: string\n url?: string\n robots?: string | MetapatcherRobotsAttrs\n logo?: string\n themeColor?: string\n primaryColor?: string\n backgroundColor?: string\n twitterSite?: string\n safariPinnedTab?: MetapatcherSafariPinnedTabAttrs\n icons?: string[]\n}\n\nexport interface MetapatcherMsApplicationConfigAttrs {\n readonly name?: 'msapplication-config'\n id?: string\n content: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPageParams {\n title?: string\n description?: string\n path?: string\n image?: string\n robots?: string | MetapatcherRobotsAttrs\n locale?: string\n canonical?: string\n mobileVariant?: string\n localVersions?: MetapatcherLocalVersionLinkAttrs[],\n breadcrumb?: MetapatcherBreadcrumb[]\n}\n\nexport interface MetapatcherPageImage {\n path: string\n width?: string | number\n height?: string | number\n}\n\nexport const metapatcher = new Metapatcher()\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["export class Metapatcher {\n features: MetapatcherFeatures[] = []\n\n // all ids when setting meta tags will be prefixed with this to prevent collision with other tags\n idPrefix = 'metapatcher'\n idCounters = { preload: 0, prefetch: 0, preconnect: 0, dnsPrefetch: 0 }\n\n // it uses memory instead of dom when dom is not available\n isDomAvailable = typeof document !== 'undefined'\n memory: string[] = []\n\n htmlVoidElements = ['base', 'link', 'meta']\n\n mimeTypesByExtension = {\n 'svg': 'image/svg+xml',\n 'png': 'image/png',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'ico': 'image/x-icon',\n 'gif': 'image/gif',\n 'webp': 'image/webp',\n 'bmp': 'image/bmp'\n }\n\n reImageSizeFromStr = /[0-9]{2,3}x[0-9]{2,3}/g\n\n appleTouchIconSizes = ['120x120', '180x180', '152x152', '167x167', '1024x1024']\n webAppManifestIconSizes = ['72x72', '96x96', '128x128', '144x144', '152x152', '192x192', '384x384', '512x512']\n msTilesNamingMap = {\n '70x70': 'msapplication-square70x70logo',\n '150x150': 'msapplication-square150x150logo',\n '310x310': 'msapplication-square310x310logo',\n '310x150': 'msapplication-wide310x150logo'\n }\n\n // all features except browserconfig.xml are enabled\n constructor () {\n this.features = ['structuredData', 'msTags', 'appleTags', 'openGraphTags', 'twitterTags', 'webAppManifest']\n // disable default requests made by browsers\n this.setMsApplicationConfig('none')\n }\n\n configure (features?: MetapatcherFeatures[], settings?: MetapatcherSettings) {\n if (settings?.idPrefix) this.idPrefix = settings.idPrefix\n if (features) this.features = features\n\n if (this.features.includes('appleTags')) {\n const id = this.idPrefix + '-apple-mobile-web-app-capable'\n this.set('meta', { id, name: 'apple-mobile-web-app-capable', content: 'yes' })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-twitter-card'\n this.set('meta', { id: idTw, name: 'twitter:card', content: 'summary' })\n }\n }\n\n setIcons(list: string[]): this {\n const msTileIconSizes = Object.keys(this.msTilesNamingMap)\n\n for (const url of list) {\n const mimeType = this.findMimeType(url)\n const sizeMatches = url.match(this.reImageSizeFromStr)\n const size = sizeMatches && sizeMatches.length > 0 ? sizeMatches[0] : undefined\n if (!size || !mimeType) continue\n\n if (this.features.includes('webAppManifest') && this.webAppManifestIconSizes.includes(size)) {\n const idWam = this.idPrefix + '-icon-' + size + '-wam'\n this.removeOne('link', { id: idWam })\n this.set('link', { id: idWam, rel: 'icon', href: url, sizes: size, type: mimeType })\n }\n\n if (this.features.includes('appleTags') && this.appleTouchIconSizes.includes(size)) {\n const idApple = this.idPrefix + '-icon-' + size + '-apple'\n this.removeOne('link', { id: idApple })\n this.set('link', { id: idApple, rel: 'apple-touch-icon', href: url, sizes: size })\n }\n\n if (this.features.includes('msTags') && msTileIconSizes.includes(size)) {\n const idMs = this.idPrefix + '-icon-' + size + '-ms'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: this.msTilesNamingMap[size as keyof typeof this.msTilesNamingMap], content: url })\n }\n }\n\n return this\n }\n\n setPageDetails (params: MetapatcherPageParams): this {\n if (params.title) this.setPageTitle(params.title)\n if (params.description) this.setPageDescription(params.description)\n if (params.path) this.setPageUrl(params.path)\n if (params.image) this.setPageImage(params.image)\n if (params.robots) this.setRobots(params.robots)\n if (params.locale) this.setPageLocale(params.locale)\n if (params.canonical) this.setCanonical(params.canonical)\n if (params.localVersions) this.setLocalVersions(params.localVersions, params.locale ?? '')\n if (params.breadcrumb) this.setBreadcrumb(params.breadcrumb)\n\n return this\n }\n\n setPageTitle (title: string): this {\n this.setDocumentTitle(title)\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + 'og-title'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:title', content: title })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + 'tw-title'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { id: idTw, name: 'twitter:title', content: title })\n }\n\n return this\n }\n\n setPageDescription (description: string): this {\n const id = this.idPrefix + '-description'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'description', content: description })\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-description-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:description', content: description })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-description-tw'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { id: idTw, name: 'twitter:description', content: description })\n }\n\n return this\n }\n\n setPageUrl (url: string): this {\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-url-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:url', content: url })\n }\n\n return this\n }\n\n setPageImage (param: string | MetapatcherPageImage): this {\n const img: MetapatcherPageImage = typeof param === 'string' ? { path: param } : param\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-image-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:image', content: img.path })\n\n const idOgw = this.idPrefix + '-image-w-og'\n this.removeOne('meta', { id: idOgw })\n if (img.width) {\n this.set('meta', { id: idOgw, property: 'og:image:width', content: img.width.toString() })\n }\n\n const idOgh = this.idPrefix + '-image-h-og'\n this.removeOne('meta', { id: idOgh })\n if (img.height) {\n this.set('meta', { id: idOgh, property: 'og:image:height', content: img.height.toString() })\n }\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-image-tw'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { id: idTw, property: 'twitter:image', content: img.path })\n }\n\n return this\n }\n\n setPageLocale (locale: string) {\n locale = locale.replace('_', '-')\n\n if (this.isDomAvailable) {\n document.documentElement.setAttribute('lang', locale)\n }\n\n if (this.features.includes('openGraphTags')) {\n const id = this.idPrefix + '-locale-og'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, property: 'og:locale', content: locale })\n }\n }\n\n setProjectDetails (params: MetapatcherProjectParams): this {\n if (params.favicon) this.setFavicon(params.favicon)\n if (params.name) this.setProjectName(params.name)\n if (params.url) this.setProjectUrl(params.url)\n if (params.robots) this.setRobots(params.robots)\n if (params.logo && params.url) this.setProjectLogo(params.logo, params.url)\n if (params.themeColor) this.setThemeColor(params.themeColor)\n if (params.twitterSite) this.setTwitterSite(params.twitterSite)\n if (params.safariPinnedTab) this.setSafariPinnedTab(params.safariPinnedTab)\n if (params.icons) this.setIcons(params.icons)\n\n return this\n }\n\n setProjectName (name: string): this {\n const idMs = this.idPrefix + '-project-name'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: 'application-name', content: name })\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-project-name-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:site_name', content: name })\n }\n else if (this.features.includes('appleTags')) {\n const idApple = this.idPrefix + '-project-name-apple'\n this.removeOne('meta', { id: idApple })\n this.set('meta', { id: idApple, name: 'apple-mobile-web-app-title', content: name })\n }\n\n return this\n }\n\n setProjectUrl (url: string): this {\n if (this.features.includes('msTags')) {\n const id = this.idPrefix + '-project-url'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'msapplication-starturl', content: url })\n }\n return this\n }\n\n setProjectLogo (logo: string, url: string): HTMLScriptElement | string {\n if (this.features.includes('structuredData')) {\n const id = this.idPrefix + '-project-logo'\n const json = {\n '@type': 'Organization',\n logo: logo,\n url: url\n }\n const _data = JSON.stringify(json)\n\n this.removeOne('script', { id: id })\n\n return this.isDomAvailable ? this.setJsonLdDom(id, _data) : this.setJsonLdMemory(id, _data)\n }\n\n return ''\n }\n\n setThemeColor (colorHexCode: string): this {\n const id = this.idPrefix + '-theme-color'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'theme-color', content: colorHexCode })\n\n if (this.features.includes('msTags')) {\n const idMs = this.idPrefix + '-theme-color-ms'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: 'msapplication-TileColor', content: colorHexCode })\n }\n\n return this\n }\n\n setTwitterSite (username: string): this {\n const id = this.idPrefix + '-twitter-site'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'twitter:site', content: username })\n return this\n }\n\n addDnsPrefetch (param: string | MetapatcherDnsPrefetchAttrs): this {\n const id = this.idPrefix + '-dns-prefetch-' + this.idCounters.dnsPrefetch.toString()\n this.idCounters.dnsPrefetch += 1\n const attrs: MetapatcherDnsPrefetchAttrs = typeof param === 'string'\n ? { id, rel: 'dns-prefetch', href: param }\n : Object.assign({}, param, { id, rel: 'dns-prefetch' })\n this.removeOne('link', { rel: 'dns-prefetch', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPreconnect (param: string | MetapatcherPreconnectAttrs): this {\n const id = this.idPrefix + '-preconnect-' + this.idCounters.preconnect.toString()\n this.idCounters.preconnect += 1\n const attrs: MetapatcherPreconnectAttrs = typeof param === 'string'\n ? { id, rel: 'preconnect', href: param }\n : Object.assign({}, param, { id, rel: 'preconnect' })\n this.removeOne('link', { rel: 'preconnect', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPrefetch (param: string | MetapatcherPrefetchAttrs): this {\n const id = this.idPrefix + '-prefetch-' + this.idCounters.prefetch.toString()\n this.idCounters.prefetch += 1\n const attrs: MetapatcherPrefetchAttrs = typeof param === 'string'\n ? { id, rel: 'prefetch', href: param }\n : Object.assign({}, param, { id, rel: 'prefetch' })\n this.removeOne('link', { rel: 'prefetch', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPreload (param: string | MetapatcherPreloadAttrs): this {\n const id = this.idPrefix + '-preload-' + this.idCounters.preload.toString()\n this.idCounters.preload += 1\n const attrs: MetapatcherPreloadAttrs = typeof param === 'string'\n ? { id, rel: 'preload', href: param }\n : Object.assign({}, param, { id, rel: 'preload' })\n this.removeOne('link', { rel: 'preload', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n setRobots(param: string | MetapatcherRobotsAttrs): this {\n const id = this.idPrefix + '-robots'\n const attrs: MetapatcherRobotsAttrs = typeof param === 'string'\n ? { id, name: 'robots', content: param }\n : Object.assign({}, param, { id, name: 'robots' })\n this.removeOne('meta', { id })\n this.set('meta', attrs)\n return this\n }\n\n setDocumentTitle(title: string): this {\n if (!this.isDomAvailable) {\n const predicate = (line: string) => line.includes('') && line.includes('')\n if (this.memory.some(predicate)) {\n this.memory = this.memory.map((line) => predicate(line) ? `${title}` : line)\n }\n else this.memory.push(`${title}`)\n }\n else document.title = title\n return this\n }\n\n setFavicon(param: string | MetapatcherFaviconAttrs): this {\n const mime = this.findMimeType(typeof param === 'string' ? param : param.href)\n if (!mime) return this\n\n const id = this.idPrefix + '-favicon'\n const attrs: MetapatcherFaviconAttrs = typeof param === 'string'\n ? { id, rel: 'shortcut icon', href: param }\n : Object.assign({}, param, { id, rel: 'shortcut icon' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n return this\n }\n\n setMsApplicationConfig (param: string | MetapatcherMsApplicationConfigAttrs) {\n const id = this.idPrefix + '-msapplication-config'\n const attrs: MetapatcherMsApplicationConfigAttrs = typeof param === 'string'\n ? { id, name: 'msapplication-config', content: param }\n : Object.assign({}, param, { id, name: 'msapplication-config' })\n this.removeOne('meta', { id })\n this.set('meta', attrs)\n return this\n }\n\n setSafariPinnedTab(attrs: MetapatcherSafariPinnedTabAttrs): this {\n const id = this.idPrefix + '-safari-pinned-tab'\n const _attrs: MetapatcherSafariPinnedTabAttrs = Object.assign({}, attrs, { id, rel: 'mask-icon' })\n this.removeOne('link', { id })\n this.set('link', _attrs)\n return this\n }\n\n setAppleStatusBarStyle (content: 'default' | 'black' | 'black-translucent' = 'default'): this {\n const id = this.idPrefix + '-apple-status-bar-style'\n this.removeOne('meta', { id })\n this.set('meta', { id, name: 'apple-mobile-web-app-status-bar-style', content })\n return this\n }\n\n setBreadcrumb (data: MetapatcherBreadcrumb[]): HTMLScriptElement | string {\n if (!this.features.includes('structuredData')) return ''\n\n const id = this.idPrefix + '-breadcrumb'\n const json = {\n '@type': 'BreadcrumbList',\n 'itemListElement': data.map(({title, url}, ind) => ({\n '@type': 'ListItem',\n 'position': ind + 1,\n 'name': title,\n 'item': url\n }))\n }\n const _data = JSON.stringify(json)\n\n this.removeOne('script', { id })\n\n return this.isDomAvailable ? this.setJsonLdDom(id, _data) : this.setJsonLdMemory(id, _data)\n }\n\n setJsonLdDom (id: string, data: string) {\n const elem = document.createElement('script')\n elem.id = id\n elem.type = 'application/ld+json'\n elem.text = data\n\n document.head.insertBefore(elem, null)\n\n return elem\n }\n\n setJsonLdMemory (id: string, data: string) {\n const _data = ``\n this.memory.push(_data)\n return _data\n }\n\n setCanonical (param: string | MetapatcherCanonicalLinkAttrs): this {\n const id = this.idPrefix + '-canonical'\n const attrs: MetapatcherCanonicalLinkAttrs = typeof param === 'string'\n ? { id, rel: 'canonical', href: param }\n : Object.assign({}, param, { id, rel: 'canonical' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n\n return this\n }\n\n setMeta (name: string, content: string): this {\n this.removeOne('meta', { name })\n this.set('meta', { name, content })\n\n return this\n }\n\n setMobileVariant (param: string | MetapatcherMobileVariantLinkAttrs): this {\n const id = this.idPrefix + '-mobile-variant'\n const attrs: MetapatcherMobileVariantLinkAttrs = typeof param === 'string'\n ? { id, rel: 'alternate', href: param, media: 'only screen and (max-width: 640px)' }\n : Object.assign({}, param, { id, rel: 'alternate' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n\n return this\n }\n\n setLocalVersions (param: MetapatcherLocalVersionLinkAttrs[], currentLang = ''): this {\n this.removeMany('link', { rel: 'alternate', hreflang: true })\n\n if (this.features.includes('openGraphTags')) {\n currentLang = currentLang.replace('_', '-')\n this.removeMany('meta', { property: 'og:locale:alternate' })\n this.removeOne('meta', { property: 'og:locale' })\n }\n\n for (const _attrs of param) {\n const id = this.idPrefix + '-local-version-' + _attrs.hreflang\n _attrs.hreflang = _attrs.hreflang.replace('_', '-')\n const attrs: MetapatcherLocalVersionLinkAttrs = Object.assign({}, _attrs, { id, rel: 'alternate' })\n\n this.set('link', attrs)\n\n if (this.features.includes('openGraphTags')) {\n const _id = this.idPrefix + '-local-version-og-' + _attrs.hreflang\n const suffix = currentLang === _attrs.hreflang ? '' : ':alternate'\n const __attrs = { id: _id, property: 'og:locale' + suffix, content: _attrs.hreflang.replace('-', '_') }\n this.set('meta', __attrs)\n }\n }\n\n return this\n }\n\n setJsonLd (id: string, data: Record): HTMLScriptElement | string {\n const str = JSON.stringify(data)\n this.removeOne('script', { id })\n return this.isDomAvailable ? this.setJsonLdDom(id, str) : this.setJsonLdMemory(id, str)\n }\n\n removeOne (tagName: string, attrs: Record): this {\n if (!this.isDomAvailable) {\n const queries = [`<${tagName}`].concat(Object.keys(attrs).map((key) => `${key}=\"${attrs[key]}\"`))\n this.memory = this.memory.filter((item) => !queries.every((query) => item.includes(query)))\n return this\n }\n\n const params = Object.keys(attrs).reduce((memo: string, key: string) => {\n memo += `[${key}=\"${attrs[key]}\"]`\n return memo\n }, '')\n const query = `${tagName}${params}`\n\n const elem = document.head.querySelector(query)\n if (elem) {\n elem.parentNode!.removeChild(elem)\n }\n return this\n }\n\n removeMany (tagName: string, attrs: Record): this {\n if (!this.isDomAvailable) {\n const queries = [`<${tagName}`].concat(Object.keys(attrs).map((key) => typeof attrs[key] === 'boolean' ? `${key}` : `${key}=\"${attrs[key]}\"`))\n this.memory = this.memory.filter((item) => !queries.every((query) => item.includes(query)))\n return this\n }\n\n const params = Object.keys(attrs).reduce((memo: string, key: string) => {\n memo += typeof attrs[key] === 'boolean' ? `[${key}]` : `[${key}=\"${attrs[key]}\"]`\n return memo\n }, '')\n const query = `${tagName}${params}`\n\n const elems = document.head.querySelectorAll(query)\n if (elems && elems.length > 0) {\n elems.forEach((elem) => {\n elem.parentNode!.removeChild(elem)\n })\n }\n return this\n }\n\n dump(): string {\n if (this.isDomAvailable) return ''\n\n return this.memory.join('\\n')\n }\n\n flushMemory(): this {\n this.memory = []\n return this\n }\n\n set (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, settings?: MetapatcherSetSettings): string | HTMLElement {\n tagName = tagName.toLowerCase()\n\n const isVoid = settings && Object.hasOwn(settings, 'void') ? settings.void! : this.htmlVoidElements.includes(tagName)\n\n return this.isDomAvailable\n ? this.setDom(tagName, attrs, { void: isVoid })\n : this.setMemory(tagName, attrs, { void: isVoid })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setDom (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, _settings: MetapatcherSetSettings): HTMLElement {\n const elem = document.createElement(tagName)\n\n this.setElementAttrs(elem, attrs)\n\n document.head.insertBefore(elem, null)\n\n return elem\n }\n\n setMemory (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, settings: MetapatcherSetSettings): string {\n const closingTag = settings.void ? ` />` : `>`\n const html = `<${tagName}${this.serializeAttrs(attrs)}${closingTag}`\n this.memory.push(html)\n return html\n }\n\n setElementAttrs (elem: HTMLElement, attrs: MetapatcherHtmlTagAttrs = {}) {\n for (const name of Object.keys(attrs)) {\n const v = attrs[name]!\n if (typeof v === 'string') elem.setAttribute(name, v)\n else if (v === true) elem.setAttribute(name, '')\n }\n }\n\n async setScript (attrs: MetapatcherSetJsAttrs, settings: MetapatcherSetJsSettings = {}): Promise {\n attrs = Object.assign({}, { type: 'text/javascript' }, attrs)\n settings = Object.assign({}, { location: 'headEnd', waitForLoad: '', timeout: 10000 }, settings)\n\n return new Promise((resolve, reject) => {\n if (!this.isDomAvailable) {\n return resolve(this.setMemory('script', attrs, { void: this.htmlVoidElements.includes('script') }))\n }\n\n const timeout = setTimeout(() => {\n reject(new Error('Timeout.'))\n }, settings.timeout)\n\n const elem = document.createElement('script')\n\n const { src, ...rest } = attrs\n this.setElementAttrs(elem, rest)\n\n function onDone () {\n clearTimeout(timeout)\n\n if (settings.waitForLoad!.length === 0) {\n return resolve(elem)\n }\n else {\n const interval = setInterval(() => {\n if (Object.hasOwn(window, settings.waitForLoad!)) {\n clearInterval(interval)\n return resolve(elem)\n }\n }, 100)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function onError (_event: Event) {\n clearTimeout(timeout)\n reject(new Error('Error loading resource'))\n }\n\n elem.addEventListener('load', onDone)\n elem.addEventListener('error', onError)\n\n elem.src = src\n\n if (settings.location === 'headEnd') document.head.insertBefore(elem, null)\n else if (settings.location === 'bodyEnd') document.body.insertBefore(elem, null)\n else if (settings.location === 'bodyStart') document.body.insertBefore(elem, document.body.firstChild)\n else document.body.insertBefore(elem, null)\n })\n }\n\n async setStylesheet (attrs: MetapatcherSetStylesheetAttrs, settings: MetapatcherSetStylesheetSettings = {}): Promise {\n attrs = Object.assign({}, { rel: 'stylesheet' }, attrs)\n settings = Object.assign({}, { location: 'headEnd', timeout: 10000 }, settings)\n\n return new Promise((resolve, reject) => {\n if (!this.isDomAvailable) {\n return resolve(this.setMemory('link', attrs, { void: this.htmlVoidElements.includes('link') }))\n }\n\n const timeout = setTimeout(() => {\n reject(new Error('Timeout.'))\n }, settings.timeout)\n\n const elem = document.createElement('link')\n\n const { href, ...rest } = attrs\n this.setElementAttrs(elem, Object.assign({}, rest, { media: 'only x' }))\n\n function onDone () {\n elem.media = attrs.media ?? 'all'\n clearTimeout(timeout)\n return resolve(elem)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function onError (_event: Event) {\n clearTimeout(timeout)\n return reject(new Error('Error loading resource'))\n }\n\n elem.addEventListener('load', onDone)\n elem.addEventListener('error', onError)\n\n elem.href = href\n\n if (settings.location === 'headEnd') document.head.insertBefore(elem, null)\n else if (settings.location === 'bodyEnd') document.body.insertBefore(elem, null)\n else if (settings.location === 'bodyStart') document.body.insertBefore(elem, document.body.firstChild)\n else document.body.insertBefore(elem, null)\n })\n }\n\n serializeAttrs (attrs: MetapatcherHtmlTagAttrs = {}): string {\n return Object.keys(attrs).reduce((memo, name) => {\n memo += ` ${name}=\"${attrs[name]}\"`\n return memo\n }, '')\n }\n\n findMimeType(path: string): string | undefined {\n const lastind = path.lastIndexOf('.')\n if (lastind < 1) return undefined\n\n const ext = path.slice(lastind + 1)\n if (!ext) return undefined\n\n return Object.hasOwn(this.mimeTypesByExtension, ext)\n ? this.mimeTypesByExtension[ext as keyof typeof this.mimeTypesByExtension]\n : undefined\n }\n}\n\nexport type MetapatcherFeatures = 'structuredData' |\n 'webAppManifest' |\n 'msTags' |\n 'appleTags' |\n 'openGraphTags' |\n 'twitterTags'\n\nexport interface MetapatcherSettings {\n idPrefix?: string\n}\n\nexport type MetapatcherHtmlTagAttrs = Record\n\nexport interface MetapatcherSetStylesheetAttrs {\n id: string\n readonly rel?: 'stylesheet'\n href: string\n media?: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherSetStylesheetSettings {\n location?: 'headEnd' | 'bodyEnd' | 'bodyStart'\n timeout?: number\n}\n\nexport interface MetapatcherSetJsAttrs {\n id: string\n type?: string\n src: string\n async?: boolean\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherSetJsSettings {\n location?: 'headEnd' | 'bodyEnd' | 'bodyStart'\n waitForLoad?: string\n timeout?: number\n}\n\nexport interface MetapatcherSetSettings {\n void?: boolean\n}\n\nexport interface MetapatcherCanonicalLinkAttrs {\n readonly rel?: 'canonical'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherMobileVariantLinkAttrs {\n readonly rel?: 'alternate'\n id?: string\n media: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherLocalVersionLinkAttrs {\n readonly rel?: 'alternate'\n id?: string\n hreflang: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherBreadcrumb {\n title: string\n url: string\n}\n\nexport interface MetapatcherSafariPinnedTabAttrs {\n readonly rel?: 'mask-icon'\n id?: string\n href: string\n color: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherFaviconAttrs {\n readonly rel?: 'shortcut icon'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherRobotsAttrs {\n readonly name?: 'robots'\n id?: string\n content: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPreloadAttrs {\n readonly rel?: 'preload'\n id?: string\n href: string\n as?: MetapatcherPreloadAs\n type?: string\n media?: string\n crossorigin?: boolean\n [index: string]: string | boolean\n}\n\nexport type MetapatcherPreloadAs = 'audio' | 'document' | 'embed' | 'fetch' | 'font' | 'image' | 'object' | 'script' | 'style' | 'track' | 'worker' | 'video'\n\nexport interface MetapatcherPrefetchAttrs {\n readonly rel?: 'prefetch'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPreconnectAttrs {\n readonly rel?: 'preconnect'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherDnsPrefetchAttrs {\n readonly rel?: 'dns-prefetch'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherProjectParams {\n favicon?: string | MetapatcherFaviconAttrs\n name?: string\n url?: string\n robots?: string | MetapatcherRobotsAttrs\n logo?: string\n themeColor?: string\n primaryColor?: string\n backgroundColor?: string\n twitterSite?: string\n safariPinnedTab?: MetapatcherSafariPinnedTabAttrs\n icons?: string[]\n}\n\nexport interface MetapatcherMsApplicationConfigAttrs {\n readonly name?: 'msapplication-config'\n id?: string\n content: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPageParams {\n title?: string\n description?: string\n path?: string\n image?: string\n robots?: string | MetapatcherRobotsAttrs\n locale?: string\n canonical?: string\n mobileVariant?: string\n localVersions?: MetapatcherLocalVersionLinkAttrs[],\n breadcrumb?: MetapatcherBreadcrumb[]\n}\n\nexport interface MetapatcherPageImage {\n path: string\n width?: string | number\n height?: string | number\n}\n\nexport const metapatcher = new Metapatcher()\n"],"names":[],"mappings":";;AACO,MAAM,WAAW,CAAC;AACzB,EAAE,QAAQ,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,QAAQ,GAAG,aAAa,CAAC;AAC3B,EAAE,UAAU,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AAC1E;AACA,EAAE,cAAc,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC;AACnD,EAAE,MAAM,GAAG,EAAE,CAAC;AACd,EAAE,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9C,EAAE,oBAAoB,GAAG;AACzB,IAAI,KAAK,EAAE,eAAe;AAC1B,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,KAAK,EAAE,YAAY;AACvB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,KAAK,EAAE,cAAc;AACzB,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,KAAK,EAAE,WAAW;AACtB,GAAG,CAAC;AACJ,EAAE,kBAAkB,GAAG,wBAAwB,CAAC;AAChD,EAAE,mBAAmB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAClF,EAAE,uBAAuB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACjH,EAAE,gBAAgB,GAAG;AACrB,IAAI,OAAO,EAAE,+BAA+B;AAC5C,IAAI,SAAS,EAAE,iCAAiC;AAChD,IAAI,SAAS,EAAE,iCAAiC;AAChD,IAAI,SAAS,EAAE,+BAA+B;AAC9C,GAAG,CAAC;AACJ;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,gBAAgB,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAChH,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAChC,IAAI,IAAI,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,QAAQ;AACrD,MAAM,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACxC,IAAI,IAAI,QAAQ;AAChB,MAAM,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC7C,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,+BAA+B,CAAC;AACjE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACrF,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC/C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AACnD,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAC/E,KAAK;AACL,GAAG;AACH,EAAE,QAAQ,CAAC,IAAI,EAAE;AACjB,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC/D,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9C,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC7D,MAAM,MAAM,IAAI,GAAG,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACnF,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ;AAC5B,QAAQ,SAAS;AACjB,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACnG,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;AAC/D,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7F,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1F,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC;AACnE,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3F,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9E,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7D,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AACxF,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,cAAc,CAAC,MAAM,EAAE;AACzB,IAAI,IAAI,MAAM,CAAC,KAAK;AACpB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,MAAM,CAAC,WAAW;AAC1B,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAClD,IAAI,IAAI,MAAM,CAAC,IAAI;AACnB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,MAAM,CAAC,KAAK;AACpB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,MAAM,CAAC,MAAM;AACrB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,IAAI,IAAI,MAAM,CAAC,MAAM;AACrB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,IAAI,MAAM,CAAC,SAAS;AACxB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1C,IAAI,IAAI,MAAM,CAAC,aAAa;AAC5B,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AACvE,IAAI,IAAI,MAAM,CAAC,UAAU;AACzB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5C,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC/C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5E,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,kBAAkB,CAAC,WAAW,EAAE;AAClC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;AAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AACxE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AACrD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AACvF,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC/C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AACrD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AACxF,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE;AAClB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC7C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AACpE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;AAC/C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9E,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;AAClD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnG,OAAO;AACP,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;AAClD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;AACtB,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACrG,OAAO;AACP,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC/C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;AAC/C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACnF,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,aAAa,CAAC,MAAM,EAAE;AACxB,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,MAAM,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;AAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACvE,KAAK;AACL,GAAG;AACH,EAAE,iBAAiB,CAAC,MAAM,EAAE;AAC5B,IAAI,IAAI,MAAM,CAAC,OAAO;AACtB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC,IAAI,IAAI,MAAM,CAAC,IAAI;AACnB,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,IAAI,IAAI,MAAM,CAAC,GAAG;AAClB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,IAAI,IAAI,MAAM,CAAC,MAAM;AACrB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG;AACjC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACnD,IAAI,IAAI,MAAM,CAAC,UAAU;AACzB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5C,IAAI,IAAI,MAAM,CAAC,WAAW;AAC1B,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC9C,IAAI,IAAI,MAAM,CAAC,eAAe;AAC9B,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACtD,IAAI,IAAI,MAAM,CAAC,KAAK;AACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,cAAc,CAAC,IAAI,EAAE;AACvB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AACjD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5E,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC;AACtD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACpD,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC;AAC5D,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,aAAa,CAAC,GAAG,EAAE;AACrB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1C,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;AAChD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;AAC5B,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAClD,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AACjD,MAAM,MAAM,IAAI,GAAG;AACnB,QAAQ,OAAO,EAAE,cAAc;AAC/B,QAAQ,IAAI;AACZ,QAAQ,GAAG;AACX,OAAO,CAAC;AACR,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,MAAM,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAClG,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,aAAa,CAAC,YAAY,EAAE;AAC9B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;AAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AACzE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AACrD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AAC7F,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,cAAc,CAAC,QAAQ,EAAE;AAC3B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AACtE,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE;AACxB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AACzF,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC;AACrC,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;AAC/I,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE;AACvB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AACtF,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC;AACpC,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;AAC3I,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAClF,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,CAAC;AAClC,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AACvI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,UAAU,CAAC,KAAK,EAAE;AACpB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAChF,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACjC,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AACrI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,SAAS,CAAC,KAAK,EAAE;AACnB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AACzC,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,gBAAgB,CAAC,KAAK,EAAE;AAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACxF,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACvC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AACpG,OAAO;AACP,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,MAAM,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,UAAU,CAAC,KAAK,EAAE;AACpB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACnF,IAAI,IAAI,CAAC,IAAI;AACb,MAAM,OAAO,IAAI,CAAC;AAClB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC1C,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;AACjJ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,sBAAsB,CAAC,KAAK,EAAE;AAChC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC;AACvD,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;AACpK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,kBAAkB,CAAC,KAAK,EAAE;AAC5B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC;AACpD,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,sBAAsB,CAAC,OAAO,GAAG,SAAS,EAAE;AAC9C,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,yBAAyB,CAAC;AACzD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,uCAAuC,EAAE,OAAO,EAAE,CAAC,CAAC;AACrF,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,aAAa,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AACjD,MAAM,OAAO,EAAE,CAAC;AAChB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;AAC7C,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,OAAO,EAAE,gBAAgB;AAC/B,MAAM,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM;AAC5D,QAAQ,OAAO,EAAE,UAAU;AAC3B,QAAQ,UAAU,EAAE,GAAG,GAAG,CAAC;AAC3B,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,MAAM,EAAE,GAAG;AACnB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,IAAI,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChG,GAAG;AACH,EAAE,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE;AACzB,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACjB,IAAI,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;AACtC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3C,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE;AAC5B,IAAI,MAAM,KAAK,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,6BAA6B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACpF,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;AAC5C,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AACzI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE;AACzB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACxC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,gBAAgB,CAAC,KAAK,EAAE;AAC1B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AACjD,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AACtL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,EAAE;AAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAClD,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC,CAAC;AACnE,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;AAChC,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC;AACrE,MAAM,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1D,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AACxE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACnD,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3E,QAAQ,MAAM,MAAM,GAAG,WAAW,KAAK,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,YAAY,CAAC;AAC3E,QAAQ,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AAChH,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClC,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE;AACtB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,IAAI,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5F,GAAG;AACH,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE;AAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpG,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AAC5D,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACxC,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrJ,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpG,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AAC5D,MAAM,IAAI,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACxF,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACxC,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACxD,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9B,QAAQ,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1C,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,IAAI,CAAC,cAAc;AAC3B,MAAM,OAAO,EAAE,CAAC;AAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACrB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,QAAQ,EAAE;AACrC,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,IAAI,MAAM,MAAM,GAAG,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzH,IAAI,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAClI,GAAG;AACH;AACA,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,EAAE;AACzC,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3C,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,QAAQ,EAAE;AAC3C,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACzE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE;AACpC,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3C,MAAM,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ;AAC/B,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACnC,WAAW,IAAI,CAAC,KAAK,IAAI;AACzB,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpC,KAAK;AACL,GAAG;AACH,EAAE,MAAM,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,EAAE;AACxC,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,KAAK,CAAC,CAAC;AAClE,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnG,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAChC,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5G,OAAO;AACP,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;AACvC,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACtC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,MAAM,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD,MAAM,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;AACrC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,MAAM,SAAS,MAAM,GAAG;AACxB,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/C,UAAU,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAS,MAAM;AACf,UAAU,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM;AAC7C,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC7D,cAAc,aAAa,CAAC,QAAQ,CAAC,CAAC;AACtC,cAAc,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,aAAa;AACb,WAAW,EAAE,GAAG,CAAC,CAAC;AAClB,SAAS;AACT,OAAO;AACP,MAAM,SAAS,OAAO,CAAC,MAAM,EAAE;AAC/B,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACpD,OAAO;AACP,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;AACzC,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,WAAW,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;AAC9C,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,WAAW,IAAI,QAAQ,CAAC,QAAQ,KAAK,WAAW;AAChD,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnE;AACA,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,EAAE;AAC5C,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;AAC5D,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AAClF,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAChC,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACxG,OAAO;AACP,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;AACvC,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACtC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,MAAM,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;AACtC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC/E,MAAM,SAAS,MAAM,GAAG;AACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;AAC1C,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,OAAO;AACP,MAAM,SAAS,OAAO,CAAC,MAAM,EAAE;AAC/B,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAQ,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAC3D,OAAO;AACP,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;AACzC,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,WAAW,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;AAC9C,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,WAAW,IAAI,QAAQ,CAAC,QAAQ,KAAK,WAAW;AAChD,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnE;AACA,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,GAAG,EAAE,EAAE;AAC7B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;AACrD,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,GAAG;AACH,EAAE,YAAY,CAAC,IAAI,EAAE;AACrB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1C,IAAI,IAAI,OAAO,GAAG,CAAC;AACnB,MAAM,OAAO,KAAK,CAAC,CAAC;AACpB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,GAAG;AACZ,MAAM,OAAO,KAAK,CAAC,CAAC;AACpB,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AACnG,GAAG;AACH,CAAC;AACW,MAAC,WAAW,GAAG,IAAI,WAAW;;;;;"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 090d4ec..525c554 100755 --- a/dist/index.js +++ b/dist/index.js @@ -118,7 +118,7 @@ class Metapatcher { if (this.features.includes("twitterTags")) { const idTw = this.idPrefix + "-description-tw"; this.removeOne("meta", { id: idTw }); - this.set("meta", { idTw, name: "twitter:description", content: description }); + this.set("meta", { id: idTw, name: "twitter:description", content: description }); } return this; } diff --git a/dist/index.js.map b/dist/index.js.map index 4b2fc24..456bb6c 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["export class Metapatcher {\n features: MetapatcherFeatures[] = []\n\n // all ids when setting meta tags will be prefixed with this to prevent collision with other tags\n idPrefix = 'metapatcher'\n idCounters = { preload: 0, prefetch: 0, preconnect: 0, dnsPrefetch: 0 }\n\n // it uses memory instead of dom when dom is not available\n isDomAvailable = typeof document !== 'undefined'\n memory: string[] = []\n\n htmlVoidElements = ['base', 'link', 'meta']\n\n mimeTypesByExtension = {\n 'svg': 'image/svg+xml',\n 'png': 'image/png',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'ico': 'image/x-icon',\n 'gif': 'image/gif',\n 'webp': 'image/webp',\n 'bmp': 'image/bmp'\n }\n\n reImageSizeFromStr = /[0-9]{2,3}x[0-9]{2,3}/g\n\n appleTouchIconSizes = ['120x120', '180x180', '152x152', '167x167', '1024x1024']\n webAppManifestIconSizes = ['72x72', '96x96', '128x128', '144x144', '152x152', '192x192', '384x384', '512x512']\n msTilesNamingMap = {\n '70x70': 'msapplication-square70x70logo',\n '150x150': 'msapplication-square150x150logo',\n '310x310': 'msapplication-square310x310logo',\n '310x150': 'msapplication-wide310x150logo'\n }\n\n // all features except browserconfig.xml are enabled\n constructor () {\n this.features = ['structuredData', 'msTags', 'appleTags', 'openGraphTags', 'twitterTags', 'webAppManifest']\n // disable default requests made by browsers\n this.setMsApplicationConfig('none')\n }\n\n configure (features?: MetapatcherFeatures[], settings?: MetapatcherSettings) {\n if (settings?.idPrefix) this.idPrefix = settings.idPrefix\n if (features) this.features = features\n\n if (this.features.includes('appleTags')) {\n const id = this.idPrefix + '-apple-mobile-web-app-capable'\n this.set('meta', { id, name: 'apple-mobile-web-app-capable', content: 'yes' })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-twitter-card'\n this.set('meta', { id: idTw, name: 'twitter:card', content: 'summary' })\n }\n }\n\n setIcons(list: string[]): this {\n const msTileIconSizes = Object.keys(this.msTilesNamingMap)\n\n for (const url of list) {\n const mimeType = this.findMimeType(url)\n const sizeMatches = url.match(this.reImageSizeFromStr)\n const size = sizeMatches && sizeMatches.length > 0 ? sizeMatches[0] : undefined\n if (!size || !mimeType) continue\n\n if (this.features.includes('webAppManifest') && this.webAppManifestIconSizes.includes(size)) {\n const idWam = this.idPrefix + '-icon-' + size + '-wam'\n this.removeOne('link', { id: idWam })\n this.set('link', { id: idWam, rel: 'icon', href: url, sizes: size, type: mimeType })\n }\n\n if (this.features.includes('appleTags') && this.appleTouchIconSizes.includes(size)) {\n const idApple = this.idPrefix + '-icon-' + size + '-apple'\n this.removeOne('link', { id: idApple })\n this.set('link', { id: idApple, rel: 'apple-touch-icon', href: url, sizes: size })\n }\n\n if (this.features.includes('msTags') && msTileIconSizes.includes(size)) {\n const idMs = this.idPrefix + '-icon-' + size + '-ms'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: this.msTilesNamingMap[size as keyof typeof this.msTilesNamingMap], content: url })\n }\n }\n\n return this\n }\n\n setPageDetails (params: MetapatcherPageParams): this {\n if (params.title) this.setPageTitle(params.title)\n if (params.description) this.setPageDescription(params.description)\n if (params.path) this.setPageUrl(params.path)\n if (params.image) this.setPageImage(params.image)\n if (params.robots) this.setRobots(params.robots)\n if (params.locale) this.setPageLocale(params.locale)\n if (params.canonical) this.setCanonical(params.canonical)\n if (params.localVersions) this.setLocalVersions(params.localVersions, params.locale ?? '')\n if (params.breadcrumb) this.setBreadcrumb(params.breadcrumb)\n\n return this\n }\n\n setPageTitle (title: string): this {\n this.setDocumentTitle(title)\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + 'og-title'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:title', content: title })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + 'tw-title'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { id: idTw, name: 'twitter:title', content: title })\n }\n\n return this\n }\n\n setPageDescription (description: string): this {\n const id = this.idPrefix + '-description'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'description', content: description })\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-description-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:description', content: description })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-description-tw'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { idTw, name: 'twitter:description', content: description })\n }\n\n return this\n }\n\n setPageUrl (url: string): this {\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-url-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:url', content: url })\n }\n\n return this\n }\n\n setPageImage (param: string | MetapatcherPageImage): this {\n const img: MetapatcherPageImage = typeof param === 'string' ? { path: param } : param\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-image-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:image', content: img.path })\n\n const idOgw = this.idPrefix + '-image-w-og'\n this.removeOne('meta', { id: idOgw })\n if (img.width) {\n this.set('meta', { id: idOgw, property: 'og:image:width', content: img.width.toString() })\n }\n\n const idOgh = this.idPrefix + '-image-h-og'\n this.removeOne('meta', { id: idOgh })\n if (img.height) {\n this.set('meta', { id: idOgh, property: 'og:image:height', content: img.height.toString() })\n }\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-image-tw'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { id: idTw, property: 'twitter:image', content: img.path })\n }\n\n return this\n }\n\n setPageLocale (locale: string) {\n locale = locale.replace('_', '-')\n\n if (this.isDomAvailable) {\n document.documentElement.setAttribute('lang', locale)\n }\n\n if (this.features.includes('openGraphTags')) {\n const id = this.idPrefix + '-locale-og'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, property: 'og:locale', content: locale })\n }\n }\n\n setProjectDetails (params: MetapatcherProjectParams): this {\n if (params.favicon) this.setFavicon(params.favicon)\n if (params.name) this.setProjectName(params.name)\n if (params.url) this.setProjectUrl(params.url)\n if (params.robots) this.setRobots(params.robots)\n if (params.logo && params.url) this.setProjectLogo(params.logo, params.url)\n if (params.themeColor) this.setThemeColor(params.themeColor)\n if (params.twitterSite) this.setTwitterSite(params.twitterSite)\n if (params.safariPinnedTab) this.setSafariPinnedTab(params.safariPinnedTab)\n if (params.icons) this.setIcons(params.icons)\n\n return this\n }\n\n setProjectName (name: string): this {\n const idMs = this.idPrefix + '-project-name'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: 'application-name', content: name })\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-project-name-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:site_name', content: name })\n }\n else if (this.features.includes('appleTags')) {\n const idApple = this.idPrefix + '-project-name-apple'\n this.removeOne('meta', { id: idApple })\n this.set('meta', { id: idApple, name: 'apple-mobile-web-app-title', content: name })\n }\n\n return this\n }\n\n setProjectUrl (url: string): this {\n if (this.features.includes('msTags')) {\n const id = this.idPrefix + '-project-url'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'msapplication-starturl', content: url })\n }\n return this\n }\n\n setProjectLogo (logo: string, url: string): HTMLScriptElement | string {\n if (this.features.includes('structuredData')) {\n const id = this.idPrefix + '-project-logo'\n const json = {\n '@type': 'Organization',\n logo: logo,\n url: url\n }\n const _data = JSON.stringify(json)\n\n this.removeOne('script', { id: id })\n\n return this.isDomAvailable ? this.setJsonLdDom(id, _data) : this.setJsonLdMemory(id, _data)\n }\n\n return ''\n }\n\n setThemeColor (colorHexCode: string): this {\n const id = this.idPrefix + '-theme-color'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'theme-color', content: colorHexCode })\n\n if (this.features.includes('msTags')) {\n const idMs = this.idPrefix + '-theme-color-ms'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: 'msapplication-TileColor', content: colorHexCode })\n }\n\n return this\n }\n\n setTwitterSite (username: string): this {\n const id = this.idPrefix + '-twitter-site'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'twitter:site', content: username })\n return this\n }\n\n addDnsPrefetch (param: string | MetapatcherDnsPrefetchAttrs): this {\n const id = this.idPrefix + '-dns-prefetch-' + this.idCounters.dnsPrefetch.toString()\n this.idCounters.dnsPrefetch += 1\n const attrs: MetapatcherDnsPrefetchAttrs = typeof param === 'string'\n ? { id, rel: 'dns-prefetch', href: param }\n : Object.assign({}, param, { id, rel: 'dns-prefetch' })\n this.removeOne('link', { rel: 'dns-prefetch', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPreconnect (param: string | MetapatcherPreconnectAttrs): this {\n const id = this.idPrefix + '-preconnect-' + this.idCounters.preconnect.toString()\n this.idCounters.preconnect += 1\n const attrs: MetapatcherPreconnectAttrs = typeof param === 'string'\n ? { id, rel: 'preconnect', href: param }\n : Object.assign({}, param, { id, rel: 'preconnect' })\n this.removeOne('link', { rel: 'preconnect', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPrefetch (param: string | MetapatcherPrefetchAttrs): this {\n const id = this.idPrefix + '-prefetch-' + this.idCounters.prefetch.toString()\n this.idCounters.prefetch += 1\n const attrs: MetapatcherPrefetchAttrs = typeof param === 'string'\n ? { id, rel: 'prefetch', href: param }\n : Object.assign({}, param, { id, rel: 'prefetch' })\n this.removeOne('link', { rel: 'prefetch', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPreload (param: string | MetapatcherPreloadAttrs): this {\n const id = this.idPrefix + '-preload-' + this.idCounters.preload.toString()\n this.idCounters.preload += 1\n const attrs: MetapatcherPreloadAttrs = typeof param === 'string'\n ? { id, rel: 'preload', href: param }\n : Object.assign({}, param, { id, rel: 'preload' })\n this.removeOne('link', { rel: 'preload', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n setRobots(param: string | MetapatcherRobotsAttrs): this {\n const id = this.idPrefix + '-robots'\n const attrs: MetapatcherRobotsAttrs = typeof param === 'string'\n ? { id, name: 'robots', content: param }\n : Object.assign({}, param, { id, name: 'robots' })\n this.removeOne('meta', { id })\n this.set('meta', attrs)\n return this\n }\n\n setDocumentTitle(title: string): this {\n if (!this.isDomAvailable) {\n const predicate = (line: string) => line.includes('') && line.includes('')\n if (this.memory.some(predicate)) {\n this.memory = this.memory.map((line) => predicate(line) ? `${title}` : line)\n }\n else this.memory.push(`${title}`)\n }\n else document.title = title\n return this\n }\n\n setFavicon(param: string | MetapatcherFaviconAttrs): this {\n const mime = this.findMimeType(typeof param === 'string' ? param : param.href)\n if (!mime) return this\n\n const id = this.idPrefix + '-favicon'\n const attrs: MetapatcherFaviconAttrs = typeof param === 'string'\n ? { id, rel: 'shortcut icon', href: param }\n : Object.assign({}, param, { id, rel: 'shortcut icon' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n return this\n }\n\n setMsApplicationConfig (param: string | MetapatcherMsApplicationConfigAttrs) {\n const id = this.idPrefix + '-msapplication-config'\n const attrs: MetapatcherMsApplicationConfigAttrs = typeof param === 'string'\n ? { id, name: 'msapplication-config', content: param }\n : Object.assign({}, param, { id, name: 'msapplication-config' })\n this.removeOne('meta', { id })\n this.set('meta', attrs)\n return this\n }\n\n setSafariPinnedTab(attrs: MetapatcherSafariPinnedTabAttrs): this {\n const id = this.idPrefix + '-safari-pinned-tab'\n const _attrs: MetapatcherSafariPinnedTabAttrs = Object.assign({}, attrs, { id, rel: 'mask-icon' })\n this.removeOne('link', { id })\n this.set('link', _attrs)\n return this\n }\n\n setAppleStatusBarStyle (content: 'default' | 'black' | 'black-translucent' = 'default'): this {\n const id = this.idPrefix + '-apple-status-bar-style'\n this.removeOne('meta', { id })\n this.set('meta', { id, name: 'apple-mobile-web-app-status-bar-style', content })\n return this\n }\n\n setBreadcrumb (data: MetapatcherBreadcrumb[]): HTMLScriptElement | string {\n if (!this.features.includes('structuredData')) return ''\n\n const id = this.idPrefix + '-breadcrumb'\n const json = {\n '@type': 'BreadcrumbList',\n 'itemListElement': data.map(({title, url}, ind) => ({\n '@type': 'ListItem',\n 'position': ind + 1,\n 'name': title,\n 'item': url\n }))\n }\n const _data = JSON.stringify(json)\n\n this.removeOne('script', { id })\n\n return this.isDomAvailable ? this.setJsonLdDom(id, _data) : this.setJsonLdMemory(id, _data)\n }\n\n setJsonLdDom (id: string, data: string) {\n const elem = document.createElement('script')\n elem.id = id\n elem.type = 'application/ld+json'\n elem.text = data\n\n document.head.insertBefore(elem, null)\n\n return elem\n }\n\n setJsonLdMemory (id: string, data: string) {\n const _data = ``\n this.memory.push(_data)\n return _data\n }\n\n setCanonical (param: string | MetapatcherCanonicalLinkAttrs): this {\n const id = this.idPrefix + '-canonical'\n const attrs: MetapatcherCanonicalLinkAttrs = typeof param === 'string'\n ? { id, rel: 'canonical', href: param }\n : Object.assign({}, param, { id, rel: 'canonical' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n\n return this\n }\n\n setMeta (name: string, content: string): this {\n this.removeOne('meta', { name })\n this.set('meta', { name, content })\n\n return this\n }\n\n setMobileVariant (param: string | MetapatcherMobileVariantLinkAttrs): this {\n const id = this.idPrefix + '-mobile-variant'\n const attrs: MetapatcherMobileVariantLinkAttrs = typeof param === 'string'\n ? { id, rel: 'alternate', href: param, media: 'only screen and (max-width: 640px)' }\n : Object.assign({}, param, { id, rel: 'alternate' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n\n return this\n }\n\n setLocalVersions (param: MetapatcherLocalVersionLinkAttrs[], currentLang = ''): this {\n this.removeMany('link', { rel: 'alternate', hreflang: true })\n\n if (this.features.includes('openGraphTags')) {\n currentLang = currentLang.replace('_', '-')\n this.removeMany('meta', { property: 'og:locale:alternate' })\n this.removeOne('meta', { property: 'og:locale' })\n }\n\n for (const _attrs of param) {\n const id = this.idPrefix + '-local-version-' + _attrs.hreflang\n _attrs.hreflang = _attrs.hreflang.replace('_', '-')\n const attrs: MetapatcherLocalVersionLinkAttrs = Object.assign({}, _attrs, { id, rel: 'alternate' })\n\n this.set('link', attrs)\n\n if (this.features.includes('openGraphTags')) {\n const _id = this.idPrefix + '-local-version-og-' + _attrs.hreflang\n const suffix = currentLang === _attrs.hreflang ? '' : ':alternate'\n const __attrs = { id: _id, property: 'og:locale' + suffix, content: _attrs.hreflang.replace('-', '_') }\n this.set('meta', __attrs)\n }\n }\n\n return this\n }\n\n setJsonLd (id: string, data: Record): HTMLScriptElement | string {\n const str = JSON.stringify(data)\n this.removeOne('script', { id })\n return this.isDomAvailable ? this.setJsonLdDom(id, str) : this.setJsonLdMemory(id, str)\n }\n\n removeOne (tagName: string, attrs: Record): this {\n if (!this.isDomAvailable) {\n const queries = [`<${tagName}`].concat(Object.keys(attrs).map((key) => `${key}=\"${attrs[key]}\"`))\n this.memory = this.memory.filter((item) => !queries.every((query) => item.includes(query)))\n return this\n }\n\n const params = Object.keys(attrs).reduce((memo: string, key: string) => {\n memo += `[${key}=\"${attrs[key]}\"]`\n return memo\n }, '')\n const query = `${tagName}${params}`\n\n const elem = document.head.querySelector(query)\n if (elem) {\n elem.parentNode!.removeChild(elem)\n }\n return this\n }\n\n removeMany (tagName: string, attrs: Record): this {\n if (!this.isDomAvailable) {\n const queries = [`<${tagName}`].concat(Object.keys(attrs).map((key) => typeof attrs[key] === 'boolean' ? `${key}` : `${key}=\"${attrs[key]}\"`))\n this.memory = this.memory.filter((item) => !queries.every((query) => item.includes(query)))\n return this\n }\n\n const params = Object.keys(attrs).reduce((memo: string, key: string) => {\n memo += typeof attrs[key] === 'boolean' ? `[${key}]` : `[${key}=\"${attrs[key]}\"]`\n return memo\n }, '')\n const query = `${tagName}${params}`\n\n const elems = document.head.querySelectorAll(query)\n if (elems && elems.length > 0) {\n elems.forEach((elem) => {\n elem.parentNode!.removeChild(elem)\n })\n }\n return this\n }\n\n dump(): string {\n if (this.isDomAvailable) return ''\n\n return this.memory.join('\\n')\n }\n\n flushMemory(): this {\n this.memory = []\n return this\n }\n\n set (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, settings?: MetapatcherSetSettings): string | HTMLElement {\n tagName = tagName.toLowerCase()\n\n const isVoid = settings && Object.hasOwn(settings, 'void') ? settings.void! : this.htmlVoidElements.includes(tagName)\n\n return this.isDomAvailable\n ? this.setDom(tagName, attrs, { void: isVoid })\n : this.setMemory(tagName, attrs, { void: isVoid })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setDom (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, _settings: MetapatcherSetSettings): HTMLElement {\n const elem = document.createElement(tagName)\n\n this.setElementAttrs(elem, attrs)\n\n document.head.insertBefore(elem, null)\n\n return elem\n }\n\n setMemory (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, settings: MetapatcherSetSettings): string {\n const closingTag = settings.void ? ` />` : `>`\n const html = `<${tagName}${this.serializeAttrs(attrs)}${closingTag}`\n this.memory.push(html)\n return html\n }\n\n setElementAttrs (elem: HTMLElement, attrs: MetapatcherHtmlTagAttrs = {}) {\n for (const name of Object.keys(attrs)) {\n const v = attrs[name]!\n if (typeof v === 'string') elem.setAttribute(name, v)\n else if (v === true) elem.setAttribute(name, '')\n }\n }\n\n async setScript (attrs: MetapatcherSetJsAttrs, settings: MetapatcherSetJsSettings = {}): Promise {\n attrs = Object.assign({}, { type: 'text/javascript' }, attrs)\n settings = Object.assign({}, { location: 'headEnd', waitForLoad: '', timeout: 10000 }, settings)\n\n return new Promise((resolve, reject) => {\n if (!this.isDomAvailable) {\n return resolve(this.setMemory('script', attrs, { void: this.htmlVoidElements.includes('script') }))\n }\n\n const timeout = setTimeout(() => {\n reject(new Error('Timeout.'))\n }, settings.timeout)\n\n const elem = document.createElement('script')\n\n const { src, ...rest } = attrs\n this.setElementAttrs(elem, rest)\n\n function onDone () {\n clearTimeout(timeout)\n\n if (settings.waitForLoad!.length === 0) {\n return resolve(elem)\n }\n else {\n const interval = setInterval(() => {\n if (Object.hasOwn(window, settings.waitForLoad!)) {\n clearInterval(interval)\n return resolve(elem)\n }\n }, 100)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function onError (_event: Event) {\n clearTimeout(timeout)\n reject(new Error('Error loading resource'))\n }\n\n elem.addEventListener('load', onDone)\n elem.addEventListener('error', onError)\n\n elem.src = src\n\n if (settings.location === 'headEnd') document.head.insertBefore(elem, null)\n else if (settings.location === 'bodyEnd') document.body.insertBefore(elem, null)\n else if (settings.location === 'bodyStart') document.body.insertBefore(elem, document.body.firstChild)\n else document.body.insertBefore(elem, null)\n })\n }\n\n async setStylesheet (attrs: MetapatcherSetStylesheetAttrs, settings: MetapatcherSetStylesheetSettings = {}): Promise {\n attrs = Object.assign({}, { rel: 'stylesheet' }, attrs)\n settings = Object.assign({}, { location: 'headEnd', timeout: 10000 }, settings)\n\n return new Promise((resolve, reject) => {\n if (!this.isDomAvailable) {\n return resolve(this.setMemory('link', attrs, { void: this.htmlVoidElements.includes('link') }))\n }\n\n const timeout = setTimeout(() => {\n reject(new Error('Timeout.'))\n }, settings.timeout)\n\n const elem = document.createElement('link')\n\n const { href, ...rest } = attrs\n this.setElementAttrs(elem, Object.assign({}, rest, { media: 'only x' }))\n\n function onDone () {\n elem.media = attrs.media ?? 'all'\n clearTimeout(timeout)\n return resolve(elem)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function onError (_event: Event) {\n clearTimeout(timeout)\n return reject(new Error('Error loading resource'))\n }\n\n elem.addEventListener('load', onDone)\n elem.addEventListener('error', onError)\n\n elem.href = href\n\n if (settings.location === 'headEnd') document.head.insertBefore(elem, null)\n else if (settings.location === 'bodyEnd') document.body.insertBefore(elem, null)\n else if (settings.location === 'bodyStart') document.body.insertBefore(elem, document.body.firstChild)\n else document.body.insertBefore(elem, null)\n })\n }\n\n serializeAttrs (attrs: MetapatcherHtmlTagAttrs = {}): string {\n return Object.keys(attrs).reduce((memo, name) => {\n memo += ` ${name}=\"${attrs[name]}\"`\n return memo\n }, '')\n }\n\n findMimeType(path: string): string | undefined {\n const lastind = path.lastIndexOf('.')\n if (lastind < 1) return undefined\n\n const ext = path.slice(lastind + 1)\n if (!ext) return undefined\n\n return Object.hasOwn(this.mimeTypesByExtension, ext)\n ? this.mimeTypesByExtension[ext as keyof typeof this.mimeTypesByExtension]\n : undefined\n }\n}\n\nexport type MetapatcherFeatures = 'structuredData' |\n 'webAppManifest' |\n 'msTags' |\n 'appleTags' |\n 'openGraphTags' |\n 'twitterTags'\n\nexport interface MetapatcherSettings {\n idPrefix?: string\n}\n\nexport type MetapatcherHtmlTagAttrs = Record\n\nexport interface MetapatcherSetStylesheetAttrs {\n id: string\n readonly rel?: 'stylesheet'\n href: string\n media?: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherSetStylesheetSettings {\n location?: 'headEnd' | 'bodyEnd' | 'bodyStart'\n timeout?: number\n}\n\nexport interface MetapatcherSetJsAttrs {\n id: string\n type?: string\n src: string\n async?: boolean\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherSetJsSettings {\n location?: 'headEnd' | 'bodyEnd' | 'bodyStart'\n waitForLoad?: string\n timeout?: number\n}\n\nexport interface MetapatcherSetSettings {\n void?: boolean\n}\n\nexport interface MetapatcherCanonicalLinkAttrs {\n readonly rel?: 'canonical'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherMobileVariantLinkAttrs {\n readonly rel?: 'alternate'\n id?: string\n media: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherLocalVersionLinkAttrs {\n readonly rel?: 'alternate'\n id?: string\n hreflang: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherBreadcrumb {\n title: string\n url: string\n}\n\nexport interface MetapatcherSafariPinnedTabAttrs {\n readonly rel?: 'mask-icon'\n id?: string\n href: string\n color: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherFaviconAttrs {\n readonly rel?: 'shortcut icon'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherRobotsAttrs {\n readonly name?: 'robots'\n id?: string\n content: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPreloadAttrs {\n readonly rel?: 'preload'\n id?: string\n href: string\n as?: MetapatcherPreloadAs\n type?: string\n media?: string\n crossorigin?: boolean\n [index: string]: string | boolean\n}\n\nexport type MetapatcherPreloadAs = 'audio' | 'document' | 'embed' | 'fetch' | 'font' | 'image' | 'object' | 'script' | 'style' | 'track' | 'worker' | 'video'\n\nexport interface MetapatcherPrefetchAttrs {\n readonly rel?: 'prefetch'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPreconnectAttrs {\n readonly rel?: 'preconnect'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherDnsPrefetchAttrs {\n readonly rel?: 'dns-prefetch'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherProjectParams {\n favicon?: string | MetapatcherFaviconAttrs\n name?: string\n url?: string\n robots?: string | MetapatcherRobotsAttrs\n logo?: string\n themeColor?: string\n primaryColor?: string\n backgroundColor?: string\n twitterSite?: string\n safariPinnedTab?: MetapatcherSafariPinnedTabAttrs\n icons?: string[]\n}\n\nexport interface MetapatcherMsApplicationConfigAttrs {\n readonly name?: 'msapplication-config'\n id?: string\n content: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPageParams {\n title?: string\n description?: string\n path?: string\n image?: string\n robots?: string | MetapatcherRobotsAttrs\n locale?: string\n canonical?: string\n mobileVariant?: string\n localVersions?: MetapatcherLocalVersionLinkAttrs[],\n breadcrumb?: MetapatcherBreadcrumb[]\n}\n\nexport interface MetapatcherPageImage {\n path: string\n width?: string | number\n height?: string | number\n}\n\nexport const metapatcher = new Metapatcher()\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["export class Metapatcher {\n features: MetapatcherFeatures[] = []\n\n // all ids when setting meta tags will be prefixed with this to prevent collision with other tags\n idPrefix = 'metapatcher'\n idCounters = { preload: 0, prefetch: 0, preconnect: 0, dnsPrefetch: 0 }\n\n // it uses memory instead of dom when dom is not available\n isDomAvailable = typeof document !== 'undefined'\n memory: string[] = []\n\n htmlVoidElements = ['base', 'link', 'meta']\n\n mimeTypesByExtension = {\n 'svg': 'image/svg+xml',\n 'png': 'image/png',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'ico': 'image/x-icon',\n 'gif': 'image/gif',\n 'webp': 'image/webp',\n 'bmp': 'image/bmp'\n }\n\n reImageSizeFromStr = /[0-9]{2,3}x[0-9]{2,3}/g\n\n appleTouchIconSizes = ['120x120', '180x180', '152x152', '167x167', '1024x1024']\n webAppManifestIconSizes = ['72x72', '96x96', '128x128', '144x144', '152x152', '192x192', '384x384', '512x512']\n msTilesNamingMap = {\n '70x70': 'msapplication-square70x70logo',\n '150x150': 'msapplication-square150x150logo',\n '310x310': 'msapplication-square310x310logo',\n '310x150': 'msapplication-wide310x150logo'\n }\n\n // all features except browserconfig.xml are enabled\n constructor () {\n this.features = ['structuredData', 'msTags', 'appleTags', 'openGraphTags', 'twitterTags', 'webAppManifest']\n // disable default requests made by browsers\n this.setMsApplicationConfig('none')\n }\n\n configure (features?: MetapatcherFeatures[], settings?: MetapatcherSettings) {\n if (settings?.idPrefix) this.idPrefix = settings.idPrefix\n if (features) this.features = features\n\n if (this.features.includes('appleTags')) {\n const id = this.idPrefix + '-apple-mobile-web-app-capable'\n this.set('meta', { id, name: 'apple-mobile-web-app-capable', content: 'yes' })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-twitter-card'\n this.set('meta', { id: idTw, name: 'twitter:card', content: 'summary' })\n }\n }\n\n setIcons(list: string[]): this {\n const msTileIconSizes = Object.keys(this.msTilesNamingMap)\n\n for (const url of list) {\n const mimeType = this.findMimeType(url)\n const sizeMatches = url.match(this.reImageSizeFromStr)\n const size = sizeMatches && sizeMatches.length > 0 ? sizeMatches[0] : undefined\n if (!size || !mimeType) continue\n\n if (this.features.includes('webAppManifest') && this.webAppManifestIconSizes.includes(size)) {\n const idWam = this.idPrefix + '-icon-' + size + '-wam'\n this.removeOne('link', { id: idWam })\n this.set('link', { id: idWam, rel: 'icon', href: url, sizes: size, type: mimeType })\n }\n\n if (this.features.includes('appleTags') && this.appleTouchIconSizes.includes(size)) {\n const idApple = this.idPrefix + '-icon-' + size + '-apple'\n this.removeOne('link', { id: idApple })\n this.set('link', { id: idApple, rel: 'apple-touch-icon', href: url, sizes: size })\n }\n\n if (this.features.includes('msTags') && msTileIconSizes.includes(size)) {\n const idMs = this.idPrefix + '-icon-' + size + '-ms'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: this.msTilesNamingMap[size as keyof typeof this.msTilesNamingMap], content: url })\n }\n }\n\n return this\n }\n\n setPageDetails (params: MetapatcherPageParams): this {\n if (params.title) this.setPageTitle(params.title)\n if (params.description) this.setPageDescription(params.description)\n if (params.path) this.setPageUrl(params.path)\n if (params.image) this.setPageImage(params.image)\n if (params.robots) this.setRobots(params.robots)\n if (params.locale) this.setPageLocale(params.locale)\n if (params.canonical) this.setCanonical(params.canonical)\n if (params.localVersions) this.setLocalVersions(params.localVersions, params.locale ?? '')\n if (params.breadcrumb) this.setBreadcrumb(params.breadcrumb)\n\n return this\n }\n\n setPageTitle (title: string): this {\n this.setDocumentTitle(title)\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + 'og-title'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:title', content: title })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + 'tw-title'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { id: idTw, name: 'twitter:title', content: title })\n }\n\n return this\n }\n\n setPageDescription (description: string): this {\n const id = this.idPrefix + '-description'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'description', content: description })\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-description-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:description', content: description })\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-description-tw'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { id: idTw, name: 'twitter:description', content: description })\n }\n\n return this\n }\n\n setPageUrl (url: string): this {\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-url-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:url', content: url })\n }\n\n return this\n }\n\n setPageImage (param: string | MetapatcherPageImage): this {\n const img: MetapatcherPageImage = typeof param === 'string' ? { path: param } : param\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-image-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:image', content: img.path })\n\n const idOgw = this.idPrefix + '-image-w-og'\n this.removeOne('meta', { id: idOgw })\n if (img.width) {\n this.set('meta', { id: idOgw, property: 'og:image:width', content: img.width.toString() })\n }\n\n const idOgh = this.idPrefix + '-image-h-og'\n this.removeOne('meta', { id: idOgh })\n if (img.height) {\n this.set('meta', { id: idOgh, property: 'og:image:height', content: img.height.toString() })\n }\n }\n\n if (this.features.includes('twitterTags')) {\n const idTw = this.idPrefix + '-image-tw'\n this.removeOne('meta', { id: idTw })\n this.set('meta', { id: idTw, property: 'twitter:image', content: img.path })\n }\n\n return this\n }\n\n setPageLocale (locale: string) {\n locale = locale.replace('_', '-')\n\n if (this.isDomAvailable) {\n document.documentElement.setAttribute('lang', locale)\n }\n\n if (this.features.includes('openGraphTags')) {\n const id = this.idPrefix + '-locale-og'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, property: 'og:locale', content: locale })\n }\n }\n\n setProjectDetails (params: MetapatcherProjectParams): this {\n if (params.favicon) this.setFavicon(params.favicon)\n if (params.name) this.setProjectName(params.name)\n if (params.url) this.setProjectUrl(params.url)\n if (params.robots) this.setRobots(params.robots)\n if (params.logo && params.url) this.setProjectLogo(params.logo, params.url)\n if (params.themeColor) this.setThemeColor(params.themeColor)\n if (params.twitterSite) this.setTwitterSite(params.twitterSite)\n if (params.safariPinnedTab) this.setSafariPinnedTab(params.safariPinnedTab)\n if (params.icons) this.setIcons(params.icons)\n\n return this\n }\n\n setProjectName (name: string): this {\n const idMs = this.idPrefix + '-project-name'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: 'application-name', content: name })\n\n if (this.features.includes('openGraphTags')) {\n const idOg = this.idPrefix + '-project-name-og'\n this.removeOne('meta', { id: idOg })\n this.set('meta', { id: idOg, property: 'og:site_name', content: name })\n }\n else if (this.features.includes('appleTags')) {\n const idApple = this.idPrefix + '-project-name-apple'\n this.removeOne('meta', { id: idApple })\n this.set('meta', { id: idApple, name: 'apple-mobile-web-app-title', content: name })\n }\n\n return this\n }\n\n setProjectUrl (url: string): this {\n if (this.features.includes('msTags')) {\n const id = this.idPrefix + '-project-url'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'msapplication-starturl', content: url })\n }\n return this\n }\n\n setProjectLogo (logo: string, url: string): HTMLScriptElement | string {\n if (this.features.includes('structuredData')) {\n const id = this.idPrefix + '-project-logo'\n const json = {\n '@type': 'Organization',\n logo: logo,\n url: url\n }\n const _data = JSON.stringify(json)\n\n this.removeOne('script', { id: id })\n\n return this.isDomAvailable ? this.setJsonLdDom(id, _data) : this.setJsonLdMemory(id, _data)\n }\n\n return ''\n }\n\n setThemeColor (colorHexCode: string): this {\n const id = this.idPrefix + '-theme-color'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'theme-color', content: colorHexCode })\n\n if (this.features.includes('msTags')) {\n const idMs = this.idPrefix + '-theme-color-ms'\n this.removeOne('meta', { id: idMs })\n this.set('meta', { id: idMs, name: 'msapplication-TileColor', content: colorHexCode })\n }\n\n return this\n }\n\n setTwitterSite (username: string): this {\n const id = this.idPrefix + '-twitter-site'\n this.removeOne('meta', { id: id })\n this.set('meta', { id, name: 'twitter:site', content: username })\n return this\n }\n\n addDnsPrefetch (param: string | MetapatcherDnsPrefetchAttrs): this {\n const id = this.idPrefix + '-dns-prefetch-' + this.idCounters.dnsPrefetch.toString()\n this.idCounters.dnsPrefetch += 1\n const attrs: MetapatcherDnsPrefetchAttrs = typeof param === 'string'\n ? { id, rel: 'dns-prefetch', href: param }\n : Object.assign({}, param, { id, rel: 'dns-prefetch' })\n this.removeOne('link', { rel: 'dns-prefetch', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPreconnect (param: string | MetapatcherPreconnectAttrs): this {\n const id = this.idPrefix + '-preconnect-' + this.idCounters.preconnect.toString()\n this.idCounters.preconnect += 1\n const attrs: MetapatcherPreconnectAttrs = typeof param === 'string'\n ? { id, rel: 'preconnect', href: param }\n : Object.assign({}, param, { id, rel: 'preconnect' })\n this.removeOne('link', { rel: 'preconnect', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPrefetch (param: string | MetapatcherPrefetchAttrs): this {\n const id = this.idPrefix + '-prefetch-' + this.idCounters.prefetch.toString()\n this.idCounters.prefetch += 1\n const attrs: MetapatcherPrefetchAttrs = typeof param === 'string'\n ? { id, rel: 'prefetch', href: param }\n : Object.assign({}, param, { id, rel: 'prefetch' })\n this.removeOne('link', { rel: 'prefetch', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n addPreload (param: string | MetapatcherPreloadAttrs): this {\n const id = this.idPrefix + '-preload-' + this.idCounters.preload.toString()\n this.idCounters.preload += 1\n const attrs: MetapatcherPreloadAttrs = typeof param === 'string'\n ? { id, rel: 'preload', href: param }\n : Object.assign({}, param, { id, rel: 'preload' })\n this.removeOne('link', { rel: 'preload', href: attrs.href })\n this.set('link', attrs)\n return this\n }\n\n setRobots(param: string | MetapatcherRobotsAttrs): this {\n const id = this.idPrefix + '-robots'\n const attrs: MetapatcherRobotsAttrs = typeof param === 'string'\n ? { id, name: 'robots', content: param }\n : Object.assign({}, param, { id, name: 'robots' })\n this.removeOne('meta', { id })\n this.set('meta', attrs)\n return this\n }\n\n setDocumentTitle(title: string): this {\n if (!this.isDomAvailable) {\n const predicate = (line: string) => line.includes('') && line.includes('')\n if (this.memory.some(predicate)) {\n this.memory = this.memory.map((line) => predicate(line) ? `${title}` : line)\n }\n else this.memory.push(`${title}`)\n }\n else document.title = title\n return this\n }\n\n setFavicon(param: string | MetapatcherFaviconAttrs): this {\n const mime = this.findMimeType(typeof param === 'string' ? param : param.href)\n if (!mime) return this\n\n const id = this.idPrefix + '-favicon'\n const attrs: MetapatcherFaviconAttrs = typeof param === 'string'\n ? { id, rel: 'shortcut icon', href: param }\n : Object.assign({}, param, { id, rel: 'shortcut icon' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n return this\n }\n\n setMsApplicationConfig (param: string | MetapatcherMsApplicationConfigAttrs) {\n const id = this.idPrefix + '-msapplication-config'\n const attrs: MetapatcherMsApplicationConfigAttrs = typeof param === 'string'\n ? { id, name: 'msapplication-config', content: param }\n : Object.assign({}, param, { id, name: 'msapplication-config' })\n this.removeOne('meta', { id })\n this.set('meta', attrs)\n return this\n }\n\n setSafariPinnedTab(attrs: MetapatcherSafariPinnedTabAttrs): this {\n const id = this.idPrefix + '-safari-pinned-tab'\n const _attrs: MetapatcherSafariPinnedTabAttrs = Object.assign({}, attrs, { id, rel: 'mask-icon' })\n this.removeOne('link', { id })\n this.set('link', _attrs)\n return this\n }\n\n setAppleStatusBarStyle (content: 'default' | 'black' | 'black-translucent' = 'default'): this {\n const id = this.idPrefix + '-apple-status-bar-style'\n this.removeOne('meta', { id })\n this.set('meta', { id, name: 'apple-mobile-web-app-status-bar-style', content })\n return this\n }\n\n setBreadcrumb (data: MetapatcherBreadcrumb[]): HTMLScriptElement | string {\n if (!this.features.includes('structuredData')) return ''\n\n const id = this.idPrefix + '-breadcrumb'\n const json = {\n '@type': 'BreadcrumbList',\n 'itemListElement': data.map(({title, url}, ind) => ({\n '@type': 'ListItem',\n 'position': ind + 1,\n 'name': title,\n 'item': url\n }))\n }\n const _data = JSON.stringify(json)\n\n this.removeOne('script', { id })\n\n return this.isDomAvailable ? this.setJsonLdDom(id, _data) : this.setJsonLdMemory(id, _data)\n }\n\n setJsonLdDom (id: string, data: string) {\n const elem = document.createElement('script')\n elem.id = id\n elem.type = 'application/ld+json'\n elem.text = data\n\n document.head.insertBefore(elem, null)\n\n return elem\n }\n\n setJsonLdMemory (id: string, data: string) {\n const _data = ``\n this.memory.push(_data)\n return _data\n }\n\n setCanonical (param: string | MetapatcherCanonicalLinkAttrs): this {\n const id = this.idPrefix + '-canonical'\n const attrs: MetapatcherCanonicalLinkAttrs = typeof param === 'string'\n ? { id, rel: 'canonical', href: param }\n : Object.assign({}, param, { id, rel: 'canonical' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n\n return this\n }\n\n setMeta (name: string, content: string): this {\n this.removeOne('meta', { name })\n this.set('meta', { name, content })\n\n return this\n }\n\n setMobileVariant (param: string | MetapatcherMobileVariantLinkAttrs): this {\n const id = this.idPrefix + '-mobile-variant'\n const attrs: MetapatcherMobileVariantLinkAttrs = typeof param === 'string'\n ? { id, rel: 'alternate', href: param, media: 'only screen and (max-width: 640px)' }\n : Object.assign({}, param, { id, rel: 'alternate' })\n\n this.removeOne('link', { id })\n this.set('link', attrs)\n\n return this\n }\n\n setLocalVersions (param: MetapatcherLocalVersionLinkAttrs[], currentLang = ''): this {\n this.removeMany('link', { rel: 'alternate', hreflang: true })\n\n if (this.features.includes('openGraphTags')) {\n currentLang = currentLang.replace('_', '-')\n this.removeMany('meta', { property: 'og:locale:alternate' })\n this.removeOne('meta', { property: 'og:locale' })\n }\n\n for (const _attrs of param) {\n const id = this.idPrefix + '-local-version-' + _attrs.hreflang\n _attrs.hreflang = _attrs.hreflang.replace('_', '-')\n const attrs: MetapatcherLocalVersionLinkAttrs = Object.assign({}, _attrs, { id, rel: 'alternate' })\n\n this.set('link', attrs)\n\n if (this.features.includes('openGraphTags')) {\n const _id = this.idPrefix + '-local-version-og-' + _attrs.hreflang\n const suffix = currentLang === _attrs.hreflang ? '' : ':alternate'\n const __attrs = { id: _id, property: 'og:locale' + suffix, content: _attrs.hreflang.replace('-', '_') }\n this.set('meta', __attrs)\n }\n }\n\n return this\n }\n\n setJsonLd (id: string, data: Record): HTMLScriptElement | string {\n const str = JSON.stringify(data)\n this.removeOne('script', { id })\n return this.isDomAvailable ? this.setJsonLdDom(id, str) : this.setJsonLdMemory(id, str)\n }\n\n removeOne (tagName: string, attrs: Record): this {\n if (!this.isDomAvailable) {\n const queries = [`<${tagName}`].concat(Object.keys(attrs).map((key) => `${key}=\"${attrs[key]}\"`))\n this.memory = this.memory.filter((item) => !queries.every((query) => item.includes(query)))\n return this\n }\n\n const params = Object.keys(attrs).reduce((memo: string, key: string) => {\n memo += `[${key}=\"${attrs[key]}\"]`\n return memo\n }, '')\n const query = `${tagName}${params}`\n\n const elem = document.head.querySelector(query)\n if (elem) {\n elem.parentNode!.removeChild(elem)\n }\n return this\n }\n\n removeMany (tagName: string, attrs: Record): this {\n if (!this.isDomAvailable) {\n const queries = [`<${tagName}`].concat(Object.keys(attrs).map((key) => typeof attrs[key] === 'boolean' ? `${key}` : `${key}=\"${attrs[key]}\"`))\n this.memory = this.memory.filter((item) => !queries.every((query) => item.includes(query)))\n return this\n }\n\n const params = Object.keys(attrs).reduce((memo: string, key: string) => {\n memo += typeof attrs[key] === 'boolean' ? `[${key}]` : `[${key}=\"${attrs[key]}\"]`\n return memo\n }, '')\n const query = `${tagName}${params}`\n\n const elems = document.head.querySelectorAll(query)\n if (elems && elems.length > 0) {\n elems.forEach((elem) => {\n elem.parentNode!.removeChild(elem)\n })\n }\n return this\n }\n\n dump(): string {\n if (this.isDomAvailable) return ''\n\n return this.memory.join('\\n')\n }\n\n flushMemory(): this {\n this.memory = []\n return this\n }\n\n set (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, settings?: MetapatcherSetSettings): string | HTMLElement {\n tagName = tagName.toLowerCase()\n\n const isVoid = settings && Object.hasOwn(settings, 'void') ? settings.void! : this.htmlVoidElements.includes(tagName)\n\n return this.isDomAvailable\n ? this.setDom(tagName, attrs, { void: isVoid })\n : this.setMemory(tagName, attrs, { void: isVoid })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setDom (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, _settings: MetapatcherSetSettings): HTMLElement {\n const elem = document.createElement(tagName)\n\n this.setElementAttrs(elem, attrs)\n\n document.head.insertBefore(elem, null)\n\n return elem\n }\n\n setMemory (tagName: string, attrs: MetapatcherHtmlTagAttrs = {}, settings: MetapatcherSetSettings): string {\n const closingTag = settings.void ? ` />` : `>`\n const html = `<${tagName}${this.serializeAttrs(attrs)}${closingTag}`\n this.memory.push(html)\n return html\n }\n\n setElementAttrs (elem: HTMLElement, attrs: MetapatcherHtmlTagAttrs = {}) {\n for (const name of Object.keys(attrs)) {\n const v = attrs[name]!\n if (typeof v === 'string') elem.setAttribute(name, v)\n else if (v === true) elem.setAttribute(name, '')\n }\n }\n\n async setScript (attrs: MetapatcherSetJsAttrs, settings: MetapatcherSetJsSettings = {}): Promise {\n attrs = Object.assign({}, { type: 'text/javascript' }, attrs)\n settings = Object.assign({}, { location: 'headEnd', waitForLoad: '', timeout: 10000 }, settings)\n\n return new Promise((resolve, reject) => {\n if (!this.isDomAvailable) {\n return resolve(this.setMemory('script', attrs, { void: this.htmlVoidElements.includes('script') }))\n }\n\n const timeout = setTimeout(() => {\n reject(new Error('Timeout.'))\n }, settings.timeout)\n\n const elem = document.createElement('script')\n\n const { src, ...rest } = attrs\n this.setElementAttrs(elem, rest)\n\n function onDone () {\n clearTimeout(timeout)\n\n if (settings.waitForLoad!.length === 0) {\n return resolve(elem)\n }\n else {\n const interval = setInterval(() => {\n if (Object.hasOwn(window, settings.waitForLoad!)) {\n clearInterval(interval)\n return resolve(elem)\n }\n }, 100)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function onError (_event: Event) {\n clearTimeout(timeout)\n reject(new Error('Error loading resource'))\n }\n\n elem.addEventListener('load', onDone)\n elem.addEventListener('error', onError)\n\n elem.src = src\n\n if (settings.location === 'headEnd') document.head.insertBefore(elem, null)\n else if (settings.location === 'bodyEnd') document.body.insertBefore(elem, null)\n else if (settings.location === 'bodyStart') document.body.insertBefore(elem, document.body.firstChild)\n else document.body.insertBefore(elem, null)\n })\n }\n\n async setStylesheet (attrs: MetapatcherSetStylesheetAttrs, settings: MetapatcherSetStylesheetSettings = {}): Promise {\n attrs = Object.assign({}, { rel: 'stylesheet' }, attrs)\n settings = Object.assign({}, { location: 'headEnd', timeout: 10000 }, settings)\n\n return new Promise((resolve, reject) => {\n if (!this.isDomAvailable) {\n return resolve(this.setMemory('link', attrs, { void: this.htmlVoidElements.includes('link') }))\n }\n\n const timeout = setTimeout(() => {\n reject(new Error('Timeout.'))\n }, settings.timeout)\n\n const elem = document.createElement('link')\n\n const { href, ...rest } = attrs\n this.setElementAttrs(elem, Object.assign({}, rest, { media: 'only x' }))\n\n function onDone () {\n elem.media = attrs.media ?? 'all'\n clearTimeout(timeout)\n return resolve(elem)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function onError (_event: Event) {\n clearTimeout(timeout)\n return reject(new Error('Error loading resource'))\n }\n\n elem.addEventListener('load', onDone)\n elem.addEventListener('error', onError)\n\n elem.href = href\n\n if (settings.location === 'headEnd') document.head.insertBefore(elem, null)\n else if (settings.location === 'bodyEnd') document.body.insertBefore(elem, null)\n else if (settings.location === 'bodyStart') document.body.insertBefore(elem, document.body.firstChild)\n else document.body.insertBefore(elem, null)\n })\n }\n\n serializeAttrs (attrs: MetapatcherHtmlTagAttrs = {}): string {\n return Object.keys(attrs).reduce((memo, name) => {\n memo += ` ${name}=\"${attrs[name]}\"`\n return memo\n }, '')\n }\n\n findMimeType(path: string): string | undefined {\n const lastind = path.lastIndexOf('.')\n if (lastind < 1) return undefined\n\n const ext = path.slice(lastind + 1)\n if (!ext) return undefined\n\n return Object.hasOwn(this.mimeTypesByExtension, ext)\n ? this.mimeTypesByExtension[ext as keyof typeof this.mimeTypesByExtension]\n : undefined\n }\n}\n\nexport type MetapatcherFeatures = 'structuredData' |\n 'webAppManifest' |\n 'msTags' |\n 'appleTags' |\n 'openGraphTags' |\n 'twitterTags'\n\nexport interface MetapatcherSettings {\n idPrefix?: string\n}\n\nexport type MetapatcherHtmlTagAttrs = Record\n\nexport interface MetapatcherSetStylesheetAttrs {\n id: string\n readonly rel?: 'stylesheet'\n href: string\n media?: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherSetStylesheetSettings {\n location?: 'headEnd' | 'bodyEnd' | 'bodyStart'\n timeout?: number\n}\n\nexport interface MetapatcherSetJsAttrs {\n id: string\n type?: string\n src: string\n async?: boolean\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherSetJsSettings {\n location?: 'headEnd' | 'bodyEnd' | 'bodyStart'\n waitForLoad?: string\n timeout?: number\n}\n\nexport interface MetapatcherSetSettings {\n void?: boolean\n}\n\nexport interface MetapatcherCanonicalLinkAttrs {\n readonly rel?: 'canonical'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherMobileVariantLinkAttrs {\n readonly rel?: 'alternate'\n id?: string\n media: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherLocalVersionLinkAttrs {\n readonly rel?: 'alternate'\n id?: string\n hreflang: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherBreadcrumb {\n title: string\n url: string\n}\n\nexport interface MetapatcherSafariPinnedTabAttrs {\n readonly rel?: 'mask-icon'\n id?: string\n href: string\n color: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherFaviconAttrs {\n readonly rel?: 'shortcut icon'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherRobotsAttrs {\n readonly name?: 'robots'\n id?: string\n content: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPreloadAttrs {\n readonly rel?: 'preload'\n id?: string\n href: string\n as?: MetapatcherPreloadAs\n type?: string\n media?: string\n crossorigin?: boolean\n [index: string]: string | boolean\n}\n\nexport type MetapatcherPreloadAs = 'audio' | 'document' | 'embed' | 'fetch' | 'font' | 'image' | 'object' | 'script' | 'style' | 'track' | 'worker' | 'video'\n\nexport interface MetapatcherPrefetchAttrs {\n readonly rel?: 'prefetch'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPreconnectAttrs {\n readonly rel?: 'preconnect'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherDnsPrefetchAttrs {\n readonly rel?: 'dns-prefetch'\n id?: string\n href: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherProjectParams {\n favicon?: string | MetapatcherFaviconAttrs\n name?: string\n url?: string\n robots?: string | MetapatcherRobotsAttrs\n logo?: string\n themeColor?: string\n primaryColor?: string\n backgroundColor?: string\n twitterSite?: string\n safariPinnedTab?: MetapatcherSafariPinnedTabAttrs\n icons?: string[]\n}\n\nexport interface MetapatcherMsApplicationConfigAttrs {\n readonly name?: 'msapplication-config'\n id?: string\n content: string\n [index: string]: string | boolean\n}\n\nexport interface MetapatcherPageParams {\n title?: string\n description?: string\n path?: string\n image?: string\n robots?: string | MetapatcherRobotsAttrs\n locale?: string\n canonical?: string\n mobileVariant?: string\n localVersions?: MetapatcherLocalVersionLinkAttrs[],\n breadcrumb?: MetapatcherBreadcrumb[]\n}\n\nexport interface MetapatcherPageImage {\n path: string\n width?: string | number\n height?: string | number\n}\n\nexport const metapatcher = new Metapatcher()\n"],"names":[],"mappings":"AACO,MAAM,WAAW,CAAC;AACzB,EAAE,QAAQ,GAAG,EAAE,CAAC;AAChB;AACA,EAAE,QAAQ,GAAG,aAAa,CAAC;AAC3B,EAAE,UAAU,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AAC1E;AACA,EAAE,cAAc,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC;AACnD,EAAE,MAAM,GAAG,EAAE,CAAC;AACd,EAAE,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9C,EAAE,oBAAoB,GAAG;AACzB,IAAI,KAAK,EAAE,eAAe;AAC1B,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,KAAK,EAAE,YAAY;AACvB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,KAAK,EAAE,cAAc;AACzB,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,KAAK,EAAE,WAAW;AACtB,GAAG,CAAC;AACJ,EAAE,kBAAkB,GAAG,wBAAwB,CAAC;AAChD,EAAE,mBAAmB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAClF,EAAE,uBAAuB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACjH,EAAE,gBAAgB,GAAG;AACrB,IAAI,OAAO,EAAE,+BAA+B;AAC5C,IAAI,SAAS,EAAE,iCAAiC;AAChD,IAAI,SAAS,EAAE,iCAAiC;AAChD,IAAI,SAAS,EAAE,+BAA+B;AAC9C,GAAG,CAAC;AACJ;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,gBAAgB,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAChH,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAChC,IAAI,IAAI,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,QAAQ;AACrD,MAAM,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACxC,IAAI,IAAI,QAAQ;AAChB,MAAM,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC7C,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,+BAA+B,CAAC;AACjE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACrF,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC/C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AACnD,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAC/E,KAAK;AACL,GAAG;AACH,EAAE,QAAQ,CAAC,IAAI,EAAE;AACjB,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC/D,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9C,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC7D,MAAM,MAAM,IAAI,GAAG,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACnF,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ;AAC5B,QAAQ,SAAS;AACjB,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACnG,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;AAC/D,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7F,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1F,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC;AACnE,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3F,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9E,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7D,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AACxF,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,cAAc,CAAC,MAAM,EAAE;AACzB,IAAI,IAAI,MAAM,CAAC,KAAK;AACpB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,MAAM,CAAC,WAAW;AAC1B,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAClD,IAAI,IAAI,MAAM,CAAC,IAAI;AACnB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,MAAM,CAAC,KAAK;AACpB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,MAAM,CAAC,MAAM;AACrB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,IAAI,IAAI,MAAM,CAAC,MAAM;AACrB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,IAAI,MAAM,CAAC,SAAS;AACxB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1C,IAAI,IAAI,MAAM,CAAC,aAAa;AAC5B,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AACvE,IAAI,IAAI,MAAM,CAAC,UAAU;AACzB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5C,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC/C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5E,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,kBAAkB,CAAC,WAAW,EAAE;AAClC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;AAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AACxE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AACrD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AACvF,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC/C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AACrD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AACxF,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE;AAClB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC7C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AACpE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;AAC/C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9E,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;AAClD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnG,OAAO;AACP,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;AAClD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;AACtB,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACrG,OAAO;AACP,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC/C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;AAC/C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACnF,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,aAAa,CAAC,MAAM,EAAE;AACxB,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,MAAM,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;AAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACvE,KAAK;AACL,GAAG;AACH,EAAE,iBAAiB,CAAC,MAAM,EAAE;AAC5B,IAAI,IAAI,MAAM,CAAC,OAAO;AACtB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC,IAAI,IAAI,MAAM,CAAC,IAAI;AACnB,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,IAAI,IAAI,MAAM,CAAC,GAAG;AAClB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,IAAI,IAAI,MAAM,CAAC,MAAM;AACrB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG;AACjC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACnD,IAAI,IAAI,MAAM,CAAC,UAAU;AACzB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5C,IAAI,IAAI,MAAM,CAAC,WAAW;AAC1B,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC9C,IAAI,IAAI,MAAM,CAAC,eAAe;AAC9B,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACtD,IAAI,IAAI,MAAM,CAAC,KAAK;AACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,cAAc,CAAC,IAAI,EAAE;AACvB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AACjD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5E,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC;AACtD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACpD,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC;AAC5D,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,aAAa,CAAC,GAAG,EAAE;AACrB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1C,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;AAChD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;AAC5B,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAClD,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AACjD,MAAM,MAAM,IAAI,GAAG;AACnB,QAAQ,OAAO,EAAE,cAAc;AAC/B,QAAQ,IAAI;AACZ,QAAQ,GAAG;AACX,OAAO,CAAC;AACR,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,MAAM,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAClG,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,aAAa,CAAC,YAAY,EAAE;AAC9B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;AAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AACzE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AACrD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AAC7F,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,cAAc,CAAC,QAAQ,EAAE;AAC3B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;AAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AACtE,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE;AACxB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AACzF,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC;AACrC,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;AAC/I,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE;AACvB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AACtF,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC;AACpC,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;AAC3I,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAClF,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,CAAC;AAClC,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AACvI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,UAAU,CAAC,KAAK,EAAE;AACpB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAChF,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACjC,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AACrI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,SAAS,CAAC,KAAK,EAAE;AACnB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AACzC,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,gBAAgB,CAAC,KAAK,EAAE;AAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACxF,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACvC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AACpG,OAAO;AACP,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,MAAM,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,UAAU,CAAC,KAAK,EAAE;AACpB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACnF,IAAI,IAAI,CAAC,IAAI;AACb,MAAM,OAAO,IAAI,CAAC;AAClB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC1C,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;AACjJ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,sBAAsB,CAAC,KAAK,EAAE;AAChC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC;AACvD,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;AACpK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,kBAAkB,CAAC,KAAK,EAAE;AAC5B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC;AACpD,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,sBAAsB,CAAC,OAAO,GAAG,SAAS,EAAE;AAC9C,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,yBAAyB,CAAC;AACzD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,uCAAuC,EAAE,OAAO,EAAE,CAAC,CAAC;AACrF,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,aAAa,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AACjD,MAAM,OAAO,EAAE,CAAC;AAChB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;AAC7C,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,OAAO,EAAE,gBAAgB;AAC/B,MAAM,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM;AAC5D,QAAQ,OAAO,EAAE,UAAU;AAC3B,QAAQ,UAAU,EAAE,GAAG,GAAG,CAAC;AAC3B,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,MAAM,EAAE,GAAG;AACnB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,IAAI,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChG,GAAG;AACH,EAAE,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE;AACzB,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACjB,IAAI,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;AACtC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3C,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE;AAC5B,IAAI,MAAM,KAAK,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,6BAA6B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACpF,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;AAC5C,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AACzI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE;AACzB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACxC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,gBAAgB,CAAC,KAAK,EAAE;AAC1B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AACjD,IAAI,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AACtL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,EAAE;AAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACjD,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAClD,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC,CAAC;AACnE,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;AAChC,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC;AACrE,MAAM,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1D,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AACxE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACnD,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3E,QAAQ,MAAM,MAAM,GAAG,WAAW,KAAK,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,YAAY,CAAC;AAC3E,QAAQ,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AAChH,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClC,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE;AACtB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,IAAI,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5F,GAAG;AACH,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE;AAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpG,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AAC5D,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACxC,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrJ,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpG,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AAC5D,MAAM,IAAI,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACxF,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACxC,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACxD,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9B,QAAQ,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1C,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,IAAI,CAAC,cAAc;AAC3B,MAAM,OAAO,EAAE,CAAC;AAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACrB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,QAAQ,EAAE;AACrC,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,IAAI,MAAM,MAAM,GAAG,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzH,IAAI,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAClI,GAAG;AACH;AACA,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,EAAE;AACzC,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3C,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,QAAQ,EAAE;AAC3C,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACzE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE;AACpC,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3C,MAAM,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ;AAC/B,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACnC,WAAW,IAAI,CAAC,KAAK,IAAI;AACzB,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpC,KAAK;AACL,GAAG;AACH,EAAE,MAAM,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,EAAE;AACxC,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,KAAK,CAAC,CAAC;AAClE,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnG,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAChC,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5G,OAAO;AACP,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;AACvC,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACtC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,MAAM,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD,MAAM,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;AACrC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,MAAM,SAAS,MAAM,GAAG;AACxB,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/C,UAAU,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAS,MAAM;AACf,UAAU,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM;AAC7C,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC7D,cAAc,aAAa,CAAC,QAAQ,CAAC,CAAC;AACtC,cAAc,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,aAAa;AACb,WAAW,EAAE,GAAG,CAAC,CAAC;AAClB,SAAS;AACT,OAAO;AACP,MAAM,SAAS,OAAO,CAAC,MAAM,EAAE;AAC/B,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACpD,OAAO;AACP,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;AACzC,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,WAAW,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;AAC9C,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,WAAW,IAAI,QAAQ,CAAC,QAAQ,KAAK,WAAW;AAChD,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnE;AACA,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,EAAE;AAC5C,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;AAC5D,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AAClF,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAChC,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACxG,OAAO;AACP,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;AACvC,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACtC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,MAAM,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;AACtC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC/E,MAAM,SAAS,MAAM,GAAG;AACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;AAC1C,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,OAAO;AACP,MAAM,SAAS,OAAO,CAAC,MAAM,EAAE;AAC/B,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAQ,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAC3D,OAAO;AACP,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;AACzC,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,WAAW,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;AAC9C,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,WAAW,IAAI,QAAQ,CAAC,QAAQ,KAAK,WAAW;AAChD,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnE;AACA,QAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,GAAG,EAAE,EAAE;AAC7B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;AACrD,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,GAAG;AACH,EAAE,YAAY,CAAC,IAAI,EAAE;AACrB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1C,IAAI,IAAI,OAAO,GAAG,CAAC;AACnB,MAAM,OAAO,KAAK,CAAC,CAAC;AACpB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,GAAG;AACZ,MAAM,OAAO,KAAK,CAAC,CAAC;AACpB,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AACnG,GAAG;AACH,CAAC;AACW,MAAC,WAAW,GAAG,IAAI,WAAW;;;;"} \ No newline at end of file diff --git a/package.json b/package.json index e84544a..7bed1dc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metapatcher", - "version": "v4.3.2", + "version": "v4.3.3", "description": "HTML document head management library with convenient api. Manage social media tags, icons, device specific tags and event structured data with html meta tags and JSONLD documents.", "type": "module", "main": "./dist/index.js", diff --git a/src/index.ts b/src/index.ts index 3c444e1..244d62a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -132,7 +132,7 @@ export class Metapatcher { if (this.features.includes('twitterTags')) { const idTw = this.idPrefix + '-description-tw' this.removeOne('meta', { id: idTw }) - this.set('meta', { idTw, name: 'twitter:description', content: description }) + this.set('meta', { id: idTw, name: 'twitter:description', content: description }) } return this