diff --git a/DEPLOYMENT_READY.md b/DEPLOYMENT_READY.md index ac3e2fc..4054f36 100644 --- a/DEPLOYMENT_READY.md +++ b/DEPLOYMENT_READY.md @@ -3,10 +3,10 @@ ## āœ… Build Status: READY FOR DEPLOYMENT ### šŸ“ Files Ready for Release: -- `dist/main.js` - Plugin code (enhanced) -- `dist/manifest.json` - Plugin manifest v2.0.0 -- `dist/styles.css` - Original styles -- `dist/styles_modern.css` - Enhanced modern styles (15KB) +- `build/main.js` - Plugin code (enhanced) +- `build/manifest.json` - Plugin manifest v2.0.0 +- `build/styles.css` - Original styles +- `build/styles_modern.css` - Enhanced modern styles (15KB) - `RELEASE_NOTES_v2.0.0.md` - Detailed release notes ### šŸŽÆ What's Been Enhanced: @@ -44,7 +44,7 @@ ``` #### Manual Deployment: -1. Upload files from `dist/` folder to GitHub release +1. Upload files from `build/` folder to GitHub release 2. Tag as v2.0.0 3. Include `RELEASE_NOTES_v2.0.0.md` in release description 4. Announce the enhanced version to users diff --git a/RELEASE_AUTOMATION_SUMMARY.md b/RELEASE_AUTOMATION_SUMMARY.md index c657274..bae5385 100644 --- a/RELEASE_AUTOMATION_SUMMARY.md +++ b/RELEASE_AUTOMATION_SUMMARY.md @@ -150,13 +150,13 @@ npm run release šŸ“Œ Version: 2.2.0 šŸ·ļø Tag: v2.2.0 -šŸ“‚ Build output: dist/ +šŸ“‚ Build output: build/ šŸ“¦ Release files: - - dist/main.js - - dist/manifest.json - - dist/styles.css - - dist/styles_modern.css + - build/main.js + - build/manifest.json + - build/styles.css + - build/styles_modern.css šŸ”— GitHub: https://github.com/frostmute/make-it-rain/releases/tag/v2.2.0 @@ -176,7 +176,7 @@ npm run release The release includes all built files: ``` -dist/ +build/ ā”œā”€ā”€ main.js (730 KB - Compiled plugin) ā”œā”€ā”€ manifest.json (380 B - Plugin metadata) ā”œā”€ā”€ styles.css (26 KB - Main styles) diff --git a/RELEASE_GUIDE.md b/RELEASE_GUIDE.md index 1e07b7d..2897ad1 100644 --- a/RELEASE_GUIDE.md +++ b/RELEASE_GUIDE.md @@ -24,14 +24,14 @@ npm run build ``` - Compiles TypeScript - Bundles with esbuild -- Outputs to `dist/` folder +- Outputs to `build/` folder ### Step 2: Stage Changes ```bash git add -A ``` - Stages all modified files -- Includes dist/, manifest.json, versions.json, etc. +- Includes build/, manifest.json, versions.json, etc. ### Step 3: Commit ```bash @@ -87,13 +87,13 @@ When you run `npm run release`, you'll see: šŸ“Œ Version: 2.2.0 šŸ·ļø Tag: v2.2.0 -šŸ“‚ Build output: dist/ +šŸ“‚ Build output: build/ šŸ“¦ Release files: - - dist/main.js - - dist/manifest.json - - dist/styles.css - - dist/styles_modern.css + - build/main.js + - build/manifest.json + - build/styles.css + - build/styles_modern.css šŸ”— GitHub: https://github.com/frostmute/make-it-rain/releases/tag/v2.2.0 @@ -138,7 +138,7 @@ git push origin --tags 3. Select tag: `v2.2.0` 4. Title: `Release v2.2.0` 5. Description: Copy from `RELEASE_NOTES_v2.2.0.md` -6. Upload files from `dist/` folder: +6. Upload files from `build/` folder: - main.js - manifest.json - styles.css @@ -222,10 +222,10 @@ jobs: - uses: softprops/action-gh-release@v1 with: files: | - dist/main.js - dist/manifest.json - dist/styles.css - dist/styles_modern.css + build/main.js + build/manifest.json + build/styles.css + build/styles_modern.css ``` ## Troubleshooting diff --git a/build/main.js b/build/main.js index a2c55b5..3e4d717 100644 --- a/build/main.js +++ b/build/main.js @@ -3,15285 +3,14 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// node_modules/boolbase/index.js -var require_boolbase = __commonJS({ - "node_modules/boolbase/index.js"(exports, module2) { - module2.exports = { - trueFunc: function trueFunc2() { - return true; - }, - falseFunc: function falseFunc() { - return false; - } - }; - } -}); - -// src/main.ts -var main_exports = {}; -__export(main_exports, { - default: () => RaindropToObsidian -}); -module.exports = __toCommonJS(main_exports); -var import_obsidian6 = require("obsidian"); - -// src/RaindropView.ts -var import_obsidian2 = require("obsidian"); - -// src/RaindropItemDetail.ts -var import_obsidian = require("obsidian"); -var RaindropItemDetail = class { - constructor(containerEl, plugin) { - this.item = null; - this.containerEl = containerEl; - this.plugin = plugin; - } - render(item) { - var _a5; - this.item = item; - this.containerEl.empty(); - this.containerEl.addClass("raindrop-item-detail-view"); - const header = this.containerEl.createDiv({ cls: "raindrop-detail-header" }); - header.createEl("h2", { text: item.title }); - const actions = header.createDiv({ cls: "raindrop-detail-actions" }); - const addToObsidianBtn = actions.createEl("button", { cls: "clickable-icon" }); - (0, import_obsidian.setIcon)(addToObsidianBtn, "download"); - (0, import_obsidian.setTooltip)(addToObsidianBtn, "Add to Obsidian"); - addToObsidianBtn.onclick = async () => { - var _a6, _b; - try { - await this.plugin.createRaindropNote({ - title: item.title, - url: item.link, - excerpt: item.excerpt || "", - cover: item.cover || "", - tags: item.tags ? [...item.tags] : [], - note: item.note || "", - collectionId: ((_a6 = item.collection) == null ? void 0 : _a6.$id) || 0, - collectionName: ((_b = item.collection) == null ? void 0 : _b.title) || "Unsorted" - }); - new import_obsidian.Notice(`Created note for: ${item.title}`, 3e3); - } catch (error) { - new import_obsidian.Notice(`Failed to create note: ${error.message}`, 5e3); - console.error("Error creating note from item detail:", error); - } - }; - const openLinkBtn = actions.createEl("button", { cls: "clickable-icon" }); - (0, import_obsidian.setIcon)(openLinkBtn, "external-link"); - (0, import_obsidian.setTooltip)(openLinkBtn, "Open Link in Browser"); - openLinkBtn.onclick = () => window.open(item.link, "_blank"); - const editBtn = actions.createEl("button", { cls: "clickable-icon" }); - (0, import_obsidian.setIcon)(editBtn, "pencil"); - (0, import_obsidian.setTooltip)(editBtn, "Edit Bookmark (Not Implemented)"); - editBtn.onclick = () => new import_obsidian.Notice("Edit functionality coming soon!", 2e3); - const content = this.containerEl.createDiv({ cls: "raindrop-detail-content" }); - const metadata = content.createDiv({ cls: "raindrop-detail-metadata" }); - const linkEl = metadata.createDiv({ cls: "raindrop-detail-field" }); - linkEl.createEl("span", { text: "Link:", cls: "raindrop-detail-label" }); - linkEl.createEl("a", { text: item.link, href: item.link, attr: { target: "_blank" }, cls: "raindrop-detail-value" }); - const typeEl = metadata.createDiv({ cls: "raindrop-detail-field" }); - typeEl.createEl("span", { text: "Type:", cls: "raindrop-detail-label" }); - typeEl.createEl("span", { text: item.type.charAt(0).toUpperCase() + item.type.slice(1), cls: "raindrop-detail-value" }); - const collectionEl = metadata.createDiv({ cls: "raindrop-detail-field" }); - collectionEl.createEl("span", { text: "Collection:", cls: "raindrop-detail-label" }); - collectionEl.createEl("span", { text: ((_a5 = item.collection) == null ? void 0 : _a5.title) || "Unsorted", cls: "raindrop-detail-value" }); - const createdEl = metadata.createDiv({ cls: "raindrop-detail-field" }); - createdEl.createEl("span", { text: "Created:", cls: "raindrop-detail-label" }); - createdEl.createEl("span", { text: new Date(item.created).toLocaleDateString(), cls: "raindrop-detail-value" }); - const updatedEl = metadata.createDiv({ cls: "raindrop-detail-field" }); - updatedEl.createEl("span", { text: "Updated:", cls: "raindrop-detail-label" }); - updatedEl.createEl("span", { text: new Date(item.lastUpdate).toLocaleDateString(), cls: "raindrop-detail-value" }); - if (item.excerpt) { - content.createEl("h3", { text: "Description" }); - content.createEl("p", { text: item.excerpt }); - } - if (item.note) { - content.createEl("h3", { text: "Personal Note" }); - content.createEl("p", { text: item.note, cls: "raindrop-personal-note" }); - } - const tagsSection = content.createDiv(); - const tagsHeader = tagsSection.createDiv({ cls: "raindrop-tags-header" }); - tagsHeader.createEl("h3", { text: "Tags" }); - const editTagsBtn = tagsHeader.createEl("button", { cls: "raindrop-tag-edit-btn" }); - (0, import_obsidian.setIcon)(editTagsBtn, "edit"); - (0, import_obsidian.setTooltip)(editTagsBtn, "Edit Tags"); - editTagsBtn.onclick = () => { - new import_obsidian.Notice("Tag editing coming soon!", 2e3); - }; - if (item.tags && item.tags.length > 0) { - const tagsEl = tagsSection.createDiv({ cls: "raindrop-item-tags" }); - item.tags.forEach((tag) => { - const tagEl = tagsEl.createSpan({ text: `#${tag}`, cls: "raindrop-tag" }); - tagEl.title = tag; - }); - } else { - tagsSection.createEl("p", { text: "No tags assigned", cls: "raindrop-no-tags" }); - } - if (item.cover) { - content.createEl("h3", { text: "Cover Image" }); - const imgEl = content.createEl("img", { attr: { src: item.cover, alt: "Cover Image" } }); - imgEl.addClass("raindrop-detail-cover"); - } - if (item.highlights && item.highlights.length > 0) { - content.createEl("h3", { text: "Highlights" }); - const highlightsEl = content.createEl("ul", { cls: "raindrop-detail-highlights" }); - item.highlights.forEach((highlight) => { - const li = highlightsEl.createEl("li"); - li.createEl("p", { text: highlight.text, cls: "raindrop-highlight-text" }); - if (highlight.note) { - li.createEl("p", { text: `Note: ${highlight.note}`, cls: "raindrop-highlight-note" }); - } - }); - } - } - clear() { - this.containerEl.empty(); - this.containerEl.removeClass("raindrop-item-detail-view"); - this.containerEl.createEl("h2", { text: "Bookmarks" }); - this.containerEl.createEl("p", { text: "Select a collection to view bookmarks." }); - } -}; - -// src/RaindropView.ts -var RAINDROP_VIEW_TYPE = "raindrop-view"; -var RaindropView = class extends import_obsidian2.ItemView { - constructor(leaf, plugin) { - super(leaf); - this.collections = []; - this.collectionMap = /* @__PURE__ */ new Map(); - this.collectionHierarchy = /* @__PURE__ */ new Map(); - // parentId -> childrenIds - this.itemsByCollection = /* @__PURE__ */ new Map(); - this.activeCollectionId = null; - this.activeItem = null; - this.searchInput = null; - this.filteredItems = []; - this.currentTab = "list"; - this.plugin = plugin; - this.contentEl = this.containerEl.children[1]; - this.contentEl.addClass("raindrop-dashboard"); - } - getViewType() { - return RAINDROP_VIEW_TYPE; - } - getDisplayText() { - return "Raindrop Dashboard"; - } - getIcon() { - return "cloud-download"; - } - async onOpen() { - this.contentEl.empty(); - this.renderDashboard(); - } - async onClose() { - } - handleSearch() { - if (!this.searchInput || !this.activeCollectionId) return; - const searchTerm = this.searchInput.value.toLowerCase().trim(); - const items = this.itemsByCollection.get(this.activeCollectionId) || []; - if (!searchTerm) { - this.filteredItems = items; - } else { - this.filteredItems = items.filter( - (item) => { - var _a5, _b; - return item.title.toLowerCase().includes(searchTerm) || ((_a5 = item.excerpt) == null ? void 0 : _a5.toLowerCase().includes(searchTerm)) || ((_b = item.tags) == null ? void 0 : _b.some((tag) => tag.toLowerCase().includes(searchTerm))); - } - ); - } - const itemsListContainer = document.getElementById("raindrop-items-list"); - if (itemsListContainer) { - this.renderItemList(this.filteredItems, itemsListContainer); - } - } - switchTab(tab) { - var _a5, _b, _c, _d, _e; - this.currentTab = tab; - const tabBtns = (_a5 = this.tabsContainer.parentElement) == null ? void 0 : _a5.querySelectorAll(".raindrop-tab-btn"); - tabBtns == null ? void 0 : tabBtns.forEach((btn) => btn.removeClass("active")); - if (tab === "list") { - (_c = (_b = this.tabsContainer.parentElement) == null ? void 0 : _b.querySelector(".raindrop-tab-btn:nth-child(1)")) == null ? void 0 : _c.addClass("active"); - } else { - (_e = (_d = this.tabsContainer.parentElement) == null ? void 0 : _d.querySelector(".raindrop-tab-btn:nth-child(2)")) == null ? void 0 : _e.addClass("active"); - } - this.listTabContent.removeClass("active"); - this.previewTabContent.removeClass("active"); - if (tab === "list") { - this.listTabContent.addClass("active"); - } else { - this.previewTabContent.addClass("active"); - } - } - async renderDashboard() { - this.contentEl.empty(); - const header = this.contentEl.createDiv({ cls: "raindrop-header" }); - header.createEl("h1", { text: "RainSidian Dashboard" }); - const actions = header.createDiv({ cls: "raindrop-actions" }); - const searchBar = actions.createDiv({ cls: "raindrop-search-bar" }); - const searchInput = searchBar.createEl("input", { - type: "text", - placeholder: "Search bookmarks...", - cls: "search-input" - }); - (0, import_obsidian2.setIcon)(searchBar.createSpan({ cls: "search-icon" }), "search"); - this.searchInput = searchInput; - searchInput.addEventListener("input", () => this.handleSearch()); - const addButton = actions.createEl("button", { text: "Add New", cls: "mod-cta" }); - (0, import_obsidian2.setIcon)(addButton, "plus"); - addButton.onclick = async () => { - this.plugin.app.commands.executeCommandById("raindrop-to-obsidian:add-new-bookmark"); - }; - const mainContent = this.contentEl.createDiv({ cls: "raindrop-main-content" }); - const tabNav = mainContent.createDiv({ cls: "raindrop-tab-nav" }); - const listTabBtn = tabNav.createEl("button", { text: "Collections & List", cls: "raindrop-tab-btn active" }); - listTabBtn.onclick = () => this.switchTab("list"); - const previewTabBtn = tabNav.createEl("button", { text: "Preview", cls: "raindrop-tab-btn" }); - previewTabBtn.onclick = () => this.switchTab("preview"); - this.tabsContainer = mainContent.createDiv({ cls: "raindrop-tabs-container" }); - this.listTabContent = this.tabsContainer.createDiv({ cls: "raindrop-tab-content active" }); - this.listTabContent.setAttr("data-tab", "list"); - const listLayout = this.listTabContent.createDiv({ cls: "raindrop-list-layout" }); - const collectionsPanel = listLayout.createDiv({ cls: "raindrop-collections-panel" }); - collectionsPanel.createEl("h2", { text: "Collections" }); - this.treeContainer = collectionsPanel.createDiv({ cls: "raindrop-tree-container" }); - const itemsPanel = listLayout.createDiv({ cls: "raindrop-items-panel" }); - itemsPanel.createEl("h2", { text: "Bookmarks" }); - const itemsListContainer = itemsPanel.createDiv({ cls: "raindrop-items-list-container" }); - itemsListContainer.id = "raindrop-items-list"; - this.previewTabContent = this.tabsContainer.createDiv({ cls: "raindrop-tab-content" }); - this.previewTabContent.setAttr("data-tab", "preview"); - this.itemDetailView = new RaindropItemDetail(this.previewTabContent, this.plugin); - this.itemDetailView.clear(); - await this.fetchAndRenderCollections(this.treeContainer, true); - } - async fetchAndRenderCollections(container, initialLoad = false) { - if (!this.plugin.settings.apiToken) { - container.createEl("p", { text: "Please set your Raindrop API token in the plugin settings to view collections.", cls: "mod-warning" }); - return; - } - container.empty(); - const loadingEl = container.createEl("p", { text: "Loading collections..." }); - try { - this.collections = await this.plugin.fetchAllUserCollections(); - loadingEl.remove(); - if (this.collections.length === 0) { - container.createEl("p", { text: "No collections found." }); - return; - } - this.buildHierarchy(); - this.renderTree(container); - if (initialLoad) { - const rootCollections = this.collectionHierarchy.get(0) || []; - if (rootCollections.length > 0) { - this.setActiveCollection(rootCollections[0]); - } - } - } catch (error) { - loadingEl.remove(); - container.createEl("p", { text: "Error loading collections. Check console for details.", cls: "mod-error" }); - console.error("Error fetching collections for view:", error); - } - } - buildHierarchy() { - this.collectionMap.clear(); - this.collectionHierarchy.clear(); - this.collections.forEach((col) => { - this.collectionMap.set(col._id, col); - }); - this.collections.forEach((col) => { - var _a5, _b; - const parentId = ((_a5 = col.parent) == null ? void 0 : _a5.$id) || 0; - if (!this.collectionHierarchy.has(parentId)) { - this.collectionHierarchy.set(parentId, []); - } - (_b = this.collectionHierarchy.get(parentId)) == null ? void 0 : _b.push(col._id); - }); - } - renderTree(container) { - container.empty(); - const rootCollections = this.collectionHierarchy.get(0) || []; - const treeEl = container.createEl("ul", { cls: "tree-view-root" }); - rootCollections.forEach((colId) => { - this.renderCollectionNode(colId, treeEl); - }); - } - async setActiveCollection(collectionId) { - this.treeContainer.querySelectorAll(".tree-item-self.is-active").forEach((el) => el.removeClass("is-active")); - this.activeCollectionId = collectionId; - const newActiveEl = this.treeContainer.querySelector(`.tree-item-self[data-collection-id="${this.activeCollectionId}"]`); - newActiveEl == null ? void 0 : newActiveEl.addClass("is-active"); - const itemsListContainer = document.getElementById("raindrop-items-list"); - if (!itemsListContainer) return; - itemsListContainer.empty(); - const loadingEl = itemsListContainer.createEl("p", { text: "Fetching bookmarks..." }); - try { - const items = await this.plugin.fetchCollectionItems(collectionId); - this.itemsByCollection.set(collectionId, items); - this.filteredItems = items; - loadingEl.remove(); - this.renderItemList(items, itemsListContainer); - } catch (error) { - loadingEl.remove(); - itemsListContainer.createEl("p", { text: "Error fetching bookmarks.", cls: "mod-error" }); - console.error("Error fetching items for collection:", error); - } - } - showItemDetail(item) { - this.activeItem = item; - this.itemDetailView.render(item); - const itemsListContainer = document.getElementById("raindrop-items-list"); - itemsListContainer == null ? void 0 : itemsListContainer.querySelectorAll(".raindrop-item-card.is-active").forEach((el) => el.removeClass("is-active")); - const activeCard = itemsListContainer == null ? void 0 : itemsListContainer.querySelector(`.raindrop-item-card[data-item-id="${item._id}"]`); - activeCard == null ? void 0 : activeCard.addClass("is-active"); - this.switchTab("preview"); - } - renderItemList(items, container) { - container.empty(); - container.createEl("h2", { text: "Bookmarks" }); - if (items.length === 0) { - container.createEl("p", { text: "No bookmarks found in this collection." }); - return; - } - const listEl = container.createDiv({ cls: "raindrop-item-list" }); - items.forEach((item) => { - const itemEl = listEl.createDiv({ cls: "raindrop-item-card" }); - itemEl.setAttr("data-item-id", item._id); - const iconEl = itemEl.createSpan({ cls: "raindrop-item-icon" }); - let iconName = "link"; - switch (item.type) { - case "article": - iconName = "file-text"; - break; - case "image": - iconName = "image"; - break; - case "video": - iconName = "film"; - break; - case "document": - iconName = "file"; - break; - case "audio": - iconName = "volume-2"; - break; - } - (0, import_obsidian2.setIcon)(iconEl, iconName); - (0, import_obsidian2.setTooltip)(iconEl, item.type.charAt(0).toUpperCase() + item.type.slice(1)); - const contentWrapper = itemEl.createDiv({ cls: "raindrop-item-content-wrapper" }); - const titleEl = contentWrapper.createDiv({ cls: "raindrop-item-title" }); - titleEl.createEl("a", { text: item.title, href: item.link, attr: { target: "_blank" } }); - if (item.excerpt) { - contentWrapper.createEl("p", { text: item.excerpt, cls: "raindrop-item-excerpt" }); - } - if (item.tags && item.tags.length > 0) { - const tagsEl = contentWrapper.createDiv({ cls: "raindrop-item-tags" }); - item.tags.forEach((tag) => { - tagsEl.createSpan({ text: `#${tag}`, cls: "raindrop-tag" }); - }); - } - itemEl.onclick = (e) => { - if (e.target instanceof HTMLAnchorElement) return; - this.showItemDetail(item); - }; - }); - } - renderCollectionNode(collectionId, parentEl) { - const collection = this.collectionMap.get(collectionId); - if (!collection) return; - const li = parentEl.createEl("li", { cls: "tree-item is-collapsed" }); - const itemDiv = li.createDiv({ cls: "tree-item-self" }); - itemDiv.setAttr("data-collection-id", collectionId); - const iconEl = itemDiv.createSpan({ cls: "tree-item-icon collapse-icon" }); - (0, import_obsidian2.setIcon)(iconEl, "folder"); - itemDiv.createSpan({ text: collection.title, cls: "tree-item-inner" }); - itemDiv.createSpan({ text: ` (${collection.count || 0})`, cls: "tree-item-extra" }); - if (this.activeCollectionId === collectionId) { - itemDiv.addClass("is-active"); - } - const childrenEl = li.createEl("ul", { cls: "tree-view-children" }); - itemDiv.onclick = (e) => { - e.stopPropagation(); - this.setActiveCollection(collectionId); - li.toggleClass("is-collapsed", !li.hasClass("is-collapsed")); - (0, import_obsidian2.setIcon)(iconEl, li.hasClass("is-collapsed") ? "folder" : "folder-open"); - }; - const subCollections = this.collectionHierarchy.get(collectionId) || []; - subCollections.forEach((subColId) => { - this.renderCollectionNode(subColId, childrenEl); - }); - } -}; - -// src/main.ts -var import_obsidian7 = require("obsidian"); - -// src/utils/fileUtils.ts -async function doesPathExist(app, path) { - return app.vault.adapter.exists(path); -} -async function isPathAFolder(app, path) { - const stat = await app.vault.adapter.stat(path); - return (stat == null ? void 0 : stat.type) === "folder"; -} -async function createFolder(app, path) { - const doesFolderExist = await doesPathExist(app, path); - if (doesFolderExist) { - const isFolder = await isPathAFolder(app, path); - if (isFolder) return true; - throw new Error(`Path exists but is not a folder: ${path}`); - } - try { - await app.vault.createFolder(path); - return true; - } catch (error) { - const errorMessage = error instanceof Error ? error.message : String(error); - throw new Error(`Failed to create folder at ${path}: ${errorMessage}`); - } -} -function sanitizeFileName(fileName) { - const invalidChars = /[/\\:*?"<>|#%&{}$!@'`+=]/g; - const replacement = ""; - const isStringEmpty = !fileName || fileName.trim() === ""; - if (isStringEmpty) return "Unnamed_Raindrop"; - const sanitizedName = fileName.replace(invalidChars, replacement).trim(); - const isSanitizedEmpty = !sanitizedName; - const maxLength = 200; - return (isSanitizedEmpty ? "Unnamed_Raindrop" : sanitizedName).substring(0, maxLength); -} -async function createFolderStructure(app, fullPath) { - if (!fullPath || fullPath === "/") return true; - try { - const doesExist = await doesPathExist(app, fullPath); - if (doesExist) { - const isFolder = await isPathAFolder(app, fullPath); - if (isFolder) return true; - throw new Error(`Path exists but is not a folder: ${fullPath}`); - } - const lastSlashIndex = fullPath.lastIndexOf("/"); - if (lastSlashIndex > 0) { - const parentPath = fullPath.substring(0, lastSlashIndex); - await createFolderStructure(app, parentPath); - } - await createFolder(app, fullPath); - return true; - } catch (error) { - const errorMessage = error instanceof Error ? error.message : String(error); - throw new Error(`Failed to create/verify folder: ${fullPath}. Error: ${errorMessage}.`); - } -} - -// src/utils/apiUtils.ts -var import_obsidian3 = require("obsidian"); -function createRateLimiter(maxRequestsPerMinute = 60, delayBetweenRequests = 300) { - let requestCount = 0; - let resetTime = Date.now() + 6e4; - const checkLimit = async () => { - const now = Date.now(); - if (now > resetTime) { - resetTime = now + 6e4; - requestCount = 0; - } - if (requestCount >= maxRequestsPerMinute) { - const waitTime = resetTime - now; - console.log(`Rate limit reached. Waiting ${waitTime}ms before next request.`); - await new Promise((resolve) => setTimeout(resolve, waitTime)); - resetTime = Date.now() + 6e4; - requestCount = 0; - } else { - await new Promise((resolve) => setTimeout(resolve, delayBetweenRequests)); - } - requestCount++; - }; - const resetCounter = () => { - resetTime = Date.now() + 6e4; - requestCount = 0; - console.log("Rate limiter counter reset."); - }; - return { checkLimit, resetCounter }; -} -function parseApiResponse(response) { - if (typeof response === "string") { - return JSON.parse(response); - } - return response; -} -async function handleRequestError(error, rateLimiter, attemptNumber, maxRetries, delayBetweenRetries) { - const isLastAttempt = attemptNumber >= maxRetries - 1; - if (error.status === 429 || error.message && error.message.includes("rate limit")) { - console.log("Rate limit hit, resetting counter and waiting..."); - rateLimiter.resetCounter(); - await new Promise((resolve) => setTimeout(resolve, delayBetweenRetries * 2)); - return true; - } - console.error(`Error in API request (attempt ${attemptNumber + 1}/${maxRetries}):`, error); - if (!isLastAttempt) { - await new Promise((resolve) => setTimeout(resolve, delayBetweenRetries)); - return true; - } - return false; -} -async function fetchWithRetry(appOrUrl, urlOrOptions, optionsOrRateLimiter, rateLimiterOrMaxRetries, maxRetries = 3, delayBetweenRetries = 1e3) { - let app; - let url; - let requestOptions; - let rateLimiter; - if (typeof appOrUrl === "string") { - url = appOrUrl; - requestOptions = urlOrOptions; - rateLimiter = optionsOrRateLimiter; - if (typeof rateLimiterOrMaxRetries === "number") { - maxRetries = rateLimiterOrMaxRetries; - } - } else { - app = appOrUrl; - url = urlOrOptions; - requestOptions = optionsOrRateLimiter; - rateLimiter = rateLimiterOrMaxRetries; - } - for (let attemptNumber = 0; attemptNumber < maxRetries; attemptNumber++) { - const isLastAttempt = attemptNumber === maxRetries - 1; - try { - await rateLimiter.checkLimit(); - const response = await (0, import_obsidian3.request)({ - url, - method: requestOptions.method || "GET", - headers: requestOptions.headers, - body: requestOptions.body - }); - return parseApiResponse(response); - } catch (error) { - if (!await handleRequestError(error, rateLimiter, attemptNumber, maxRetries, delayBetweenRetries) && isLastAttempt) { - throw error; - } - } - } - throw new Error("Request failed after maximum retry attempts"); -} - -// src/utils/webScrapingUtils.ts -var import_obsidian4 = require("obsidian"); - -// node_modules/cheerio/dist/browser/static.js -var static_exports = {}; -__export(static_exports, { - contains: () => contains, - extract: () => extract, - html: () => html, - merge: () => merge, - parseHTML: () => parseHTML, - root: () => root, - text: () => text, - xml: () => xml -}); - -// node_modules/domutils/lib/esm/index.js -var esm_exports2 = {}; -__export(esm_exports2, { - DocumentPosition: () => DocumentPosition, - append: () => append, - appendChild: () => appendChild, - compareDocumentPosition: () => compareDocumentPosition, - existsOne: () => existsOne, - filter: () => filter, - find: () => find, - findAll: () => findAll, - findOne: () => findOne, - findOneChild: () => findOneChild, - getAttributeValue: () => getAttributeValue, - getChildren: () => getChildren, - getElementById: () => getElementById, - getElements: () => getElements, - getElementsByClassName: () => getElementsByClassName, - getElementsByTagName: () => getElementsByTagName, - getElementsByTagType: () => getElementsByTagType, - getFeed: () => getFeed, - getInnerHTML: () => getInnerHTML, - getName: () => getName, - getOuterHTML: () => getOuterHTML, - getParent: () => getParent, - getSiblings: () => getSiblings, - getText: () => getText, - hasAttrib: () => hasAttrib, - hasChildren: () => hasChildren, - innerText: () => innerText, - isCDATA: () => isCDATA, - isComment: () => isComment, - isDocument: () => isDocument, - isTag: () => isTag2, - isText: () => isText, - nextElementSibling: () => nextElementSibling, - prepend: () => prepend, - prependChild: () => prependChild, - prevElementSibling: () => prevElementSibling, - removeElement: () => removeElement, - removeSubsets: () => removeSubsets, - replaceElement: () => replaceElement, - testElement: () => testElement, - textContent: () => textContent, - uniqueSort: () => uniqueSort -}); - -// node_modules/domelementtype/lib/esm/index.js -var esm_exports = {}; -__export(esm_exports, { - CDATA: () => CDATA, - Comment: () => Comment, - Directive: () => Directive, - Doctype: () => Doctype, - ElementType: () => ElementType, - Root: () => Root, - Script: () => Script, - Style: () => Style, - Tag: () => Tag, - Text: () => Text, - isTag: () => isTag -}); -var ElementType; -(function(ElementType2) { - ElementType2["Root"] = "root"; - ElementType2["Text"] = "text"; - ElementType2["Directive"] = "directive"; - ElementType2["Comment"] = "comment"; - ElementType2["Script"] = "script"; - ElementType2["Style"] = "style"; - ElementType2["Tag"] = "tag"; - ElementType2["CDATA"] = "cdata"; - ElementType2["Doctype"] = "doctype"; -})(ElementType || (ElementType = {})); -function isTag(elem) { - return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style; -} -var Root = ElementType.Root; -var Text = ElementType.Text; -var Directive = ElementType.Directive; -var Comment = ElementType.Comment; -var Script = ElementType.Script; -var Style = ElementType.Style; -var Tag = ElementType.Tag; -var CDATA = ElementType.CDATA; -var Doctype = ElementType.Doctype; - -// node_modules/domhandler/lib/esm/node.js -var Node = class { - constructor() { - this.parent = null; - this.prev = null; - this.next = null; - this.startIndex = null; - this.endIndex = null; - } - // Read-write aliases for properties - /** - * Same as {@link parent}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get parentNode() { - return this.parent; - } - set parentNode(parent2) { - this.parent = parent2; - } - /** - * Same as {@link prev}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get previousSibling() { - return this.prev; - } - set previousSibling(prev2) { - this.prev = prev2; - } - /** - * Same as {@link next}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get nextSibling() { - return this.next; - } - set nextSibling(next2) { - this.next = next2; - } - /** - * Clone this node, and optionally its children. - * - * @param recursive Clone child nodes as well. - * @returns A clone of the node. - */ - cloneNode(recursive = false) { - return cloneNode(this, recursive); - } -}; -var DataNode = class extends Node { - /** - * @param data The content of the data node - */ - constructor(data2) { - super(); - this.data = data2; - } - /** - * Same as {@link data}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get nodeValue() { - return this.data; - } - set nodeValue(data2) { - this.data = data2; - } -}; -var Text2 = class extends DataNode { - constructor() { - super(...arguments); - this.type = ElementType.Text; - } - get nodeType() { - return 3; - } -}; -var Comment2 = class extends DataNode { - constructor() { - super(...arguments); - this.type = ElementType.Comment; - } - get nodeType() { - return 8; - } -}; -var ProcessingInstruction = class extends DataNode { - constructor(name, data2) { - super(data2); - this.name = name; - this.type = ElementType.Directive; - } - get nodeType() { - return 1; - } -}; -var NodeWithChildren = class extends Node { - /** - * @param children Children of the node. Only certain node types can have children. - */ - constructor(children2) { - super(); - this.children = children2; - } - // Aliases - /** First child of the node. */ - get firstChild() { - var _a5; - return (_a5 = this.children[0]) !== null && _a5 !== void 0 ? _a5 : null; - } - /** Last child of the node. */ - get lastChild() { - return this.children.length > 0 ? this.children[this.children.length - 1] : null; - } - /** - * Same as {@link children}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get childNodes() { - return this.children; - } - set childNodes(children2) { - this.children = children2; - } -}; -var CDATA2 = class extends NodeWithChildren { - constructor() { - super(...arguments); - this.type = ElementType.CDATA; - } - get nodeType() { - return 4; - } -}; -var Document = class extends NodeWithChildren { - constructor() { - super(...arguments); - this.type = ElementType.Root; - } - get nodeType() { - return 9; - } -}; -var Element = class extends NodeWithChildren { - /** - * @param name Name of the tag, eg. `div`, `span`. - * @param attribs Object mapping attribute names to attribute values. - * @param children Children of the node. - */ - constructor(name, attribs, children2 = [], type = name === "script" ? ElementType.Script : name === "style" ? ElementType.Style : ElementType.Tag) { - super(children2); - this.name = name; - this.attribs = attribs; - this.type = type; - } - get nodeType() { - return 1; - } - // DOM Level 1 aliases - /** - * Same as {@link name}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get tagName() { - return this.name; - } - set tagName(name) { - this.name = name; - } - get attributes() { - return Object.keys(this.attribs).map((name) => { - var _a5, _b; - return { - name, - value: this.attribs[name], - namespace: (_a5 = this["x-attribsNamespace"]) === null || _a5 === void 0 ? void 0 : _a5[name], - prefix: (_b = this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name] - }; - }); - } -}; -function isTag2(node) { - return isTag(node); -} -function isCDATA(node) { - return node.type === ElementType.CDATA; -} -function isText(node) { - return node.type === ElementType.Text; -} -function isComment(node) { - return node.type === ElementType.Comment; -} -function isDirective(node) { - return node.type === ElementType.Directive; -} -function isDocument(node) { - return node.type === ElementType.Root; -} -function hasChildren(node) { - return Object.prototype.hasOwnProperty.call(node, "children"); -} -function cloneNode(node, recursive = false) { - let result; - if (isText(node)) { - result = new Text2(node.data); - } else if (isComment(node)) { - result = new Comment2(node.data); - } else if (isTag2(node)) { - const children2 = recursive ? cloneChildren(node.children) : []; - const clone2 = new Element(node.name, { ...node.attribs }, children2); - children2.forEach((child) => child.parent = clone2); - if (node.namespace != null) { - clone2.namespace = node.namespace; - } - if (node["x-attribsNamespace"]) { - clone2["x-attribsNamespace"] = { ...node["x-attribsNamespace"] }; - } - if (node["x-attribsPrefix"]) { - clone2["x-attribsPrefix"] = { ...node["x-attribsPrefix"] }; - } - result = clone2; - } else if (isCDATA(node)) { - const children2 = recursive ? cloneChildren(node.children) : []; - const clone2 = new CDATA2(children2); - children2.forEach((child) => child.parent = clone2); - result = clone2; - } else if (isDocument(node)) { - const children2 = recursive ? cloneChildren(node.children) : []; - const clone2 = new Document(children2); - children2.forEach((child) => child.parent = clone2); - if (node["x-mode"]) { - clone2["x-mode"] = node["x-mode"]; - } - result = clone2; - } else if (isDirective(node)) { - const instruction = new ProcessingInstruction(node.name, node.data); - if (node["x-name"] != null) { - instruction["x-name"] = node["x-name"]; - instruction["x-publicId"] = node["x-publicId"]; - instruction["x-systemId"] = node["x-systemId"]; - } - result = instruction; - } else { - throw new Error(`Not implemented yet: ${node.type}`); - } - result.startIndex = node.startIndex; - result.endIndex = node.endIndex; - if (node.sourceCodeLocation != null) { - result.sourceCodeLocation = node.sourceCodeLocation; - } - return result; -} -function cloneChildren(childs) { - const children2 = childs.map((child) => cloneNode(child, true)); - for (let i = 1; i < children2.length; i++) { - children2[i].prev = children2[i - 1]; - children2[i - 1].next = children2[i]; - } - return children2; -} - -// node_modules/domhandler/lib/esm/index.js -var defaultOpts = { - withStartIndices: false, - withEndIndices: false, - xmlMode: false -}; -var DomHandler = class { - /** - * @param callback Called once parsing has completed. - * @param options Settings for the handler. - * @param elementCB Callback whenever a tag is closed. - */ - constructor(callback, options, elementCB) { - this.dom = []; - this.root = new Document(this.dom); - this.done = false; - this.tagStack = [this.root]; - this.lastNode = null; - this.parser = null; - if (typeof options === "function") { - elementCB = options; - options = defaultOpts; - } - if (typeof callback === "object") { - options = callback; - callback = void 0; - } - this.callback = callback !== null && callback !== void 0 ? callback : null; - this.options = options !== null && options !== void 0 ? options : defaultOpts; - this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null; - } - onparserinit(parser) { - this.parser = parser; - } - // Resets the handler back to starting state - onreset() { - this.dom = []; - this.root = new Document(this.dom); - this.done = false; - this.tagStack = [this.root]; - this.lastNode = null; - this.parser = null; - } - // Signals the handler that parsing is done - onend() { - if (this.done) - return; - this.done = true; - this.parser = null; - this.handleCallback(null); - } - onerror(error) { - this.handleCallback(error); - } - onclosetag() { - this.lastNode = null; - const elem = this.tagStack.pop(); - if (this.options.withEndIndices) { - elem.endIndex = this.parser.endIndex; - } - if (this.elementCB) - this.elementCB(elem); - } - onopentag(name, attribs) { - const type = this.options.xmlMode ? ElementType.Tag : void 0; - const element = new Element(name, attribs, void 0, type); - this.addNode(element); - this.tagStack.push(element); - } - ontext(data2) { - const { lastNode } = this; - if (lastNode && lastNode.type === ElementType.Text) { - lastNode.data += data2; - if (this.options.withEndIndices) { - lastNode.endIndex = this.parser.endIndex; - } - } else { - const node = new Text2(data2); - this.addNode(node); - this.lastNode = node; - } - } - oncomment(data2) { - if (this.lastNode && this.lastNode.type === ElementType.Comment) { - this.lastNode.data += data2; - return; - } - const node = new Comment2(data2); - this.addNode(node); - this.lastNode = node; - } - oncommentend() { - this.lastNode = null; - } - oncdatastart() { - const text3 = new Text2(""); - const node = new CDATA2([text3]); - this.addNode(node); - text3.parent = node; - this.lastNode = text3; - } - oncdataend() { - this.lastNode = null; - } - onprocessinginstruction(name, data2) { - const node = new ProcessingInstruction(name, data2); - this.addNode(node); - } - handleCallback(error) { - if (typeof this.callback === "function") { - this.callback(error, this.dom); - } else if (error) { - throw error; - } - } - addNode(node) { - const parent2 = this.tagStack[this.tagStack.length - 1]; - const previousSibling = parent2.children[parent2.children.length - 1]; - if (this.options.withStartIndices) { - node.startIndex = this.parser.startIndex; - } - if (this.options.withEndIndices) { - node.endIndex = this.parser.endIndex; - } - parent2.children.push(node); - if (previousSibling) { - node.prev = previousSibling; - previousSibling.next = node; - } - node.parent = parent2; - this.lastNode = null; - } -}; - -// node_modules/entities/lib/esm/generated/decode-data-html.js -var decode_data_html_default = new Uint16Array( - // prettier-ignore - '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/entities/lib/esm/generated/decode-data-xml.js -var decode_data_xml_default = new Uint16Array( - // prettier-ignore - "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/entities/lib/esm/decode_codepoint.js -var _a; -var decodeMap = /* @__PURE__ */ new Map([ - [0, 65533], - // C1 Unicode control character reference replacements - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] -]); -var fromCodePoint = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins - (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) { - let output = ""; - if (codePoint > 65535) { - codePoint -= 65536; - output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; - } - output += String.fromCharCode(codePoint); - return output; - } -); -function replaceCodePoint(codePoint) { - var _a5; - if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { - return 65533; - } - return (_a5 = decodeMap.get(codePoint)) !== null && _a5 !== void 0 ? _a5 : codePoint; -} - -// node_modules/entities/lib/esm/decode.js -var CharCodes; -(function(CharCodes5) { - CharCodes5[CharCodes5["NUM"] = 35] = "NUM"; - CharCodes5[CharCodes5["SEMI"] = 59] = "SEMI"; - CharCodes5[CharCodes5["EQUALS"] = 61] = "EQUALS"; - CharCodes5[CharCodes5["ZERO"] = 48] = "ZERO"; - CharCodes5[CharCodes5["NINE"] = 57] = "NINE"; - CharCodes5[CharCodes5["LOWER_A"] = 97] = "LOWER_A"; - CharCodes5[CharCodes5["LOWER_F"] = 102] = "LOWER_F"; - CharCodes5[CharCodes5["LOWER_X"] = 120] = "LOWER_X"; - CharCodes5[CharCodes5["LOWER_Z"] = 122] = "LOWER_Z"; - CharCodes5[CharCodes5["UPPER_A"] = 65] = "UPPER_A"; - CharCodes5[CharCodes5["UPPER_F"] = 70] = "UPPER_F"; - CharCodes5[CharCodes5["UPPER_Z"] = 90] = "UPPER_Z"; -})(CharCodes || (CharCodes = {})); -var TO_LOWER_BIT = 32; -var BinTrieFlags; -(function(BinTrieFlags4) { - BinTrieFlags4[BinTrieFlags4["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; - BinTrieFlags4[BinTrieFlags4["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; - BinTrieFlags4[BinTrieFlags4["JUMP_TABLE"] = 127] = "JUMP_TABLE"; -})(BinTrieFlags || (BinTrieFlags = {})); -function isNumber(code) { - return code >= CharCodes.ZERO && code <= CharCodes.NINE; -} -function isHexadecimalCharacter(code) { - return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F; -} -function isAsciiAlphaNumeric(code) { - return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code); -} -function isEntityInAttributeInvalidEnd(code) { - return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); -} -var EntityDecoderState; -(function(EntityDecoderState4) { - EntityDecoderState4[EntityDecoderState4["EntityStart"] = 0] = "EntityStart"; - EntityDecoderState4[EntityDecoderState4["NumericStart"] = 1] = "NumericStart"; - EntityDecoderState4[EntityDecoderState4["NumericDecimal"] = 2] = "NumericDecimal"; - EntityDecoderState4[EntityDecoderState4["NumericHex"] = 3] = "NumericHex"; - EntityDecoderState4[EntityDecoderState4["NamedEntity"] = 4] = "NamedEntity"; -})(EntityDecoderState || (EntityDecoderState = {})); -var DecodingMode; -(function(DecodingMode4) { - DecodingMode4[DecodingMode4["Legacy"] = 0] = "Legacy"; - DecodingMode4[DecodingMode4["Strict"] = 1] = "Strict"; - DecodingMode4[DecodingMode4["Attribute"] = 2] = "Attribute"; -})(DecodingMode || (DecodingMode = {})); -var EntityDecoder = class { - constructor(decodeTree, emitCodePoint, errors) { - this.decodeTree = decodeTree; - this.emitCodePoint = emitCodePoint; - this.errors = errors; - this.state = EntityDecoderState.EntityStart; - this.consumed = 1; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.decodeMode = DecodingMode.Strict; - } - /** Resets the instance to make it reusable. */ - startEntity(decodeMode) { - this.decodeMode = decodeMode; - this.state = EntityDecoderState.EntityStart; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.consumed = 1; - } - /** - * Write an entity to the decoder. This can be called multiple times with partial entities. - * If the entity is incomplete, the decoder will return -1. - * - * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the - * entity is incomplete, and resume when the next string is written. - * - * @param string The string containing the entity (or a continuation of the entity). - * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - write(str, offset) { - switch (this.state) { - case EntityDecoderState.EntityStart: { - if (str.charCodeAt(offset) === CharCodes.NUM) { - this.state = EntityDecoderState.NumericStart; - this.consumed += 1; - return this.stateNumericStart(str, offset + 1); - } - this.state = EntityDecoderState.NamedEntity; - return this.stateNamedEntity(str, offset); - } - case EntityDecoderState.NumericStart: { - return this.stateNumericStart(str, offset); - } - case EntityDecoderState.NumericDecimal: { - return this.stateNumericDecimal(str, offset); - } - case EntityDecoderState.NumericHex: { - return this.stateNumericHex(str, offset); - } - case EntityDecoderState.NamedEntity: { - return this.stateNamedEntity(str, offset); - } - } - } - /** - * Switches between the numeric decimal and hexadecimal states. - * - * Equivalent to the `Numeric character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericStart(str, offset) { - if (offset >= str.length) { - return -1; - } - if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { - this.state = EntityDecoderState.NumericHex; - this.consumed += 1; - return this.stateNumericHex(str, offset + 1); - } - this.state = EntityDecoderState.NumericDecimal; - return this.stateNumericDecimal(str, offset); - } - addToNumericResult(str, start, end2, base) { - if (start !== end2) { - const digitCount = end2 - start; - this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base); - this.consumed += digitCount; - } - } - /** - * Parses a hexadecimal numeric entity. - * - * Equivalent to the `Hexademical character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericHex(str, offset) { - const startIdx = offset; - while (offset < str.length) { - const char = str.charCodeAt(offset); - if (isNumber(char) || isHexadecimalCharacter(char)) { - offset += 1; - } else { - this.addToNumericResult(str, startIdx, offset, 16); - return this.emitNumericEntity(char, 3); - } - } - this.addToNumericResult(str, startIdx, offset, 16); - return -1; - } - /** - * Parses a decimal numeric entity. - * - * Equivalent to the `Decimal character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericDecimal(str, offset) { - const startIdx = offset; - while (offset < str.length) { - const char = str.charCodeAt(offset); - if (isNumber(char)) { - offset += 1; - } else { - this.addToNumericResult(str, startIdx, offset, 10); - return this.emitNumericEntity(char, 2); - } - } - this.addToNumericResult(str, startIdx, offset, 10); - return -1; - } - /** - * Validate and emit a numeric entity. - * - * Implements the logic from the `Hexademical character reference start - * state` and `Numeric character reference end state` in the HTML spec. - * - * @param lastCp The last code point of the entity. Used to see if the - * entity was terminated with a semicolon. - * @param expectedLength The minimum number of characters that should be - * consumed. Used to validate that at least one digit - * was consumed. - * @returns The number of characters that were consumed. - */ - emitNumericEntity(lastCp, expectedLength) { - var _a5; - if (this.consumed <= expectedLength) { - (_a5 = this.errors) === null || _a5 === void 0 ? void 0 : _a5.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - if (lastCp === CharCodes.SEMI) { - this.consumed += 1; - } else if (this.decodeMode === DecodingMode.Strict) { - return 0; - } - this.emitCodePoint(replaceCodePoint(this.result), this.consumed); - if (this.errors) { - if (lastCp !== CharCodes.SEMI) { - this.errors.missingSemicolonAfterCharacterReference(); - } - this.errors.validateNumericCharacterReference(this.result); - } - return this.consumed; - } - /** - * Parses a named entity. - * - * Equivalent to the `Named character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNamedEntity(str, offset) { - const { decodeTree } = this; - let current = decodeTree[this.treeIndex]; - let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; - for (; offset < str.length; offset++, this.excess++) { - const char = str.charCodeAt(offset); - this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); - if (this.treeIndex < 0) { - return this.result === 0 || // If we are parsing an attribute - this.decodeMode === DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity, - (valueLength === 0 || // And there should be no invalid characters. - isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity(); - } - current = decodeTree[this.treeIndex]; - valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; - if (valueLength !== 0) { - if (char === CharCodes.SEMI) { - return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); - } - if (this.decodeMode !== DecodingMode.Strict) { - this.result = this.treeIndex; - this.consumed += this.excess; - this.excess = 0; - } - } - } - return -1; - } - /** - * Emit a named entity that was not terminated with a semicolon. - * - * @returns The number of characters consumed. - */ - emitNotTerminatedNamedEntity() { - var _a5; - const { result, decodeTree } = this; - const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; - this.emitNamedEntityData(result, valueLength, this.consumed); - (_a5 = this.errors) === null || _a5 === void 0 ? void 0 : _a5.missingSemicolonAfterCharacterReference(); - return this.consumed; - } - /** - * Emit a named entity. - * - * @param result The index of the entity in the decode tree. - * @param valueLength The number of bytes in the entity. - * @param consumed The number of characters consumed. - * - * @returns The number of characters consumed. - */ - emitNamedEntityData(result, valueLength, consumed) { - const { decodeTree } = this; - this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed); - if (valueLength === 3) { - this.emitCodePoint(decodeTree[result + 2], consumed); - } - return consumed; - } - /** - * Signal to the parser that the end of the input was reached. - * - * Remaining data will be emitted and relevant errors will be produced. - * - * @returns The number of characters consumed. - */ - end() { - var _a5; - switch (this.state) { - case EntityDecoderState.NamedEntity: { - return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; - } - // Otherwise, emit a numeric entity if we have one. - case EntityDecoderState.NumericDecimal: { - return this.emitNumericEntity(0, 2); - } - case EntityDecoderState.NumericHex: { - return this.emitNumericEntity(0, 3); - } - case EntityDecoderState.NumericStart: { - (_a5 = this.errors) === null || _a5 === void 0 ? void 0 : _a5.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - case EntityDecoderState.EntityStart: { - return 0; - } - } - } -}; -function getDecoder(decodeTree) { - let ret = ""; - const decoder = new EntityDecoder(decodeTree, (str) => ret += fromCodePoint(str)); - return function decodeWithTrie(str, decodeMode) { - let lastIndex = 0; - let offset = 0; - while ((offset = str.indexOf("&", offset)) >= 0) { - ret += str.slice(lastIndex, offset); - decoder.startEntity(decodeMode); - const len = decoder.write( - str, - // Skip the "&" - offset + 1 - ); - if (len < 0) { - lastIndex = offset + decoder.end(); - break; - } - lastIndex = offset + len; - offset = len === 0 ? lastIndex + 1 : lastIndex; - } - const result = ret + str.slice(lastIndex); - ret = ""; - return result; - }; -} -function determineBranch(decodeTree, current, nodeIdx, char) { - const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; - const jumpOffset = current & BinTrieFlags.JUMP_TABLE; - if (branchCount === 0) { - return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; - } - if (jumpOffset) { - const value = char - jumpOffset; - return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1; - } - let lo = nodeIdx; - let hi = lo + branchCount - 1; - while (lo <= hi) { - const mid = lo + hi >>> 1; - const midVal = decodeTree[mid]; - if (midVal < char) { - lo = mid + 1; - } else if (midVal > char) { - hi = mid - 1; - } else { - return decodeTree[mid + branchCount]; - } - } - return -1; -} -var htmlDecoder = getDecoder(decode_data_html_default); -var xmlDecoder = getDecoder(decode_data_xml_default); - -// node_modules/entities/lib/esm/generated/encode-html.js -function restoreDiff(arr) { - for (let i = 1; i < arr.length; i++) { - arr[i][0] += arr[i - 1][0] + 1; - } - return arr; -} -var encode_html_default = new Map(/* @__PURE__ */ restoreDiff([[9, " "], [0, " "], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]])); - -// node_modules/entities/lib/esm/escape.js -var xmlReplacer = /["&'<>$\x80-\uFFFF]/g; -var xmlCodeMap = /* @__PURE__ */ new Map([ - [34, """], - [38, "&"], - [39, "'"], - [60, "<"], - [62, ">"] -]); -var getCodePoint = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - String.prototype.codePointAt != null ? (str, index2) => str.codePointAt(index2) : ( - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - (c, index2) => (c.charCodeAt(index2) & 64512) === 55296 ? (c.charCodeAt(index2) - 55296) * 1024 + c.charCodeAt(index2 + 1) - 56320 + 65536 : c.charCodeAt(index2) - ) -); -function encodeXML(str) { - let ret = ""; - let lastIdx = 0; - let match; - while ((match = xmlReplacer.exec(str)) !== null) { - const i = match.index; - const char = str.charCodeAt(i); - const next2 = xmlCodeMap.get(char); - if (next2 !== void 0) { - ret += str.substring(lastIdx, i) + next2; - lastIdx = i + 1; - } else { - ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`; - lastIdx = xmlReplacer.lastIndex += Number((char & 64512) === 55296); - } - } - return ret + str.substr(lastIdx); -} -function getEscaper(regex, map2) { - return function escape2(data2) { - let match; - let lastIdx = 0; - let result = ""; - while (match = regex.exec(data2)) { - if (lastIdx !== match.index) { - result += data2.substring(lastIdx, match.index); - } - result += map2.get(match[0].charCodeAt(0)); - lastIdx = match.index + 1; - } - return result + data2.substring(lastIdx); - }; -} -var escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); -var escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([ - [34, """], - [38, "&"], - [160, " "] -])); -var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([ - [38, "&"], - [60, "<"], - [62, ">"], - [160, " "] -])); - -// node_modules/entities/lib/esm/index.js -var EntityLevel; -(function(EntityLevel2) { - EntityLevel2[EntityLevel2["XML"] = 0] = "XML"; - EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML"; -})(EntityLevel || (EntityLevel = {})); -var EncodingMode; -(function(EncodingMode2) { - EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8"; - EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII"; - EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive"; - EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute"; - EncodingMode2[EncodingMode2["Text"] = 4] = "Text"; -})(EncodingMode || (EncodingMode = {})); - -// node_modules/dom-serializer/lib/esm/foreignNames.js -var elementNames = new Map([ - "altGlyph", - "altGlyphDef", - "altGlyphItem", - "animateColor", - "animateMotion", - "animateTransform", - "clipPath", - "feBlend", - "feColorMatrix", - "feComponentTransfer", - "feComposite", - "feConvolveMatrix", - "feDiffuseLighting", - "feDisplacementMap", - "feDistantLight", - "feDropShadow", - "feFlood", - "feFuncA", - "feFuncB", - "feFuncG", - "feFuncR", - "feGaussianBlur", - "feImage", - "feMerge", - "feMergeNode", - "feMorphology", - "feOffset", - "fePointLight", - "feSpecularLighting", - "feSpotLight", - "feTile", - "feTurbulence", - "foreignObject", - "glyphRef", - "linearGradient", - "radialGradient", - "textPath" -].map((val2) => [val2.toLowerCase(), val2])); -var attributeNames = new Map([ - "definitionURL", - "attributeName", - "attributeType", - "baseFrequency", - "baseProfile", - "calcMode", - "clipPathUnits", - "diffuseConstant", - "edgeMode", - "filterUnits", - "glyphRef", - "gradientTransform", - "gradientUnits", - "kernelMatrix", - "kernelUnitLength", - "keyPoints", - "keySplines", - "keyTimes", - "lengthAdjust", - "limitingConeAngle", - "markerHeight", - "markerUnits", - "markerWidth", - "maskContentUnits", - "maskUnits", - "numOctaves", - "pathLength", - "patternContentUnits", - "patternTransform", - "patternUnits", - "pointsAtX", - "pointsAtY", - "pointsAtZ", - "preserveAlpha", - "preserveAspectRatio", - "primitiveUnits", - "refX", - "refY", - "repeatCount", - "repeatDur", - "requiredExtensions", - "requiredFeatures", - "specularConstant", - "specularExponent", - "spreadMethod", - "startOffset", - "stdDeviation", - "stitchTiles", - "surfaceScale", - "systemLanguage", - "tableValues", - "targetX", - "targetY", - "textLength", - "viewBox", - "viewTarget", - "xChannelSelector", - "yChannelSelector", - "zoomAndPan" -].map((val2) => [val2.toLowerCase(), val2])); - -// node_modules/dom-serializer/lib/esm/index.js -var unencodedElements = /* @__PURE__ */ new Set([ - "style", - "script", - "xmp", - "iframe", - "noembed", - "noframes", - "plaintext", - "noscript" -]); -function replaceQuotes(value) { - return value.replace(/"/g, """); -} -function formatAttributes(attributes2, opts) { - var _a5; - if (!attributes2) - return; - const encode = ((_a5 = opts.encodeEntities) !== null && _a5 !== void 0 ? _a5 : opts.decodeEntities) === false ? replaceQuotes : opts.xmlMode || opts.encodeEntities !== "utf8" ? encodeXML : escapeAttribute; - return Object.keys(attributes2).map((key) => { - var _a6, _b; - const value = (_a6 = attributes2[key]) !== null && _a6 !== void 0 ? _a6 : ""; - if (opts.xmlMode === "foreign") { - key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key; - } - if (!opts.emptyAttrs && !opts.xmlMode && value === "") { - return key; - } - return `${key}="${encode(value)}"`; - }).join(" "); -} -var singleTag = /* @__PURE__ */ new Set([ - "area", - "base", - "basefont", - "br", - "col", - "command", - "embed", - "frame", - "hr", - "img", - "input", - "isindex", - "keygen", - "link", - "meta", - "param", - "source", - "track", - "wbr" -]); -function render(node, options = {}) { - const nodes = "length" in node ? node : [node]; - let output = ""; - for (let i = 0; i < nodes.length; i++) { - output += renderNode(nodes[i], options); - } - return output; -} -var esm_default = render; -function renderNode(node, options) { - switch (node.type) { - case Root: - return render(node.children, options); - // @ts-expect-error We don't use `Doctype` yet - case Doctype: - case Directive: - return renderDirective(node); - case Comment: - return renderComment(node); - case CDATA: - return renderCdata(node); - case Script: - case Style: - case Tag: - return renderTag(node, options); - case Text: - return renderText(node, options); - } -} -var foreignModeIntegrationPoints = /* @__PURE__ */ new Set([ - "mi", - "mo", - "mn", - "ms", - "mtext", - "annotation-xml", - "foreignObject", - "desc", - "title" -]); -var foreignElements = /* @__PURE__ */ new Set(["svg", "math"]); -function renderTag(elem, opts) { - var _a5; - if (opts.xmlMode === "foreign") { - elem.name = (_a5 = elementNames.get(elem.name)) !== null && _a5 !== void 0 ? _a5 : elem.name; - if (elem.parent && foreignModeIntegrationPoints.has(elem.parent.name)) { - opts = { ...opts, xmlMode: false }; - } - } - if (!opts.xmlMode && foreignElements.has(elem.name)) { - opts = { ...opts, xmlMode: "foreign" }; - } - let tag = `<${elem.name}`; - const attribs = formatAttributes(elem.attribs, opts); - if (attribs) { - tag += ` ${attribs}`; - } - if (elem.children.length === 0 && (opts.xmlMode ? ( - // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags - opts.selfClosingTags !== false - ) : ( - // User explicitly asked for self-closing tags, even in HTML mode - opts.selfClosingTags && singleTag.has(elem.name) - ))) { - if (!opts.xmlMode) - tag += " "; - tag += "/>"; - } else { - tag += ">"; - if (elem.children.length > 0) { - tag += render(elem.children, opts); - } - if (opts.xmlMode || !singleTag.has(elem.name)) { - tag += ``; - } - } - return tag; -} -function renderDirective(elem) { - return `<${elem.data}>`; -} -function renderText(elem, opts) { - var _a5; - let data2 = elem.data || ""; - if (((_a5 = opts.encodeEntities) !== null && _a5 !== void 0 ? _a5 : opts.decodeEntities) !== false && !(!opts.xmlMode && elem.parent && unencodedElements.has(elem.parent.name))) { - data2 = opts.xmlMode || opts.encodeEntities !== "utf8" ? encodeXML(data2) : escapeText(data2); - } - return data2; -} -function renderCdata(elem) { - return ``; -} -function renderComment(elem) { - return ``; -} - -// node_modules/domutils/lib/esm/stringify.js -function getOuterHTML(node, options) { - return esm_default(node, options); -} -function getInnerHTML(node, options) { - return hasChildren(node) ? node.children.map((node2) => getOuterHTML(node2, options)).join("") : ""; -} -function getText(node) { - if (Array.isArray(node)) - return node.map(getText).join(""); - if (isTag2(node)) - return node.name === "br" ? "\n" : getText(node.children); - if (isCDATA(node)) - return getText(node.children); - if (isText(node)) - return node.data; - return ""; -} -function textContent(node) { - if (Array.isArray(node)) - return node.map(textContent).join(""); - if (hasChildren(node) && !isComment(node)) { - return textContent(node.children); - } - if (isText(node)) - return node.data; - return ""; -} -function innerText(node) { - if (Array.isArray(node)) - return node.map(innerText).join(""); - if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) { - return innerText(node.children); - } - if (isText(node)) - return node.data; - return ""; -} - -// node_modules/domutils/lib/esm/traversal.js -function getChildren(elem) { - return hasChildren(elem) ? elem.children : []; -} -function getParent(elem) { - return elem.parent || null; -} -function getSiblings(elem) { - const parent2 = getParent(elem); - if (parent2 != null) - return getChildren(parent2); - const siblings2 = [elem]; - let { prev: prev2, next: next2 } = elem; - while (prev2 != null) { - siblings2.unshift(prev2); - ({ prev: prev2 } = prev2); - } - while (next2 != null) { - siblings2.push(next2); - ({ next: next2 } = next2); - } - return siblings2; -} -function getAttributeValue(elem, name) { - var _a5; - return (_a5 = elem.attribs) === null || _a5 === void 0 ? void 0 : _a5[name]; -} -function hasAttrib(elem, name) { - return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null; -} -function getName(elem) { - return elem.name; -} -function nextElementSibling(elem) { - let { next: next2 } = elem; - while (next2 !== null && !isTag2(next2)) - ({ next: next2 } = next2); - return next2; -} -function prevElementSibling(elem) { - let { prev: prev2 } = elem; - while (prev2 !== null && !isTag2(prev2)) - ({ prev: prev2 } = prev2); - return prev2; -} - -// node_modules/domutils/lib/esm/manipulation.js -function removeElement(elem) { - if (elem.prev) - elem.prev.next = elem.next; - if (elem.next) - elem.next.prev = elem.prev; - if (elem.parent) { - const childs = elem.parent.children; - const childsIndex = childs.lastIndexOf(elem); - if (childsIndex >= 0) { - childs.splice(childsIndex, 1); - } - } - elem.next = null; - elem.prev = null; - elem.parent = null; -} -function replaceElement(elem, replacement) { - const prev2 = replacement.prev = elem.prev; - if (prev2) { - prev2.next = replacement; - } - const next2 = replacement.next = elem.next; - if (next2) { - next2.prev = replacement; - } - const parent2 = replacement.parent = elem.parent; - if (parent2) { - const childs = parent2.children; - childs[childs.lastIndexOf(elem)] = replacement; - elem.parent = null; - } -} -function appendChild(parent2, child) { - removeElement(child); - child.next = null; - child.parent = parent2; - if (parent2.children.push(child) > 1) { - const sibling = parent2.children[parent2.children.length - 2]; - sibling.next = child; - child.prev = sibling; - } else { - child.prev = null; - } -} -function append(elem, next2) { - removeElement(next2); - const { parent: parent2 } = elem; - const currNext = elem.next; - next2.next = currNext; - next2.prev = elem; - elem.next = next2; - next2.parent = parent2; - if (currNext) { - currNext.prev = next2; - if (parent2) { - const childs = parent2.children; - childs.splice(childs.lastIndexOf(currNext), 0, next2); - } - } else if (parent2) { - parent2.children.push(next2); - } -} -function prependChild(parent2, child) { - removeElement(child); - child.parent = parent2; - child.prev = null; - if (parent2.children.unshift(child) !== 1) { - const sibling = parent2.children[1]; - sibling.prev = child; - child.next = sibling; - } else { - child.next = null; - } -} -function prepend(elem, prev2) { - removeElement(prev2); - const { parent: parent2 } = elem; - if (parent2) { - const childs = parent2.children; - childs.splice(childs.indexOf(elem), 0, prev2); - } - if (elem.prev) { - elem.prev.next = prev2; - } - prev2.parent = parent2; - prev2.prev = elem.prev; - prev2.next = elem; - elem.prev = prev2; -} - -// node_modules/domutils/lib/esm/querying.js -function filter(test, node, recurse = true, limit = Infinity) { - return find(test, Array.isArray(node) ? node : [node], recurse, limit); -} -function find(test, nodes, recurse, limit) { - const result = []; - const nodeStack = [Array.isArray(nodes) ? nodes : [nodes]]; - const indexStack = [0]; - for (; ; ) { - if (indexStack[0] >= nodeStack[0].length) { - if (indexStack.length === 1) { - return result; - } - nodeStack.shift(); - indexStack.shift(); - continue; - } - const elem = nodeStack[0][indexStack[0]++]; - if (test(elem)) { - result.push(elem); - if (--limit <= 0) - return result; - } - if (recurse && hasChildren(elem) && elem.children.length > 0) { - indexStack.unshift(0); - nodeStack.unshift(elem.children); - } - } -} -function findOneChild(test, nodes) { - return nodes.find(test); -} -function findOne(test, nodes, recurse = true) { - const searchedNodes = Array.isArray(nodes) ? nodes : [nodes]; - for (let i = 0; i < searchedNodes.length; i++) { - const node = searchedNodes[i]; - if (isTag2(node) && test(node)) { - return node; - } - if (recurse && hasChildren(node) && node.children.length > 0) { - const found = findOne(test, node.children, true); - if (found) - return found; - } - } - return null; -} -function existsOne(test, nodes) { - return (Array.isArray(nodes) ? nodes : [nodes]).some((node) => isTag2(node) && test(node) || hasChildren(node) && existsOne(test, node.children)); -} -function findAll(test, nodes) { - const result = []; - const nodeStack = [Array.isArray(nodes) ? nodes : [nodes]]; - const indexStack = [0]; - for (; ; ) { - if (indexStack[0] >= nodeStack[0].length) { - if (nodeStack.length === 1) { - return result; - } - nodeStack.shift(); - indexStack.shift(); - continue; - } - const elem = nodeStack[0][indexStack[0]++]; - if (isTag2(elem) && test(elem)) - result.push(elem); - if (hasChildren(elem) && elem.children.length > 0) { - indexStack.unshift(0); - nodeStack.unshift(elem.children); - } - } -} - -// node_modules/domutils/lib/esm/legacy.js -var Checks = { - tag_name(name) { - if (typeof name === "function") { - return (elem) => isTag2(elem) && name(elem.name); - } else if (name === "*") { - return isTag2; - } - return (elem) => isTag2(elem) && elem.name === name; - }, - tag_type(type) { - if (typeof type === "function") { - return (elem) => type(elem.type); - } - return (elem) => elem.type === type; - }, - tag_contains(data2) { - if (typeof data2 === "function") { - return (elem) => isText(elem) && data2(elem.data); - } - return (elem) => isText(elem) && elem.data === data2; - } -}; -function getAttribCheck(attrib, value) { - if (typeof value === "function") { - return (elem) => isTag2(elem) && value(elem.attribs[attrib]); - } - return (elem) => isTag2(elem) && elem.attribs[attrib] === value; -} -function combineFuncs(a, b) { - return (elem) => a(elem) || b(elem); -} -function compileTest(options) { - const funcs = Object.keys(options).map((key) => { - const value = options[key]; - return Object.prototype.hasOwnProperty.call(Checks, key) ? Checks[key](value) : getAttribCheck(key, value); - }); - return funcs.length === 0 ? null : funcs.reduce(combineFuncs); -} -function testElement(options, node) { - const test = compileTest(options); - return test ? test(node) : true; -} -function getElements(options, nodes, recurse, limit = Infinity) { - const test = compileTest(options); - return test ? filter(test, nodes, recurse, limit) : []; -} -function getElementById(id, nodes, recurse = true) { - if (!Array.isArray(nodes)) - nodes = [nodes]; - return findOne(getAttribCheck("id", id), nodes, recurse); -} -function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) { - return filter(Checks["tag_name"](tagName), nodes, recurse, limit); -} -function getElementsByClassName(className, nodes, recurse = true, limit = Infinity) { - return filter(getAttribCheck("class", className), nodes, recurse, limit); -} -function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) { - return filter(Checks["tag_type"](type), nodes, recurse, limit); -} - -// node_modules/domutils/lib/esm/helpers.js -function removeSubsets(nodes) { - let idx = nodes.length; - while (--idx >= 0) { - const node = nodes[idx]; - if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) { - nodes.splice(idx, 1); - continue; - } - for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) { - if (nodes.includes(ancestor)) { - nodes.splice(idx, 1); - break; - } - } - } - return nodes; -} -var DocumentPosition; -(function(DocumentPosition2) { - DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED"; - DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING"; - DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING"; - DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS"; - DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY"; -})(DocumentPosition || (DocumentPosition = {})); -function compareDocumentPosition(nodeA, nodeB) { - const aParents = []; - const bParents = []; - if (nodeA === nodeB) { - return 0; - } - let current = hasChildren(nodeA) ? nodeA : nodeA.parent; - while (current) { - aParents.unshift(current); - current = current.parent; - } - current = hasChildren(nodeB) ? nodeB : nodeB.parent; - while (current) { - bParents.unshift(current); - current = current.parent; - } - const maxIdx = Math.min(aParents.length, bParents.length); - let idx = 0; - while (idx < maxIdx && aParents[idx] === bParents[idx]) { - idx++; - } - if (idx === 0) { - return DocumentPosition.DISCONNECTED; - } - const sharedParent = aParents[idx - 1]; - const siblings2 = sharedParent.children; - const aSibling = aParents[idx]; - const bSibling = bParents[idx]; - if (siblings2.indexOf(aSibling) > siblings2.indexOf(bSibling)) { - if (sharedParent === nodeB) { - return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY; - } - return DocumentPosition.FOLLOWING; - } - if (sharedParent === nodeA) { - return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS; - } - return DocumentPosition.PRECEDING; -} -function uniqueSort(nodes) { - nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1)); - nodes.sort((a, b) => { - const relative = compareDocumentPosition(a, b); - if (relative & DocumentPosition.PRECEDING) { - return -1; - } else if (relative & DocumentPosition.FOLLOWING) { - return 1; - } - return 0; - }); - return nodes; -} - -// node_modules/domutils/lib/esm/feeds.js -function getFeed(doc) { - const feedRoot = getOneElement(isValidFeed, doc); - return !feedRoot ? null : feedRoot.name === "feed" ? getAtomFeed(feedRoot) : getRssFeed(feedRoot); -} -function getAtomFeed(feedRoot) { - var _a5; - const childs = feedRoot.children; - const feed = { - type: "atom", - items: getElementsByTagName("entry", childs).map((item) => { - var _a6; - const { children: children2 } = item; - const entry = { media: getMediaElements(children2) }; - addConditionally(entry, "id", "id", children2); - addConditionally(entry, "title", "title", children2); - const href2 = (_a6 = getOneElement("link", children2)) === null || _a6 === void 0 ? void 0 : _a6.attribs["href"]; - if (href2) { - entry.link = href2; - } - const description = fetch("summary", children2) || fetch("content", children2); - if (description) { - entry.description = description; - } - const pubDate = fetch("updated", children2); - if (pubDate) { - entry.pubDate = new Date(pubDate); - } - return entry; - }) - }; - addConditionally(feed, "id", "id", childs); - addConditionally(feed, "title", "title", childs); - const href = (_a5 = getOneElement("link", childs)) === null || _a5 === void 0 ? void 0 : _a5.attribs["href"]; - if (href) { - feed.link = href; - } - addConditionally(feed, "description", "subtitle", childs); - const updated = fetch("updated", childs); - if (updated) { - feed.updated = new Date(updated); - } - addConditionally(feed, "author", "email", childs, true); - return feed; -} -function getRssFeed(feedRoot) { - var _a5, _b; - const childs = (_b = (_a5 = getOneElement("channel", feedRoot.children)) === null || _a5 === void 0 ? void 0 : _a5.children) !== null && _b !== void 0 ? _b : []; - const feed = { - type: feedRoot.name.substr(0, 3), - id: "", - items: getElementsByTagName("item", feedRoot.children).map((item) => { - const { children: children2 } = item; - const entry = { media: getMediaElements(children2) }; - addConditionally(entry, "id", "guid", children2); - addConditionally(entry, "title", "title", children2); - addConditionally(entry, "link", "link", children2); - addConditionally(entry, "description", "description", children2); - const pubDate = fetch("pubDate", children2) || fetch("dc:date", children2); - if (pubDate) - entry.pubDate = new Date(pubDate); - return entry; - }) - }; - addConditionally(feed, "title", "title", childs); - addConditionally(feed, "link", "link", childs); - addConditionally(feed, "description", "description", childs); - const updated = fetch("lastBuildDate", childs); - if (updated) { - feed.updated = new Date(updated); - } - addConditionally(feed, "author", "managingEditor", childs, true); - return feed; -} -var MEDIA_KEYS_STRING = ["url", "type", "lang"]; -var MEDIA_KEYS_INT = [ - "fileSize", - "bitrate", - "framerate", - "samplingrate", - "channels", - "duration", - "height", - "width" -]; -function getMediaElements(where) { - return getElementsByTagName("media:content", where).map((elem) => { - const { attribs } = elem; - const media = { - medium: attribs["medium"], - isDefault: !!attribs["isDefault"] - }; - for (const attrib of MEDIA_KEYS_STRING) { - if (attribs[attrib]) { - media[attrib] = attribs[attrib]; - } - } - for (const attrib of MEDIA_KEYS_INT) { - if (attribs[attrib]) { - media[attrib] = parseInt(attribs[attrib], 10); - } - } - if (attribs["expression"]) { - media.expression = attribs["expression"]; - } - return media; - }); -} -function getOneElement(tagName, node) { - return getElementsByTagName(tagName, node, true, 1)[0]; -} -function fetch(tagName, where, recurse = false) { - return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim(); -} -function addConditionally(obj, prop2, tagName, where, recurse = false) { - const val2 = fetch(tagName, where, recurse); - if (val2) - obj[prop2] = val2; -} -function isValidFeed(value) { - return value === "rss" || value === "feed" || value === "rdf:RDF"; -} - -// node_modules/cheerio/dist/browser/options.js -var defaultOpts2 = { - _useHtmlParser2: false -}; -function flattenOptions(options, baseOptions) { - if (!options) { - return baseOptions !== null && baseOptions !== void 0 ? baseOptions : defaultOpts2; - } - const opts = { - _useHtmlParser2: !!options.xmlMode, - ...baseOptions, - ...options - }; - if (options.xml) { - opts._useHtmlParser2 = true; - opts.xmlMode = true; - if (options.xml !== true) { - Object.assign(opts, options.xml); - } - } else if (options.xmlMode) { - opts._useHtmlParser2 = true; - } - return opts; -} - -// node_modules/cheerio/dist/browser/static.js -function render2(that, dom, options) { - if (!that) - return ""; - return that(dom !== null && dom !== void 0 ? dom : that._root.children, null, void 0, options).toString(); -} -function isOptions(dom, options) { - return !options && typeof dom === "object" && dom != null && !("length" in dom) && !("type" in dom); -} -function html(dom, options) { - const toRender = isOptions(dom) ? (options = dom, void 0) : dom; - const opts = { - ...this === null || this === void 0 ? void 0 : this._options, - ...flattenOptions(options) - }; - return render2(this, toRender, opts); -} -function xml(dom) { - const options = { ...this._options, xmlMode: true }; - return render2(this, dom, options); -} -function text(elements) { - const elems = elements !== null && elements !== void 0 ? elements : this ? this.root() : []; - let ret = ""; - for (let i = 0; i < elems.length; i++) { - ret += textContent(elems[i]); - } - return ret; -} -function parseHTML(data2, context, keepScripts = typeof context === "boolean" ? context : false) { - if (!data2 || typeof data2 !== "string") { - return null; - } - if (typeof context === "boolean") { - keepScripts = context; - } - const parsed = this.load(data2, this._options, false); - if (!keepScripts) { - parsed("script").remove(); - } - return [...parsed.root()[0].children]; -} -function root() { - return this(this._root); -} -function contains(container, contained) { - if (contained === container) { - return false; - } - let next2 = contained; - while (next2 && next2 !== next2.parent) { - next2 = next2.parent; - if (next2 === container) { - return true; - } - } - return false; -} -function extract(map2) { - return this.root().extract(map2); -} -function merge(arr1, arr2) { - if (!isArrayLike(arr1) || !isArrayLike(arr2)) { - return; - } - let newLength = arr1.length; - const len = +arr2.length; - for (let i = 0; i < len; i++) { - arr1[newLength++] = arr2[i]; - } - arr1.length = newLength; - return arr1; -} -function isArrayLike(item) { - if (Array.isArray(item)) { - return true; - } - if (typeof item !== "object" || item === null || !("length" in item) || typeof item.length !== "number" || item.length < 0) { - return false; - } - for (let i = 0; i < item.length; i++) { - if (!(i in item)) { - return false; - } - } - return true; -} - -// node_modules/cheerio/dist/browser/api/attributes.js -var attributes_exports = {}; -__export(attributes_exports, { - addClass: () => addClass, - attr: () => attr, - data: () => data, - hasClass: () => hasClass, - prop: () => prop, - removeAttr: () => removeAttr, - removeClass: () => removeClass, - toggleClass: () => toggleClass, - val: () => val -}); - -// node_modules/cheerio/dist/browser/utils.js -function isCheerio(maybeCheerio) { - return maybeCheerio.cheerio != null; -} -function camelCase(str) { - return str.replace(/[._-](\w|$)/g, (_, x) => x.toUpperCase()); -} -function cssCase(str) { - return str.replace(/[A-Z]/g, "-$&").toLowerCase(); -} -function domEach(array, fn) { - const len = array.length; - for (let i = 0; i < len; i++) - fn(array[i], i); - return array; -} -var CharacterCode; -(function(CharacterCode2) { - CharacterCode2[CharacterCode2["LowerA"] = 97] = "LowerA"; - CharacterCode2[CharacterCode2["LowerZ"] = 122] = "LowerZ"; - CharacterCode2[CharacterCode2["UpperA"] = 65] = "UpperA"; - CharacterCode2[CharacterCode2["UpperZ"] = 90] = "UpperZ"; - CharacterCode2[CharacterCode2["Exclamation"] = 33] = "Exclamation"; -})(CharacterCode || (CharacterCode = {})); -function isHtml(str) { - const tagStart = str.indexOf("<"); - if (tagStart === -1 || tagStart > str.length - 3) - return false; - const tagChar = str.charCodeAt(tagStart + 1); - return (tagChar >= CharacterCode.LowerA && tagChar <= CharacterCode.LowerZ || tagChar >= CharacterCode.UpperA && tagChar <= CharacterCode.UpperZ || tagChar === CharacterCode.Exclamation) && str.includes(">", tagStart + 2); -} - -// node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-html.js -var htmlDecodeTree = /* @__PURE__ */ new Uint16Array( - // prettier-ignore - /* @__PURE__ */ '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-xml.js -var xmlDecodeTree = /* @__PURE__ */ new Uint16Array( - // prettier-ignore - /* @__PURE__ */ "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/htmlparser2/node_modules/entities/dist/esm/decode-codepoint.js -var _a2; -var decodeMap2 = /* @__PURE__ */ new Map([ - [0, 65533], - // C1 Unicode control character reference replacements - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] -]); -var fromCodePoint2 = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins - (_a2 = String.fromCodePoint) !== null && _a2 !== void 0 ? _a2 : function(codePoint) { - let output = ""; - if (codePoint > 65535) { - codePoint -= 65536; - output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; - } - output += String.fromCharCode(codePoint); - return output; - } -); -function replaceCodePoint2(codePoint) { - var _a5; - if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { - return 65533; - } - return (_a5 = decodeMap2.get(codePoint)) !== null && _a5 !== void 0 ? _a5 : codePoint; -} - -// node_modules/htmlparser2/node_modules/entities/dist/esm/decode.js -var CharCodes2; -(function(CharCodes5) { - CharCodes5[CharCodes5["NUM"] = 35] = "NUM"; - CharCodes5[CharCodes5["SEMI"] = 59] = "SEMI"; - CharCodes5[CharCodes5["EQUALS"] = 61] = "EQUALS"; - CharCodes5[CharCodes5["ZERO"] = 48] = "ZERO"; - CharCodes5[CharCodes5["NINE"] = 57] = "NINE"; - CharCodes5[CharCodes5["LOWER_A"] = 97] = "LOWER_A"; - CharCodes5[CharCodes5["LOWER_F"] = 102] = "LOWER_F"; - CharCodes5[CharCodes5["LOWER_X"] = 120] = "LOWER_X"; - CharCodes5[CharCodes5["LOWER_Z"] = 122] = "LOWER_Z"; - CharCodes5[CharCodes5["UPPER_A"] = 65] = "UPPER_A"; - CharCodes5[CharCodes5["UPPER_F"] = 70] = "UPPER_F"; - CharCodes5[CharCodes5["UPPER_Z"] = 90] = "UPPER_Z"; -})(CharCodes2 || (CharCodes2 = {})); -var TO_LOWER_BIT2 = 32; -var BinTrieFlags2; -(function(BinTrieFlags4) { - BinTrieFlags4[BinTrieFlags4["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; - BinTrieFlags4[BinTrieFlags4["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; - BinTrieFlags4[BinTrieFlags4["JUMP_TABLE"] = 127] = "JUMP_TABLE"; -})(BinTrieFlags2 || (BinTrieFlags2 = {})); -function isNumber2(code) { - return code >= CharCodes2.ZERO && code <= CharCodes2.NINE; -} -function isHexadecimalCharacter2(code) { - return code >= CharCodes2.UPPER_A && code <= CharCodes2.UPPER_F || code >= CharCodes2.LOWER_A && code <= CharCodes2.LOWER_F; -} -function isAsciiAlphaNumeric2(code) { - return code >= CharCodes2.UPPER_A && code <= CharCodes2.UPPER_Z || code >= CharCodes2.LOWER_A && code <= CharCodes2.LOWER_Z || isNumber2(code); -} -function isEntityInAttributeInvalidEnd2(code) { - return code === CharCodes2.EQUALS || isAsciiAlphaNumeric2(code); -} -var EntityDecoderState2; -(function(EntityDecoderState4) { - EntityDecoderState4[EntityDecoderState4["EntityStart"] = 0] = "EntityStart"; - EntityDecoderState4[EntityDecoderState4["NumericStart"] = 1] = "NumericStart"; - EntityDecoderState4[EntityDecoderState4["NumericDecimal"] = 2] = "NumericDecimal"; - EntityDecoderState4[EntityDecoderState4["NumericHex"] = 3] = "NumericHex"; - EntityDecoderState4[EntityDecoderState4["NamedEntity"] = 4] = "NamedEntity"; -})(EntityDecoderState2 || (EntityDecoderState2 = {})); -var DecodingMode2; -(function(DecodingMode4) { - DecodingMode4[DecodingMode4["Legacy"] = 0] = "Legacy"; - DecodingMode4[DecodingMode4["Strict"] = 1] = "Strict"; - DecodingMode4[DecodingMode4["Attribute"] = 2] = "Attribute"; -})(DecodingMode2 || (DecodingMode2 = {})); -var EntityDecoder2 = class { - constructor(decodeTree, emitCodePoint, errors) { - this.decodeTree = decodeTree; - this.emitCodePoint = emitCodePoint; - this.errors = errors; - this.state = EntityDecoderState2.EntityStart; - this.consumed = 1; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.decodeMode = DecodingMode2.Strict; - } - /** Resets the instance to make it reusable. */ - startEntity(decodeMode) { - this.decodeMode = decodeMode; - this.state = EntityDecoderState2.EntityStart; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.consumed = 1; - } - /** - * Write an entity to the decoder. This can be called multiple times with partial entities. - * If the entity is incomplete, the decoder will return -1. - * - * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the - * entity is incomplete, and resume when the next string is written. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - write(input, offset) { - switch (this.state) { - case EntityDecoderState2.EntityStart: { - if (input.charCodeAt(offset) === CharCodes2.NUM) { - this.state = EntityDecoderState2.NumericStart; - this.consumed += 1; - return this.stateNumericStart(input, offset + 1); - } - this.state = EntityDecoderState2.NamedEntity; - return this.stateNamedEntity(input, offset); - } - case EntityDecoderState2.NumericStart: { - return this.stateNumericStart(input, offset); - } - case EntityDecoderState2.NumericDecimal: { - return this.stateNumericDecimal(input, offset); - } - case EntityDecoderState2.NumericHex: { - return this.stateNumericHex(input, offset); - } - case EntityDecoderState2.NamedEntity: { - return this.stateNamedEntity(input, offset); - } - } - } - /** - * Switches between the numeric decimal and hexadecimal states. - * - * Equivalent to the `Numeric character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericStart(input, offset) { - if (offset >= input.length) { - return -1; - } - if ((input.charCodeAt(offset) | TO_LOWER_BIT2) === CharCodes2.LOWER_X) { - this.state = EntityDecoderState2.NumericHex; - this.consumed += 1; - return this.stateNumericHex(input, offset + 1); - } - this.state = EntityDecoderState2.NumericDecimal; - return this.stateNumericDecimal(input, offset); - } - addToNumericResult(input, start, end2, base) { - if (start !== end2) { - const digitCount = end2 - start; - this.result = this.result * Math.pow(base, digitCount) + Number.parseInt(input.substr(start, digitCount), base); - this.consumed += digitCount; - } - } - /** - * Parses a hexadecimal numeric entity. - * - * Equivalent to the `Hexademical character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericHex(input, offset) { - const startIndex = offset; - while (offset < input.length) { - const char = input.charCodeAt(offset); - if (isNumber2(char) || isHexadecimalCharacter2(char)) { - offset += 1; - } else { - this.addToNumericResult(input, startIndex, offset, 16); - return this.emitNumericEntity(char, 3); - } - } - this.addToNumericResult(input, startIndex, offset, 16); - return -1; - } - /** - * Parses a decimal numeric entity. - * - * Equivalent to the `Decimal character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericDecimal(input, offset) { - const startIndex = offset; - while (offset < input.length) { - const char = input.charCodeAt(offset); - if (isNumber2(char)) { - offset += 1; - } else { - this.addToNumericResult(input, startIndex, offset, 10); - return this.emitNumericEntity(char, 2); - } - } - this.addToNumericResult(input, startIndex, offset, 10); - return -1; - } - /** - * Validate and emit a numeric entity. - * - * Implements the logic from the `Hexademical character reference start - * state` and `Numeric character reference end state` in the HTML spec. - * - * @param lastCp The last code point of the entity. Used to see if the - * entity was terminated with a semicolon. - * @param expectedLength The minimum number of characters that should be - * consumed. Used to validate that at least one digit - * was consumed. - * @returns The number of characters that were consumed. - */ - emitNumericEntity(lastCp, expectedLength) { - var _a5; - if (this.consumed <= expectedLength) { - (_a5 = this.errors) === null || _a5 === void 0 ? void 0 : _a5.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - if (lastCp === CharCodes2.SEMI) { - this.consumed += 1; - } else if (this.decodeMode === DecodingMode2.Strict) { - return 0; - } - this.emitCodePoint(replaceCodePoint2(this.result), this.consumed); - if (this.errors) { - if (lastCp !== CharCodes2.SEMI) { - this.errors.missingSemicolonAfterCharacterReference(); - } - this.errors.validateNumericCharacterReference(this.result); - } - return this.consumed; - } - /** - * Parses a named entity. - * - * Equivalent to the `Named character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNamedEntity(input, offset) { - const { decodeTree } = this; - let current = decodeTree[this.treeIndex]; - let valueLength = (current & BinTrieFlags2.VALUE_LENGTH) >> 14; - for (; offset < input.length; offset++, this.excess++) { - const char = input.charCodeAt(offset); - this.treeIndex = determineBranch2(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); - if (this.treeIndex < 0) { - return this.result === 0 || // If we are parsing an attribute - this.decodeMode === DecodingMode2.Attribute && // We shouldn't have consumed any characters after the entity, - (valueLength === 0 || // And there should be no invalid characters. - isEntityInAttributeInvalidEnd2(char)) ? 0 : this.emitNotTerminatedNamedEntity(); - } - current = decodeTree[this.treeIndex]; - valueLength = (current & BinTrieFlags2.VALUE_LENGTH) >> 14; - if (valueLength !== 0) { - if (char === CharCodes2.SEMI) { - return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); - } - if (this.decodeMode !== DecodingMode2.Strict) { - this.result = this.treeIndex; - this.consumed += this.excess; - this.excess = 0; - } - } - } - return -1; - } - /** - * Emit a named entity that was not terminated with a semicolon. - * - * @returns The number of characters consumed. - */ - emitNotTerminatedNamedEntity() { - var _a5; - const { result, decodeTree } = this; - const valueLength = (decodeTree[result] & BinTrieFlags2.VALUE_LENGTH) >> 14; - this.emitNamedEntityData(result, valueLength, this.consumed); - (_a5 = this.errors) === null || _a5 === void 0 ? void 0 : _a5.missingSemicolonAfterCharacterReference(); - return this.consumed; - } - /** - * Emit a named entity. - * - * @param result The index of the entity in the decode tree. - * @param valueLength The number of bytes in the entity. - * @param consumed The number of characters consumed. - * - * @returns The number of characters consumed. - */ - emitNamedEntityData(result, valueLength, consumed) { - const { decodeTree } = this; - this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags2.VALUE_LENGTH : decodeTree[result + 1], consumed); - if (valueLength === 3) { - this.emitCodePoint(decodeTree[result + 2], consumed); - } - return consumed; - } - /** - * Signal to the parser that the end of the input was reached. - * - * Remaining data will be emitted and relevant errors will be produced. - * - * @returns The number of characters consumed. - */ - end() { - var _a5; - switch (this.state) { - case EntityDecoderState2.NamedEntity: { - return this.result !== 0 && (this.decodeMode !== DecodingMode2.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; - } - // Otherwise, emit a numeric entity if we have one. - case EntityDecoderState2.NumericDecimal: { - return this.emitNumericEntity(0, 2); - } - case EntityDecoderState2.NumericHex: { - return this.emitNumericEntity(0, 3); - } - case EntityDecoderState2.NumericStart: { - (_a5 = this.errors) === null || _a5 === void 0 ? void 0 : _a5.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - case EntityDecoderState2.EntityStart: { - return 0; - } - } - } -}; -function determineBranch2(decodeTree, current, nodeIndex, char) { - const branchCount = (current & BinTrieFlags2.BRANCH_LENGTH) >> 7; - const jumpOffset = current & BinTrieFlags2.JUMP_TABLE; - if (branchCount === 0) { - return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1; - } - if (jumpOffset) { - const value = char - jumpOffset; - return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIndex + value] - 1; - } - let lo = nodeIndex; - let hi = lo + branchCount - 1; - while (lo <= hi) { - const mid = lo + hi >>> 1; - const midValue = decodeTree[mid]; - if (midValue < char) { - lo = mid + 1; - } else if (midValue > char) { - hi = mid - 1; - } else { - return decodeTree[mid + branchCount]; - } - } - return -1; -} - -// node_modules/htmlparser2/dist/esm/Tokenizer.js -var CharCodes3; -(function(CharCodes5) { - CharCodes5[CharCodes5["Tab"] = 9] = "Tab"; - CharCodes5[CharCodes5["NewLine"] = 10] = "NewLine"; - CharCodes5[CharCodes5["FormFeed"] = 12] = "FormFeed"; - CharCodes5[CharCodes5["CarriageReturn"] = 13] = "CarriageReturn"; - CharCodes5[CharCodes5["Space"] = 32] = "Space"; - CharCodes5[CharCodes5["ExclamationMark"] = 33] = "ExclamationMark"; - CharCodes5[CharCodes5["Number"] = 35] = "Number"; - CharCodes5[CharCodes5["Amp"] = 38] = "Amp"; - CharCodes5[CharCodes5["SingleQuote"] = 39] = "SingleQuote"; - CharCodes5[CharCodes5["DoubleQuote"] = 34] = "DoubleQuote"; - CharCodes5[CharCodes5["Dash"] = 45] = "Dash"; - CharCodes5[CharCodes5["Slash"] = 47] = "Slash"; - CharCodes5[CharCodes5["Zero"] = 48] = "Zero"; - CharCodes5[CharCodes5["Nine"] = 57] = "Nine"; - CharCodes5[CharCodes5["Semi"] = 59] = "Semi"; - CharCodes5[CharCodes5["Lt"] = 60] = "Lt"; - CharCodes5[CharCodes5["Eq"] = 61] = "Eq"; - CharCodes5[CharCodes5["Gt"] = 62] = "Gt"; - CharCodes5[CharCodes5["Questionmark"] = 63] = "Questionmark"; - CharCodes5[CharCodes5["UpperA"] = 65] = "UpperA"; - CharCodes5[CharCodes5["LowerA"] = 97] = "LowerA"; - CharCodes5[CharCodes5["UpperF"] = 70] = "UpperF"; - CharCodes5[CharCodes5["LowerF"] = 102] = "LowerF"; - CharCodes5[CharCodes5["UpperZ"] = 90] = "UpperZ"; - CharCodes5[CharCodes5["LowerZ"] = 122] = "LowerZ"; - CharCodes5[CharCodes5["LowerX"] = 120] = "LowerX"; - CharCodes5[CharCodes5["OpeningSquareBracket"] = 91] = "OpeningSquareBracket"; -})(CharCodes3 || (CharCodes3 = {})); -var State; -(function(State3) { - State3[State3["Text"] = 1] = "Text"; - State3[State3["BeforeTagName"] = 2] = "BeforeTagName"; - State3[State3["InTagName"] = 3] = "InTagName"; - State3[State3["InSelfClosingTag"] = 4] = "InSelfClosingTag"; - State3[State3["BeforeClosingTagName"] = 5] = "BeforeClosingTagName"; - State3[State3["InClosingTagName"] = 6] = "InClosingTagName"; - State3[State3["AfterClosingTagName"] = 7] = "AfterClosingTagName"; - State3[State3["BeforeAttributeName"] = 8] = "BeforeAttributeName"; - State3[State3["InAttributeName"] = 9] = "InAttributeName"; - State3[State3["AfterAttributeName"] = 10] = "AfterAttributeName"; - State3[State3["BeforeAttributeValue"] = 11] = "BeforeAttributeValue"; - State3[State3["InAttributeValueDq"] = 12] = "InAttributeValueDq"; - State3[State3["InAttributeValueSq"] = 13] = "InAttributeValueSq"; - State3[State3["InAttributeValueNq"] = 14] = "InAttributeValueNq"; - State3[State3["BeforeDeclaration"] = 15] = "BeforeDeclaration"; - State3[State3["InDeclaration"] = 16] = "InDeclaration"; - State3[State3["InProcessingInstruction"] = 17] = "InProcessingInstruction"; - State3[State3["BeforeComment"] = 18] = "BeforeComment"; - State3[State3["CDATASequence"] = 19] = "CDATASequence"; - State3[State3["InSpecialComment"] = 20] = "InSpecialComment"; - State3[State3["InCommentLike"] = 21] = "InCommentLike"; - State3[State3["BeforeSpecialS"] = 22] = "BeforeSpecialS"; - State3[State3["BeforeSpecialT"] = 23] = "BeforeSpecialT"; - State3[State3["SpecialStartSequence"] = 24] = "SpecialStartSequence"; - State3[State3["InSpecialTag"] = 25] = "InSpecialTag"; - State3[State3["InEntity"] = 26] = "InEntity"; -})(State || (State = {})); -function isWhitespace(c) { - return c === CharCodes3.Space || c === CharCodes3.NewLine || c === CharCodes3.Tab || c === CharCodes3.FormFeed || c === CharCodes3.CarriageReturn; -} -function isEndOfTagSection(c) { - return c === CharCodes3.Slash || c === CharCodes3.Gt || isWhitespace(c); -} -function isASCIIAlpha(c) { - return c >= CharCodes3.LowerA && c <= CharCodes3.LowerZ || c >= CharCodes3.UpperA && c <= CharCodes3.UpperZ; -} -var QuoteType; -(function(QuoteType2) { - QuoteType2[QuoteType2["NoValue"] = 0] = "NoValue"; - QuoteType2[QuoteType2["Unquoted"] = 1] = "Unquoted"; - QuoteType2[QuoteType2["Single"] = 2] = "Single"; - QuoteType2[QuoteType2["Double"] = 3] = "Double"; -})(QuoteType || (QuoteType = {})); -var Sequences = { - Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), - // CDATA[ - CdataEnd: new Uint8Array([93, 93, 62]), - // ]]> - CommentEnd: new Uint8Array([45, 45, 62]), - // `-->` - ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), - // `<\/script` - StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), - // ` this.emitCodePoint(cp, consumed)); - } - reset() { - this.state = State.Text; - this.buffer = ""; - this.sectionStart = 0; - this.index = 0; - this.baseState = State.Text; - this.currentSequence = void 0; - this.running = true; - this.offset = 0; - } - write(chunk) { - this.offset += this.buffer.length; - this.buffer = chunk; - this.parse(); - } - end() { - if (this.running) - this.finish(); - } - pause() { - this.running = false; - } - resume() { - this.running = true; - if (this.index < this.buffer.length + this.offset) { - this.parse(); - } - } - stateText(c) { - if (c === CharCodes3.Lt || !this.decodeEntities && this.fastForwardTo(CharCodes3.Lt)) { - if (this.index > this.sectionStart) { - this.cbs.ontext(this.sectionStart, this.index); - } - this.state = State.BeforeTagName; - this.sectionStart = this.index; - } else if (this.decodeEntities && c === CharCodes3.Amp) { - this.startEntity(); - } - } - stateSpecialStartSequence(c) { - const isEnd = this.sequenceIndex === this.currentSequence.length; - const isMatch = isEnd ? ( - // If we are at the end of the sequence, make sure the tag name has ended - isEndOfTagSection(c) - ) : ( - // Otherwise, do a case-insensitive comparison - (c | 32) === this.currentSequence[this.sequenceIndex] - ); - if (!isMatch) { - this.isSpecial = false; - } else if (!isEnd) { - this.sequenceIndex++; - return; - } - this.sequenceIndex = 0; - this.state = State.InTagName; - this.stateInTagName(c); - } - /** Look for an end tag. For tags, also decode entities. */ - stateInSpecialTag(c) { - if (this.sequenceIndex === this.currentSequence.length) { - if (c === CharCodes3.Gt || isWhitespace(c)) { - const endOfText = this.index - this.currentSequence.length; - if (this.sectionStart < endOfText) { - const actualIndex = this.index; - this.index = endOfText; - this.cbs.ontext(this.sectionStart, endOfText); - this.index = actualIndex; - } - this.isSpecial = false; - this.sectionStart = endOfText + 2; - this.stateInClosingTagName(c); - return; - } - this.sequenceIndex = 0; - } - if ((c | 32) === this.currentSequence[this.sequenceIndex]) { - this.sequenceIndex += 1; - } else if (this.sequenceIndex === 0) { - if (this.currentSequence === Sequences.TitleEnd) { - if (this.decodeEntities && c === CharCodes3.Amp) { - this.startEntity(); - } - } else if (this.fastForwardTo(CharCodes3.Lt)) { - this.sequenceIndex = 1; - } - } else { - this.sequenceIndex = Number(c === CharCodes3.Lt); - } - } - stateCDATASequence(c) { - if (c === Sequences.Cdata[this.sequenceIndex]) { - if (++this.sequenceIndex === Sequences.Cdata.length) { - this.state = State.InCommentLike; - this.currentSequence = Sequences.CdataEnd; - this.sequenceIndex = 0; - this.sectionStart = this.index + 1; - } - } else { - this.sequenceIndex = 0; - this.state = State.InDeclaration; - this.stateInDeclaration(c); - } - } - /** - * When we wait for one specific character, we can speed things up - * by skipping through the buffer until we find it. - * - * @returns Whether the character was found. - */ - fastForwardTo(c) { - while (++this.index < this.buffer.length + this.offset) { - if (this.buffer.charCodeAt(this.index - this.offset) === c) { - return true; - } - } - this.index = this.buffer.length + this.offset - 1; - return false; - } - /** - * Comments and CDATA end with `-->` and `]]>`. - * - * Their common qualities are: - * - Their end sequences have a distinct character they start with. - * - That character is then repeated, so we have to check multiple repeats. - * - All characters but the start character of the sequence can be skipped. - */ - stateInCommentLike(c) { - if (c === this.currentSequence[this.sequenceIndex]) { - if (++this.sequenceIndex === this.currentSequence.length) { - if (this.currentSequence === Sequences.CdataEnd) { - this.cbs.oncdata(this.sectionStart, this.index, 2); - } else { - this.cbs.oncomment(this.sectionStart, this.index, 2); - } - this.sequenceIndex = 0; - this.sectionStart = this.index + 1; - this.state = State.Text; - } - } else if (this.sequenceIndex === 0) { - if (this.fastForwardTo(this.currentSequence[0])) { - this.sequenceIndex = 1; - } - } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { - this.sequenceIndex = 0; - } - } - /** - * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name. - * - * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar). - * We allow anything that wouldn't end the tag. - */ - isTagStartChar(c) { - return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c); - } - startSpecial(sequence, offset) { - this.isSpecial = true; - this.currentSequence = sequence; - this.sequenceIndex = offset; - this.state = State.SpecialStartSequence; - } - stateBeforeTagName(c) { - if (c === CharCodes3.ExclamationMark) { - this.state = State.BeforeDeclaration; - this.sectionStart = this.index + 1; - } else if (c === CharCodes3.Questionmark) { - this.state = State.InProcessingInstruction; - this.sectionStart = this.index + 1; - } else if (this.isTagStartChar(c)) { - const lower = c | 32; - this.sectionStart = this.index; - if (this.xmlMode) { - this.state = State.InTagName; - } else if (lower === Sequences.ScriptEnd[2]) { - this.state = State.BeforeSpecialS; - } else if (lower === Sequences.TitleEnd[2] || lower === Sequences.XmpEnd[2]) { - this.state = State.BeforeSpecialT; - } else { - this.state = State.InTagName; - } - } else if (c === CharCodes3.Slash) { - this.state = State.BeforeClosingTagName; - } else { - this.state = State.Text; - this.stateText(c); - } - } - stateInTagName(c) { - if (isEndOfTagSection(c)) { - this.cbs.onopentagname(this.sectionStart, this.index); - this.sectionStart = -1; - this.state = State.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } - } - stateBeforeClosingTagName(c) { - if (isWhitespace(c)) { - } else if (c === CharCodes3.Gt) { - this.state = State.Text; - } else { - this.state = this.isTagStartChar(c) ? State.InClosingTagName : State.InSpecialComment; - this.sectionStart = this.index; - } - } - stateInClosingTagName(c) { - if (c === CharCodes3.Gt || isWhitespace(c)) { - this.cbs.onclosetag(this.sectionStart, this.index); - this.sectionStart = -1; - this.state = State.AfterClosingTagName; - this.stateAfterClosingTagName(c); - } - } - stateAfterClosingTagName(c) { - if (c === CharCodes3.Gt || this.fastForwardTo(CharCodes3.Gt)) { - this.state = State.Text; - this.sectionStart = this.index + 1; - } - } - stateBeforeAttributeName(c) { - if (c === CharCodes3.Gt) { - this.cbs.onopentagend(this.index); - if (this.isSpecial) { - this.state = State.InSpecialTag; - this.sequenceIndex = 0; - } else { - this.state = State.Text; - } - this.sectionStart = this.index + 1; - } else if (c === CharCodes3.Slash) { - this.state = State.InSelfClosingTag; - } else if (!isWhitespace(c)) { - this.state = State.InAttributeName; - this.sectionStart = this.index; - } - } - stateInSelfClosingTag(c) { - if (c === CharCodes3.Gt) { - this.cbs.onselfclosingtag(this.index); - this.state = State.Text; - this.sectionStart = this.index + 1; - this.isSpecial = false; - } else if (!isWhitespace(c)) { - this.state = State.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } - } - stateInAttributeName(c) { - if (c === CharCodes3.Eq || isEndOfTagSection(c)) { - this.cbs.onattribname(this.sectionStart, this.index); - this.sectionStart = this.index; - this.state = State.AfterAttributeName; - this.stateAfterAttributeName(c); - } - } - stateAfterAttributeName(c) { - if (c === CharCodes3.Eq) { - this.state = State.BeforeAttributeValue; - } else if (c === CharCodes3.Slash || c === CharCodes3.Gt) { - this.cbs.onattribend(QuoteType.NoValue, this.sectionStart); - this.sectionStart = -1; - this.state = State.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } else if (!isWhitespace(c)) { - this.cbs.onattribend(QuoteType.NoValue, this.sectionStart); - this.state = State.InAttributeName; - this.sectionStart = this.index; - } - } - stateBeforeAttributeValue(c) { - if (c === CharCodes3.DoubleQuote) { - this.state = State.InAttributeValueDq; - this.sectionStart = this.index + 1; - } else if (c === CharCodes3.SingleQuote) { - this.state = State.InAttributeValueSq; - this.sectionStart = this.index + 1; - } else if (!isWhitespace(c)) { - this.sectionStart = this.index; - this.state = State.InAttributeValueNq; - this.stateInAttributeValueNoQuotes(c); - } - } - handleInAttributeValue(c, quote) { - if (c === quote || !this.decodeEntities && this.fastForwardTo(quote)) { - this.cbs.onattribdata(this.sectionStart, this.index); - this.sectionStart = -1; - this.cbs.onattribend(quote === CharCodes3.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index + 1); - this.state = State.BeforeAttributeName; - } else if (this.decodeEntities && c === CharCodes3.Amp) { - this.startEntity(); - } - } - stateInAttributeValueDoubleQuotes(c) { - this.handleInAttributeValue(c, CharCodes3.DoubleQuote); - } - stateInAttributeValueSingleQuotes(c) { - this.handleInAttributeValue(c, CharCodes3.SingleQuote); - } - stateInAttributeValueNoQuotes(c) { - if (isWhitespace(c) || c === CharCodes3.Gt) { - this.cbs.onattribdata(this.sectionStart, this.index); - this.sectionStart = -1; - this.cbs.onattribend(QuoteType.Unquoted, this.index); - this.state = State.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } else if (this.decodeEntities && c === CharCodes3.Amp) { - this.startEntity(); - } - } - stateBeforeDeclaration(c) { - if (c === CharCodes3.OpeningSquareBracket) { - this.state = State.CDATASequence; - this.sequenceIndex = 0; - } else { - this.state = c === CharCodes3.Dash ? State.BeforeComment : State.InDeclaration; - } - } - stateInDeclaration(c) { - if (c === CharCodes3.Gt || this.fastForwardTo(CharCodes3.Gt)) { - this.cbs.ondeclaration(this.sectionStart, this.index); - this.state = State.Text; - this.sectionStart = this.index + 1; - } - } - stateInProcessingInstruction(c) { - if (c === CharCodes3.Gt || this.fastForwardTo(CharCodes3.Gt)) { - this.cbs.onprocessinginstruction(this.sectionStart, this.index); - this.state = State.Text; - this.sectionStart = this.index + 1; - } - } - stateBeforeComment(c) { - if (c === CharCodes3.Dash) { - this.state = State.InCommentLike; - this.currentSequence = Sequences.CommentEnd; - this.sequenceIndex = 2; - this.sectionStart = this.index + 1; - } else { - this.state = State.InDeclaration; - } - } - stateInSpecialComment(c) { - if (c === CharCodes3.Gt || this.fastForwardTo(CharCodes3.Gt)) { - this.cbs.oncomment(this.sectionStart, this.index, 0); - this.state = State.Text; - this.sectionStart = this.index + 1; - } - } - stateBeforeSpecialS(c) { - const lower = c | 32; - if (lower === Sequences.ScriptEnd[3]) { - this.startSpecial(Sequences.ScriptEnd, 4); - } else if (lower === Sequences.StyleEnd[3]) { - this.startSpecial(Sequences.StyleEnd, 4); - } else { - this.state = State.InTagName; - this.stateInTagName(c); - } - } - stateBeforeSpecialT(c) { - const lower = c | 32; - switch (lower) { - case Sequences.TitleEnd[3]: { - this.startSpecial(Sequences.TitleEnd, 4); - break; - } - case Sequences.TextareaEnd[3]: { - this.startSpecial(Sequences.TextareaEnd, 4); - break; - } - case Sequences.XmpEnd[3]: { - this.startSpecial(Sequences.XmpEnd, 4); - break; - } - default: { - this.state = State.InTagName; - this.stateInTagName(c); - } - } - } - startEntity() { - this.baseState = this.state; - this.state = State.InEntity; - this.entityStart = this.index; - this.entityDecoder.startEntity(this.xmlMode ? DecodingMode2.Strict : this.baseState === State.Text || this.baseState === State.InSpecialTag ? DecodingMode2.Legacy : DecodingMode2.Attribute); - } - stateInEntity() { - const length = this.entityDecoder.write(this.buffer, this.index - this.offset); - if (length >= 0) { - this.state = this.baseState; - if (length === 0) { - this.index = this.entityStart; - } - } else { - this.index = this.offset + this.buffer.length - 1; - } - } - /** - * Remove data that has already been consumed from the buffer. - */ - cleanup() { - if (this.running && this.sectionStart !== this.index) { - if (this.state === State.Text || this.state === State.InSpecialTag && this.sequenceIndex === 0) { - this.cbs.ontext(this.sectionStart, this.index); - this.sectionStart = this.index; - } else if (this.state === State.InAttributeValueDq || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueNq) { - this.cbs.onattribdata(this.sectionStart, this.index); - this.sectionStart = this.index; - } - } - } - shouldContinue() { - return this.index < this.buffer.length + this.offset && this.running; - } - /** - * Iterates through the buffer, calling the function corresponding to the current state. - * - * States that are more likely to be hit are higher up, as a performance improvement. - */ - parse() { - while (this.shouldContinue()) { - const c = this.buffer.charCodeAt(this.index - this.offset); - switch (this.state) { - case State.Text: { - this.stateText(c); - break; - } - case State.SpecialStartSequence: { - this.stateSpecialStartSequence(c); - break; - } - case State.InSpecialTag: { - this.stateInSpecialTag(c); - break; - } - case State.CDATASequence: { - this.stateCDATASequence(c); - break; - } - case State.InAttributeValueDq: { - this.stateInAttributeValueDoubleQuotes(c); - break; - } - case State.InAttributeName: { - this.stateInAttributeName(c); - break; - } - case State.InCommentLike: { - this.stateInCommentLike(c); - break; - } - case State.InSpecialComment: { - this.stateInSpecialComment(c); - break; - } - case State.BeforeAttributeName: { - this.stateBeforeAttributeName(c); - break; - } - case State.InTagName: { - this.stateInTagName(c); - break; - } - case State.InClosingTagName: { - this.stateInClosingTagName(c); - break; - } - case State.BeforeTagName: { - this.stateBeforeTagName(c); - break; - } - case State.AfterAttributeName: { - this.stateAfterAttributeName(c); - break; - } - case State.InAttributeValueSq: { - this.stateInAttributeValueSingleQuotes(c); - break; - } - case State.BeforeAttributeValue: { - this.stateBeforeAttributeValue(c); - break; - } - case State.BeforeClosingTagName: { - this.stateBeforeClosingTagName(c); - break; - } - case State.AfterClosingTagName: { - this.stateAfterClosingTagName(c); - break; - } - case State.BeforeSpecialS: { - this.stateBeforeSpecialS(c); - break; - } - case State.BeforeSpecialT: { - this.stateBeforeSpecialT(c); - break; - } - case State.InAttributeValueNq: { - this.stateInAttributeValueNoQuotes(c); - break; - } - case State.InSelfClosingTag: { - this.stateInSelfClosingTag(c); - break; - } - case State.InDeclaration: { - this.stateInDeclaration(c); - break; - } - case State.BeforeDeclaration: { - this.stateBeforeDeclaration(c); - break; - } - case State.BeforeComment: { - this.stateBeforeComment(c); - break; - } - case State.InProcessingInstruction: { - this.stateInProcessingInstruction(c); - break; - } - case State.InEntity: { - this.stateInEntity(); - break; - } - } - this.index++; - } - this.cleanup(); - } - finish() { - if (this.state === State.InEntity) { - this.entityDecoder.end(); - this.state = this.baseState; - } - this.handleTrailingData(); - this.cbs.onend(); - } - /** Handle any trailing data. */ - handleTrailingData() { - const endIndex = this.buffer.length + this.offset; - if (this.sectionStart >= endIndex) { - return; - } - if (this.state === State.InCommentLike) { - if (this.currentSequence === Sequences.CdataEnd) { - this.cbs.oncdata(this.sectionStart, endIndex, 0); - } else { - this.cbs.oncomment(this.sectionStart, endIndex, 0); - } - } else if (this.state === State.InTagName || this.state === State.BeforeAttributeName || this.state === State.BeforeAttributeValue || this.state === State.AfterAttributeName || this.state === State.InAttributeName || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueDq || this.state === State.InAttributeValueNq || this.state === State.InClosingTagName) { - } else { - this.cbs.ontext(this.sectionStart, endIndex); - } - } - emitCodePoint(cp, consumed) { - if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) { - if (this.sectionStart < this.entityStart) { - this.cbs.onattribdata(this.sectionStart, this.entityStart); - } - this.sectionStart = this.entityStart + consumed; - this.index = this.sectionStart - 1; - this.cbs.onattribentity(cp); - } else { - if (this.sectionStart < this.entityStart) { - this.cbs.ontext(this.sectionStart, this.entityStart); - } - this.sectionStart = this.entityStart + consumed; - this.index = this.sectionStart - 1; - this.cbs.ontextentity(cp, this.sectionStart); - } - } -}; - -// node_modules/htmlparser2/dist/esm/Parser.js -var formTags = /* @__PURE__ */ new Set([ - "input", - "option", - "optgroup", - "select", - "button", - "datalist", - "textarea" -]); -var pTag = /* @__PURE__ */ new Set(["p"]); -var tableSectionTags = /* @__PURE__ */ new Set(["thead", "tbody"]); -var ddtTags = /* @__PURE__ */ new Set(["dd", "dt"]); -var rtpTags = /* @__PURE__ */ new Set(["rt", "rp"]); -var openImpliesClose = /* @__PURE__ */ new Map([ - ["tr", /* @__PURE__ */ new Set(["tr", "th", "td"])], - ["th", /* @__PURE__ */ new Set(["th"])], - ["td", /* @__PURE__ */ new Set(["thead", "th", "td"])], - ["body", /* @__PURE__ */ new Set(["head", "link", "script"])], - ["li", /* @__PURE__ */ new Set(["li"])], - ["p", pTag], - ["h1", pTag], - ["h2", pTag], - ["h3", pTag], - ["h4", pTag], - ["h5", pTag], - ["h6", pTag], - ["select", formTags], - ["input", formTags], - ["output", formTags], - ["button", formTags], - ["datalist", formTags], - ["textarea", formTags], - ["option", /* @__PURE__ */ new Set(["option"])], - ["optgroup", /* @__PURE__ */ new Set(["optgroup", "option"])], - ["dd", ddtTags], - ["dt", ddtTags], - ["address", pTag], - ["article", pTag], - ["aside", pTag], - ["blockquote", pTag], - ["details", pTag], - ["div", pTag], - ["dl", pTag], - ["fieldset", pTag], - ["figcaption", pTag], - ["figure", pTag], - ["footer", pTag], - ["form", pTag], - ["header", pTag], - ["hr", pTag], - ["main", pTag], - ["nav", pTag], - ["ol", pTag], - ["pre", pTag], - ["section", pTag], - ["table", pTag], - ["ul", pTag], - ["rt", rtpTags], - ["rp", rtpTags], - ["tbody", tableSectionTags], - ["tfoot", tableSectionTags] -]); -var voidElements = /* @__PURE__ */ new Set([ - "area", - "base", - "basefont", - "br", - "col", - "command", - "embed", - "frame", - "hr", - "img", - "input", - "isindex", - "keygen", - "link", - "meta", - "param", - "source", - "track", - "wbr" -]); -var foreignContextElements = /* @__PURE__ */ new Set(["math", "svg"]); -var htmlIntegrationElements = /* @__PURE__ */ new Set([ - "mi", - "mo", - "mn", - "ms", - "mtext", - "annotation-xml", - "foreignobject", - "desc", - "title" -]); -var reNameEnd = /\s|\//; -var Parser = class { - constructor(cbs, options = {}) { - var _a5, _b, _c, _d, _e, _f; - this.options = options; - this.startIndex = 0; - this.endIndex = 0; - this.openTagStart = 0; - this.tagname = ""; - this.attribname = ""; - this.attribvalue = ""; - this.attribs = null; - this.stack = []; - this.buffers = []; - this.bufferOffset = 0; - this.writeIndex = 0; - this.ended = false; - this.cbs = cbs !== null && cbs !== void 0 ? cbs : {}; - this.htmlMode = !this.options.xmlMode; - this.lowerCaseTagNames = (_a5 = options.lowerCaseTags) !== null && _a5 !== void 0 ? _a5 : this.htmlMode; - this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode; - this.recognizeSelfClosing = (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode; - this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this); - this.foreignContext = [!this.htmlMode]; - (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this); - } - // Tokenizer event handlers - /** @internal */ - ontext(start, endIndex) { - var _a5, _b; - const data2 = this.getSlice(start, endIndex); - this.endIndex = endIndex - 1; - (_b = (_a5 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a5, data2); - this.startIndex = endIndex; - } - /** @internal */ - ontextentity(cp, endIndex) { - var _a5, _b; - this.endIndex = endIndex - 1; - (_b = (_a5 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a5, fromCodePoint2(cp)); - this.startIndex = endIndex; - } - /** - * Checks if the current tag is a void element. Override this if you want - * to specify your own additional void elements. - */ - isVoidElement(name) { - return this.htmlMode && voidElements.has(name); - } - /** @internal */ - onopentagname(start, endIndex) { - this.endIndex = endIndex; - let name = this.getSlice(start, endIndex); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - this.emitOpenTag(name); - } - emitOpenTag(name) { - var _a5, _b, _c, _d; - this.openTagStart = this.startIndex; - this.tagname = name; - const impliesClose = this.htmlMode && openImpliesClose.get(name); - if (impliesClose) { - while (this.stack.length > 0 && impliesClose.has(this.stack[0])) { - const element = this.stack.shift(); - (_b = (_a5 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a5, element, true); - } - } - if (!this.isVoidElement(name)) { - this.stack.unshift(name); - if (this.htmlMode) { - if (foreignContextElements.has(name)) { - this.foreignContext.unshift(true); - } else if (htmlIntegrationElements.has(name)) { - this.foreignContext.unshift(false); - } - } - } - (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name); - if (this.cbs.onopentag) - this.attribs = {}; - } - endOpenTag(isImplied) { - var _a5, _b; - this.startIndex = this.openTagStart; - if (this.attribs) { - (_b = (_a5 = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a5, this.tagname, this.attribs, isImplied); - this.attribs = null; - } - if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) { - this.cbs.onclosetag(this.tagname, true); - } - this.tagname = ""; - } - /** @internal */ - onopentagend(endIndex) { - this.endIndex = endIndex; - this.endOpenTag(false); - this.startIndex = endIndex + 1; - } - /** @internal */ - onclosetag(start, endIndex) { - var _a5, _b, _c, _d, _e, _f, _g, _h; - this.endIndex = endIndex; - let name = this.getSlice(start, endIndex); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - if (this.htmlMode && (foreignContextElements.has(name) || htmlIntegrationElements.has(name))) { - this.foreignContext.shift(); - } - if (!this.isVoidElement(name)) { - const pos = this.stack.indexOf(name); - if (pos !== -1) { - for (let index2 = 0; index2 <= pos; index2++) { - const element = this.stack.shift(); - (_b = (_a5 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a5, element, index2 !== pos); - } - } else if (this.htmlMode && name === "p") { - this.emitOpenTag("p"); - this.closeCurrentTag(true); - } - } else if (this.htmlMode && name === "br") { - (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, "br"); - (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", {}, true); - (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, "br", false); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - onselfclosingtag(endIndex) { - this.endIndex = endIndex; - if (this.recognizeSelfClosing || this.foreignContext[0]) { - this.closeCurrentTag(false); - this.startIndex = endIndex + 1; - } else { - this.onopentagend(endIndex); - } - } - closeCurrentTag(isOpenImplied) { - var _a5, _b; - const name = this.tagname; - this.endOpenTag(isOpenImplied); - if (this.stack[0] === name) { - (_b = (_a5 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a5, name, !isOpenImplied); - this.stack.shift(); - } - } - /** @internal */ - onattribname(start, endIndex) { - this.startIndex = start; - const name = this.getSlice(start, endIndex); - this.attribname = this.lowerCaseAttributeNames ? name.toLowerCase() : name; - } - /** @internal */ - onattribdata(start, endIndex) { - this.attribvalue += this.getSlice(start, endIndex); - } - /** @internal */ - onattribentity(cp) { - this.attribvalue += fromCodePoint2(cp); - } - /** @internal */ - onattribend(quote, endIndex) { - var _a5, _b; - this.endIndex = endIndex; - (_b = (_a5 = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a5, this.attribname, this.attribvalue, quote === QuoteType.Double ? '"' : quote === QuoteType.Single ? "'" : quote === QuoteType.NoValue ? void 0 : null); - if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) { - this.attribs[this.attribname] = this.attribvalue; - } - this.attribvalue = ""; - } - getInstructionName(value) { - const index2 = value.search(reNameEnd); - let name = index2 < 0 ? value : value.substr(0, index2); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - return name; - } - /** @internal */ - ondeclaration(start, endIndex) { - this.endIndex = endIndex; - const value = this.getSlice(start, endIndex); - if (this.cbs.onprocessinginstruction) { - const name = this.getInstructionName(value); - this.cbs.onprocessinginstruction(`!${name}`, `!${value}`); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - onprocessinginstruction(start, endIndex) { - this.endIndex = endIndex; - const value = this.getSlice(start, endIndex); - if (this.cbs.onprocessinginstruction) { - const name = this.getInstructionName(value); - this.cbs.onprocessinginstruction(`?${name}`, `?${value}`); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - oncomment(start, endIndex, offset) { - var _a5, _b, _c, _d; - this.endIndex = endIndex; - (_b = (_a5 = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a5, this.getSlice(start, endIndex - offset)); - (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c); - this.startIndex = endIndex + 1; - } - /** @internal */ - oncdata(start, endIndex, offset) { - var _a5, _b, _c, _d, _e, _f, _g, _h, _j, _k; - this.endIndex = endIndex; - const value = this.getSlice(start, endIndex - offset); - if (!this.htmlMode || this.options.recognizeCDATA) { - (_b = (_a5 = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a5); - (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value); - (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e); - } else { - (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`); - (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - onend() { - var _a5, _b; - if (this.cbs.onclosetag) { - this.endIndex = this.startIndex; - for (let index2 = 0; index2 < this.stack.length; index2++) { - this.cbs.onclosetag(this.stack[index2], true); - } - } - (_b = (_a5 = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a5); - } - /** - * Resets the parser to a blank state, ready to parse a new HTML document - */ - reset() { - var _a5, _b, _c, _d; - (_b = (_a5 = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a5); - this.tokenizer.reset(); - this.tagname = ""; - this.attribname = ""; - this.attribs = null; - this.stack.length = 0; - this.startIndex = 0; - this.endIndex = 0; - (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this); - this.buffers.length = 0; - this.foreignContext.length = 0; - this.foreignContext.unshift(!this.htmlMode); - this.bufferOffset = 0; - this.writeIndex = 0; - this.ended = false; - } - /** - * Resets the parser, then parses a complete document and - * pushes it to the handler. - * - * @param data Document to parse. - */ - parseComplete(data2) { - this.reset(); - this.end(data2); - } - getSlice(start, end2) { - while (start - this.bufferOffset >= this.buffers[0].length) { - this.shiftBuffer(); - } - let slice2 = this.buffers[0].slice(start - this.bufferOffset, end2 - this.bufferOffset); - while (end2 - this.bufferOffset > this.buffers[0].length) { - this.shiftBuffer(); - slice2 += this.buffers[0].slice(0, end2 - this.bufferOffset); - } - return slice2; - } - shiftBuffer() { - this.bufferOffset += this.buffers[0].length; - this.writeIndex--; - this.buffers.shift(); - } - /** - * Parses a chunk of data and calls the corresponding callbacks. - * - * @param chunk Chunk to parse. - */ - write(chunk) { - var _a5, _b; - if (this.ended) { - (_b = (_a5 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a5, new Error(".write() after done!")); - return; - } - this.buffers.push(chunk); - if (this.tokenizer.running) { - this.tokenizer.write(chunk); - this.writeIndex++; - } - } - /** - * Parses the end of the buffer and clears the stack, calls onend. - * - * @param chunk Optional final chunk to parse. - */ - end(chunk) { - var _a5, _b; - if (this.ended) { - (_b = (_a5 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a5, new Error(".end() after done!")); - return; - } - if (chunk) - this.write(chunk); - this.ended = true; - this.tokenizer.end(); - } - /** - * Pauses parsing. The parser won't emit events until `resume` is called. - */ - pause() { - this.tokenizer.pause(); - } - /** - * Resumes parsing after `pause` was called. - */ - resume() { - this.tokenizer.resume(); - while (this.tokenizer.running && this.writeIndex < this.buffers.length) { - this.tokenizer.write(this.buffers[this.writeIndex++]); - } - if (this.ended) - this.tokenizer.end(); - } - /** - * Alias of `write`, for backwards compatibility. - * - * @param chunk Chunk to parse. - * @deprecated - */ - parseChunk(chunk) { - this.write(chunk); - } - /** - * Alias of `end`, for backwards compatibility. - * - * @param chunk Optional final chunk to parse. - * @deprecated - */ - done(chunk) { - this.end(chunk); - } -}; - -// node_modules/htmlparser2/dist/esm/index.js -function parseDocument(data2, options) { - const handler = new DomHandler(void 0, options); - new Parser(handler, options).end(data2); - return handler.root; -} - -// node_modules/cheerio/dist/browser/api/attributes.js -var _a3; -var hasOwn = ( - // @ts-expect-error `hasOwn` is a standard object method - (_a3 = Object.hasOwn) !== null && _a3 !== void 0 ? _a3 : (object, prop2) => Object.prototype.hasOwnProperty.call(object, prop2) -); -var rspace = /\s+/; -var dataAttrPrefix = "data-"; -var rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i; -var rbrace = /^{[^]*}$|^\[[^]*]$/; -function getAttr(elem, name, xmlMode) { - var _a5; - if (!elem || !isTag2(elem)) - return void 0; - (_a5 = elem.attribs) !== null && _a5 !== void 0 ? _a5 : elem.attribs = {}; - if (!name) { - return elem.attribs; - } - if (hasOwn(elem.attribs, name)) { - return !xmlMode && rboolean.test(name) ? name : elem.attribs[name]; - } - if (elem.name === "option" && name === "value") { - return text(elem.children); - } - if (elem.name === "input" && (elem.attribs["type"] === "radio" || elem.attribs["type"] === "checkbox") && name === "value") { - return "on"; - } - return void 0; -} -function setAttr(el, name, value) { - if (value === null) { - removeAttribute(el, name); - } else { - el.attribs[name] = `${value}`; - } -} -function attr(name, value) { - if (typeof name === "object" || value !== void 0) { - if (typeof value === "function") { - if (typeof name !== "string") { - { - throw new Error("Bad combination of arguments."); - } - } - return domEach(this, (el, i) => { - if (isTag2(el)) - setAttr(el, name, value.call(el, i, el.attribs[name])); - }); - } - return domEach(this, (el) => { - if (!isTag2(el)) - return; - if (typeof name === "object") { - for (const objName of Object.keys(name)) { - const objValue = name[objName]; - setAttr(el, objName, objValue); - } - } else { - setAttr(el, name, value); - } - }); - } - return arguments.length > 1 ? this : getAttr(this[0], name, this.options.xmlMode); -} -function getProp(el, name, xmlMode) { - return name in el ? ( - // @ts-expect-error TS doesn't like us accessing the value directly here. - el[name] - ) : !xmlMode && rboolean.test(name) ? getAttr(el, name, false) !== void 0 : getAttr(el, name, xmlMode); -} -function setProp(el, name, value, xmlMode) { - if (name in el) { - el[name] = value; - } else { - setAttr(el, name, !xmlMode && rboolean.test(name) ? value ? "" : null : `${value}`); - } -} -function prop(name, value) { - var _a5; - if (typeof name === "string" && value === void 0) { - const el = this[0]; - if (!el) - return void 0; - switch (name) { - case "style": { - const property = this.css(); - const keys = Object.keys(property); - for (let i = 0; i < keys.length; i++) { - property[i] = keys[i]; - } - property.length = keys.length; - return property; - } - case "tagName": - case "nodeName": { - if (!isTag2(el)) - return void 0; - return el.name.toUpperCase(); - } - case "href": - case "src": { - if (!isTag2(el)) - return void 0; - const prop2 = (_a5 = el.attribs) === null || _a5 === void 0 ? void 0 : _a5[name]; - if (typeof URL !== "undefined" && (name === "href" && (el.tagName === "a" || el.tagName === "link") || name === "src" && (el.tagName === "img" || el.tagName === "iframe" || el.tagName === "audio" || el.tagName === "video" || el.tagName === "source")) && prop2 !== void 0 && this.options.baseURI) { - return new URL(prop2, this.options.baseURI).href; - } - return prop2; - } - case "innerText": { - return innerText(el); - } - case "textContent": { - return textContent(el); - } - case "outerHTML": { - if (el.type === esm_exports.Root) - return this.html(); - return this.clone().wrap("<container />").parent().html(); - } - case "innerHTML": { - return this.html(); - } - default: { - if (!isTag2(el)) - return void 0; - return getProp(el, name, this.options.xmlMode); - } - } - } - if (typeof name === "object" || value !== void 0) { - if (typeof value === "function") { - if (typeof name === "object") { - throw new TypeError("Bad combination of arguments."); - } - return domEach(this, (el, i) => { - if (isTag2(el)) { - setProp(el, name, value.call(el, i, getProp(el, name, this.options.xmlMode)), this.options.xmlMode); - } - }); - } - return domEach(this, (el) => { - if (!isTag2(el)) - return; - if (typeof name === "object") { - for (const key of Object.keys(name)) { - const val2 = name[key]; - setProp(el, key, val2, this.options.xmlMode); - } - } else { - setProp(el, name, value, this.options.xmlMode); - } - }); - } - return void 0; -} -function setData(elem, name, value) { - var _a5; - (_a5 = elem.data) !== null && _a5 !== void 0 ? _a5 : elem.data = {}; - if (typeof name === "object") - Object.assign(elem.data, name); - else if (typeof name === "string" && value !== void 0) { - elem.data[name] = value; - } -} -function readAllData(el) { - for (const domName of Object.keys(el.attribs)) { - if (!domName.startsWith(dataAttrPrefix)) { - continue; - } - const jsName = camelCase(domName.slice(dataAttrPrefix.length)); - if (!hasOwn(el.data, jsName)) { - el.data[jsName] = parseDataValue(el.attribs[domName]); - } - } - return el.data; -} -function readData(el, name) { - const domName = dataAttrPrefix + cssCase(name); - const data2 = el.data; - if (hasOwn(data2, name)) { - return data2[name]; - } - if (hasOwn(el.attribs, domName)) { - return data2[name] = parseDataValue(el.attribs[domName]); - } - return void 0; -} -function parseDataValue(value) { - if (value === "null") - return null; - if (value === "true") - return true; - if (value === "false") - return false; - const num = Number(value); - if (value === String(num)) - return num; - if (rbrace.test(value)) { - try { - return JSON.parse(value); - } catch (e) { - } - } - return value; -} -function data(name, value) { - var _a5; - const elem = this[0]; - if (!elem || !isTag2(elem)) - return; - const dataEl = elem; - (_a5 = dataEl.data) !== null && _a5 !== void 0 ? _a5 : dataEl.data = {}; - if (name == null) { - return readAllData(dataEl); - } - if (typeof name === "object" || value !== void 0) { - domEach(this, (el) => { - if (isTag2(el)) { - if (typeof name === "object") - setData(el, name); - else - setData(el, name, value); - } - }); - return this; - } - return readData(dataEl, name); -} -function val(value) { - const querying = arguments.length === 0; - const element = this[0]; - if (!element || !isTag2(element)) - return querying ? void 0 : this; - switch (element.name) { - case "textarea": { - return this.text(value); - } - case "select": { - const option = this.find("option:selected"); - if (!querying) { - if (this.attr("multiple") == null && typeof value === "object") { - return this; - } - this.find("option").removeAttr("selected"); - const values = typeof value === "object" ? value : [value]; - for (const val2 of values) { - this.find(`option[value="${val2}"]`).attr("selected", ""); - } - return this; - } - return this.attr("multiple") ? option.toArray().map((el) => text(el.children)) : option.attr("value"); - } - case "input": - case "option": { - return querying ? this.attr("value") : this.attr("value", value); - } - } - return void 0; -} -function removeAttribute(elem, name) { - if (!elem.attribs || !hasOwn(elem.attribs, name)) - return; - delete elem.attribs[name]; -} -function splitNames(names) { - return names ? names.trim().split(rspace) : []; -} -function removeAttr(name) { - const attrNames = splitNames(name); - for (const attrName of attrNames) { - domEach(this, (elem) => { - if (isTag2(elem)) - removeAttribute(elem, attrName); - }); - } - return this; -} -function hasClass(className) { - return this.toArray().some((elem) => { - const clazz = isTag2(elem) && elem.attribs["class"]; - let idx = -1; - if (clazz && className.length > 0) { - while ((idx = clazz.indexOf(className, idx + 1)) > -1) { - const end2 = idx + className.length; - if ((idx === 0 || rspace.test(clazz[idx - 1])) && (end2 === clazz.length || rspace.test(clazz[end2]))) { - return true; - } - } - } - return false; - }); -} -function addClass(value) { - if (typeof value === "function") { - return domEach(this, (el, i) => { - if (isTag2(el)) { - const className = el.attribs["class"] || ""; - addClass.call([el], value.call(el, i, className)); - } - }); - } - if (!value || typeof value !== "string") - return this; - const classNames = value.split(rspace); - const numElements = this.length; - for (let i = 0; i < numElements; i++) { - const el = this[i]; - if (!isTag2(el)) - continue; - const className = getAttr(el, "class", false); - if (className) { - let setClass = ` ${className} `; - for (const cn of classNames) { - const appendClass = `${cn} `; - if (!setClass.includes(` ${appendClass}`)) - setClass += appendClass; - } - setAttr(el, "class", setClass.trim()); - } else { - setAttr(el, "class", classNames.join(" ").trim()); - } - } - return this; -} -function removeClass(name) { - if (typeof name === "function") { - return domEach(this, (el, i) => { - if (isTag2(el)) { - removeClass.call([el], name.call(el, i, el.attribs["class"] || "")); - } - }); - } - const classes = splitNames(name); - const numClasses = classes.length; - const removeAll = arguments.length === 0; - return domEach(this, (el) => { - if (!isTag2(el)) - return; - if (removeAll) { - el.attribs["class"] = ""; - } else { - const elClasses = splitNames(el.attribs["class"]); - let changed = false; - for (let j = 0; j < numClasses; j++) { - const index2 = elClasses.indexOf(classes[j]); - if (index2 !== -1) { - elClasses.splice(index2, 1); - changed = true; - j--; - } - } - if (changed) { - el.attribs["class"] = elClasses.join(" "); - } - } - }); -} -function toggleClass(value, stateVal) { - if (typeof value === "function") { - return domEach(this, (el, i) => { - if (isTag2(el)) { - toggleClass.call([el], value.call(el, i, el.attribs["class"] || "", stateVal), stateVal); - } - }); - } - if (!value || typeof value !== "string") - return this; - const classNames = value.split(rspace); - const numClasses = classNames.length; - const state = typeof stateVal === "boolean" ? stateVal ? 1 : -1 : 0; - const numElements = this.length; - for (let i = 0; i < numElements; i++) { - const el = this[i]; - if (!isTag2(el)) - continue; - const elementClasses = splitNames(el.attribs["class"]); - for (let j = 0; j < numClasses; j++) { - const index2 = elementClasses.indexOf(classNames[j]); - if (state >= 0 && index2 === -1) { - elementClasses.push(classNames[j]); - } else if (state <= 0 && index2 !== -1) { - elementClasses.splice(index2, 1); - } - } - el.attribs["class"] = elementClasses.join(" "); - } - return this; -} - -// node_modules/cheerio/dist/browser/api/traversing.js -var traversing_exports = {}; -__export(traversing_exports, { - _findBySelector: () => _findBySelector, - add: () => add, - addBack: () => addBack, - children: () => children, - closest: () => closest, - contents: () => contents, - each: () => each, - end: () => end, - eq: () => eq, - filter: () => filter3, - filterArray: () => filterArray, - find: () => find3, - first: () => first, - get: () => get, - has: () => has, - index: () => index, - is: () => is3, - last: () => last, - map: () => map, - next: () => next, - nextAll: () => nextAll, - nextUntil: () => nextUntil, - not: () => not, - parent: () => parent, - parents: () => parents, - parentsUntil: () => parentsUntil, - prev: () => prev, - prevAll: () => prevAll, - prevUntil: () => prevUntil, - siblings: () => siblings, - slice: () => slice, - toArray: () => toArray -}); - -// node_modules/css-what/lib/es/types.js -var SelectorType; -(function(SelectorType2) { - SelectorType2["Attribute"] = "attribute"; - SelectorType2["Pseudo"] = "pseudo"; - SelectorType2["PseudoElement"] = "pseudo-element"; - SelectorType2["Tag"] = "tag"; - SelectorType2["Universal"] = "universal"; - SelectorType2["Adjacent"] = "adjacent"; - SelectorType2["Child"] = "child"; - SelectorType2["Descendant"] = "descendant"; - SelectorType2["Parent"] = "parent"; - SelectorType2["Sibling"] = "sibling"; - SelectorType2["ColumnCombinator"] = "column-combinator"; -})(SelectorType || (SelectorType = {})); -var AttributeAction; -(function(AttributeAction2) { - AttributeAction2["Any"] = "any"; - AttributeAction2["Element"] = "element"; - AttributeAction2["End"] = "end"; - AttributeAction2["Equals"] = "equals"; - AttributeAction2["Exists"] = "exists"; - AttributeAction2["Hyphen"] = "hyphen"; - AttributeAction2["Not"] = "not"; - AttributeAction2["Start"] = "start"; -})(AttributeAction || (AttributeAction = {})); - -// node_modules/css-what/lib/es/parse.js -var reName = /^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/; -var reEscape = /\\([\da-f]{1,6}\s?|(\s)|.)/gi; -var actionTypes = /* @__PURE__ */ new Map([ - [126, AttributeAction.Element], - [94, AttributeAction.Start], - [36, AttributeAction.End], - [42, AttributeAction.Any], - [33, AttributeAction.Not], - [124, AttributeAction.Hyphen] -]); -var unpackPseudos = /* @__PURE__ */ new Set([ - "has", - "not", - "matches", - "is", - "where", - "host", - "host-context" -]); -function isTraversal(selector) { - switch (selector.type) { - case SelectorType.Adjacent: - case SelectorType.Child: - case SelectorType.Descendant: - case SelectorType.Parent: - case SelectorType.Sibling: - case SelectorType.ColumnCombinator: - return true; - default: - return false; - } -} -var stripQuotesFromPseudos = /* @__PURE__ */ new Set(["contains", "icontains"]); -function funescape(_, escaped, escapedWhitespace) { - const high = parseInt(escaped, 16) - 65536; - return high !== high || escapedWhitespace ? escaped : high < 0 ? ( - // BMP codepoint - String.fromCharCode(high + 65536) - ) : ( - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320) - ); -} -function unescapeCSS(str) { - return str.replace(reEscape, funescape); -} -function isQuote(c) { - return c === 39 || c === 34; -} -function isWhitespace2(c) { - return c === 32 || c === 9 || c === 10 || c === 12 || c === 13; -} -function parse(selector) { - const subselects2 = []; - const endIndex = parseSelector(subselects2, `${selector}`, 0); - if (endIndex < selector.length) { - throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`); - } - return subselects2; -} -function parseSelector(subselects2, selector, selectorIndex) { - let tokens = []; - function getName2(offset) { - const match = selector.slice(selectorIndex + offset).match(reName); - if (!match) { - throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`); - } - const [name] = match; - selectorIndex += offset + name.length; - return unescapeCSS(name); - } - function stripWhitespace(offset) { - selectorIndex += offset; - while (selectorIndex < selector.length && isWhitespace2(selector.charCodeAt(selectorIndex))) { - selectorIndex++; - } - } - function readValueWithParenthesis() { - selectorIndex += 1; - const start = selectorIndex; - let counter = 1; - for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) { - if (selector.charCodeAt(selectorIndex) === 40 && !isEscaped(selectorIndex)) { - counter++; - } else if (selector.charCodeAt(selectorIndex) === 41 && !isEscaped(selectorIndex)) { - counter--; - } - } - if (counter) { - throw new Error("Parenthesis not matched"); - } - return unescapeCSS(selector.slice(start, selectorIndex - 1)); - } - function isEscaped(pos) { - let slashCount = 0; - while (selector.charCodeAt(--pos) === 92) - slashCount++; - return (slashCount & 1) === 1; - } - function ensureNotTraversal() { - if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) { - throw new Error("Did not expect successive traversals."); - } - } - function addTraversal(type) { - if (tokens.length > 0 && tokens[tokens.length - 1].type === SelectorType.Descendant) { - tokens[tokens.length - 1].type = type; - return; - } - ensureNotTraversal(); - tokens.push({ type }); - } - function addSpecialAttribute(name, action) { - tokens.push({ - type: SelectorType.Attribute, - name, - action, - value: getName2(1), - namespace: null, - ignoreCase: "quirks" - }); - } - function finalizeSubselector() { - if (tokens.length && tokens[tokens.length - 1].type === SelectorType.Descendant) { - tokens.pop(); - } - if (tokens.length === 0) { - throw new Error("Empty sub-selector"); - } - subselects2.push(tokens); - } - stripWhitespace(0); - if (selector.length === selectorIndex) { - return selectorIndex; - } - loop: while (selectorIndex < selector.length) { - const firstChar = selector.charCodeAt(selectorIndex); - switch (firstChar) { - // Whitespace - case 32: - case 9: - case 10: - case 12: - case 13: { - if (tokens.length === 0 || tokens[0].type !== SelectorType.Descendant) { - ensureNotTraversal(); - tokens.push({ type: SelectorType.Descendant }); - } - stripWhitespace(1); - break; - } - // Traversals - case 62: { - addTraversal(SelectorType.Child); - stripWhitespace(1); - break; - } - case 60: { - addTraversal(SelectorType.Parent); - stripWhitespace(1); - break; - } - case 126: { - addTraversal(SelectorType.Sibling); - stripWhitespace(1); - break; - } - case 43: { - addTraversal(SelectorType.Adjacent); - stripWhitespace(1); - break; - } - // Special attribute selectors: .class, #id - case 46: { - addSpecialAttribute("class", AttributeAction.Element); - break; - } - case 35: { - addSpecialAttribute("id", AttributeAction.Equals); - break; - } - case 91: { - stripWhitespace(1); - let name; - let namespace = null; - if (selector.charCodeAt(selectorIndex) === 124) { - name = getName2(1); - } else if (selector.startsWith("*|", selectorIndex)) { - namespace = "*"; - name = getName2(2); - } else { - name = getName2(0); - if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 61) { - namespace = name; - name = getName2(1); - } - } - stripWhitespace(0); - let action = AttributeAction.Exists; - const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex)); - if (possibleAction) { - action = possibleAction; - if (selector.charCodeAt(selectorIndex + 1) !== 61) { - throw new Error("Expected `=`"); - } - stripWhitespace(2); - } else if (selector.charCodeAt(selectorIndex) === 61) { - action = AttributeAction.Equals; - stripWhitespace(1); - } - let value = ""; - let ignoreCase = null; - if (action !== "exists") { - if (isQuote(selector.charCodeAt(selectorIndex))) { - const quote = selector.charCodeAt(selectorIndex); - let sectionEnd = selectorIndex + 1; - while (sectionEnd < selector.length && (selector.charCodeAt(sectionEnd) !== quote || isEscaped(sectionEnd))) { - sectionEnd += 1; - } - if (selector.charCodeAt(sectionEnd) !== quote) { - throw new Error("Attribute value didn't end"); - } - value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd)); - selectorIndex = sectionEnd + 1; - } else { - const valueStart = selectorIndex; - while (selectorIndex < selector.length && (!isWhitespace2(selector.charCodeAt(selectorIndex)) && selector.charCodeAt(selectorIndex) !== 93 || isEscaped(selectorIndex))) { - selectorIndex += 1; - } - value = unescapeCSS(selector.slice(valueStart, selectorIndex)); - } - stripWhitespace(0); - const forceIgnore = selector.charCodeAt(selectorIndex) | 32; - if (forceIgnore === 115) { - ignoreCase = false; - stripWhitespace(1); - } else if (forceIgnore === 105) { - ignoreCase = true; - stripWhitespace(1); - } - } - if (selector.charCodeAt(selectorIndex) !== 93) { - throw new Error("Attribute selector didn't terminate"); - } - selectorIndex += 1; - const attributeSelector = { - type: SelectorType.Attribute, - name, - action, - value, - namespace, - ignoreCase - }; - tokens.push(attributeSelector); - break; - } - case 58: { - if (selector.charCodeAt(selectorIndex + 1) === 58) { - tokens.push({ - type: SelectorType.PseudoElement, - name: getName2(2).toLowerCase(), - data: selector.charCodeAt(selectorIndex) === 40 ? readValueWithParenthesis() : null - }); - continue; - } - const name = getName2(1).toLowerCase(); - let data2 = null; - if (selector.charCodeAt(selectorIndex) === 40) { - if (unpackPseudos.has(name)) { - if (isQuote(selector.charCodeAt(selectorIndex + 1))) { - throw new Error(`Pseudo-selector ${name} cannot be quoted`); - } - data2 = []; - selectorIndex = parseSelector(data2, selector, selectorIndex + 1); - if (selector.charCodeAt(selectorIndex) !== 41) { - throw new Error(`Missing closing parenthesis in :${name} (${selector})`); - } - selectorIndex += 1; - } else { - data2 = readValueWithParenthesis(); - if (stripQuotesFromPseudos.has(name)) { - const quot = data2.charCodeAt(0); - if (quot === data2.charCodeAt(data2.length - 1) && isQuote(quot)) { - data2 = data2.slice(1, -1); - } - } - data2 = unescapeCSS(data2); - } - } - tokens.push({ type: SelectorType.Pseudo, name, data: data2 }); - break; - } - case 44: { - finalizeSubselector(); - tokens = []; - stripWhitespace(1); - break; - } - default: { - if (selector.startsWith("/*", selectorIndex)) { - const endIndex = selector.indexOf("*/", selectorIndex + 2); - if (endIndex < 0) { - throw new Error("Comment was not terminated"); - } - selectorIndex = endIndex + 2; - if (tokens.length === 0) { - stripWhitespace(0); - } - break; - } - let namespace = null; - let name; - if (firstChar === 42) { - selectorIndex += 1; - name = "*"; - } else if (firstChar === 124) { - name = ""; - if (selector.charCodeAt(selectorIndex + 1) === 124) { - addTraversal(SelectorType.ColumnCombinator); - stripWhitespace(2); - break; - } - } else if (reName.test(selector.slice(selectorIndex))) { - name = getName2(0); - } else { - break loop; - } - if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 124) { - namespace = name; - if (selector.charCodeAt(selectorIndex + 1) === 42) { - name = "*"; - selectorIndex += 2; - } else { - name = getName2(1); - } - } - tokens.push(name === "*" ? { type: SelectorType.Universal, namespace } : { type: SelectorType.Tag, name, namespace }); - } - } - } - finalizeSubselector(); - return selectorIndex; -} - -// node_modules/css-select/lib/esm/index.js -var import_boolbase6 = __toESM(require_boolbase(), 1); - -// node_modules/css-select/lib/esm/compile.js -var import_boolbase5 = __toESM(require_boolbase(), 1); - -// node_modules/css-select/lib/esm/sort.js -var procedure = /* @__PURE__ */ new Map([ - [SelectorType.Universal, 50], - [SelectorType.Tag, 30], - [SelectorType.Attribute, 1], - [SelectorType.Pseudo, 0] -]); -function isTraversal2(token) { - return !procedure.has(token.type); -} -var attributes = /* @__PURE__ */ new Map([ - [AttributeAction.Exists, 10], - [AttributeAction.Equals, 8], - [AttributeAction.Not, 7], - [AttributeAction.Start, 6], - [AttributeAction.End, 6], - [AttributeAction.Any, 5] -]); -function sortByProcedure(arr) { - const procs = arr.map(getProcedure); - for (let i = 1; i < arr.length; i++) { - const procNew = procs[i]; - if (procNew < 0) - continue; - for (let j = i - 1; j >= 0 && procNew < procs[j]; j--) { - const token = arr[j + 1]; - arr[j + 1] = arr[j]; - arr[j] = token; - procs[j + 1] = procs[j]; - procs[j] = procNew; - } - } -} -function getProcedure(token) { - var _a5, _b; - let proc = (_a5 = procedure.get(token.type)) !== null && _a5 !== void 0 ? _a5 : -1; - if (token.type === SelectorType.Attribute) { - proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4; - if (token.action === AttributeAction.Equals && token.name === "id") { - proc = 9; - } - if (token.ignoreCase) { - proc >>= 1; - } - } else if (token.type === SelectorType.Pseudo) { - if (!token.data) { - proc = 3; - } else if (token.name === "has" || token.name === "contains") { - proc = 0; - } else if (Array.isArray(token.data)) { - proc = Math.min(...token.data.map((d) => Math.min(...d.map(getProcedure)))); - if (proc < 0) { - proc = 0; - } - } else { - proc = 2; - } - } - return proc; -} - -// node_modules/css-select/lib/esm/attributes.js -var import_boolbase = __toESM(require_boolbase(), 1); -var reChars = /[-[\]{}()*+?.,\\^$|#\s]/g; -function escapeRegex(value) { - return value.replace(reChars, "\\$&"); -} -var caseInsensitiveAttributes = /* @__PURE__ */ new Set([ - "accept", - "accept-charset", - "align", - "alink", - "axis", - "bgcolor", - "charset", - "checked", - "clear", - "codetype", - "color", - "compact", - "declare", - "defer", - "dir", - "direction", - "disabled", - "enctype", - "face", - "frame", - "hreflang", - "http-equiv", - "lang", - "language", - "link", - "media", - "method", - "multiple", - "nohref", - "noresize", - "noshade", - "nowrap", - "readonly", - "rel", - "rev", - "rules", - "scope", - "scrolling", - "selected", - "shape", - "target", - "text", - "type", - "valign", - "valuetype", - "vlink" -]); -function shouldIgnoreCase(selector, options) { - return typeof selector.ignoreCase === "boolean" ? selector.ignoreCase : selector.ignoreCase === "quirks" ? !!options.quirksMode : !options.xmlMode && caseInsensitiveAttributes.has(selector.name); -} -var attributeRules = { - equals(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name } = data2; - let { value } = data2; - if (shouldIgnoreCase(data2, options)) { - value = value.toLowerCase(); - return (elem) => { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && attr2.length === value.length && attr2.toLowerCase() === value && next2(elem); - }; - } - return (elem) => adapter2.getAttributeValue(elem, name) === value && next2(elem); - }, - hyphen(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name } = data2; - let { value } = data2; - const len = value.length; - if (shouldIgnoreCase(data2, options)) { - value = value.toLowerCase(); - return function hyphenIC(elem) { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && (attr2.length === len || attr2.charAt(len) === "-") && attr2.substr(0, len).toLowerCase() === value && next2(elem); - }; - } - return function hyphen(elem) { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && (attr2.length === len || attr2.charAt(len) === "-") && attr2.substr(0, len) === value && next2(elem); - }; - }, - element(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name, value } = data2; - if (/\s/.test(value)) { - return import_boolbase.default.falseFunc; - } - const regex = new RegExp(`(?:^|\\s)${escapeRegex(value)}(?:$|\\s)`, shouldIgnoreCase(data2, options) ? "i" : ""); - return function element(elem) { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && attr2.length >= value.length && regex.test(attr2) && next2(elem); - }; - }, - exists(next2, { name }, { adapter: adapter2 }) { - return (elem) => adapter2.hasAttrib(elem, name) && next2(elem); - }, - start(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name } = data2; - let { value } = data2; - const len = value.length; - if (len === 0) { - return import_boolbase.default.falseFunc; - } - if (shouldIgnoreCase(data2, options)) { - value = value.toLowerCase(); - return (elem) => { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && attr2.length >= len && attr2.substr(0, len).toLowerCase() === value && next2(elem); - }; - } - return (elem) => { - var _a5; - return !!((_a5 = adapter2.getAttributeValue(elem, name)) === null || _a5 === void 0 ? void 0 : _a5.startsWith(value)) && next2(elem); - }; - }, - end(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name } = data2; - let { value } = data2; - const len = -value.length; - if (len === 0) { - return import_boolbase.default.falseFunc; - } - if (shouldIgnoreCase(data2, options)) { - value = value.toLowerCase(); - return (elem) => { - var _a5; - return ((_a5 = adapter2.getAttributeValue(elem, name)) === null || _a5 === void 0 ? void 0 : _a5.substr(len).toLowerCase()) === value && next2(elem); - }; - } - return (elem) => { - var _a5; - return !!((_a5 = adapter2.getAttributeValue(elem, name)) === null || _a5 === void 0 ? void 0 : _a5.endsWith(value)) && next2(elem); - }; - }, - any(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name, value } = data2; - if (value === "") { - return import_boolbase.default.falseFunc; - } - if (shouldIgnoreCase(data2, options)) { - const regex = new RegExp(escapeRegex(value), "i"); - return function anyIC(elem) { - const attr2 = adapter2.getAttributeValue(elem, name); - return attr2 != null && attr2.length >= value.length && regex.test(attr2) && next2(elem); - }; - } - return (elem) => { - var _a5; - return !!((_a5 = adapter2.getAttributeValue(elem, name)) === null || _a5 === void 0 ? void 0 : _a5.includes(value)) && next2(elem); - }; - }, - not(next2, data2, options) { - const { adapter: adapter2 } = options; - const { name } = data2; - let { value } = data2; - if (value === "") { - return (elem) => !!adapter2.getAttributeValue(elem, name) && next2(elem); - } else if (shouldIgnoreCase(data2, options)) { - value = value.toLowerCase(); - return (elem) => { - const attr2 = adapter2.getAttributeValue(elem, name); - return (attr2 == null || attr2.length !== value.length || attr2.toLowerCase() !== value) && next2(elem); - }; - } - return (elem) => adapter2.getAttributeValue(elem, name) !== value && next2(elem); - } -}; - -// node_modules/nth-check/lib/esm/parse.js -var whitespace = /* @__PURE__ */ new Set([9, 10, 12, 13, 32]); -var ZERO = "0".charCodeAt(0); -var NINE = "9".charCodeAt(0); -function parse2(formula) { - formula = formula.trim().toLowerCase(); - if (formula === "even") { - return [2, 0]; - } else if (formula === "odd") { - return [2, 1]; - } - let idx = 0; - let a = 0; - let sign = readSign(); - let number = readNumber(); - if (idx < formula.length && formula.charAt(idx) === "n") { - idx++; - a = sign * (number !== null && number !== void 0 ? number : 1); - skipWhitespace(); - if (idx < formula.length) { - sign = readSign(); - skipWhitespace(); - number = readNumber(); - } else { - sign = number = 0; - } - } - if (number === null || idx < formula.length) { - throw new Error(`n-th rule couldn't be parsed ('${formula}')`); - } - return [a, sign * number]; - function readSign() { - if (formula.charAt(idx) === "-") { - idx++; - return -1; - } - if (formula.charAt(idx) === "+") { - idx++; - } - return 1; - } - function readNumber() { - const start = idx; - let value = 0; - while (idx < formula.length && formula.charCodeAt(idx) >= ZERO && formula.charCodeAt(idx) <= NINE) { - value = value * 10 + (formula.charCodeAt(idx) - ZERO); - idx++; - } - return idx === start ? null : value; - } - function skipWhitespace() { - while (idx < formula.length && whitespace.has(formula.charCodeAt(idx))) { - idx++; - } - } -} - -// node_modules/nth-check/lib/esm/compile.js -var import_boolbase2 = __toESM(require_boolbase(), 1); -function compile(parsed) { - const a = parsed[0]; - const b = parsed[1] - 1; - if (b < 0 && a <= 0) - return import_boolbase2.default.falseFunc; - if (a === -1) - return (index2) => index2 <= b; - if (a === 0) - return (index2) => index2 === b; - if (a === 1) - return b < 0 ? import_boolbase2.default.trueFunc : (index2) => index2 >= b; - const absA = Math.abs(a); - const bMod = (b % absA + absA) % absA; - return a > 1 ? (index2) => index2 >= b && index2 % absA === bMod : (index2) => index2 <= b && index2 % absA === bMod; -} - -// node_modules/nth-check/lib/esm/index.js -function nthCheck(formula) { - return compile(parse2(formula)); -} - -// node_modules/css-select/lib/esm/pseudo-selectors/filters.js -var import_boolbase3 = __toESM(require_boolbase(), 1); -function getChildFunc(next2, adapter2) { - return (elem) => { - const parent2 = adapter2.getParent(elem); - return parent2 != null && adapter2.isTag(parent2) && next2(elem); - }; -} -var filters = { - contains(next2, text3, { adapter: adapter2 }) { - return function contains2(elem) { - return next2(elem) && adapter2.getText(elem).includes(text3); - }; - }, - icontains(next2, text3, { adapter: adapter2 }) { - const itext = text3.toLowerCase(); - return function icontains(elem) { - return next2(elem) && adapter2.getText(elem).toLowerCase().includes(itext); - }; - }, - // Location specific methods - "nth-child"(next2, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next2, adapter2); - return function nthChild(elem) { - const siblings2 = adapter2.getSiblings(elem); - let pos = 0; - for (let i = 0; i < siblings2.length; i++) { - if (equals(elem, siblings2[i])) - break; - if (adapter2.isTag(siblings2[i])) { - pos++; - } - } - return func(pos) && next2(elem); - }; - }, - "nth-last-child"(next2, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next2, adapter2); - return function nthLastChild(elem) { - const siblings2 = adapter2.getSiblings(elem); - let pos = 0; - for (let i = siblings2.length - 1; i >= 0; i--) { - if (equals(elem, siblings2[i])) - break; - if (adapter2.isTag(siblings2[i])) { - pos++; - } - } - return func(pos) && next2(elem); - }; - }, - "nth-of-type"(next2, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next2, adapter2); - return function nthOfType(elem) { - const siblings2 = adapter2.getSiblings(elem); - let pos = 0; - for (let i = 0; i < siblings2.length; i++) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === adapter2.getName(elem)) { - pos++; - } - } - return func(pos) && next2(elem); - }; - }, - "nth-last-of-type"(next2, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next2, adapter2); - return function nthLastOfType(elem) { - const siblings2 = adapter2.getSiblings(elem); - let pos = 0; - for (let i = siblings2.length - 1; i >= 0; i--) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === adapter2.getName(elem)) { - pos++; - } - } - return func(pos) && next2(elem); - }; - }, - // TODO determine the actual root element - root(next2, _rule, { adapter: adapter2 }) { - return (elem) => { - const parent2 = adapter2.getParent(elem); - return (parent2 == null || !adapter2.isTag(parent2)) && next2(elem); - }; - }, - scope(next2, rule, options, context) { - const { equals } = options; - if (!context || context.length === 0) { - return filters["root"](next2, rule, options); - } - if (context.length === 1) { - return (elem) => equals(context[0], elem) && next2(elem); - } - return (elem) => context.includes(elem) && next2(elem); - }, - hover: dynamicStatePseudo("isHovered"), - visited: dynamicStatePseudo("isVisited"), - active: dynamicStatePseudo("isActive") -}; -function dynamicStatePseudo(name) { - return function dynamicPseudo(next2, _rule, { adapter: adapter2 }) { - const func = adapter2[name]; - if (typeof func !== "function") { - return import_boolbase3.default.falseFunc; - } - return function active(elem) { - return func(elem) && next2(elem); - }; - }; -} - -// node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js -var pseudos = { - empty(elem, { adapter: adapter2 }) { - return !adapter2.getChildren(elem).some((elem2) => ( - // FIXME: `getText` call is potentially expensive. - adapter2.isTag(elem2) || adapter2.getText(elem2) !== "" - )); - }, - "first-child"(elem, { adapter: adapter2, equals }) { - if (adapter2.prevElementSibling) { - return adapter2.prevElementSibling(elem) == null; - } - const firstChild = adapter2.getSiblings(elem).find((elem2) => adapter2.isTag(elem2)); - return firstChild != null && equals(elem, firstChild); - }, - "last-child"(elem, { adapter: adapter2, equals }) { - const siblings2 = adapter2.getSiblings(elem); - for (let i = siblings2.length - 1; i >= 0; i--) { - if (equals(elem, siblings2[i])) - return true; - if (adapter2.isTag(siblings2[i])) - break; - } - return false; - }, - "first-of-type"(elem, { adapter: adapter2, equals }) { - const siblings2 = adapter2.getSiblings(elem); - const elemName = adapter2.getName(elem); - for (let i = 0; i < siblings2.length; i++) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - return true; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === elemName) { - break; - } - } - return false; - }, - "last-of-type"(elem, { adapter: adapter2, equals }) { - const siblings2 = adapter2.getSiblings(elem); - const elemName = adapter2.getName(elem); - for (let i = siblings2.length - 1; i >= 0; i--) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - return true; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === elemName) { - break; - } - } - return false; - }, - "only-of-type"(elem, { adapter: adapter2, equals }) { - const elemName = adapter2.getName(elem); - return adapter2.getSiblings(elem).every((sibling) => equals(elem, sibling) || !adapter2.isTag(sibling) || adapter2.getName(sibling) !== elemName); - }, - "only-child"(elem, { adapter: adapter2, equals }) { - return adapter2.getSiblings(elem).every((sibling) => equals(elem, sibling) || !adapter2.isTag(sibling)); - } -}; -function verifyPseudoArgs(func, name, subselect, argIndex) { - if (subselect === null) { - if (func.length > argIndex) { - throw new Error(`Pseudo-class :${name} requires an argument`); - } - } else if (func.length === argIndex) { - throw new Error(`Pseudo-class :${name} doesn't have any arguments`); - } -} - -// node_modules/css-select/lib/esm/pseudo-selectors/aliases.js -var aliases = { - // Links - "any-link": ":is(a, area, link)[href]", - link: ":any-link:not(:visited)", - // Forms - // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements - disabled: `:is( +var dn=Object.create;var nt=Object.defineProperty;var ln=Object.getOwnPropertyDescriptor;var fn=Object.getOwnPropertyNames;var hn=Object.getPrototypeOf,bn=Object.prototype.hasOwnProperty;var pn=(e,u)=>()=>(u||e((u={exports:{}}).exports,u),u.exports),le=(e,u)=>{for(var t in u)nt(e,t,{get:u[t],enumerable:!0})},Ba=(e,u,t,a)=>{if(u&&typeof u=="object"||typeof u=="function")for(let r of fn(u))!bn.call(e,r)&&r!==t&&nt(e,r,{get:()=>u[r],enumerable:!(a=ln(u,r))||a.enumerable});return e};var je=(e,u,t)=>(t=e!=null?dn(hn(e)):{},Ba(u||!e||!e.__esModule?nt(t,"default",{value:e,enumerable:!0}):t,e)),mn=e=>Ba(nt({},"__esModule",{value:!0}),e);var qe=pn((Wf,Lr)=>{Lr.exports={trueFunc:function(){return!0},falseFunc:function(){return!1}}});var qd={};le(qd,{default:()=>o0});module.exports=mn(qd);var I=require("obsidian");var Ne=require("obsidian");var re=require("obsidian"),st=class{constructor(u,t){this.item=null;this.containerEl=u,this.plugin=t}render(u){var P;this.item=u,this.containerEl.empty(),this.containerEl.addClass("raindrop-item-detail-view");let t=this.containerEl.createDiv({cls:"raindrop-detail-header"});t.createEl("h2",{text:u.title});let a=t.createDiv({cls:"raindrop-detail-actions"}),r=a.createEl("button",{cls:"clickable-icon"});(0,re.setIcon)(r,"download"),(0,re.setTooltip)(r,"Add to Obsidian"),r.onclick=async()=>{var L,M;try{await this.plugin.createRaindropNote({title:u.title,url:u.link,excerpt:u.excerpt||"",cover:u.cover||"",tags:u.tags?[...u.tags]:[],note:u.note||"",collectionId:((L=u.collection)==null?void 0:L.$id)||0,collectionName:((M=u.collection)==null?void 0:M.title)||"Unsorted"}),new re.Notice(`Created note for: ${u.title}`,3e3)}catch(R){new re.Notice(`Failed to create note: ${R.message}`,5e3),console.error("Error creating note from item detail:",R)}};let n=a.createEl("button",{cls:"clickable-icon"});(0,re.setIcon)(n,"external-link"),(0,re.setTooltip)(n,"Open Link in Browser"),n.onclick=()=>window.open(u.link,"_blank");let s=a.createEl("button",{cls:"clickable-icon"});(0,re.setIcon)(s,"pencil"),(0,re.setTooltip)(s,"Edit Bookmark (Not Implemented)"),s.onclick=()=>new re.Notice("Edit functionality coming soon!",2e3);let c=this.containerEl.createDiv({cls:"raindrop-detail-content"}),o=c.createDiv({cls:"raindrop-detail-metadata"}),f=o.createDiv({cls:"raindrop-detail-field"});f.createEl("span",{text:"Link:",cls:"raindrop-detail-label"}),f.createEl("a",{text:u.link,href:u.link,attr:{target:"_blank"},cls:"raindrop-detail-value"});let b=o.createDiv({cls:"raindrop-detail-field"});b.createEl("span",{text:"Type:",cls:"raindrop-detail-label"}),b.createEl("span",{text:u.type.charAt(0).toUpperCase()+u.type.slice(1),cls:"raindrop-detail-value"});let E=o.createDiv({cls:"raindrop-detail-field"});E.createEl("span",{text:"Collection:",cls:"raindrop-detail-label"}),E.createEl("span",{text:((P=u.collection)==null?void 0:P.title)||"Unsorted",cls:"raindrop-detail-value"});let g=o.createDiv({cls:"raindrop-detail-field"});g.createEl("span",{text:"Created:",cls:"raindrop-detail-label"}),g.createEl("span",{text:new Date(u.created).toLocaleDateString(),cls:"raindrop-detail-value"});let _=o.createDiv({cls:"raindrop-detail-field"});_.createEl("span",{text:"Updated:",cls:"raindrop-detail-label"}),_.createEl("span",{text:new Date(u.lastUpdate).toLocaleDateString(),cls:"raindrop-detail-value"}),u.excerpt&&(c.createEl("h3",{text:"Description"}),c.createEl("p",{text:u.excerpt})),u.note&&(c.createEl("h3",{text:"Personal Note"}),c.createEl("p",{text:u.note,cls:"raindrop-personal-note"}));let N=c.createDiv(),v=N.createDiv({cls:"raindrop-tags-header"});v.createEl("h3",{text:"Tags"});let S=v.createEl("button",{cls:"raindrop-tag-edit-btn"});if((0,re.setIcon)(S,"edit"),(0,re.setTooltip)(S,"Edit Tags"),S.onclick=()=>{new re.Notice("Tag editing coming soon!",2e3)},u.tags&&u.tags.length>0){let L=N.createDiv({cls:"raindrop-item-tags"});u.tags.forEach(M=>{let R=L.createSpan({text:`#${M}`,cls:"raindrop-tag"});R.title=M})}else N.createEl("p",{text:"No tags assigned",cls:"raindrop-no-tags"});if(u.cover&&(c.createEl("h3",{text:"Cover Image"}),c.createEl("img",{attr:{src:u.cover,alt:"Cover Image"}}).addClass("raindrop-detail-cover")),u.highlights&&u.highlights.length>0){c.createEl("h3",{text:"Highlights"});let L=c.createEl("ul",{cls:"raindrop-detail-highlights"});u.highlights.forEach(M=>{let R=L.createEl("li");R.createEl("p",{text:M.text,cls:"raindrop-highlight-text"}),M.note&&R.createEl("p",{text:`Note: ${M.note}`,cls:"raindrop-highlight-note"})})}}clear(){this.containerEl.empty(),this.containerEl.removeClass("raindrop-item-detail-view"),this.containerEl.createEl("h2",{text:"Bookmarks"}),this.containerEl.createEl("p",{text:"Select a collection to view bookmarks."})}};var ou="raindrop-view",ct=class extends Ne.ItemView{constructor(t,a){super(t);this.collections=[];this.collectionMap=new Map;this.collectionHierarchy=new Map;this.itemsByCollection=new Map;this.activeCollectionId=null;this.activeItem=null;this.searchInput=null;this.filteredItems=[];this.currentTab="list";this.plugin=a,this.contentEl=this.containerEl.children[1],this.contentEl.addClass("raindrop-dashboard")}getViewType(){return ou}getDisplayText(){return"Raindrop Dashboard"}getIcon(){return"cloud-download"}async onOpen(){this.contentEl.empty(),this.renderDashboard()}async onClose(){}handleSearch(){if(!this.searchInput||!this.activeCollectionId)return;let t=this.searchInput.value.toLowerCase().trim(),a=this.itemsByCollection.get(this.activeCollectionId)||[];t?this.filteredItems=a.filter(n=>{var s,c;return n.title.toLowerCase().includes(t)||((s=n.excerpt)==null?void 0:s.toLowerCase().includes(t))||((c=n.tags)==null?void 0:c.some(o=>o.toLowerCase().includes(t)))}):this.filteredItems=a;let r=document.getElementById("raindrop-items-list");r&&this.renderItemList(this.filteredItems,r)}switchTab(t){var r,n,s,c,o;this.currentTab=t;let a=(r=this.tabsContainer.parentElement)==null?void 0:r.querySelectorAll(".raindrop-tab-btn");a==null||a.forEach(f=>f.removeClass("active")),t==="list"?(s=(n=this.tabsContainer.parentElement)==null?void 0:n.querySelector(".raindrop-tab-btn:nth-child(1)"))==null||s.addClass("active"):(o=(c=this.tabsContainer.parentElement)==null?void 0:c.querySelector(".raindrop-tab-btn:nth-child(2)"))==null||o.addClass("active"),this.listTabContent.removeClass("active"),this.previewTabContent.removeClass("active"),t==="list"?this.listTabContent.addClass("active"):this.previewTabContent.addClass("active")}async renderDashboard(){this.contentEl.empty();let t=this.contentEl.createDiv({cls:"raindrop-header"});t.createEl("h1",{text:"RainSidian Dashboard"});let a=t.createDiv({cls:"raindrop-actions"}),r=a.createDiv({cls:"raindrop-search-bar"}),n=r.createEl("input",{type:"text",placeholder:"Search bookmarks...",cls:"search-input"});(0,Ne.setIcon)(r.createSpan({cls:"search-icon"}),"search"),this.searchInput=n,n.addEventListener("input",()=>this.handleSearch());let s=a.createEl("button",{text:"Add New",cls:"mod-cta"});(0,Ne.setIcon)(s,"plus"),s.onclick=async()=>{this.plugin.app.commands.executeCommandById("raindrop-to-obsidian:add-new-bookmark")};let c=this.contentEl.createDiv({cls:"raindrop-main-content"}),o=c.createDiv({cls:"raindrop-tab-nav"}),f=o.createEl("button",{text:"Collections & List",cls:"raindrop-tab-btn active"});f.onclick=()=>this.switchTab("list");let b=o.createEl("button",{text:"Preview",cls:"raindrop-tab-btn"});b.onclick=()=>this.switchTab("preview"),this.tabsContainer=c.createDiv({cls:"raindrop-tabs-container"}),this.listTabContent=this.tabsContainer.createDiv({cls:"raindrop-tab-content active"}),this.listTabContent.setAttr("data-tab","list");let E=this.listTabContent.createDiv({cls:"raindrop-list-layout"}),g=E.createDiv({cls:"raindrop-collections-panel"});g.createEl("h2",{text:"Collections"}),this.treeContainer=g.createDiv({cls:"raindrop-tree-container"});let _=E.createDiv({cls:"raindrop-items-panel"});_.createEl("h2",{text:"Bookmarks"});let N=_.createDiv({cls:"raindrop-items-list-container"});N.id="raindrop-items-list",this.previewTabContent=this.tabsContainer.createDiv({cls:"raindrop-tab-content"}),this.previewTabContent.setAttr("data-tab","preview"),this.itemDetailView=new st(this.previewTabContent,this.plugin),this.itemDetailView.clear(),await this.fetchAndRenderCollections(this.treeContainer,!0)}async fetchAndRenderCollections(t,a=!1){if(!this.plugin.settings.apiToken){t.createEl("p",{text:"Please set your Raindrop API token in the plugin settings to view collections.",cls:"mod-warning"});return}t.empty();let r=t.createEl("p",{text:"Loading collections..."});try{if(this.collections=await this.plugin.fetchAllUserCollections(),r.remove(),this.collections.length===0){t.createEl("p",{text:"No collections found."});return}if(this.buildHierarchy(),this.renderTree(t),a){let n=this.collectionHierarchy.get(0)||[];n.length>0&&this.setActiveCollection(n[0])}}catch(n){r.remove(),t.createEl("p",{text:"Error loading collections. Check console for details.",cls:"mod-error"}),console.error("Error fetching collections for view:",n)}}buildHierarchy(){this.collectionMap.clear(),this.collectionHierarchy.clear(),this.collections.forEach(t=>{this.collectionMap.set(t._id,t)}),this.collections.forEach(t=>{var r,n;let a=((r=t.parent)==null?void 0:r.$id)||0;this.collectionHierarchy.has(a)||this.collectionHierarchy.set(a,[]),(n=this.collectionHierarchy.get(a))==null||n.push(t._id)})}renderTree(t){t.empty();let a=this.collectionHierarchy.get(0)||[],r=t.createEl("ul",{cls:"tree-view-root"});a.forEach(n=>{this.renderCollectionNode(n,r)})}async setActiveCollection(t){this.treeContainer.querySelectorAll(".tree-item-self.is-active").forEach(s=>s.removeClass("is-active")),this.activeCollectionId=t;let a=this.treeContainer.querySelector(`.tree-item-self[data-collection-id="${this.activeCollectionId}"]`);a==null||a.addClass("is-active");let r=document.getElementById("raindrop-items-list");if(!r)return;r.empty();let n=r.createEl("p",{text:"Fetching bookmarks..."});try{let s=await this.plugin.fetchCollectionItems(t);this.itemsByCollection.set(t,s),this.filteredItems=s,n.remove(),this.renderItemList(s,r)}catch(s){n.remove(),r.createEl("p",{text:"Error fetching bookmarks.",cls:"mod-error"}),console.error("Error fetching items for collection:",s)}}showItemDetail(t){this.activeItem=t,this.itemDetailView.render(t);let a=document.getElementById("raindrop-items-list");a==null||a.querySelectorAll(".raindrop-item-card.is-active").forEach(n=>n.removeClass("is-active"));let r=a==null?void 0:a.querySelector(`.raindrop-item-card[data-item-id="${t._id}"]`);r==null||r.addClass("is-active"),this.switchTab("preview")}renderItemList(t,a){if(a.empty(),a.createEl("h2",{text:"Bookmarks"}),t.length===0){a.createEl("p",{text:"No bookmarks found in this collection."});return}let r=a.createDiv({cls:"raindrop-item-list"});t.forEach(n=>{let s=r.createDiv({cls:"raindrop-item-card"});s.setAttr("data-item-id",n._id);let c=s.createSpan({cls:"raindrop-item-icon"}),o="link";switch(n.type){case"article":o="file-text";break;case"image":o="image";break;case"video":o="film";break;case"document":o="file";break;case"audio":o="volume-2";break}(0,Ne.setIcon)(c,o),(0,Ne.setTooltip)(c,n.type.charAt(0).toUpperCase()+n.type.slice(1));let f=s.createDiv({cls:"raindrop-item-content-wrapper"});if(f.createDiv({cls:"raindrop-item-title"}).createEl("a",{text:n.title,href:n.link,attr:{target:"_blank"}}),n.excerpt&&f.createEl("p",{text:n.excerpt,cls:"raindrop-item-excerpt"}),n.tags&&n.tags.length>0){let E=f.createDiv({cls:"raindrop-item-tags"});n.tags.forEach(g=>{E.createSpan({text:`#${g}`,cls:"raindrop-tag"})})}s.onclick=E=>{E.target instanceof HTMLAnchorElement||this.showItemDetail(n)}})}renderCollectionNode(t,a){let r=this.collectionMap.get(t);if(!r)return;let n=a.createEl("li",{cls:"tree-item is-collapsed"}),s=n.createDiv({cls:"tree-item-self"});s.setAttr("data-collection-id",t);let c=s.createSpan({cls:"tree-item-icon collapse-icon"});(0,Ne.setIcon)(c,"folder"),s.createSpan({text:r.title,cls:"tree-item-inner"}),s.createSpan({text:` (${r.count||0})`,cls:"tree-item-extra"}),this.activeCollectionId===t&&s.addClass("is-active");let o=n.createEl("ul",{cls:"tree-view-children"});s.onclick=b=>{b.stopPropagation(),this.setActiveCollection(t),n.toggleClass("is-collapsed",!n.hasClass("is-collapsed")),(0,Ne.setIcon)(c,n.hasClass("is-collapsed")?"folder":"folder-open")},(this.collectionHierarchy.get(t)||[]).forEach(b=>{this.renderCollectionNode(b,o)})}};var Zi=require("obsidian");async function d0(e,u){return e.vault.adapter.exists(u)}async function l0(e,u){let t=await e.vault.adapter.stat(u);return(t==null?void 0:t.type)==="folder"}async function Ua(e,u){if(await d0(e,u)){if(await l0(e,u))return!0;throw new Error(`Path exists but is not a folder: ${u}`)}try{return await e.vault.createFolder(u),!0}catch(a){let r=a instanceof Error?a.message:String(a);throw new Error(`Failed to create folder at ${u}: ${r}`)}}function Ke(e){let u=/[/\\:*?"<>|#%&{}$!@'`+=]/g,t="";if(!e||e.trim()==="")return"Unnamed_Raindrop";let r=e.replace(u,t).trim();return(!r?"Unnamed_Raindrop":r).substring(0,200)}async function ot(e,u){if(!u||u==="/")return!0;try{if(await d0(e,u)){if(await l0(e,u))return!0;throw new Error(`Path exists but is not a folder: ${u}`)}let a=u.lastIndexOf("/");if(a>0){let r=u.substring(0,a);await ot(e,r)}return await Ua(e,u),!0}catch(t){let a=t instanceof Error?t.message:String(t);throw new Error(`Failed to create/verify folder: ${u}. Error: ${a}.`)}}var Fa=require("obsidian");function f0(e=60,u=300){let t=0,a=Date.now()+6e4;return{checkLimit:async()=>{let s=Date.now();if(s>a&&(a=s+6e4,t=0),t>=e){let c=a-s;console.log(`Rate limit reached. Waiting ${c}ms before next request.`),await new Promise(o=>setTimeout(o,c)),a=Date.now()+6e4,t=0}else await new Promise(c=>setTimeout(c,u));t++},resetCounter:()=>{a=Date.now()+6e4,t=0,console.log("Rate limiter counter reset.")}}}function Ha(e){return typeof e=="string"?JSON.parse(e):e}async function qa(e,u,t,a,r){let n=t>=a-1;return e.status===429||e.message&&e.message.includes("rate limit")?(console.log("Rate limit hit, resetting counter and waiting..."),u.resetCounter(),await new Promise(s=>setTimeout(s,r*2)),!0):(console.error(`Error in API request (attempt ${t+1}/${a}):`,e),n?!1:(await new Promise(s=>setTimeout(s,r)),!0))}async function ne(e,u,t,a,r=3,n=1e3){let s,c,o,f;typeof e=="string"?(c=e,o=u,f=t,typeof a=="number"&&(r=a)):(s=e,c=u,o=t,f=a);for(let b=0;b<r;b++){let E=b===r-1;try{await f.checkLimit();let g=await(0,Fa.request)({url:c,method:o.method||"GET",headers:o.headers,body:o.body});return Ha(g)}catch(g){if(!await qa(g,f,b,r,n)&&E)throw g}}throw new Error("Request failed after maximum retry attempts")}var Ji=require("obsidian");var v0={};le(v0,{contains:()=>It,extract:()=>ls,html:()=>ss,merge:()=>dr,parseHTML:()=>os,root:()=>ds,text:()=>tu,xml:()=>cs});var Oe={};le(Oe,{DocumentPosition:()=>pe,append:()=>Yn,appendChild:()=>qn,compareDocumentPosition:()=>nr,existsOne:()=>rr,filter:()=>bu,find:()=>xt,findAll:()=>Wn,findOne:()=>At,findOneChild:()=>Gn,getAttributeValue:()=>Bn,getChildren:()=>hu,getElementById:()=>Kn,getElements:()=>jn,getElementsByClassName:()=>zn,getElementsByTagName:()=>uu,getElementsByTagType:()=>Jn,getFeed:()=>M0,getInnerHTML:()=>vn,getName:()=>Fn,getOuterHTML:()=>tr,getParent:()=>ar,getSiblings:()=>w0,getText:()=>Et,hasAttrib:()=>Un,hasChildren:()=>H,innerText:()=>Ru,isCDATA:()=>du,isComment:()=>eu,isDocument:()=>be,isTag:()=>C,isText:()=>se,nextElementSibling:()=>Tt,prepend:()=>$n,prependChild:()=>Vn,prevElementSibling:()=>gt,removeElement:()=>Re,removeSubsets:()=>Zn,replaceElement:()=>Hn,testElement:()=>Xn,textContent:()=>Le,uniqueSort:()=>Ue});var fe={};le(fe,{CDATA:()=>A0,Comment:()=>E0,Directive:()=>m0,Doctype:()=>_0,ElementType:()=>U,Root:()=>b0,Script:()=>T0,Style:()=>g0,Tag:()=>x0,Text:()=>p0,isTag:()=>h0});var U;(function(e){e.Root="root",e.Text="text",e.Directive="directive",e.Comment="comment",e.Script="script",e.Style="style",e.Tag="tag",e.CDATA="cdata",e.Doctype="doctype"})(U||(U={}));function h0(e){return e.type===U.Tag||e.type===U.Script||e.type===U.Style}var b0=U.Root,p0=U.Text,m0=U.Directive,E0=U.Comment,T0=U.Script,g0=U.Style,x0=U.Tag,A0=U.CDATA,_0=U.Doctype;var dt=class{constructor(){this.parent=null,this.prev=null,this.next=null,this.startIndex=null,this.endIndex=null}get parentNode(){return this.parent}set parentNode(u){this.parent=u}get previousSibling(){return this.prev}set previousSibling(u){this.prev=u}get nextSibling(){return this.next}set nextSibling(u){this.next=u}cloneNode(u=!1){return lu(this,u)}},Su=class extends dt{constructor(u){super(),this.data=u}get nodeValue(){return this.data}set nodeValue(u){this.data=u}},Ie=class extends Su{constructor(){super(...arguments),this.type=U.Text}get nodeType(){return 3}},ze=class extends Su{constructor(){super(...arguments),this.type=U.Comment}get nodeType(){return 8}},Je=class extends Su{constructor(u,t){super(t),this.name=u,this.type=U.Directive}get nodeType(){return 1}},yu=class extends dt{constructor(u){super(),this.children=u}get firstChild(){var u;return(u=this.children[0])!==null&&u!==void 0?u:null}get lastChild(){return this.children.length>0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(u){this.children=u}},Du=class extends yu{constructor(){super(...arguments),this.type=U.CDATA}get nodeType(){return 4}},he=class extends yu{constructor(){super(...arguments),this.type=U.Root}get nodeType(){return 9}},Ze=class extends yu{constructor(u,t,a=[],r=u==="script"?U.Script:u==="style"?U.Style:U.Tag){super(a),this.name=u,this.attribs=t,this.type=r}get nodeType(){return 1}get tagName(){return this.name}set tagName(u){this.name=u}get attributes(){return Object.keys(this.attribs).map(u=>{var t,a;return{name:u,value:this.attribs[u],namespace:(t=this["x-attribsNamespace"])===null||t===void 0?void 0:t[u],prefix:(a=this["x-attribsPrefix"])===null||a===void 0?void 0:a[u]}})}};function C(e){return h0(e)}function du(e){return e.type===U.CDATA}function se(e){return e.type===U.Text}function eu(e){return e.type===U.Comment}function lt(e){return e.type===U.Directive}function be(e){return e.type===U.Root}function H(e){return Object.prototype.hasOwnProperty.call(e,"children")}function lu(e,u=!1){let t;if(se(e))t=new Ie(e.data);else if(eu(e))t=new ze(e.data);else if(C(e)){let a=u?N0(e.children):[],r=new Ze(e.name,{...e.attribs},a);a.forEach(n=>n.parent=r),e.namespace!=null&&(r.namespace=e.namespace),e["x-attribsNamespace"]&&(r["x-attribsNamespace"]={...e["x-attribsNamespace"]}),e["x-attribsPrefix"]&&(r["x-attribsPrefix"]={...e["x-attribsPrefix"]}),t=r}else if(du(e)){let a=u?N0(e.children):[],r=new Du(a);a.forEach(n=>n.parent=r),t=r}else if(be(e)){let a=u?N0(e.children):[],r=new he(a);a.forEach(n=>n.parent=r),e["x-mode"]&&(r["x-mode"]=e["x-mode"]),t=r}else if(lt(e)){let a=new Je(e.name,e.data);e["x-name"]!=null&&(a["x-name"]=e["x-name"],a["x-publicId"]=e["x-publicId"],a["x-systemId"]=e["x-systemId"]),t=a}else throw new Error(`Not implemented yet: ${e.type}`);return t.startIndex=e.startIndex,t.endIndex=e.endIndex,e.sourceCodeLocation!=null&&(t.sourceCodeLocation=e.sourceCodeLocation),t}function N0(e){let u=e.map(t=>lu(t,!0));for(let t=1;t<u.length;t++)u[t].prev=u[t-1],u[t-1].next=u[t];return u}var Ya={withStartIndices:!1,withEndIndices:!1,xmlMode:!1},fu=class{constructor(u,t,a){this.dom=[],this.root=new he(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,typeof t=="function"&&(a=t,t=Ya),typeof u=="object"&&(t=u,u=void 0),this.callback=u!=null?u:null,this.options=t!=null?t:Ya,this.elementCB=a!=null?a:null}onparserinit(u){this.parser=u}onreset(){this.dom=[],this.root=new he(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null}onend(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))}onerror(u){this.handleCallback(u)}onclosetag(){this.lastNode=null;let u=this.tagStack.pop();this.options.withEndIndices&&(u.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(u)}onopentag(u,t){let a=this.options.xmlMode?U.Tag:void 0,r=new Ze(u,t,void 0,a);this.addNode(r),this.tagStack.push(r)}ontext(u){let{lastNode:t}=this;if(t&&t.type===U.Text)t.data+=u,this.options.withEndIndices&&(t.endIndex=this.parser.endIndex);else{let a=new Ie(u);this.addNode(a),this.lastNode=a}}oncomment(u){if(this.lastNode&&this.lastNode.type===U.Comment){this.lastNode.data+=u;return}let t=new ze(u);this.addNode(t),this.lastNode=t}oncommentend(){this.lastNode=null}oncdatastart(){let u=new Ie(""),t=new Du([u]);this.addNode(t),u.parent=t,this.lastNode=u}oncdataend(){this.lastNode=null}onprocessinginstruction(u,t){let a=new Je(u,t);this.addNode(a)}handleCallback(u){if(typeof this.callback=="function")this.callback(u,this.dom);else if(u)throw u}addNode(u){let t=this.tagStack[this.tagStack.length-1],a=t.children[t.children.length-1];this.options.withStartIndices&&(u.startIndex=this.parser.startIndex),this.options.withEndIndices&&(u.endIndex=this.parser.endIndex),t.children.push(u),a&&(u.prev=a,a.next=u),u.parent=t,this.lastNode=null}};var Va=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(e=>e.charCodeAt(0)));var $a=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(e=>e.charCodeAt(0)));var I0,En=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),C0=(I0=String.fromCodePoint)!==null&&I0!==void 0?I0:function(e){let u="";return e>65535&&(e-=65536,u+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),u+=String.fromCharCode(e),u};function S0(e){var u;return e>=55296&&e<=57343||e>1114111?65533:(u=En.get(e))!==null&&u!==void 0?u:e}var j;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(j||(j={}));var Tn=32,Be;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(Be||(Be={}));function y0(e){return e>=j.ZERO&&e<=j.NINE}function gn(e){return e>=j.UPPER_A&&e<=j.UPPER_F||e>=j.LOWER_A&&e<=j.LOWER_F}function xn(e){return e>=j.UPPER_A&&e<=j.UPPER_Z||e>=j.LOWER_A&&e<=j.LOWER_Z||y0(e)}function An(e){return e===j.EQUALS||xn(e)}var X;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(X||(X={}));var De;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(De||(De={}));var ft=class{constructor(u,t,a){this.decodeTree=u,this.emitCodePoint=t,this.errors=a,this.state=X.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=De.Strict}startEntity(u){this.decodeMode=u,this.state=X.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(u,t){switch(this.state){case X.EntityStart:return u.charCodeAt(t)===j.NUM?(this.state=X.NumericStart,this.consumed+=1,this.stateNumericStart(u,t+1)):(this.state=X.NamedEntity,this.stateNamedEntity(u,t));case X.NumericStart:return this.stateNumericStart(u,t);case X.NumericDecimal:return this.stateNumericDecimal(u,t);case X.NumericHex:return this.stateNumericHex(u,t);case X.NamedEntity:return this.stateNamedEntity(u,t)}}stateNumericStart(u,t){return t>=u.length?-1:(u.charCodeAt(t)|Tn)===j.LOWER_X?(this.state=X.NumericHex,this.consumed+=1,this.stateNumericHex(u,t+1)):(this.state=X.NumericDecimal,this.stateNumericDecimal(u,t))}addToNumericResult(u,t,a,r){if(t!==a){let n=a-t;this.result=this.result*Math.pow(r,n)+parseInt(u.substr(t,n),r),this.consumed+=n}}stateNumericHex(u,t){let a=t;for(;t<u.length;){let r=u.charCodeAt(t);if(y0(r)||gn(r))t+=1;else return this.addToNumericResult(u,a,t,16),this.emitNumericEntity(r,3)}return this.addToNumericResult(u,a,t,16),-1}stateNumericDecimal(u,t){let a=t;for(;t<u.length;){let r=u.charCodeAt(t);if(y0(r))t+=1;else return this.addToNumericResult(u,a,t,10),this.emitNumericEntity(r,2)}return this.addToNumericResult(u,a,t,10),-1}emitNumericEntity(u,t){var a;if(this.consumed<=t)return(a=this.errors)===null||a===void 0||a.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(u===j.SEMI)this.consumed+=1;else if(this.decodeMode===De.Strict)return 0;return this.emitCodePoint(S0(this.result),this.consumed),this.errors&&(u!==j.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(u,t){let{decodeTree:a}=this,r=a[this.treeIndex],n=(r&Be.VALUE_LENGTH)>>14;for(;t<u.length;t++,this.excess++){let s=u.charCodeAt(t);if(this.treeIndex=_n(a,r,this.treeIndex+Math.max(1,n),s),this.treeIndex<0)return this.result===0||this.decodeMode===De.Attribute&&(n===0||An(s))?0:this.emitNotTerminatedNamedEntity();if(r=a[this.treeIndex],n=(r&Be.VALUE_LENGTH)>>14,n!==0){if(s===j.SEMI)return this.emitNamedEntityData(this.treeIndex,n,this.consumed+this.excess);this.decodeMode!==De.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var u;let{result:t,decodeTree:a}=this,r=(a[t]&Be.VALUE_LENGTH)>>14;return this.emitNamedEntityData(t,r,this.consumed),(u=this.errors)===null||u===void 0||u.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(u,t,a){let{decodeTree:r}=this;return this.emitCodePoint(t===1?r[u]&~Be.VALUE_LENGTH:r[u+1],a),t===3&&this.emitCodePoint(r[u+2],a),a}end(){var u;switch(this.state){case X.NamedEntity:return this.result!==0&&(this.decodeMode!==De.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case X.NumericDecimal:return this.emitNumericEntity(0,2);case X.NumericHex:return this.emitNumericEntity(0,3);case X.NumericStart:return(u=this.errors)===null||u===void 0||u.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case X.EntityStart:return 0}}};function Ga(e){let u="",t=new ft(e,a=>u+=C0(a));return function(r,n){let s=0,c=0;for(;(c=r.indexOf("&",c))>=0;){u+=r.slice(s,c),t.startEntity(n);let f=t.write(r,c+1);if(f<0){s=c+t.end();break}s=c+f,c=f===0?s+1:s}let o=u+r.slice(s);return u="",o}}function _n(e,u,t,a){let r=(u&Be.BRANCH_LENGTH)>>7,n=u&Be.JUMP_TABLE;if(r===0)return n!==0&&a===n?t:-1;if(n){let o=a-n;return o<0||o>=r?-1:e[t+o]-1}let s=t,c=s+r-1;for(;s<=c;){let o=s+c>>>1,f=e[o];if(f<a)s=o+1;else if(f>a)c=o-1;else return e[o+r]}return-1}var hl=Ga(Va),bl=Ga($a);function ht(e){for(let u=1;u<e.length;u++)e[u][0]+=e[u-1][0]+1;return e}var Nn=new Map(ht([[9," "],[0," "],[22,"!"],[0,"""],[0,"#"],[0,"$"],[0,"%"],[0,"&"],[0,"'"],[0,"("],[0,")"],[0,"*"],[0,"+"],[0,","],[1,"."],[0,"/"],[10,":"],[0,";"],[0,{v:"<",n:8402,o:"<⃒"}],[0,{v:"=",n:8421,o:"=⃥"}],[0,{v:">",n:8402,o:">⃒"}],[0,"?"],[0,"@"],[26,"["],[0,"\"],[0,"]"],[0,"^"],[0,"_"],[0,"`"],[5,{n:106,o:"fj"}],[20,"{"],[0,"|"],[0,"}"],[34," "],[0,"¡"],[0,"¢"],[0,"£"],[0,"¤"],[0,"¥"],[0,"¦"],[0,"§"],[0,"¨"],[0,"©"],[0,"ª"],[0,"«"],[0,"¬"],[0,"­"],[0,"®"],[0,"¯"],[0,"°"],[0,"±"],[0,"²"],[0,"³"],[0,"´"],[0,"µ"],[0,"¶"],[0,"·"],[0,"¸"],[0,"¹"],[0,"º"],[0,"»"],[0,"¼"],[0,"½"],[0,"¾"],[0,"¿"],[0,"À"],[0,"Á"],[0,"Â"],[0,"Ã"],[0,"Ä"],[0,"Å"],[0,"Æ"],[0,"Ç"],[0,"È"],[0,"É"],[0,"Ê"],[0,"Ë"],[0,"Ì"],[0,"Í"],[0,"Î"],[0,"Ï"],[0,"Ð"],[0,"Ñ"],[0,"Ò"],[0,"Ó"],[0,"Ô"],[0,"Õ"],[0,"Ö"],[0,"×"],[0,"Ø"],[0,"Ù"],[0,"Ú"],[0,"Û"],[0,"Ü"],[0,"Ý"],[0,"Þ"],[0,"ß"],[0,"à"],[0,"á"],[0,"â"],[0,"ã"],[0,"ä"],[0,"å"],[0,"æ"],[0,"ç"],[0,"è"],[0,"é"],[0,"ê"],[0,"ë"],[0,"ì"],[0,"í"],[0,"î"],[0,"ï"],[0,"ð"],[0,"ñ"],[0,"ò"],[0,"ó"],[0,"ô"],[0,"õ"],[0,"ö"],[0,"÷"],[0,"ø"],[0,"ù"],[0,"ú"],[0,"û"],[0,"ü"],[0,"ý"],[0,"þ"],[0,"ÿ"],[0,"Ā"],[0,"ā"],[0,"Ă"],[0,"ă"],[0,"Ą"],[0,"ą"],[0,"Ć"],[0,"ć"],[0,"Ĉ"],[0,"ĉ"],[0,"Ċ"],[0,"ċ"],[0,"Č"],[0,"č"],[0,"Ď"],[0,"ď"],[0,"Đ"],[0,"đ"],[0,"Ē"],[0,"ē"],[2,"Ė"],[0,"ė"],[0,"Ę"],[0,"ę"],[0,"Ě"],[0,"ě"],[0,"Ĝ"],[0,"ĝ"],[0,"Ğ"],[0,"ğ"],[0,"Ġ"],[0,"ġ"],[0,"Ģ"],[1,"Ĥ"],[0,"ĥ"],[0,"Ħ"],[0,"ħ"],[0,"Ĩ"],[0,"ĩ"],[0,"Ī"],[0,"ī"],[2,"Į"],[0,"į"],[0,"İ"],[0,"ı"],[0,"IJ"],[0,"ij"],[0,"Ĵ"],[0,"ĵ"],[0,"Ķ"],[0,"ķ"],[0,"ĸ"],[0,"Ĺ"],[0,"ĺ"],[0,"Ļ"],[0,"ļ"],[0,"Ľ"],[0,"ľ"],[0,"Ŀ"],[0,"ŀ"],[0,"Ł"],[0,"ł"],[0,"Ń"],[0,"ń"],[0,"Ņ"],[0,"ņ"],[0,"Ň"],[0,"ň"],[0,"ʼn"],[0,"Ŋ"],[0,"ŋ"],[0,"Ō"],[0,"ō"],[2,"Ő"],[0,"ő"],[0,"Œ"],[0,"œ"],[0,"Ŕ"],[0,"ŕ"],[0,"Ŗ"],[0,"ŗ"],[0,"Ř"],[0,"ř"],[0,"Ś"],[0,"ś"],[0,"Ŝ"],[0,"ŝ"],[0,"Ş"],[0,"ş"],[0,"Š"],[0,"š"],[0,"Ţ"],[0,"ţ"],[0,"Ť"],[0,"ť"],[0,"Ŧ"],[0,"ŧ"],[0,"Ũ"],[0,"ũ"],[0,"Ū"],[0,"ū"],[0,"Ŭ"],[0,"ŭ"],[0,"Ů"],[0,"ů"],[0,"Ű"],[0,"ű"],[0,"Ų"],[0,"ų"],[0,"Ŵ"],[0,"ŵ"],[0,"Ŷ"],[0,"ŷ"],[0,"Ÿ"],[0,"Ź"],[0,"ź"],[0,"Ż"],[0,"ż"],[0,"Ž"],[0,"ž"],[19,"ƒ"],[34,"Ƶ"],[63,"ǵ"],[65,"ȷ"],[142,"ˆ"],[0,"ˇ"],[16,"˘"],[0,"˙"],[0,"˚"],[0,"˛"],[0,"˜"],[0,"˝"],[51,"̑"],[127,"Α"],[0,"Β"],[0,"Γ"],[0,"Δ"],[0,"Ε"],[0,"Ζ"],[0,"Η"],[0,"Θ"],[0,"Ι"],[0,"Κ"],[0,"Λ"],[0,"Μ"],[0,"Ν"],[0,"Ξ"],[0,"Ο"],[0,"Π"],[0,"Ρ"],[1,"Σ"],[0,"Τ"],[0,"Υ"],[0,"Φ"],[0,"Χ"],[0,"Ψ"],[0,"Ω"],[7,"α"],[0,"β"],[0,"γ"],[0,"δ"],[0,"ε"],[0,"ζ"],[0,"η"],[0,"θ"],[0,"ι"],[0,"κ"],[0,"λ"],[0,"μ"],[0,"ν"],[0,"ξ"],[0,"ο"],[0,"π"],[0,"ρ"],[0,"ς"],[0,"σ"],[0,"τ"],[0,"υ"],[0,"φ"],[0,"χ"],[0,"ψ"],[0,"ω"],[7,"ϑ"],[0,"ϒ"],[2,"ϕ"],[0,"ϖ"],[5,"Ϝ"],[0,"ϝ"],[18,"ϰ"],[0,"ϱ"],[3,"ϵ"],[0,"϶"],[10,"Ё"],[0,"Ђ"],[0,"Ѓ"],[0,"Є"],[0,"Ѕ"],[0,"І"],[0,"Ї"],[0,"Ј"],[0,"Љ"],[0,"Њ"],[0,"Ћ"],[0,"Ќ"],[1,"Ў"],[0,"Џ"],[0,"А"],[0,"Б"],[0,"В"],[0,"Г"],[0,"Д"],[0,"Е"],[0,"Ж"],[0,"З"],[0,"И"],[0,"Й"],[0,"К"],[0,"Л"],[0,"М"],[0,"Н"],[0,"О"],[0,"П"],[0,"Р"],[0,"С"],[0,"Т"],[0,"У"],[0,"Ф"],[0,"Х"],[0,"Ц"],[0,"Ч"],[0,"Ш"],[0,"Щ"],[0,"Ъ"],[0,"Ы"],[0,"Ь"],[0,"Э"],[0,"Ю"],[0,"Я"],[0,"а"],[0,"б"],[0,"в"],[0,"г"],[0,"д"],[0,"е"],[0,"ж"],[0,"з"],[0,"и"],[0,"й"],[0,"к"],[0,"л"],[0,"м"],[0,"н"],[0,"о"],[0,"п"],[0,"р"],[0,"с"],[0,"т"],[0,"у"],[0,"ф"],[0,"х"],[0,"ц"],[0,"ч"],[0,"ш"],[0,"щ"],[0,"ъ"],[0,"ы"],[0,"ь"],[0,"э"],[0,"ю"],[0,"я"],[1,"ё"],[0,"ђ"],[0,"ѓ"],[0,"є"],[0,"ѕ"],[0,"і"],[0,"ї"],[0,"ј"],[0,"љ"],[0,"њ"],[0,"ћ"],[0,"ќ"],[1,"ў"],[0,"џ"],[7074," "],[0," "],[0," "],[0," "],[1," "],[0," "],[0," "],[0," "],[0,"​"],[0,"‌"],[0,"‍"],[0,"‎"],[0,"‏"],[0,"‐"],[2,"–"],[0,"—"],[0,"―"],[0,"‖"],[1,"‘"],[0,"’"],[0,"‚"],[1,"“"],[0,"”"],[0,"„"],[1,"†"],[0,"‡"],[0,"•"],[2,"‥"],[0,"…"],[9,"‰"],[0,"‱"],[0,"′"],[0,"″"],[0,"‴"],[0,"‵"],[3,"‹"],[0,"›"],[3,"‾"],[2,"⁁"],[1,"⁃"],[0,"⁄"],[10,"⁏"],[7,"⁗"],[7,{v:" ",n:8202,o:"  "}],[0,"⁠"],[0,"⁡"],[0,"⁢"],[0,"⁣"],[72,"€"],[46,"⃛"],[0,"⃜"],[37,"ℂ"],[2,"℅"],[4,"ℊ"],[0,"ℋ"],[0,"ℌ"],[0,"ℍ"],[0,"ℎ"],[0,"ℏ"],[0,"ℐ"],[0,"ℑ"],[0,"ℒ"],[0,"ℓ"],[1,"ℕ"],[0,"№"],[0,"℗"],[0,"℘"],[0,"ℙ"],[0,"ℚ"],[0,"ℛ"],[0,"ℜ"],[0,"ℝ"],[0,"℞"],[3,"™"],[1,"ℤ"],[2,"℧"],[0,"ℨ"],[0,"℩"],[2,"ℬ"],[0,"ℭ"],[1,"ℯ"],[0,"ℰ"],[0,"ℱ"],[1,"ℳ"],[0,"ℴ"],[0,"ℵ"],[0,"ℶ"],[0,"ℷ"],[0,"ℸ"],[12,"ⅅ"],[0,"ⅆ"],[0,"ⅇ"],[0,"ⅈ"],[10,"⅓"],[0,"⅔"],[0,"⅕"],[0,"⅖"],[0,"⅗"],[0,"⅘"],[0,"⅙"],[0,"⅚"],[0,"⅛"],[0,"⅜"],[0,"⅝"],[0,"⅞"],[49,"←"],[0,"↑"],[0,"→"],[0,"↓"],[0,"↔"],[0,"↕"],[0,"↖"],[0,"↗"],[0,"↘"],[0,"↙"],[0,"↚"],[0,"↛"],[1,{v:"↝",n:824,o:"↝̸"}],[0,"↞"],[0,"↟"],[0,"↠"],[0,"↡"],[0,"↢"],[0,"↣"],[0,"↤"],[0,"↥"],[0,"↦"],[0,"↧"],[1,"↩"],[0,"↪"],[0,"↫"],[0,"↬"],[0,"↭"],[0,"↮"],[1,"↰"],[0,"↱"],[0,"↲"],[0,"↳"],[1,"↵"],[0,"↶"],[0,"↷"],[2,"↺"],[0,"↻"],[0,"↼"],[0,"↽"],[0,"↾"],[0,"↿"],[0,"⇀"],[0,"⇁"],[0,"⇂"],[0,"⇃"],[0,"⇄"],[0,"⇅"],[0,"⇆"],[0,"⇇"],[0,"⇈"],[0,"⇉"],[0,"⇊"],[0,"⇋"],[0,"⇌"],[0,"⇍"],[0,"⇎"],[0,"⇏"],[0,"⇐"],[0,"⇑"],[0,"⇒"],[0,"⇓"],[0,"⇔"],[0,"⇕"],[0,"⇖"],[0,"⇗"],[0,"⇘"],[0,"⇙"],[0,"⇚"],[0,"⇛"],[1,"⇝"],[6,"⇤"],[0,"⇥"],[15,"⇵"],[7,"⇽"],[0,"⇾"],[0,"⇿"],[0,"∀"],[0,"∁"],[0,{v:"∂",n:824,o:"∂̸"}],[0,"∃"],[0,"∄"],[0,"∅"],[1,"∇"],[0,"∈"],[0,"∉"],[1,"∋"],[0,"∌"],[2,"∏"],[0,"∐"],[0,"∑"],[0,"−"],[0,"∓"],[0,"∔"],[1,"∖"],[0,"∗"],[0,"∘"],[1,"√"],[2,"∝"],[0,"∞"],[0,"∟"],[0,{v:"∠",n:8402,o:"∠⃒"}],[0,"∡"],[0,"∢"],[0,"∣"],[0,"∤"],[0,"∥"],[0,"∦"],[0,"∧"],[0,"∨"],[0,{v:"∩",n:65024,o:"∩︀"}],[0,{v:"∪",n:65024,o:"∪︀"}],[0,"∫"],[0,"∬"],[0,"∭"],[0,"∮"],[0,"∯"],[0,"∰"],[0,"∱"],[0,"∲"],[0,"∳"],[0,"∴"],[0,"∵"],[0,"∶"],[0,"∷"],[0,"∸"],[1,"∺"],[0,"∻"],[0,{v:"∼",n:8402,o:"∼⃒"}],[0,{v:"∽",n:817,o:"∽̱"}],[0,{v:"∾",n:819,o:"∾̳"}],[0,"∿"],[0,"≀"],[0,"≁"],[0,{v:"≂",n:824,o:"≂̸"}],[0,"≃"],[0,"≄"],[0,"≅"],[0,"≆"],[0,"≇"],[0,"≈"],[0,"≉"],[0,"≊"],[0,{v:"≋",n:824,o:"≋̸"}],[0,"≌"],[0,{v:"≍",n:8402,o:"≍⃒"}],[0,{v:"≎",n:824,o:"≎̸"}],[0,{v:"≏",n:824,o:"≏̸"}],[0,{v:"≐",n:824,o:"≐̸"}],[0,"≑"],[0,"≒"],[0,"≓"],[0,"≔"],[0,"≕"],[0,"≖"],[0,"≗"],[1,"≙"],[0,"≚"],[1,"≜"],[2,"≟"],[0,"≠"],[0,{v:"≡",n:8421,o:"≡⃥"}],[0,"≢"],[1,{v:"≤",n:8402,o:"≤⃒"}],[0,{v:"≥",n:8402,o:"≥⃒"}],[0,{v:"≦",n:824,o:"≦̸"}],[0,{v:"≧",n:824,o:"≧̸"}],[0,{v:"≨",n:65024,o:"≨︀"}],[0,{v:"≩",n:65024,o:"≩︀"}],[0,{v:"≪",n:new Map(ht([[824,"≪̸"],[7577,"≪⃒"]]))}],[0,{v:"≫",n:new Map(ht([[824,"≫̸"],[7577,"≫⃒"]]))}],[0,"≬"],[0,"≭"],[0,"≮"],[0,"≯"],[0,"≰"],[0,"≱"],[0,"≲"],[0,"≳"],[0,"≴"],[0,"≵"],[0,"≶"],[0,"≷"],[0,"≸"],[0,"≹"],[0,"≺"],[0,"≻"],[0,"≼"],[0,"≽"],[0,"≾"],[0,{v:"≿",n:824,o:"≿̸"}],[0,"⊀"],[0,"⊁"],[0,{v:"⊂",n:8402,o:"⊂⃒"}],[0,{v:"⊃",n:8402,o:"⊃⃒"}],[0,"⊄"],[0,"⊅"],[0,"⊆"],[0,"⊇"],[0,"⊈"],[0,"⊉"],[0,{v:"⊊",n:65024,o:"⊊︀"}],[0,{v:"⊋",n:65024,o:"⊋︀"}],[1,"⊍"],[0,"⊎"],[0,{v:"⊏",n:824,o:"⊏̸"}],[0,{v:"⊐",n:824,o:"⊐̸"}],[0,"⊑"],[0,"⊒"],[0,{v:"⊓",n:65024,o:"⊓︀"}],[0,{v:"⊔",n:65024,o:"⊔︀"}],[0,"⊕"],[0,"⊖"],[0,"⊗"],[0,"⊘"],[0,"⊙"],[0,"⊚"],[0,"⊛"],[1,"⊝"],[0,"⊞"],[0,"⊟"],[0,"⊠"],[0,"⊡"],[0,"⊢"],[0,"⊣"],[0,"⊤"],[0,"⊥"],[1,"⊧"],[0,"⊨"],[0,"⊩"],[0,"⊪"],[0,"⊫"],[0,"⊬"],[0,"⊭"],[0,"⊮"],[0,"⊯"],[0,"⊰"],[1,"⊲"],[0,"⊳"],[0,{v:"⊴",n:8402,o:"⊴⃒"}],[0,{v:"⊵",n:8402,o:"⊵⃒"}],[0,"⊶"],[0,"⊷"],[0,"⊸"],[0,"⊹"],[0,"⊺"],[0,"⊻"],[1,"⊽"],[0,"⊾"],[0,"⊿"],[0,"⋀"],[0,"⋁"],[0,"⋂"],[0,"⋃"],[0,"⋄"],[0,"⋅"],[0,"⋆"],[0,"⋇"],[0,"⋈"],[0,"⋉"],[0,"⋊"],[0,"⋋"],[0,"⋌"],[0,"⋍"],[0,"⋎"],[0,"⋏"],[0,"⋐"],[0,"⋑"],[0,"⋒"],[0,"⋓"],[0,"⋔"],[0,"⋕"],[0,"⋖"],[0,"⋗"],[0,{v:"⋘",n:824,o:"⋘̸"}],[0,{v:"⋙",n:824,o:"⋙̸"}],[0,{v:"⋚",n:65024,o:"⋚︀"}],[0,{v:"⋛",n:65024,o:"⋛︀"}],[2,"⋞"],[0,"⋟"],[0,"⋠"],[0,"⋡"],[0,"⋢"],[0,"⋣"],[2,"⋦"],[0,"⋧"],[0,"⋨"],[0,"⋩"],[0,"⋪"],[0,"⋫"],[0,"⋬"],[0,"⋭"],[0,"⋮"],[0,"⋯"],[0,"⋰"],[0,"⋱"],[0,"⋲"],[0,"⋳"],[0,"⋴"],[0,{v:"⋵",n:824,o:"⋵̸"}],[0,"⋶"],[0,"⋷"],[1,{v:"⋹",n:824,o:"⋹̸"}],[0,"⋺"],[0,"⋻"],[0,"⋼"],[0,"⋽"],[0,"⋾"],[6,"⌅"],[0,"⌆"],[1,"⌈"],[0,"⌉"],[0,"⌊"],[0,"⌋"],[0,"⌌"],[0,"⌍"],[0,"⌎"],[0,"⌏"],[0,"⌐"],[1,"⌒"],[0,"⌓"],[1,"⌕"],[0,"⌖"],[5,"⌜"],[0,"⌝"],[0,"⌞"],[0,"⌟"],[2,"⌢"],[0,"⌣"],[9,"⌭"],[0,"⌮"],[7,"⌶"],[6,"⌽"],[1,"⌿"],[60,"⍼"],[51,"⎰"],[0,"⎱"],[2,"⎴"],[0,"⎵"],[0,"⎶"],[37,"⏜"],[0,"⏝"],[0,"⏞"],[0,"⏟"],[2,"⏢"],[4,"⏧"],[59,"␣"],[164,"Ⓢ"],[55,"─"],[1,"│"],[9,"┌"],[3,"┐"],[3,"└"],[3,"┘"],[3,"├"],[7,"┤"],[7,"┬"],[7,"┴"],[7,"┼"],[19,"═"],[0,"║"],[0,"╒"],[0,"╓"],[0,"╔"],[0,"╕"],[0,"╖"],[0,"╗"],[0,"╘"],[0,"╙"],[0,"╚"],[0,"╛"],[0,"╜"],[0,"╝"],[0,"╞"],[0,"╟"],[0,"╠"],[0,"╡"],[0,"╢"],[0,"╣"],[0,"╤"],[0,"╥"],[0,"╦"],[0,"╧"],[0,"╨"],[0,"╩"],[0,"╪"],[0,"╫"],[0,"╬"],[19,"▀"],[3,"▄"],[3,"█"],[8,"░"],[0,"▒"],[0,"▓"],[13,"□"],[8,"▪"],[0,"▫"],[1,"▭"],[0,"▮"],[2,"▱"],[1,"△"],[0,"▴"],[0,"▵"],[2,"▸"],[0,"▹"],[3,"▽"],[0,"▾"],[0,"▿"],[2,"◂"],[0,"◃"],[6,"◊"],[0,"○"],[32,"◬"],[2,"◯"],[8,"◸"],[0,"◹"],[0,"◺"],[0,"◻"],[0,"◼"],[8,"★"],[0,"☆"],[7,"☎"],[49,"♀"],[1,"♂"],[29,"♠"],[2,"♣"],[1,"♥"],[0,"♦"],[3,"♪"],[2,"♭"],[0,"♮"],[0,"♯"],[163,"✓"],[3,"✗"],[8,"✠"],[21,"✶"],[33,"❘"],[25,"❲"],[0,"❳"],[84,"⟈"],[0,"⟉"],[28,"⟦"],[0,"⟧"],[0,"⟨"],[0,"⟩"],[0,"⟪"],[0,"⟫"],[0,"⟬"],[0,"⟭"],[7,"⟵"],[0,"⟶"],[0,"⟷"],[0,"⟸"],[0,"⟹"],[0,"⟺"],[1,"⟼"],[2,"⟿"],[258,"⤂"],[0,"⤃"],[0,"⤄"],[0,"⤅"],[6,"⤌"],[0,"⤍"],[0,"⤎"],[0,"⤏"],[0,"⤐"],[0,"⤑"],[0,"⤒"],[0,"⤓"],[2,"⤖"],[2,"⤙"],[0,"⤚"],[0,"⤛"],[0,"⤜"],[0,"⤝"],[0,"⤞"],[0,"⤟"],[0,"⤠"],[2,"⤣"],[0,"⤤"],[0,"⤥"],[0,"⤦"],[0,"⤧"],[0,"⤨"],[0,"⤩"],[0,"⤪"],[8,{v:"⤳",n:824,o:"⤳̸"}],[1,"⤵"],[0,"⤶"],[0,"⤷"],[0,"⤸"],[0,"⤹"],[2,"⤼"],[0,"⤽"],[7,"⥅"],[2,"⥈"],[0,"⥉"],[0,"⥊"],[0,"⥋"],[2,"⥎"],[0,"⥏"],[0,"⥐"],[0,"⥑"],[0,"⥒"],[0,"⥓"],[0,"⥔"],[0,"⥕"],[0,"⥖"],[0,"⥗"],[0,"⥘"],[0,"⥙"],[0,"⥚"],[0,"⥛"],[0,"⥜"],[0,"⥝"],[0,"⥞"],[0,"⥟"],[0,"⥠"],[0,"⥡"],[0,"⥢"],[0,"⥣"],[0,"⥤"],[0,"⥥"],[0,"⥦"],[0,"⥧"],[0,"⥨"],[0,"⥩"],[0,"⥪"],[0,"⥫"],[0,"⥬"],[0,"⥭"],[0,"⥮"],[0,"⥯"],[0,"⥰"],[0,"⥱"],[0,"⥲"],[0,"⥳"],[0,"⥴"],[0,"⥵"],[0,"⥶"],[1,"⥸"],[0,"⥹"],[1,"⥻"],[0,"⥼"],[0,"⥽"],[0,"⥾"],[0,"⥿"],[5,"⦅"],[0,"⦆"],[4,"⦋"],[0,"⦌"],[0,"⦍"],[0,"⦎"],[0,"⦏"],[0,"⦐"],[0,"⦑"],[0,"⦒"],[0,"⦓"],[0,"⦔"],[0,"⦕"],[0,"⦖"],[3,"⦚"],[1,"⦜"],[0,"⦝"],[6,"⦤"],[0,"⦥"],[0,"⦦"],[0,"⦧"],[0,"⦨"],[0,"⦩"],[0,"⦪"],[0,"⦫"],[0,"⦬"],[0,"⦭"],[0,"⦮"],[0,"⦯"],[0,"⦰"],[0,"⦱"],[0,"⦲"],[0,"⦳"],[0,"⦴"],[0,"⦵"],[0,"⦶"],[0,"⦷"],[1,"⦹"],[1,"⦻"],[0,"⦼"],[1,"⦾"],[0,"⦿"],[0,"⧀"],[0,"⧁"],[0,"⧂"],[0,"⧃"],[0,"⧄"],[0,"⧅"],[3,"⧉"],[3,"⧍"],[0,"⧎"],[0,{v:"⧏",n:824,o:"⧏̸"}],[0,{v:"⧐",n:824,o:"⧐̸"}],[11,"⧜"],[0,"⧝"],[0,"⧞"],[4,"⧣"],[0,"⧤"],[0,"⧥"],[5,"⧫"],[8,"⧴"],[1,"⧶"],[9,"⨀"],[0,"⨁"],[0,"⨂"],[1,"⨄"],[1,"⨆"],[5,"⨌"],[0,"⨍"],[2,"⨐"],[0,"⨑"],[0,"⨒"],[0,"⨓"],[0,"⨔"],[0,"⨕"],[0,"⨖"],[0,"⨗"],[10,"⨢"],[0,"⨣"],[0,"⨤"],[0,"⨥"],[0,"⨦"],[0,"⨧"],[1,"⨩"],[0,"⨪"],[2,"⨭"],[0,"⨮"],[0,"⨯"],[0,"⨰"],[0,"⨱"],[1,"⨳"],[0,"⨴"],[0,"⨵"],[0,"⨶"],[0,"⨷"],[0,"⨸"],[0,"⨹"],[0,"⨺"],[0,"⨻"],[0,"⨼"],[2,"⨿"],[0,"⩀"],[1,"⩂"],[0,"⩃"],[0,"⩄"],[0,"⩅"],[0,"⩆"],[0,"⩇"],[0,"⩈"],[0,"⩉"],[0,"⩊"],[0,"⩋"],[0,"⩌"],[0,"⩍"],[2,"⩐"],[2,"⩓"],[0,"⩔"],[0,"⩕"],[0,"⩖"],[0,"⩗"],[0,"⩘"],[1,"⩚"],[0,"⩛"],[0,"⩜"],[0,"⩝"],[1,"⩟"],[6,"⩦"],[3,"⩪"],[2,{v:"⩭",n:824,o:"⩭̸"}],[0,"⩮"],[0,"⩯"],[0,{v:"⩰",n:824,o:"⩰̸"}],[0,"⩱"],[0,"⩲"],[0,"⩳"],[0,"⩴"],[0,"⩵"],[1,"⩷"],[0,"⩸"],[0,"⩹"],[0,"⩺"],[0,"⩻"],[0,"⩼"],[0,{v:"⩽",n:824,o:"⩽̸"}],[0,{v:"⩾",n:824,o:"⩾̸"}],[0,"⩿"],[0,"⪀"],[0,"⪁"],[0,"⪂"],[0,"⪃"],[0,"⪄"],[0,"⪅"],[0,"⪆"],[0,"⪇"],[0,"⪈"],[0,"⪉"],[0,"⪊"],[0,"⪋"],[0,"⪌"],[0,"⪍"],[0,"⪎"],[0,"⪏"],[0,"⪐"],[0,"⪑"],[0,"⪒"],[0,"⪓"],[0,"⪔"],[0,"⪕"],[0,"⪖"],[0,"⪗"],[0,"⪘"],[0,"⪙"],[0,"⪚"],[2,"⪝"],[0,"⪞"],[0,"⪟"],[0,"⪠"],[0,{v:"⪡",n:824,o:"⪡̸"}],[0,{v:"⪢",n:824,o:"⪢̸"}],[1,"⪤"],[0,"⪥"],[0,"⪦"],[0,"⪧"],[0,"⪨"],[0,"⪩"],[0,"⪪"],[0,"⪫"],[0,{v:"⪬",n:65024,o:"⪬︀"}],[0,{v:"⪭",n:65024,o:"⪭︀"}],[0,"⪮"],[0,{v:"⪯",n:824,o:"⪯̸"}],[0,{v:"⪰",n:824,o:"⪰̸"}],[2,"⪳"],[0,"⪴"],[0,"⪵"],[0,"⪶"],[0,"⪷"],[0,"⪸"],[0,"⪹"],[0,"⪺"],[0,"⪻"],[0,"⪼"],[0,"⪽"],[0,"⪾"],[0,"⪿"],[0,"⫀"],[0,"⫁"],[0,"⫂"],[0,"⫃"],[0,"⫄"],[0,{v:"⫅",n:824,o:"⫅̸"}],[0,{v:"⫆",n:824,o:"⫆̸"}],[0,"⫇"],[0,"⫈"],[2,{v:"⫋",n:65024,o:"⫋︀"}],[0,{v:"⫌",n:65024,o:"⫌︀"}],[2,"⫏"],[0,"⫐"],[0,"⫑"],[0,"⫒"],[0,"⫓"],[0,"⫔"],[0,"⫕"],[0,"⫖"],[0,"⫗"],[0,"⫘"],[0,"⫙"],[0,"⫚"],[0,"⫛"],[8,"⫤"],[1,"⫦"],[0,"⫧"],[0,"⫨"],[0,"⫩"],[1,"⫫"],[0,"⫬"],[0,"⫭"],[0,"⫮"],[0,"⫯"],[0,"⫰"],[0,"⫱"],[0,"⫲"],[0,"⫳"],[9,{v:"⫽",n:8421,o:"⫽⃥"}],[44343,{n:new Map(ht([[56476,"𝒜"],[1,"𝒞"],[0,"𝒟"],[2,"𝒢"],[2,"𝒥"],[0,"𝒦"],[2,"𝒩"],[0,"𝒪"],[0,"𝒫"],[0,"𝒬"],[1,"𝒮"],[0,"𝒯"],[0,"𝒰"],[0,"𝒱"],[0,"𝒲"],[0,"𝒳"],[0,"𝒴"],[0,"𝒵"],[0,"𝒶"],[0,"𝒷"],[0,"𝒸"],[0,"𝒹"],[1,"𝒻"],[1,"𝒽"],[0,"𝒾"],[0,"𝒿"],[0,"𝓀"],[0,"𝓁"],[0,"𝓂"],[0,"𝓃"],[1,"𝓅"],[0,"𝓆"],[0,"𝓇"],[0,"𝓈"],[0,"𝓉"],[0,"𝓊"],[0,"𝓋"],[0,"𝓌"],[0,"𝓍"],[0,"𝓎"],[0,"𝓏"],[52,"𝔄"],[0,"𝔅"],[1,"𝔇"],[0,"𝔈"],[0,"𝔉"],[0,"𝔊"],[2,"𝔍"],[0,"𝔎"],[0,"𝔏"],[0,"𝔐"],[0,"𝔑"],[0,"𝔒"],[0,"𝔓"],[0,"𝔔"],[1,"𝔖"],[0,"𝔗"],[0,"𝔘"],[0,"𝔙"],[0,"𝔚"],[0,"𝔛"],[0,"𝔜"],[1,"𝔞"],[0,"𝔟"],[0,"𝔠"],[0,"𝔡"],[0,"𝔢"],[0,"𝔣"],[0,"𝔤"],[0,"𝔥"],[0,"𝔦"],[0,"𝔧"],[0,"𝔨"],[0,"𝔩"],[0,"𝔪"],[0,"𝔫"],[0,"𝔬"],[0,"𝔭"],[0,"𝔮"],[0,"𝔯"],[0,"𝔰"],[0,"𝔱"],[0,"𝔲"],[0,"𝔳"],[0,"𝔴"],[0,"𝔵"],[0,"𝔶"],[0,"𝔷"],[0,"𝔸"],[0,"𝔹"],[1,"𝔻"],[0,"𝔼"],[0,"𝔽"],[0,"𝔾"],[1,"𝕀"],[0,"𝕁"],[0,"𝕂"],[0,"𝕃"],[0,"𝕄"],[1,"𝕆"],[3,"𝕊"],[0,"𝕋"],[0,"𝕌"],[0,"𝕍"],[0,"𝕎"],[0,"𝕏"],[0,"𝕐"],[1,"𝕒"],[0,"𝕓"],[0,"𝕔"],[0,"𝕕"],[0,"𝕖"],[0,"𝕗"],[0,"𝕘"],[0,"𝕙"],[0,"𝕚"],[0,"𝕛"],[0,"𝕜"],[0,"𝕝"],[0,"𝕞"],[0,"𝕟"],[0,"𝕠"],[0,"𝕡"],[0,"𝕢"],[0,"𝕣"],[0,"𝕤"],[0,"𝕥"],[0,"𝕦"],[0,"𝕧"],[0,"𝕨"],[0,"𝕩"],[0,"𝕪"],[0,"𝕫"]]))}],[8906,"ff"],[0,"fi"],[0,"fl"],[0,"ffi"],[0,"ffl"]]));var D0=/["&'<>$\x80-\uFFFF]/g,Wa=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),Qa=String.prototype.codePointAt!=null?(e,u)=>e.codePointAt(u):(e,u)=>(e.charCodeAt(u)&64512)===55296?(e.charCodeAt(u)-55296)*1024+e.charCodeAt(u+1)-56320+65536:e.charCodeAt(u);function Lu(e){let u="",t=0,a;for(;(a=D0.exec(e))!==null;){let r=a.index,n=e.charCodeAt(r),s=Wa.get(n);s!==void 0?(u+=e.substring(t,r)+s,t=r+1):(u+=`${e.substring(t,r)}&#x${Qa(e,r).toString(16)};`,t=D0.lastIndex+=+((n&64512)===55296))}return u+e.substr(t)}function L0(e,u){return function(a){let r,n=0,s="";for(;r=e.exec(a);)n!==r.index&&(s+=a.substring(n,r.index)),s+=u.get(r[0].charCodeAt(0)),n=r.index+1;return s+a.substring(n)}}var Xa=L0(/[&<>'"]/g,Wa),bt=L0(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),pt=L0(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]));var ja;(function(e){e[e.XML=0]="XML",e[e.HTML=1]="HTML"})(ja||(ja={}));var Ka;(function(e){e[e.UTF8=0]="UTF8",e[e.ASCII=1]="ASCII",e[e.Extensive=2]="Extensive",e[e.Attribute=3]="Attribute",e[e.Text=4]="Text"})(Ka||(Ka={}));var Za=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),er=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e]));var Cn=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function Sn(e){return e.replace(/"/g,""")}function yn(e,u){var t;if(!e)return;let a=((t=u.encodeEntities)!==null&&t!==void 0?t:u.decodeEntities)===!1?Sn:u.xmlMode||u.encodeEntities!=="utf8"?Lu:bt;return Object.keys(e).map(r=>{var n,s;let c=(n=e[r])!==null&&n!==void 0?n:"";return u.xmlMode==="foreign"&&(r=(s=er.get(r))!==null&&s!==void 0?s:r),!u.emptyAttrs&&!u.xmlMode&&c===""?r:`${r}="${a(c)}"`}).join(" ")}var ur=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);function P0(e,u={}){let t="length"in e?e:[e],a="";for(let r=0;r<t.length;r++)a+=Dn(t[r],u);return a}var mt=P0;function Dn(e,u){switch(e.type){case b0:return P0(e.children,u);case _0:case m0:return Pn(e);case E0:return Mn(e);case A0:return kn(e);case T0:case g0:case x0:return On(e,u);case p0:return wn(e,u)}}var Ln=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),Rn=new Set(["svg","math"]);function On(e,u){var t;u.xmlMode==="foreign"&&(e.name=(t=Za.get(e.name))!==null&&t!==void 0?t:e.name,e.parent&&Ln.has(e.parent.name)&&(u={...u,xmlMode:!1})),!u.xmlMode&&Rn.has(e.name)&&(u={...u,xmlMode:"foreign"});let a=`<${e.name}`,r=yn(e.attribs,u);return r&&(a+=` ${r}`),e.children.length===0&&(u.xmlMode?u.selfClosingTags!==!1:u.selfClosingTags&&ur.has(e.name))?(u.xmlMode||(a+=" "),a+="/>"):(a+=">",e.children.length>0&&(a+=P0(e.children,u)),(u.xmlMode||!ur.has(e.name))&&(a+=`</${e.name}>`)),a}function Pn(e){return`<${e.data}>`}function wn(e,u){var t;let a=e.data||"";return((t=u.encodeEntities)!==null&&t!==void 0?t:u.decodeEntities)!==!1&&!(!u.xmlMode&&e.parent&&Cn.has(e.parent.name))&&(a=u.xmlMode||u.encodeEntities!=="utf8"?Lu(a):pt(a)),a}function kn(e){return`<![CDATA[${e.children[0].data}]]>`}function Mn(e){return`<!--${e.data}-->`}function tr(e,u){return mt(e,u)}function vn(e,u){return H(e)?e.children.map(t=>tr(t,u)).join(""):""}function Et(e){return Array.isArray(e)?e.map(Et).join(""):C(e)?e.name==="br"?` +`:Et(e.children):du(e)?Et(e.children):se(e)?e.data:""}function Le(e){return Array.isArray(e)?e.map(Le).join(""):H(e)&&!eu(e)?Le(e.children):se(e)?e.data:""}function Ru(e){return Array.isArray(e)?e.map(Ru).join(""):H(e)&&(e.type===U.Tag||du(e))?Ru(e.children):se(e)?e.data:""}function hu(e){return H(e)?e.children:[]}function ar(e){return e.parent||null}function w0(e){let u=ar(e);if(u!=null)return hu(u);let t=[e],{prev:a,next:r}=e;for(;a!=null;)t.unshift(a),{prev:a}=a;for(;r!=null;)t.push(r),{next:r}=r;return t}function Bn(e,u){var t;return(t=e.attribs)===null||t===void 0?void 0:t[u]}function Un(e,u){return e.attribs!=null&&Object.prototype.hasOwnProperty.call(e.attribs,u)&&e.attribs[u]!=null}function Fn(e){return e.name}function Tt(e){let{next:u}=e;for(;u!==null&&!C(u);)({next:u}=u);return u}function gt(e){let{prev:u}=e;for(;u!==null&&!C(u);)({prev:u}=u);return u}function Re(e){if(e.prev&&(e.prev.next=e.next),e.next&&(e.next.prev=e.prev),e.parent){let u=e.parent.children,t=u.lastIndexOf(e);t>=0&&u.splice(t,1)}e.next=null,e.prev=null,e.parent=null}function Hn(e,u){let t=u.prev=e.prev;t&&(t.next=u);let a=u.next=e.next;a&&(a.prev=u);let r=u.parent=e.parent;if(r){let n=r.children;n[n.lastIndexOf(e)]=u,e.parent=null}}function qn(e,u){if(Re(u),u.next=null,u.parent=e,e.children.push(u)>1){let t=e.children[e.children.length-2];t.next=u,u.prev=t}else u.prev=null}function Yn(e,u){Re(u);let{parent:t}=e,a=e.next;if(u.next=a,u.prev=e,e.next=u,u.parent=t,a){if(a.prev=u,t){let r=t.children;r.splice(r.lastIndexOf(a),0,u)}}else t&&t.children.push(u)}function Vn(e,u){if(Re(u),u.parent=e,u.prev=null,e.children.unshift(u)!==1){let t=e.children[1];t.prev=u,u.next=t}else u.next=null}function $n(e,u){Re(u);let{parent:t}=e;if(t){let a=t.children;a.splice(a.indexOf(e),0,u)}e.prev&&(e.prev.next=u),u.parent=t,u.prev=e.prev,u.next=e,e.prev=u}function bu(e,u,t=!0,a=1/0){return xt(e,Array.isArray(u)?u:[u],t,a)}function xt(e,u,t,a){let r=[],n=[Array.isArray(u)?u:[u]],s=[0];for(;;){if(s[0]>=n[0].length){if(s.length===1)return r;n.shift(),s.shift();continue}let c=n[0][s[0]++];if(e(c)&&(r.push(c),--a<=0))return r;t&&H(c)&&c.children.length>0&&(s.unshift(0),n.unshift(c.children))}}function Gn(e,u){return u.find(e)}function At(e,u,t=!0){let a=Array.isArray(u)?u:[u];for(let r=0;r<a.length;r++){let n=a[r];if(C(n)&&e(n))return n;if(t&&H(n)&&n.children.length>0){let s=At(e,n.children,!0);if(s)return s}}return null}function rr(e,u){return(Array.isArray(u)?u:[u]).some(t=>C(t)&&e(t)||H(t)&&rr(e,t.children))}function Wn(e,u){let t=[],a=[Array.isArray(u)?u:[u]],r=[0];for(;;){if(r[0]>=a[0].length){if(a.length===1)return t;a.shift(),r.shift();continue}let n=a[0][r[0]++];C(n)&&e(n)&&t.push(n),H(n)&&n.children.length>0&&(r.unshift(0),a.unshift(n.children))}}var _t={tag_name(e){return typeof e=="function"?u=>C(u)&&e(u.name):e==="*"?C:u=>C(u)&&u.name===e},tag_type(e){return typeof e=="function"?u=>e(u.type):u=>u.type===e},tag_contains(e){return typeof e=="function"?u=>se(u)&&e(u.data):u=>se(u)&&u.data===e}};function k0(e,u){return typeof u=="function"?t=>C(t)&&u(t.attribs[e]):t=>C(t)&&t.attribs[e]===u}function Qn(e,u){return t=>e(t)||u(t)}function ir(e){let u=Object.keys(e).map(t=>{let a=e[t];return Object.prototype.hasOwnProperty.call(_t,t)?_t[t](a):k0(t,a)});return u.length===0?null:u.reduce(Qn)}function Xn(e,u){let t=ir(e);return t?t(u):!0}function jn(e,u,t,a=1/0){let r=ir(e);return r?bu(r,u,t,a):[]}function Kn(e,u,t=!0){return Array.isArray(u)||(u=[u]),At(k0("id",e),u,t)}function uu(e,u,t=!0,a=1/0){return bu(_t.tag_name(e),u,t,a)}function zn(e,u,t=!0,a=1/0){return bu(k0("class",e),u,t,a)}function Jn(e,u,t=!0,a=1/0){return bu(_t.tag_type(e),u,t,a)}function Zn(e){let u=e.length;for(;--u>=0;){let t=e[u];if(u>0&&e.lastIndexOf(t,u-1)>=0){e.splice(u,1);continue}for(let a=t.parent;a;a=a.parent)if(e.includes(a)){e.splice(u,1);break}}return e}var pe;(function(e){e[e.DISCONNECTED=1]="DISCONNECTED",e[e.PRECEDING=2]="PRECEDING",e[e.FOLLOWING=4]="FOLLOWING",e[e.CONTAINS=8]="CONTAINS",e[e.CONTAINED_BY=16]="CONTAINED_BY"})(pe||(pe={}));function nr(e,u){let t=[],a=[];if(e===u)return 0;let r=H(e)?e:e.parent;for(;r;)t.unshift(r),r=r.parent;for(r=H(u)?u:u.parent;r;)a.unshift(r),r=r.parent;let n=Math.min(t.length,a.length),s=0;for(;s<n&&t[s]===a[s];)s++;if(s===0)return pe.DISCONNECTED;let c=t[s-1],o=c.children,f=t[s],b=a[s];return o.indexOf(f)>o.indexOf(b)?c===u?pe.FOLLOWING|pe.CONTAINED_BY:pe.FOLLOWING:c===e?pe.PRECEDING|pe.CONTAINS:pe.PRECEDING}function Ue(e){return e=e.filter((u,t,a)=>!a.includes(u,t+1)),e.sort((u,t)=>{let a=nr(u,t);return a&pe.PRECEDING?-1:a&pe.FOLLOWING?1:0}),e}function M0(e){let u=Nt(rs,e);return u?u.name==="feed"?es(u):us(u):null}function es(e){var u;let t=e.children,a={type:"atom",items:uu("entry",t).map(s=>{var c;let{children:o}=s,f={media:sr(o)};ce(f,"id","id",o),ce(f,"title","title",o);let b=(c=Nt("link",o))===null||c===void 0?void 0:c.attribs.href;b&&(f.link=b);let E=Fe("summary",o)||Fe("content",o);E&&(f.description=E);let g=Fe("updated",o);return g&&(f.pubDate=new Date(g)),f})};ce(a,"id","id",t),ce(a,"title","title",t);let r=(u=Nt("link",t))===null||u===void 0?void 0:u.attribs.href;r&&(a.link=r),ce(a,"description","subtitle",t);let n=Fe("updated",t);return n&&(a.updated=new Date(n)),ce(a,"author","email",t,!0),a}function us(e){var u,t;let a=(t=(u=Nt("channel",e.children))===null||u===void 0?void 0:u.children)!==null&&t!==void 0?t:[],r={type:e.name.substr(0,3),id:"",items:uu("item",e.children).map(s=>{let{children:c}=s,o={media:sr(c)};ce(o,"id","guid",c),ce(o,"title","title",c),ce(o,"link","link",c),ce(o,"description","description",c);let f=Fe("pubDate",c)||Fe("dc:date",c);return f&&(o.pubDate=new Date(f)),o})};ce(r,"title","title",a),ce(r,"link","link",a),ce(r,"description","description",a);let n=Fe("lastBuildDate",a);return n&&(r.updated=new Date(n)),ce(r,"author","managingEditor",a,!0),r}var ts=["url","type","lang"],as=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];function sr(e){return uu("media:content",e).map(u=>{let{attribs:t}=u,a={medium:t.medium,isDefault:!!t.isDefault};for(let r of ts)t[r]&&(a[r]=t[r]);for(let r of as)t[r]&&(a[r]=parseInt(t[r],10));return t.expression&&(a.expression=t.expression),a})}function Nt(e,u){return uu(e,u,!0,1)[0]}function Fe(e,u,t=!1){return Le(uu(e,u,t,1)).trim()}function ce(e,u,t,a,r=!1){let n=Fe(t,a,r);n&&(e[u]=n)}function rs(e){return e==="rss"||e==="feed"||e==="rdf:RDF"}var is={_useHtmlParser2:!1};function Ou(e,u){if(!e)return u!=null?u:is;let t={_useHtmlParser2:!!e.xmlMode,...u,...e};return e.xml?(t._useHtmlParser2=!0,t.xmlMode=!0,e.xml!==!0&&Object.assign(t,e.xml)):e.xmlMode&&(t._useHtmlParser2=!0),t}function or(e,u,t){return e?e(u!=null?u:e._root.children,null,void 0,t).toString():""}function ns(e,u){return!u&&typeof e=="object"&&e!=null&&!("length"in e)&&!("type"in e)}function ss(e,u){let t=ns(e)?(u=e,void 0):e,a={...this===null||this===void 0?void 0:this._options,...Ou(u)};return or(this,t,a)}function cs(e){let u={...this._options,xmlMode:!0};return or(this,e,u)}function tu(e){let u=e!=null?e:this?this.root():[],t="";for(let a=0;a<u.length;a++)t+=Le(u[a]);return t}function os(e,u,t=typeof u=="boolean"?u:!1){if(!e||typeof e!="string")return null;typeof u=="boolean"&&(t=u);let a=this.load(e,this._options,!1);return t||a("script").remove(),[...a.root()[0].children]}function ds(){return this(this._root)}function It(e,u){if(u===e)return!1;let t=u;for(;t&&t!==t.parent;)if(t=t.parent,t===e)return!0;return!1}function ls(e){return this.root().extract(e)}function dr(e,u){if(!cr(e)||!cr(u))return;let t=e.length,a=+u.length;for(let r=0;r<a;r++)e[t++]=u[r];return e.length=t,e}function cr(e){if(Array.isArray(e))return!0;if(typeof e!="object"||e===null||!("length"in e)||typeof e.length!="number"||e.length<0)return!1;for(let u=0;u<e.length;u++)if(!(u in e))return!1;return!0}var $0={};le($0,{addClass:()=>Nr,attr:()=>Ns,data:()=>ys,hasClass:()=>Rs,prop:()=>Is,removeAttr:()=>Ls,removeClass:()=>Ir,toggleClass:()=>Cr,val:()=>Ds});function me(e){return e.cheerio!=null}function lr(e){return e.replace(/[._-](\w|$)/g,(u,t)=>t.toUpperCase())}function fr(e){return e.replace(/[A-Z]/g,"-$&").toLowerCase()}function Y(e,u){let t=e.length;for(let a=0;a<t;a++)u(e[a],a);return e}var au;(function(e){e[e.LowerA=97]="LowerA",e[e.LowerZ=122]="LowerZ",e[e.UpperA=65]="UpperA",e[e.UpperZ=90]="UpperZ",e[e.Exclamation=33]="Exclamation"})(au||(au={}));function Pu(e){let u=e.indexOf("<");if(u===-1||u>e.length-3)return!1;let t=e.charCodeAt(u+1);return(t>=au.LowerA&&t<=au.LowerZ||t>=au.UpperA&&t<=au.UpperZ||t===au.Exclamation)&&e.includes(">",u+2)}var Ct=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(e=>e.charCodeAt(0)));var St=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(e=>e.charCodeAt(0)));var B0,fs=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),wu=(B0=String.fromCodePoint)!==null&&B0!==void 0?B0:function(e){let u="";return e>65535&&(e-=65536,u+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),u+=String.fromCharCode(e),u};function U0(e){var u;return e>=55296&&e<=57343||e>1114111?65533:(u=fs.get(e))!==null&&u!==void 0?u:e}var z;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(z||(z={}));var hs=32,He;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(He||(He={}));function F0(e){return e>=z.ZERO&&e<=z.NINE}function bs(e){return e>=z.UPPER_A&&e<=z.UPPER_F||e>=z.LOWER_A&&e<=z.LOWER_F}function ps(e){return e>=z.UPPER_A&&e<=z.UPPER_Z||e>=z.LOWER_A&&e<=z.LOWER_Z||F0(e)}function ms(e){return e===z.EQUALS||ps(e)}var K;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(K||(K={}));var xe;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(xe||(xe={}));var yt=class{constructor(u,t,a){this.decodeTree=u,this.emitCodePoint=t,this.errors=a,this.state=K.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=xe.Strict}startEntity(u){this.decodeMode=u,this.state=K.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(u,t){switch(this.state){case K.EntityStart:return u.charCodeAt(t)===z.NUM?(this.state=K.NumericStart,this.consumed+=1,this.stateNumericStart(u,t+1)):(this.state=K.NamedEntity,this.stateNamedEntity(u,t));case K.NumericStart:return this.stateNumericStart(u,t);case K.NumericDecimal:return this.stateNumericDecimal(u,t);case K.NumericHex:return this.stateNumericHex(u,t);case K.NamedEntity:return this.stateNamedEntity(u,t)}}stateNumericStart(u,t){return t>=u.length?-1:(u.charCodeAt(t)|hs)===z.LOWER_X?(this.state=K.NumericHex,this.consumed+=1,this.stateNumericHex(u,t+1)):(this.state=K.NumericDecimal,this.stateNumericDecimal(u,t))}addToNumericResult(u,t,a,r){if(t!==a){let n=a-t;this.result=this.result*Math.pow(r,n)+Number.parseInt(u.substr(t,n),r),this.consumed+=n}}stateNumericHex(u,t){let a=t;for(;t<u.length;){let r=u.charCodeAt(t);if(F0(r)||bs(r))t+=1;else return this.addToNumericResult(u,a,t,16),this.emitNumericEntity(r,3)}return this.addToNumericResult(u,a,t,16),-1}stateNumericDecimal(u,t){let a=t;for(;t<u.length;){let r=u.charCodeAt(t);if(F0(r))t+=1;else return this.addToNumericResult(u,a,t,10),this.emitNumericEntity(r,2)}return this.addToNumericResult(u,a,t,10),-1}emitNumericEntity(u,t){var a;if(this.consumed<=t)return(a=this.errors)===null||a===void 0||a.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(u===z.SEMI)this.consumed+=1;else if(this.decodeMode===xe.Strict)return 0;return this.emitCodePoint(U0(this.result),this.consumed),this.errors&&(u!==z.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(u,t){let{decodeTree:a}=this,r=a[this.treeIndex],n=(r&He.VALUE_LENGTH)>>14;for(;t<u.length;t++,this.excess++){let s=u.charCodeAt(t);if(this.treeIndex=Es(a,r,this.treeIndex+Math.max(1,n),s),this.treeIndex<0)return this.result===0||this.decodeMode===xe.Attribute&&(n===0||ms(s))?0:this.emitNotTerminatedNamedEntity();if(r=a[this.treeIndex],n=(r&He.VALUE_LENGTH)>>14,n!==0){if(s===z.SEMI)return this.emitNamedEntityData(this.treeIndex,n,this.consumed+this.excess);this.decodeMode!==xe.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var u;let{result:t,decodeTree:a}=this,r=(a[t]&He.VALUE_LENGTH)>>14;return this.emitNamedEntityData(t,r,this.consumed),(u=this.errors)===null||u===void 0||u.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(u,t,a){let{decodeTree:r}=this;return this.emitCodePoint(t===1?r[u]&~He.VALUE_LENGTH:r[u+1],a),t===3&&this.emitCodePoint(r[u+2],a),a}end(){var u;switch(this.state){case K.NamedEntity:return this.result!==0&&(this.decodeMode!==xe.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case K.NumericDecimal:return this.emitNumericEntity(0,2);case K.NumericHex:return this.emitNumericEntity(0,3);case K.NumericStart:return(u=this.errors)===null||u===void 0||u.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case K.EntityStart:return 0}}};function Es(e,u,t,a){let r=(u&He.BRANCH_LENGTH)>>7,n=u&He.JUMP_TABLE;if(r===0)return n!==0&&a===n?t:-1;if(n){let o=a-n;return o<0||o>=r?-1:e[t+o]-1}let s=t,c=s+r-1;for(;s<=c;){let o=s+c>>>1,f=e[o];if(f<a)s=o+1;else if(f>a)c=o-1;else return e[o+r]}return-1}var O;(function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Number=35]="Number",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"})(O||(O={}));var x;(function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.BeforeSpecialT=23]="BeforeSpecialT",e[e.SpecialStartSequence=24]="SpecialStartSequence",e[e.InSpecialTag=25]="InSpecialTag",e[e.InEntity=26]="InEntity"})(x||(x={}));function Pe(e){return e===O.Space||e===O.NewLine||e===O.Tab||e===O.FormFeed||e===O.CarriageReturn}function Dt(e){return e===O.Slash||e===O.Gt||Pe(e)}function Ts(e){return e>=O.LowerA&&e<=O.LowerZ||e>=O.UpperA&&e<=O.UpperZ}var Ee;(function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"})(Ee||(Ee={}));var Q={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97]),XmpEnd:new Uint8Array([60,47,120,109,112])},pu=class{constructor({xmlMode:u=!1,decodeEntities:t=!0},a){this.cbs=a,this.state=x.Text,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=x.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.xmlMode=u,this.decodeEntities=t,this.entityDecoder=new yt(u?St:Ct,(r,n)=>this.emitCodePoint(r,n))}reset(){this.state=x.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=x.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(u){this.offset+=this.buffer.length,this.buffer=u,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.index<this.buffer.length+this.offset&&this.parse()}stateText(u){u===O.Lt||!this.decodeEntities&&this.fastForwardTo(O.Lt)?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=x.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&u===O.Amp&&this.startEntity()}stateSpecialStartSequence(u){let t=this.sequenceIndex===this.currentSequence.length;if(!(t?Dt(u):(u|32)===this.currentSequence[this.sequenceIndex]))this.isSpecial=!1;else if(!t){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=x.InTagName,this.stateInTagName(u)}stateInSpecialTag(u){if(this.sequenceIndex===this.currentSequence.length){if(u===O.Gt||Pe(u)){let t=this.index-this.currentSequence.length;if(this.sectionStart<t){let a=this.index;this.index=t,this.cbs.ontext(this.sectionStart,t),this.index=a}this.isSpecial=!1,this.sectionStart=t+2,this.stateInClosingTagName(u);return}this.sequenceIndex=0}(u|32)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:this.sequenceIndex===0?this.currentSequence===Q.TitleEnd?this.decodeEntities&&u===O.Amp&&this.startEntity():this.fastForwardTo(O.Lt)&&(this.sequenceIndex=1):this.sequenceIndex=+(u===O.Lt)}stateCDATASequence(u){u===Q.Cdata[this.sequenceIndex]?++this.sequenceIndex===Q.Cdata.length&&(this.state=x.InCommentLike,this.currentSequence=Q.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=x.InDeclaration,this.stateInDeclaration(u))}fastForwardTo(u){for(;++this.index<this.buffer.length+this.offset;)if(this.buffer.charCodeAt(this.index-this.offset)===u)return!0;return this.index=this.buffer.length+this.offset-1,!1}stateInCommentLike(u){u===this.currentSequence[this.sequenceIndex]?++this.sequenceIndex===this.currentSequence.length&&(this.currentSequence===Q.CdataEnd?this.cbs.oncdata(this.sectionStart,this.index,2):this.cbs.oncomment(this.sectionStart,this.index,2),this.sequenceIndex=0,this.sectionStart=this.index+1,this.state=x.Text):this.sequenceIndex===0?this.fastForwardTo(this.currentSequence[0])&&(this.sequenceIndex=1):u!==this.currentSequence[this.sequenceIndex-1]&&(this.sequenceIndex=0)}isTagStartChar(u){return this.xmlMode?!Dt(u):Ts(u)}startSpecial(u,t){this.isSpecial=!0,this.currentSequence=u,this.sequenceIndex=t,this.state=x.SpecialStartSequence}stateBeforeTagName(u){if(u===O.ExclamationMark)this.state=x.BeforeDeclaration,this.sectionStart=this.index+1;else if(u===O.Questionmark)this.state=x.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(u)){let t=u|32;this.sectionStart=this.index,this.xmlMode?this.state=x.InTagName:t===Q.ScriptEnd[2]?this.state=x.BeforeSpecialS:t===Q.TitleEnd[2]||t===Q.XmpEnd[2]?this.state=x.BeforeSpecialT:this.state=x.InTagName}else u===O.Slash?this.state=x.BeforeClosingTagName:(this.state=x.Text,this.stateText(u))}stateInTagName(u){Dt(u)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=x.BeforeAttributeName,this.stateBeforeAttributeName(u))}stateBeforeClosingTagName(u){Pe(u)||(u===O.Gt?this.state=x.Text:(this.state=this.isTagStartChar(u)?x.InClosingTagName:x.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(u){(u===O.Gt||Pe(u))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=x.AfterClosingTagName,this.stateAfterClosingTagName(u))}stateAfterClosingTagName(u){(u===O.Gt||this.fastForwardTo(O.Gt))&&(this.state=x.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(u){u===O.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=x.InSpecialTag,this.sequenceIndex=0):this.state=x.Text,this.sectionStart=this.index+1):u===O.Slash?this.state=x.InSelfClosingTag:Pe(u)||(this.state=x.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(u){u===O.Gt?(this.cbs.onselfclosingtag(this.index),this.state=x.Text,this.sectionStart=this.index+1,this.isSpecial=!1):Pe(u)||(this.state=x.BeforeAttributeName,this.stateBeforeAttributeName(u))}stateInAttributeName(u){(u===O.Eq||Dt(u))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=this.index,this.state=x.AfterAttributeName,this.stateAfterAttributeName(u))}stateAfterAttributeName(u){u===O.Eq?this.state=x.BeforeAttributeValue:u===O.Slash||u===O.Gt?(this.cbs.onattribend(Ee.NoValue,this.sectionStart),this.sectionStart=-1,this.state=x.BeforeAttributeName,this.stateBeforeAttributeName(u)):Pe(u)||(this.cbs.onattribend(Ee.NoValue,this.sectionStart),this.state=x.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(u){u===O.DoubleQuote?(this.state=x.InAttributeValueDq,this.sectionStart=this.index+1):u===O.SingleQuote?(this.state=x.InAttributeValueSq,this.sectionStart=this.index+1):Pe(u)||(this.sectionStart=this.index,this.state=x.InAttributeValueNq,this.stateInAttributeValueNoQuotes(u))}handleInAttributeValue(u,t){u===t||!this.decodeEntities&&this.fastForwardTo(t)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(t===O.DoubleQuote?Ee.Double:Ee.Single,this.index+1),this.state=x.BeforeAttributeName):this.decodeEntities&&u===O.Amp&&this.startEntity()}stateInAttributeValueDoubleQuotes(u){this.handleInAttributeValue(u,O.DoubleQuote)}stateInAttributeValueSingleQuotes(u){this.handleInAttributeValue(u,O.SingleQuote)}stateInAttributeValueNoQuotes(u){Pe(u)||u===O.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(Ee.Unquoted,this.index),this.state=x.BeforeAttributeName,this.stateBeforeAttributeName(u)):this.decodeEntities&&u===O.Amp&&this.startEntity()}stateBeforeDeclaration(u){u===O.OpeningSquareBracket?(this.state=x.CDATASequence,this.sequenceIndex=0):this.state=u===O.Dash?x.BeforeComment:x.InDeclaration}stateInDeclaration(u){(u===O.Gt||this.fastForwardTo(O.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=x.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(u){(u===O.Gt||this.fastForwardTo(O.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=x.Text,this.sectionStart=this.index+1)}stateBeforeComment(u){u===O.Dash?(this.state=x.InCommentLike,this.currentSequence=Q.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=x.InDeclaration}stateInSpecialComment(u){(u===O.Gt||this.fastForwardTo(O.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=x.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(u){let t=u|32;t===Q.ScriptEnd[3]?this.startSpecial(Q.ScriptEnd,4):t===Q.StyleEnd[3]?this.startSpecial(Q.StyleEnd,4):(this.state=x.InTagName,this.stateInTagName(u))}stateBeforeSpecialT(u){switch(u|32){case Q.TitleEnd[3]:{this.startSpecial(Q.TitleEnd,4);break}case Q.TextareaEnd[3]:{this.startSpecial(Q.TextareaEnd,4);break}case Q.XmpEnd[3]:{this.startSpecial(Q.XmpEnd,4);break}default:this.state=x.InTagName,this.stateInTagName(u)}}startEntity(){this.baseState=this.state,this.state=x.InEntity,this.entityStart=this.index,this.entityDecoder.startEntity(this.xmlMode?xe.Strict:this.baseState===x.Text||this.baseState===x.InSpecialTag?xe.Legacy:xe.Attribute)}stateInEntity(){let u=this.entityDecoder.write(this.buffer,this.index-this.offset);u>=0?(this.state=this.baseState,u===0&&(this.index=this.entityStart)):this.index=this.offset+this.buffer.length-1}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===x.Text||this.state===x.InSpecialTag&&this.sequenceIndex===0?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===x.InAttributeValueDq||this.state===x.InAttributeValueSq||this.state===x.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index<this.buffer.length+this.offset&&this.running}parse(){for(;this.shouldContinue();){let u=this.buffer.charCodeAt(this.index-this.offset);switch(this.state){case x.Text:{this.stateText(u);break}case x.SpecialStartSequence:{this.stateSpecialStartSequence(u);break}case x.InSpecialTag:{this.stateInSpecialTag(u);break}case x.CDATASequence:{this.stateCDATASequence(u);break}case x.InAttributeValueDq:{this.stateInAttributeValueDoubleQuotes(u);break}case x.InAttributeName:{this.stateInAttributeName(u);break}case x.InCommentLike:{this.stateInCommentLike(u);break}case x.InSpecialComment:{this.stateInSpecialComment(u);break}case x.BeforeAttributeName:{this.stateBeforeAttributeName(u);break}case x.InTagName:{this.stateInTagName(u);break}case x.InClosingTagName:{this.stateInClosingTagName(u);break}case x.BeforeTagName:{this.stateBeforeTagName(u);break}case x.AfterAttributeName:{this.stateAfterAttributeName(u);break}case x.InAttributeValueSq:{this.stateInAttributeValueSingleQuotes(u);break}case x.BeforeAttributeValue:{this.stateBeforeAttributeValue(u);break}case x.BeforeClosingTagName:{this.stateBeforeClosingTagName(u);break}case x.AfterClosingTagName:{this.stateAfterClosingTagName(u);break}case x.BeforeSpecialS:{this.stateBeforeSpecialS(u);break}case x.BeforeSpecialT:{this.stateBeforeSpecialT(u);break}case x.InAttributeValueNq:{this.stateInAttributeValueNoQuotes(u);break}case x.InSelfClosingTag:{this.stateInSelfClosingTag(u);break}case x.InDeclaration:{this.stateInDeclaration(u);break}case x.BeforeDeclaration:{this.stateBeforeDeclaration(u);break}case x.BeforeComment:{this.stateBeforeComment(u);break}case x.InProcessingInstruction:{this.stateInProcessingInstruction(u);break}case x.InEntity:{this.stateInEntity();break}}this.index++}this.cleanup()}finish(){this.state===x.InEntity&&(this.entityDecoder.end(),this.state=this.baseState),this.handleTrailingData(),this.cbs.onend()}handleTrailingData(){let u=this.buffer.length+this.offset;this.sectionStart>=u||(this.state===x.InCommentLike?this.currentSequence===Q.CdataEnd?this.cbs.oncdata(this.sectionStart,u,0):this.cbs.oncomment(this.sectionStart,u,0):this.state===x.InTagName||this.state===x.BeforeAttributeName||this.state===x.BeforeAttributeValue||this.state===x.AfterAttributeName||this.state===x.InAttributeName||this.state===x.InAttributeValueSq||this.state===x.InAttributeValueDq||this.state===x.InAttributeValueNq||this.state===x.InClosingTagName||this.cbs.ontext(this.sectionStart,u))}emitCodePoint(u,t){this.baseState!==x.Text&&this.baseState!==x.InSpecialTag?(this.sectionStart<this.entityStart&&this.cbs.onattribdata(this.sectionStart,this.entityStart),this.sectionStart=this.entityStart+t,this.index=this.sectionStart-1,this.cbs.onattribentity(u)):(this.sectionStart<this.entityStart&&this.cbs.ontext(this.sectionStart,this.entityStart),this.sectionStart=this.entityStart+t,this.index=this.sectionStart-1,this.cbs.ontextentity(u,this.sectionStart))}};var mu=new Set(["input","option","optgroup","select","button","datalist","textarea"]),q=new Set(["p"]),hr=new Set(["thead","tbody"]),br=new Set(["dd","dt"]),pr=new Set(["rt","rp"]),gs=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",q],["h1",q],["h2",q],["h3",q],["h4",q],["h5",q],["h6",q],["select",mu],["input",mu],["output",mu],["button",mu],["datalist",mu],["textarea",mu],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",br],["dt",br],["address",q],["article",q],["aside",q],["blockquote",q],["details",q],["div",q],["dl",q],["fieldset",q],["figcaption",q],["figure",q],["footer",q],["form",q],["header",q],["hr",q],["main",q],["nav",q],["ol",q],["pre",q],["section",q],["table",q],["ul",q],["rt",pr],["rp",pr],["tbody",hr],["tfoot",hr]]),xs=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),mr=new Set(["math","svg"]),Er=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]),As=/\s|\//,ku=class{constructor(u,t={}){var a,r,n,s,c,o;this.options=t,this.startIndex=0,this.endIndex=0,this.openTagStart=0,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.buffers=[],this.bufferOffset=0,this.writeIndex=0,this.ended=!1,this.cbs=u!=null?u:{},this.htmlMode=!this.options.xmlMode,this.lowerCaseTagNames=(a=t.lowerCaseTags)!==null&&a!==void 0?a:this.htmlMode,this.lowerCaseAttributeNames=(r=t.lowerCaseAttributeNames)!==null&&r!==void 0?r:this.htmlMode,this.recognizeSelfClosing=(n=t.recognizeSelfClosing)!==null&&n!==void 0?n:!this.htmlMode,this.tokenizer=new((s=t.Tokenizer)!==null&&s!==void 0?s:pu)(this.options,this),this.foreignContext=[!this.htmlMode],(o=(c=this.cbs).onparserinit)===null||o===void 0||o.call(c,this)}ontext(u,t){var a,r;let n=this.getSlice(u,t);this.endIndex=t-1,(r=(a=this.cbs).ontext)===null||r===void 0||r.call(a,n),this.startIndex=t}ontextentity(u,t){var a,r;this.endIndex=t-1,(r=(a=this.cbs).ontext)===null||r===void 0||r.call(a,wu(u)),this.startIndex=t}isVoidElement(u){return this.htmlMode&&xs.has(u)}onopentagname(u,t){this.endIndex=t;let a=this.getSlice(u,t);this.lowerCaseTagNames&&(a=a.toLowerCase()),this.emitOpenTag(a)}emitOpenTag(u){var t,a,r,n;this.openTagStart=this.startIndex,this.tagname=u;let s=this.htmlMode&&gs.get(u);if(s)for(;this.stack.length>0&&s.has(this.stack[0]);){let c=this.stack.shift();(a=(t=this.cbs).onclosetag)===null||a===void 0||a.call(t,c,!0)}this.isVoidElement(u)||(this.stack.unshift(u),this.htmlMode&&(mr.has(u)?this.foreignContext.unshift(!0):Er.has(u)&&this.foreignContext.unshift(!1))),(n=(r=this.cbs).onopentagname)===null||n===void 0||n.call(r,u),this.cbs.onopentag&&(this.attribs={})}endOpenTag(u){var t,a;this.startIndex=this.openTagStart,this.attribs&&((a=(t=this.cbs).onopentag)===null||a===void 0||a.call(t,this.tagname,this.attribs,u),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(u){this.endIndex=u,this.endOpenTag(!1),this.startIndex=u+1}onclosetag(u,t){var a,r,n,s,c,o,f,b;this.endIndex=t;let E=this.getSlice(u,t);if(this.lowerCaseTagNames&&(E=E.toLowerCase()),this.htmlMode&&(mr.has(E)||Er.has(E))&&this.foreignContext.shift(),this.isVoidElement(E))this.htmlMode&&E==="br"&&((s=(n=this.cbs).onopentagname)===null||s===void 0||s.call(n,"br"),(o=(c=this.cbs).onopentag)===null||o===void 0||o.call(c,"br",{},!0),(b=(f=this.cbs).onclosetag)===null||b===void 0||b.call(f,"br",!1));else{let g=this.stack.indexOf(E);if(g!==-1)for(let _=0;_<=g;_++){let N=this.stack.shift();(r=(a=this.cbs).onclosetag)===null||r===void 0||r.call(a,N,_!==g)}else this.htmlMode&&E==="p"&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=t+1}onselfclosingtag(u){this.endIndex=u,this.recognizeSelfClosing||this.foreignContext[0]?(this.closeCurrentTag(!1),this.startIndex=u+1):this.onopentagend(u)}closeCurrentTag(u){var t,a;let r=this.tagname;this.endOpenTag(u),this.stack[0]===r&&((a=(t=this.cbs).onclosetag)===null||a===void 0||a.call(t,r,!u),this.stack.shift())}onattribname(u,t){this.startIndex=u;let a=this.getSlice(u,t);this.attribname=this.lowerCaseAttributeNames?a.toLowerCase():a}onattribdata(u,t){this.attribvalue+=this.getSlice(u,t)}onattribentity(u){this.attribvalue+=wu(u)}onattribend(u,t){var a,r;this.endIndex=t,(r=(a=this.cbs).onattribute)===null||r===void 0||r.call(a,this.attribname,this.attribvalue,u===Ee.Double?'"':u===Ee.Single?"'":u===Ee.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(u){let t=u.search(As),a=t<0?u:u.substr(0,t);return this.lowerCaseTagNames&&(a=a.toLowerCase()),a}ondeclaration(u,t){this.endIndex=t;let a=this.getSlice(u,t);if(this.cbs.onprocessinginstruction){let r=this.getInstructionName(a);this.cbs.onprocessinginstruction(`!${r}`,`!${a}`)}this.startIndex=t+1}onprocessinginstruction(u,t){this.endIndex=t;let a=this.getSlice(u,t);if(this.cbs.onprocessinginstruction){let r=this.getInstructionName(a);this.cbs.onprocessinginstruction(`?${r}`,`?${a}`)}this.startIndex=t+1}oncomment(u,t,a){var r,n,s,c;this.endIndex=t,(n=(r=this.cbs).oncomment)===null||n===void 0||n.call(r,this.getSlice(u,t-a)),(c=(s=this.cbs).oncommentend)===null||c===void 0||c.call(s),this.startIndex=t+1}oncdata(u,t,a){var r,n,s,c,o,f,b,E,g,_;this.endIndex=t;let N=this.getSlice(u,t-a);!this.htmlMode||this.options.recognizeCDATA?((n=(r=this.cbs).oncdatastart)===null||n===void 0||n.call(r),(c=(s=this.cbs).ontext)===null||c===void 0||c.call(s,N),(f=(o=this.cbs).oncdataend)===null||f===void 0||f.call(o)):((E=(b=this.cbs).oncomment)===null||E===void 0||E.call(b,`[CDATA[${N}]]`),(_=(g=this.cbs).oncommentend)===null||_===void 0||_.call(g)),this.startIndex=t+1}onend(){var u,t;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let a=0;a<this.stack.length;a++)this.cbs.onclosetag(this.stack[a],!0)}(t=(u=this.cbs).onend)===null||t===void 0||t.call(u)}reset(){var u,t,a,r;(t=(u=this.cbs).onreset)===null||t===void 0||t.call(u),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,(r=(a=this.cbs).onparserinit)===null||r===void 0||r.call(a,this),this.buffers.length=0,this.foreignContext.length=0,this.foreignContext.unshift(!this.htmlMode),this.bufferOffset=0,this.writeIndex=0,this.ended=!1}parseComplete(u){this.reset(),this.end(u)}getSlice(u,t){for(;u-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();let a=this.buffers[0].slice(u-this.bufferOffset,t-this.bufferOffset);for(;t-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),a+=this.buffers[0].slice(0,t-this.bufferOffset);return a}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(u){var t,a;if(this.ended){(a=(t=this.cbs).onerror)===null||a===void 0||a.call(t,new Error(".write() after done!"));return}this.buffers.push(u),this.tokenizer.running&&(this.tokenizer.write(u),this.writeIndex++)}end(u){var t,a;if(this.ended){(a=(t=this.cbs).onerror)===null||a===void 0||a.call(t,new Error(".end() after done!"));return}u&&this.write(u),this.ended=!0,this.tokenizer.end()}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex<this.buffers.length;)this.tokenizer.write(this.buffers[this.writeIndex++]);this.ended&&this.tokenizer.end()}parseChunk(u){this.write(u)}done(u){this.end(u)}};function Tr(e,u){let t=new fu(void 0,u);return new ku(t,u).end(e),t.root}var H0,Mu=(H0=Object.hasOwn)!==null&&H0!==void 0?H0:(e,u)=>Object.prototype.hasOwnProperty.call(e,u),vu=/\s+/,Y0="data-",V0=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,_s=/^{[^]*}$|^\[[^]*]$/;function Lt(e,u,t){var a;if(!(!e||!C(e))){if((a=e.attribs)!==null&&a!==void 0||(e.attribs={}),!u)return e.attribs;if(Mu(e.attribs,u))return!t&&V0.test(u)?u:e.attribs[u];if(e.name==="option"&&u==="value")return tu(e.children);if(e.name==="input"&&(e.attribs.type==="radio"||e.attribs.type==="checkbox")&&u==="value")return"on"}}function Eu(e,u,t){t===null?_r(e,u):e.attribs[u]=`${t}`}function Ns(e,u){if(typeof e=="object"||u!==void 0){if(typeof u=="function"){if(typeof e!="string")throw new Error("Bad combination of arguments.");return Y(this,(t,a)=>{C(t)&&Eu(t,e,u.call(t,a,t.attribs[e]))})}return Y(this,t=>{if(C(t))if(typeof e=="object")for(let a of Object.keys(e)){let r=e[a];Eu(t,a,r)}else Eu(t,e,u)})}return arguments.length>1?this:Lt(this[0],e,this.options.xmlMode)}function gr(e,u,t){return u in e?e[u]:!t&&V0.test(u)?Lt(e,u,!1)!==void 0:Lt(e,u,t)}function q0(e,u,t,a){u in e?e[u]=t:Eu(e,u,!a&&V0.test(u)?t?"":null:`${t}`)}function Is(e,u){var t;if(typeof e=="string"&&u===void 0){let a=this[0];if(!a)return;switch(e){case"style":{let r=this.css(),n=Object.keys(r);for(let s=0;s<n.length;s++)r[s]=n[s];return r.length=n.length,r}case"tagName":case"nodeName":return C(a)?a.name.toUpperCase():void 0;case"href":case"src":{if(!C(a))return;let r=(t=a.attribs)===null||t===void 0?void 0:t[e];return typeof URL!="undefined"&&(e==="href"&&(a.tagName==="a"||a.tagName==="link")||e==="src"&&(a.tagName==="img"||a.tagName==="iframe"||a.tagName==="audio"||a.tagName==="video"||a.tagName==="source"))&&r!==void 0&&this.options.baseURI?new URL(r,this.options.baseURI).href:r}case"innerText":return Ru(a);case"textContent":return Le(a);case"outerHTML":return a.type===fe.Root?this.html():this.clone().wrap("<container />").parent().html();case"innerHTML":return this.html();default:return C(a)?gr(a,e,this.options.xmlMode):void 0}}if(typeof e=="object"||u!==void 0){if(typeof u=="function"){if(typeof e=="object")throw new TypeError("Bad combination of arguments.");return Y(this,(a,r)=>{C(a)&&q0(a,e,u.call(a,r,gr(a,e,this.options.xmlMode)),this.options.xmlMode)})}return Y(this,a=>{if(C(a))if(typeof e=="object")for(let r of Object.keys(e)){let n=e[r];q0(a,r,n,this.options.xmlMode)}else q0(a,e,u,this.options.xmlMode)})}}function xr(e,u,t){var a;(a=e.data)!==null&&a!==void 0||(e.data={}),typeof u=="object"?Object.assign(e.data,u):typeof u=="string"&&t!==void 0&&(e.data[u]=t)}function Cs(e){for(let u of Object.keys(e.attribs)){if(!u.startsWith(Y0))continue;let t=lr(u.slice(Y0.length));Mu(e.data,t)||(e.data[t]=Ar(e.attribs[u]))}return e.data}function Ss(e,u){let t=Y0+fr(u),a=e.data;if(Mu(a,u))return a[u];if(Mu(e.attribs,t))return a[u]=Ar(e.attribs[t])}function Ar(e){if(e==="null")return null;if(e==="true")return!0;if(e==="false")return!1;let u=Number(e);if(e===String(u))return u;if(_s.test(e))try{return JSON.parse(e)}catch(t){}return e}function ys(e,u){var t;let a=this[0];if(!a||!C(a))return;let r=a;return(t=r.data)!==null&&t!==void 0||(r.data={}),e==null?Cs(r):typeof e=="object"||u!==void 0?(Y(this,n=>{C(n)&&(typeof e=="object"?xr(n,e):xr(n,e,u))}),this):Ss(r,e)}function Ds(e){let u=arguments.length===0,t=this[0];if(!t||!C(t))return u?void 0:this;switch(t.name){case"textarea":return this.text(e);case"select":{let a=this.find("option:selected");if(!u){if(this.attr("multiple")==null&&typeof e=="object")return this;this.find("option").removeAttr("selected");let r=typeof e=="object"?e:[e];for(let n of r)this.find(`option[value="${n}"]`).attr("selected","");return this}return this.attr("multiple")?a.toArray().map(r=>tu(r.children)):a.attr("value")}case"input":case"option":return u?this.attr("value"):this.attr("value",e)}}function _r(e,u){!e.attribs||!Mu(e.attribs,u)||delete e.attribs[u]}function Rt(e){return e?e.trim().split(vu):[]}function Ls(e){let u=Rt(e);for(let t of u)Y(this,a=>{C(a)&&_r(a,t)});return this}function Rs(e){return this.toArray().some(u=>{let t=C(u)&&u.attribs.class,a=-1;if(t&&e.length>0)for(;(a=t.indexOf(e,a+1))>-1;){let r=a+e.length;if((a===0||vu.test(t[a-1]))&&(r===t.length||vu.test(t[r])))return!0}return!1})}function Nr(e){if(typeof e=="function")return Y(this,(a,r)=>{if(C(a)){let n=a.attribs.class||"";Nr.call([a],e.call(a,r,n))}});if(!e||typeof e!="string")return this;let u=e.split(vu),t=this.length;for(let a=0;a<t;a++){let r=this[a];if(!C(r))continue;let n=Lt(r,"class",!1);if(n){let s=` ${n} `;for(let c of u){let o=`${c} `;s.includes(` ${o}`)||(s+=o)}Eu(r,"class",s.trim())}else Eu(r,"class",u.join(" ").trim())}return this}function Ir(e){if(typeof e=="function")return Y(this,(r,n)=>{C(r)&&Ir.call([r],e.call(r,n,r.attribs.class||""))});let u=Rt(e),t=u.length,a=arguments.length===0;return Y(this,r=>{if(C(r))if(a)r.attribs.class="";else{let n=Rt(r.attribs.class),s=!1;for(let c=0;c<t;c++){let o=n.indexOf(u[c]);o!==-1&&(n.splice(o,1),s=!0,c--)}s&&(r.attribs.class=n.join(" "))}})}function Cr(e,u){if(typeof e=="function")return Y(this,(s,c)=>{C(s)&&Cr.call([s],e.call(s,c,s.attribs.class||"",u),u)});if(!e||typeof e!="string")return this;let t=e.split(vu),a=t.length,r=typeof u=="boolean"?u?1:-1:0,n=this.length;for(let s=0;s<n;s++){let c=this[s];if(!C(c))continue;let o=Rt(c.attribs.class);for(let f=0;f<a;f++){let b=o.indexOf(t[f]);r>=0&&b===-1?o.push(t[f]):r<=0&&b!==-1&&o.splice(b,1)}c.attribs.class=o.join(" ")}return this}var ha={};le(ha,{_findBySelector:()=>tc,add:()=>Rc,addBack:()=>Oc,children:()=>bc,closest:()=>nc,contents:()=>pc,each:()=>mc,end:()=>Lc,eq:()=>Ic,filter:()=>Tc,filterArray:()=>fa,find:()=>uc,first:()=>_c,get:()=>Cc,has:()=>Ac,index:()=>yc,is:()=>gc,last:()=>Nc,map:()=>Ec,next:()=>sc,nextAll:()=>cc,nextUntil:()=>oc,not:()=>xc,parent:()=>ac,parents:()=>rc,parentsUntil:()=>ic,prev:()=>dc,prevAll:()=>lc,prevUntil:()=>fc,siblings:()=>hc,slice:()=>Dc,toArray:()=>Sc});var D;(function(e){e.Attribute="attribute",e.Pseudo="pseudo",e.PseudoElement="pseudo-element",e.Tag="tag",e.Universal="universal",e.Adjacent="adjacent",e.Child="child",e.Descendant="descendant",e.Parent="parent",e.Sibling="sibling",e.ColumnCombinator="column-combinator"})(D||(D={}));var W;(function(e){e.Any="any",e.Element="element",e.End="end",e.Equals="equals",e.Exists="exists",e.Hyphen="hyphen",e.Not="not",e.Start="start"})(W||(W={}));var Sr=/^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,Os=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,Ps=new Map([[126,W.Element],[94,W.Start],[36,W.End],[42,W.Any],[33,W.Not],[124,W.Hyphen]]),ws=new Set(["has","not","matches","is","where","host","host-context"]);function ru(e){switch(e.type){case D.Adjacent:case D.Child:case D.Descendant:case D.Parent:case D.Sibling:case D.ColumnCombinator:return!0;default:return!1}}var ks=new Set(["contains","icontains"]);function Ms(e,u,t){let a=parseInt(u,16)-65536;return a!==a||t?u:a<0?String.fromCharCode(a+65536):String.fromCharCode(a>>10|55296,a&1023|56320)}function Bu(e){return e.replace(Os,Ms)}function G0(e){return e===39||e===34}function yr(e){return e===32||e===9||e===10||e===12||e===13}function we(e){let u=[],t=Dr(u,`${e}`,0);if(t<e.length)throw new Error(`Unmatched selector: ${e.slice(t)}`);return u}function Dr(e,u,t){let a=[];function r(g){let _=u.slice(t+g).match(Sr);if(!_)throw new Error(`Expected name, found ${u.slice(t)}`);let[N]=_;return t+=g+N.length,Bu(N)}function n(g){for(t+=g;t<u.length&&yr(u.charCodeAt(t));)t++}function s(){t+=1;let g=t,_=1;for(;_>0&&t<u.length;t++)u.charCodeAt(t)===40&&!c(t)?_++:u.charCodeAt(t)===41&&!c(t)&&_--;if(_)throw new Error("Parenthesis not matched");return Bu(u.slice(g,t-1))}function c(g){let _=0;for(;u.charCodeAt(--g)===92;)_++;return(_&1)===1}function o(){if(a.length>0&&ru(a[a.length-1]))throw new Error("Did not expect successive traversals.")}function f(g){if(a.length>0&&a[a.length-1].type===D.Descendant){a[a.length-1].type=g;return}o(),a.push({type:g})}function b(g,_){a.push({type:D.Attribute,name:g,action:_,value:r(1),namespace:null,ignoreCase:"quirks"})}function E(){if(a.length&&a[a.length-1].type===D.Descendant&&a.pop(),a.length===0)throw new Error("Empty sub-selector");e.push(a)}if(n(0),u.length===t)return t;e:for(;t<u.length;){let g=u.charCodeAt(t);switch(g){case 32:case 9:case 10:case 12:case 13:{(a.length===0||a[0].type!==D.Descendant)&&(o(),a.push({type:D.Descendant})),n(1);break}case 62:{f(D.Child),n(1);break}case 60:{f(D.Parent),n(1);break}case 126:{f(D.Sibling),n(1);break}case 43:{f(D.Adjacent),n(1);break}case 46:{b("class",W.Element);break}case 35:{b("id",W.Equals);break}case 91:{n(1);let _,N=null;u.charCodeAt(t)===124?_=r(1):u.startsWith("*|",t)?(N="*",_=r(2)):(_=r(0),u.charCodeAt(t)===124&&u.charCodeAt(t+1)!==61&&(N=_,_=r(1))),n(0);let v=W.Exists,S=Ps.get(u.charCodeAt(t));if(S){if(v=S,u.charCodeAt(t+1)!==61)throw new Error("Expected `=`");n(2)}else u.charCodeAt(t)===61&&(v=W.Equals,n(1));let P="",L=null;if(v!=="exists"){if(G0(u.charCodeAt(t))){let y=u.charCodeAt(t),F=t+1;for(;F<u.length&&(u.charCodeAt(F)!==y||c(F));)F+=1;if(u.charCodeAt(F)!==y)throw new Error("Attribute value didn't end");P=Bu(u.slice(t+1,F)),t=F+1}else{let y=t;for(;t<u.length&&(!yr(u.charCodeAt(t))&&u.charCodeAt(t)!==93||c(t));)t+=1;P=Bu(u.slice(y,t))}n(0);let R=u.charCodeAt(t)|32;R===115?(L=!1,n(1)):R===105&&(L=!0,n(1))}if(u.charCodeAt(t)!==93)throw new Error("Attribute selector didn't terminate");t+=1;let M={type:D.Attribute,name:_,action:v,value:P,namespace:N,ignoreCase:L};a.push(M);break}case 58:{if(u.charCodeAt(t+1)===58){a.push({type:D.PseudoElement,name:r(2).toLowerCase(),data:u.charCodeAt(t)===40?s():null});continue}let _=r(1).toLowerCase(),N=null;if(u.charCodeAt(t)===40)if(ws.has(_)){if(G0(u.charCodeAt(t+1)))throw new Error(`Pseudo-selector ${_} cannot be quoted`);if(N=[],t=Dr(N,u,t+1),u.charCodeAt(t)!==41)throw new Error(`Missing closing parenthesis in :${_} (${u})`);t+=1}else{if(N=s(),ks.has(_)){let v=N.charCodeAt(0);v===N.charCodeAt(N.length-1)&&G0(v)&&(N=N.slice(1,-1))}N=Bu(N)}a.push({type:D.Pseudo,name:_,data:N});break}case 44:{E(),a=[],n(1);break}default:{if(u.startsWith("/*",t)){let v=u.indexOf("*/",t+2);if(v<0)throw new Error("Comment was not terminated");t=v+2,a.length===0&&n(0);break}let _=null,N;if(g===42)t+=1,N="*";else if(g===124){if(N="",u.charCodeAt(t+1)===124){f(D.ColumnCombinator),n(2);break}}else if(Sr.test(u.slice(t)))N=r(0);else break e;u.charCodeAt(t)===124&&u.charCodeAt(t+1)!==124&&(_=N,u.charCodeAt(t+1)===42?(N="*",t+=2):N=r(1)),a.push(N==="*"?{type:D.Universal,namespace:_}:{type:D.Tag,name:N,namespace:_})}}}return E(),t}var ta=je(qe(),1);var ke=je(qe(),1);var Rr=new Map([[D.Universal,50],[D.Tag,30],[D.Attribute,1],[D.Pseudo,0]]);function Uu(e){return!Rr.has(e.type)}var vs=new Map([[W.Exists,10],[W.Equals,8],[W.Not,7],[W.Start,6],[W.End,6],[W.Any,5]]);function W0(e){let u=e.map(Or);for(let t=1;t<e.length;t++){let a=u[t];if(!(a<0))for(let r=t-1;r>=0&&a<u[r];r--){let n=e[r+1];e[r+1]=e[r],e[r]=n,u[r+1]=u[r],u[r]=a}}}function Or(e){var u,t;let a=(u=Rr.get(e.type))!==null&&u!==void 0?u:-1;return e.type===D.Attribute?(a=(t=vs.get(e.action))!==null&&t!==void 0?t:4,e.action===W.Equals&&e.name==="id"&&(a=9),e.ignoreCase&&(a>>=1)):e.type===D.Pseudo&&(e.data?e.name==="has"||e.name==="contains"?a=0:Array.isArray(e.data)?(a=Math.min(...e.data.map(r=>Math.min(...r.map(Or)))),a<0&&(a=0)):a=2:a=3),a}var Fu=je(qe(),1),Bs=/[-[\]{}()*+?.,\\^$|#\s]/g;function Pr(e){return e.replace(Bs,"\\$&")}var Us=new Set(["accept","accept-charset","align","alink","axis","bgcolor","charset","checked","clear","codetype","color","compact","declare","defer","dir","direction","disabled","enctype","face","frame","hreflang","http-equiv","lang","language","link","media","method","multiple","nohref","noresize","noshade","nowrap","readonly","rel","rev","rules","scope","scrolling","selected","shape","target","text","type","valign","valuetype","vlink"]);function iu(e,u){return typeof e.ignoreCase=="boolean"?e.ignoreCase:e.ignoreCase==="quirks"?!!u.quirksMode:!u.xmlMode&&Us.has(e.name)}var wr={equals(e,u,t){let{adapter:a}=t,{name:r}=u,{value:n}=u;return iu(u,t)?(n=n.toLowerCase(),s=>{let c=a.getAttributeValue(s,r);return c!=null&&c.length===n.length&&c.toLowerCase()===n&&e(s)}):s=>a.getAttributeValue(s,r)===n&&e(s)},hyphen(e,u,t){let{adapter:a}=t,{name:r}=u,{value:n}=u,s=n.length;return iu(u,t)?(n=n.toLowerCase(),function(o){let f=a.getAttributeValue(o,r);return f!=null&&(f.length===s||f.charAt(s)==="-")&&f.substr(0,s).toLowerCase()===n&&e(o)}):function(o){let f=a.getAttributeValue(o,r);return f!=null&&(f.length===s||f.charAt(s)==="-")&&f.substr(0,s)===n&&e(o)}},element(e,u,t){let{adapter:a}=t,{name:r,value:n}=u;if(/\s/.test(n))return Fu.default.falseFunc;let s=new RegExp(`(?:^|\\s)${Pr(n)}(?:$|\\s)`,iu(u,t)?"i":"");return function(o){let f=a.getAttributeValue(o,r);return f!=null&&f.length>=n.length&&s.test(f)&&e(o)}},exists(e,{name:u},{adapter:t}){return a=>t.hasAttrib(a,u)&&e(a)},start(e,u,t){let{adapter:a}=t,{name:r}=u,{value:n}=u,s=n.length;return s===0?Fu.default.falseFunc:iu(u,t)?(n=n.toLowerCase(),c=>{let o=a.getAttributeValue(c,r);return o!=null&&o.length>=s&&o.substr(0,s).toLowerCase()===n&&e(c)}):c=>{var o;return!!(!((o=a.getAttributeValue(c,r))===null||o===void 0)&&o.startsWith(n))&&e(c)}},end(e,u,t){let{adapter:a}=t,{name:r}=u,{value:n}=u,s=-n.length;return s===0?Fu.default.falseFunc:iu(u,t)?(n=n.toLowerCase(),c=>{var o;return((o=a.getAttributeValue(c,r))===null||o===void 0?void 0:o.substr(s).toLowerCase())===n&&e(c)}):c=>{var o;return!!(!((o=a.getAttributeValue(c,r))===null||o===void 0)&&o.endsWith(n))&&e(c)}},any(e,u,t){let{adapter:a}=t,{name:r,value:n}=u;if(n==="")return Fu.default.falseFunc;if(iu(u,t)){let s=new RegExp(Pr(n),"i");return function(o){let f=a.getAttributeValue(o,r);return f!=null&&f.length>=n.length&&s.test(f)&&e(o)}}return s=>{var c;return!!(!((c=a.getAttributeValue(s,r))===null||c===void 0)&&c.includes(n))&&e(s)}},not(e,u,t){let{adapter:a}=t,{name:r}=u,{value:n}=u;return n===""?s=>!!a.getAttributeValue(s,r)&&e(s):iu(u,t)?(n=n.toLowerCase(),s=>{let c=a.getAttributeValue(s,r);return(c==null||c.length!==n.length||c.toLowerCase()!==n)&&e(s)}):s=>a.getAttributeValue(s,r)!==n&&e(s)}};var Fs=new Set([9,10,12,13,32]),kr=48,Hs=57;function Mr(e){if(e=e.trim().toLowerCase(),e==="even")return[2,0];if(e==="odd")return[2,1];let u=0,t=0,a=n(),r=s();if(u<e.length&&e.charAt(u)==="n"&&(u++,t=a*(r!=null?r:1),c(),u<e.length?(a=n(),c(),r=s()):a=r=0),r===null||u<e.length)throw new Error(`n-th rule couldn't be parsed ('${e}')`);return[t,a*r];function n(){return e.charAt(u)==="-"?(u++,-1):(e.charAt(u)==="+"&&u++,1)}function s(){let o=u,f=0;for(;u<e.length&&e.charCodeAt(u)>=kr&&e.charCodeAt(u)<=Hs;)f=f*10+(e.charCodeAt(u)-kr),u++;return u===o?null:f}function c(){for(;u<e.length&&Fs.has(e.charCodeAt(u));)u++}}var Q0=je(qe(),1);function vr(e){let u=e[0],t=e[1]-1;if(t<0&&u<=0)return Q0.default.falseFunc;if(u===-1)return n=>n<=t;if(u===0)return n=>n===t;if(u===1)return t<0?Q0.default.trueFunc:n=>n>=t;let a=Math.abs(u),r=(t%a+a)%a;return u>1?n=>n>=t&&n%a===r:n=>n<=t&&n%a===r}function Tu(e){return vr(Mr(e))}var oe=je(qe(),1);function Ot(e,u){return t=>{let a=u.getParent(t);return a!=null&&u.isTag(a)&&e(t)}}var gu={contains(e,u,{adapter:t}){return function(r){return e(r)&&t.getText(r).includes(u)}},icontains(e,u,{adapter:t}){let a=u.toLowerCase();return function(n){return e(n)&&t.getText(n).toLowerCase().includes(a)}},"nth-child"(e,u,{adapter:t,equals:a}){let r=Tu(u);return r===oe.default.falseFunc?oe.default.falseFunc:r===oe.default.trueFunc?Ot(e,t):function(s){let c=t.getSiblings(s),o=0;for(let f=0;f<c.length&&!a(s,c[f]);f++)t.isTag(c[f])&&o++;return r(o)&&e(s)}},"nth-last-child"(e,u,{adapter:t,equals:a}){let r=Tu(u);return r===oe.default.falseFunc?oe.default.falseFunc:r===oe.default.trueFunc?Ot(e,t):function(s){let c=t.getSiblings(s),o=0;for(let f=c.length-1;f>=0&&!a(s,c[f]);f--)t.isTag(c[f])&&o++;return r(o)&&e(s)}},"nth-of-type"(e,u,{adapter:t,equals:a}){let r=Tu(u);return r===oe.default.falseFunc?oe.default.falseFunc:r===oe.default.trueFunc?Ot(e,t):function(s){let c=t.getSiblings(s),o=0;for(let f=0;f<c.length;f++){let b=c[f];if(a(s,b))break;t.isTag(b)&&t.getName(b)===t.getName(s)&&o++}return r(o)&&e(s)}},"nth-last-of-type"(e,u,{adapter:t,equals:a}){let r=Tu(u);return r===oe.default.falseFunc?oe.default.falseFunc:r===oe.default.trueFunc?Ot(e,t):function(s){let c=t.getSiblings(s),o=0;for(let f=c.length-1;f>=0;f--){let b=c[f];if(a(s,b))break;t.isTag(b)&&t.getName(b)===t.getName(s)&&o++}return r(o)&&e(s)}},root(e,u,{adapter:t}){return a=>{let r=t.getParent(a);return(r==null||!t.isTag(r))&&e(a)}},scope(e,u,t,a){let{equals:r}=t;return!a||a.length===0?gu.root(e,u,t):a.length===1?n=>r(a[0],n)&&e(n):n=>a.includes(n)&&e(n)},hover:X0("isHovered"),visited:X0("isVisited"),active:X0("isActive")};function X0(e){return function(t,a,{adapter:r}){let n=r[e];return typeof n!="function"?oe.default.falseFunc:function(c){return n(c)&&t(c)}}}var Hu={empty(e,{adapter:u}){return!u.getChildren(e).some(t=>u.isTag(t)||u.getText(t)!=="")},"first-child"(e,{adapter:u,equals:t}){if(u.prevElementSibling)return u.prevElementSibling(e)==null;let a=u.getSiblings(e).find(r=>u.isTag(r));return a!=null&&t(e,a)},"last-child"(e,{adapter:u,equals:t}){let a=u.getSiblings(e);for(let r=a.length-1;r>=0;r--){if(t(e,a[r]))return!0;if(u.isTag(a[r]))break}return!1},"first-of-type"(e,{adapter:u,equals:t}){let a=u.getSiblings(e),r=u.getName(e);for(let n=0;n<a.length;n++){let s=a[n];if(t(e,s))return!0;if(u.isTag(s)&&u.getName(s)===r)break}return!1},"last-of-type"(e,{adapter:u,equals:t}){let a=u.getSiblings(e),r=u.getName(e);for(let n=a.length-1;n>=0;n--){let s=a[n];if(t(e,s))return!0;if(u.isTag(s)&&u.getName(s)===r)break}return!1},"only-of-type"(e,{adapter:u,equals:t}){let a=u.getName(e);return u.getSiblings(e).every(r=>t(e,r)||!u.isTag(r)||u.getName(r)!==a)},"only-child"(e,{adapter:u,equals:t}){return u.getSiblings(e).every(a=>t(e,a)||!u.isTag(a))}};function j0(e,u,t,a){if(t===null){if(e.length>a)throw new Error(`Pseudo-class :${u} requires an argument`)}else if(e.length===a)throw new Error(`Pseudo-class :${u} doesn't have any arguments`)}var Pt={"any-link":":is(a, area, link)[href]",link:":any-link:not(:visited)",disabled:`:is( :is(button, input, select, textarea, optgroup, option)[disabled], optgroup[disabled] > option, fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *) - )`, - enabled: ":not(:disabled)", - checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)", - required: ":is(input, select, textarea)[required]", - optional: ":is(input, select, textarea):not([required])", - // JQuery extensions - // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness - selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)", - checkbox: "[type=checkbox]", - file: "[type=file]", - password: "[type=password]", - radio: "[type=radio]", - reset: "[type=reset]", - image: "[type=image]", - submit: "[type=submit]", - parent: ":not(:empty)", - header: ":is(h1, h2, h3, h4, h5, h6)", - button: ":is(button, input[type=button])", - input: ":is(input, textarea, select, button)", - text: "input:is(:not([type!='']), [type=text])" -}; - -// node_modules/css-select/lib/esm/pseudo-selectors/subselects.js -var import_boolbase4 = __toESM(require_boolbase(), 1); -var PLACEHOLDER_ELEMENT = {}; -function ensureIsTag(next2, adapter2) { - if (next2 === import_boolbase4.default.falseFunc) - return import_boolbase4.default.falseFunc; - return (elem) => adapter2.isTag(elem) && next2(elem); -} -function getNextSiblings(elem, adapter2) { - const siblings2 = adapter2.getSiblings(elem); - if (siblings2.length <= 1) - return []; - const elemIndex = siblings2.indexOf(elem); - if (elemIndex < 0 || elemIndex === siblings2.length - 1) - return []; - return siblings2.slice(elemIndex + 1).filter(adapter2.isTag); -} -function copyOptions(options) { - return { - xmlMode: !!options.xmlMode, - lowerCaseAttributeNames: !!options.lowerCaseAttributeNames, - lowerCaseTags: !!options.lowerCaseTags, - quirksMode: !!options.quirksMode, - cacheResults: !!options.cacheResults, - pseudos: options.pseudos, - adapter: options.adapter, - equals: options.equals - }; -} -var is = (next2, token, options, context, compileToken2) => { - const func = compileToken2(token, copyOptions(options), context); - return func === import_boolbase4.default.trueFunc ? next2 : func === import_boolbase4.default.falseFunc ? import_boolbase4.default.falseFunc : (elem) => func(elem) && next2(elem); -}; -var subselects = { - is, - /** - * `:matches` and `:where` are aliases for `:is`. - */ - matches: is, - where: is, - not(next2, token, options, context, compileToken2) { - const func = compileToken2(token, copyOptions(options), context); - return func === import_boolbase4.default.falseFunc ? next2 : func === import_boolbase4.default.trueFunc ? import_boolbase4.default.falseFunc : (elem) => !func(elem) && next2(elem); - }, - has(next2, subselect, options, _context, compileToken2) { - const { adapter: adapter2 } = options; - const opts = copyOptions(options); - opts.relativeSelector = true; - const context = subselect.some((s) => s.some(isTraversal2)) ? ( - // Used as a placeholder. Will be replaced with the actual element. - [PLACEHOLDER_ELEMENT] - ) : void 0; - const compiled = compileToken2(subselect, opts, context); - if (compiled === import_boolbase4.default.falseFunc) - return import_boolbase4.default.falseFunc; - const hasElement = ensureIsTag(compiled, adapter2); - if (context && compiled !== import_boolbase4.default.trueFunc) { - const { shouldTestNextSiblings = false } = compiled; - return (elem) => { - if (!next2(elem)) - return false; - context[0] = elem; - const childs = adapter2.getChildren(elem); - const nextElements = shouldTestNextSiblings ? [...childs, ...getNextSiblings(elem, adapter2)] : childs; - return adapter2.existsOne(hasElement, nextElements); - }; - } - return (elem) => next2(elem) && adapter2.existsOne(hasElement, adapter2.getChildren(elem)); - } -}; - -// node_modules/css-select/lib/esm/pseudo-selectors/index.js -function compilePseudoSelector(next2, selector, options, context, compileToken2) { - var _a5; - const { name, data: data2 } = selector; - if (Array.isArray(data2)) { - if (!(name in subselects)) { - throw new Error(`Unknown pseudo-class :${name}(${data2})`); - } - return subselects[name](next2, data2, options, context, compileToken2); - } - const userPseudo = (_a5 = options.pseudos) === null || _a5 === void 0 ? void 0 : _a5[name]; - const stringPseudo = typeof userPseudo === "string" ? userPseudo : aliases[name]; - if (typeof stringPseudo === "string") { - if (data2 != null) { - throw new Error(`Pseudo ${name} doesn't have any arguments`); - } - const alias = parse(stringPseudo); - return subselects["is"](next2, alias, options, context, compileToken2); - } - if (typeof userPseudo === "function") { - verifyPseudoArgs(userPseudo, name, data2, 1); - return (elem) => userPseudo(elem, data2) && next2(elem); - } - if (name in filters) { - return filters[name](next2, data2, options, context); - } - if (name in pseudos) { - const pseudo = pseudos[name]; - verifyPseudoArgs(pseudo, name, data2, 2); - return (elem) => pseudo(elem, options, data2) && next2(elem); - } - throw new Error(`Unknown pseudo-class :${name}`); -} - -// node_modules/css-select/lib/esm/general.js -function getElementParent(node, adapter2) { - const parent2 = adapter2.getParent(node); - if (parent2 && adapter2.isTag(parent2)) { - return parent2; - } - return null; -} -function compileGeneralSelector(next2, selector, options, context, compileToken2) { - const { adapter: adapter2, equals } = options; - switch (selector.type) { - case SelectorType.PseudoElement: { - throw new Error("Pseudo-elements are not supported by css-select"); - } - case SelectorType.ColumnCombinator: { - throw new Error("Column combinators are not yet supported by css-select"); - } - case SelectorType.Attribute: { - if (selector.namespace != null) { - throw new Error("Namespaced attributes are not yet supported by css-select"); - } - if (!options.xmlMode || options.lowerCaseAttributeNames) { - selector.name = selector.name.toLowerCase(); - } - return attributeRules[selector.action](next2, selector, options); - } - case SelectorType.Pseudo: { - return compilePseudoSelector(next2, selector, options, context, compileToken2); - } - // Tags - case SelectorType.Tag: { - if (selector.namespace != null) { - throw new Error("Namespaced tag names are not yet supported by css-select"); - } - let { name } = selector; - if (!options.xmlMode || options.lowerCaseTags) { - name = name.toLowerCase(); - } - return function tag(elem) { - return adapter2.getName(elem) === name && next2(elem); - }; - } - // Traversal - case SelectorType.Descendant: { - if (options.cacheResults === false || typeof WeakSet === "undefined") { - return function descendant(elem) { - let current = elem; - while (current = getElementParent(current, adapter2)) { - if (next2(current)) { - return true; - } - } - return false; - }; - } - const isFalseCache = /* @__PURE__ */ new WeakSet(); - return function cachedDescendant(elem) { - let current = elem; - while (current = getElementParent(current, adapter2)) { - if (!isFalseCache.has(current)) { - if (adapter2.isTag(current) && next2(current)) { - return true; - } - isFalseCache.add(current); - } - } - return false; - }; - } - case "_flexibleDescendant": { - return function flexibleDescendant(elem) { - let current = elem; - do { - if (next2(current)) - return true; - } while (current = getElementParent(current, adapter2)); - return false; - }; - } - case SelectorType.Parent: { - return function parent2(elem) { - return adapter2.getChildren(elem).some((elem2) => adapter2.isTag(elem2) && next2(elem2)); - }; - } - case SelectorType.Child: { - return function child(elem) { - const parent2 = adapter2.getParent(elem); - return parent2 != null && adapter2.isTag(parent2) && next2(parent2); - }; - } - case SelectorType.Sibling: { - return function sibling(elem) { - const siblings2 = adapter2.getSiblings(elem); - for (let i = 0; i < siblings2.length; i++) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling) && next2(currentSibling)) { - return true; - } - } - return false; - }; - } - case SelectorType.Adjacent: { - if (adapter2.prevElementSibling) { - return function adjacent(elem) { - const previous = adapter2.prevElementSibling(elem); - return previous != null && next2(previous); - }; - } - return function adjacent(elem) { - const siblings2 = adapter2.getSiblings(elem); - let lastElement; - for (let i = 0; i < siblings2.length; i++) { - const currentSibling = siblings2[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling)) { - lastElement = currentSibling; - } - } - return !!lastElement && next2(lastElement); - }; - } - case SelectorType.Universal: { - if (selector.namespace != null && selector.namespace !== "*") { - throw new Error("Namespaced universal selectors are not yet supported by css-select"); - } - return next2; - } - } -} - -// node_modules/css-select/lib/esm/compile.js -function compile2(selector, options, context) { - const next2 = compileUnsafe(selector, options, context); - return ensureIsTag(next2, options.adapter); -} -function compileUnsafe(selector, options, context) { - const token = typeof selector === "string" ? parse(selector) : selector; - return compileToken(token, options, context); -} -function includesScopePseudo(t) { - return t.type === SelectorType.Pseudo && (t.name === "scope" || Array.isArray(t.data) && t.data.some((data2) => data2.some(includesScopePseudo))); -} -var DESCENDANT_TOKEN = { type: SelectorType.Descendant }; -var FLEXIBLE_DESCENDANT_TOKEN = { - type: "_flexibleDescendant" -}; -var SCOPE_TOKEN = { - type: SelectorType.Pseudo, - name: "scope", - data: null -}; -function absolutize(token, { adapter: adapter2 }, context) { - const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => { - const parent2 = adapter2.isTag(e) && adapter2.getParent(e); - return e === PLACEHOLDER_ELEMENT || parent2 && adapter2.isTag(parent2); - })); - for (const t of token) { - if (t.length > 0 && isTraversal2(t[0]) && t[0].type !== SelectorType.Descendant) { - } else if (hasContext && !t.some(includesScopePseudo)) { - t.unshift(DESCENDANT_TOKEN); - } else { - continue; - } - t.unshift(SCOPE_TOKEN); - } -} -function compileToken(token, options, context) { - var _a5; - token.forEach(sortByProcedure); - context = (_a5 = options.context) !== null && _a5 !== void 0 ? _a5 : context; - const isArrayContext = Array.isArray(context); - const finalContext = context && (Array.isArray(context) ? context : [context]); - if (options.relativeSelector !== false) { - absolutize(token, options, finalContext); - } else if (token.some((t) => t.length > 0 && isTraversal2(t[0]))) { - throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled"); - } - let shouldTestNextSiblings = false; - const query = token.map((rules) => { - if (rules.length >= 2) { - const [first2, second] = rules; - if (first2.type !== SelectorType.Pseudo || first2.name !== "scope") { - } else if (isArrayContext && second.type === SelectorType.Descendant) { - rules[1] = FLEXIBLE_DESCENDANT_TOKEN; - } else if (second.type === SelectorType.Adjacent || second.type === SelectorType.Sibling) { - shouldTestNextSiblings = true; - } - } - return compileRules(rules, options, finalContext); - }).reduce(reduceRules, import_boolbase5.default.falseFunc); - query.shouldTestNextSiblings = shouldTestNextSiblings; - return query; -} -function compileRules(rules, options, context) { - var _a5; - return rules.reduce((previous, rule) => previous === import_boolbase5.default.falseFunc ? import_boolbase5.default.falseFunc : compileGeneralSelector(previous, rule, options, context, compileToken), (_a5 = options.rootFunc) !== null && _a5 !== void 0 ? _a5 : import_boolbase5.default.trueFunc); -} -function reduceRules(a, b) { - if (b === import_boolbase5.default.falseFunc || a === import_boolbase5.default.trueFunc) { - return a; - } - if (a === import_boolbase5.default.falseFunc || b === import_boolbase5.default.trueFunc) { - return b; - } - return function combine(elem) { - return a(elem) || b(elem); - }; -} - -// node_modules/css-select/lib/esm/index.js -var defaultEquals = (a, b) => a === b; -var defaultOptions = { - adapter: esm_exports2, - equals: defaultEquals -}; -function convertOptionFormats(options) { - var _a5, _b, _c, _d; - const opts = options !== null && options !== void 0 ? options : defaultOptions; - (_a5 = opts.adapter) !== null && _a5 !== void 0 ? _a5 : opts.adapter = esm_exports2; - (_b = opts.equals) !== null && _b !== void 0 ? _b : opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals; - return opts; -} -function wrapCompile(func) { - return function addAdapter(selector, options, context) { - const opts = convertOptionFormats(options); - return func(selector, opts, context); - }; -} -var compile3 = wrapCompile(compile2); -var _compileUnsafe = wrapCompile(compileUnsafe); -var _compileToken = wrapCompile(compileToken); -function getSelectorFunc(searchFunc) { - return function select2(query, elements, options) { - const opts = convertOptionFormats(options); - if (typeof query !== "function") { - query = compileUnsafe(query, opts, elements); - } - const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings); - return searchFunc(query, filteredElements, opts); - }; -} -function prepareContext(elems, adapter2, shouldTestNextSiblings = false) { - if (shouldTestNextSiblings) { - elems = appendNextSiblings(elems, adapter2); - } - return Array.isArray(elems) ? adapter2.removeSubsets(elems) : adapter2.getChildren(elems); -} -function appendNextSiblings(elem, adapter2) { - const elems = Array.isArray(elem) ? elem.slice(0) : [elem]; - const elemsLength = elems.length; - for (let i = 0; i < elemsLength; i++) { - const nextSiblings = getNextSiblings(elems[i], adapter2); - elems.push(...nextSiblings); - } - return elems; -} -var selectAll = getSelectorFunc((query, elems, options) => query === import_boolbase6.default.falseFunc || !elems || elems.length === 0 ? [] : options.adapter.findAll(query, elems)); -var selectOne = getSelectorFunc((query, elems, options) => query === import_boolbase6.default.falseFunc || !elems || elems.length === 0 ? null : options.adapter.findOne(query, elems)); - -// node_modules/cheerio-select/lib/esm/index.js -var boolbase7 = __toESM(require_boolbase(), 1); - -// node_modules/cheerio-select/lib/esm/positionals.js -var filterNames = /* @__PURE__ */ new Set([ - "first", - "last", - "eq", - "gt", - "nth", - "lt", - "even", - "odd" -]); -function isFilter(s) { - if (s.type !== "pseudo") - return false; - if (filterNames.has(s.name)) - return true; - if (s.name === "not" && Array.isArray(s.data)) { - return s.data.some((s2) => s2.some(isFilter)); - } - return false; -} -function getLimit(filter4, data2, partLimit) { - const num = data2 != null ? parseInt(data2, 10) : NaN; - switch (filter4) { - case "first": - return 1; - case "nth": - case "eq": - return isFinite(num) ? num >= 0 ? num + 1 : Infinity : 0; - case "lt": - return isFinite(num) ? num >= 0 ? Math.min(num, partLimit) : Infinity : 0; - case "gt": - return isFinite(num) ? Infinity : 0; - case "odd": - return 2 * partLimit; - case "even": - return 2 * partLimit - 1; - case "last": - case "not": - return Infinity; - } -} - -// node_modules/cheerio-select/lib/esm/helpers.js -function getDocumentRoot(node) { - while (node.parent) - node = node.parent; - return node; -} -function groupSelectors(selectors) { - const filteredSelectors = []; - const plainSelectors = []; - for (const selector of selectors) { - if (selector.some(isFilter)) { - filteredSelectors.push(selector); - } else { - plainSelectors.push(selector); - } - } - return [plainSelectors, filteredSelectors]; -} - -// node_modules/cheerio-select/lib/esm/index.js -var UNIVERSAL_SELECTOR = { - type: SelectorType.Universal, - namespace: null -}; -var SCOPE_PSEUDO = { - type: SelectorType.Pseudo, - name: "scope", - data: null -}; -function is2(element, selector, options = {}) { - return some([element], selector, options); -} -function some(elements, selector, options = {}) { - if (typeof selector === "function") - return elements.some(selector); - const [plain, filtered] = groupSelectors(parse(selector)); - return plain.length > 0 && elements.some(_compileToken(plain, options)) || filtered.some((sel) => filterBySelector(sel, elements, options).length > 0); -} -function filterByPosition(filter4, elems, data2, options) { - const num = typeof data2 === "string" ? parseInt(data2, 10) : NaN; - switch (filter4) { - case "first": - case "lt": - return elems; - case "last": - return elems.length > 0 ? [elems[elems.length - 1]] : elems; - case "nth": - case "eq": - return isFinite(num) && Math.abs(num) < elems.length ? [num < 0 ? elems[elems.length + num] : elems[num]] : []; - case "gt": - return isFinite(num) ? elems.slice(num + 1) : []; - case "even": - return elems.filter((_, i) => i % 2 === 0); - case "odd": - return elems.filter((_, i) => i % 2 === 1); - case "not": { - const filtered = new Set(filterParsed(data2, elems, options)); - return elems.filter((e) => !filtered.has(e)); - } - } -} -function filter2(selector, elements, options = {}) { - return filterParsed(parse(selector), elements, options); -} -function filterParsed(selector, elements, options) { - if (elements.length === 0) - return []; - const [plainSelectors, filteredSelectors] = groupSelectors(selector); - let found; - if (plainSelectors.length) { - const filtered = filterElements(elements, plainSelectors, options); - if (filteredSelectors.length === 0) { - return filtered; - } - if (filtered.length) { - found = new Set(filtered); - } - } - for (let i = 0; i < filteredSelectors.length && (found === null || found === void 0 ? void 0 : found.size) !== elements.length; i++) { - const filteredSelector = filteredSelectors[i]; - const missing = found ? elements.filter((e) => isTag2(e) && !found.has(e)) : elements; - if (missing.length === 0) - break; - const filtered = filterBySelector(filteredSelector, elements, options); - if (filtered.length) { - if (!found) { - if (i === filteredSelectors.length - 1) { - return filtered; - } - found = new Set(filtered); - } else { - filtered.forEach((el) => found.add(el)); - } - } - } - return typeof found !== "undefined" ? found.size === elements.length ? elements : ( - // Filter elements to preserve order - elements.filter((el) => found.has(el)) - ) : []; -} -function filterBySelector(selector, elements, options) { - var _a5; - if (selector.some(isTraversal)) { - const root2 = (_a5 = options.root) !== null && _a5 !== void 0 ? _a5 : getDocumentRoot(elements[0]); - const opts = { ...options, context: elements, relativeSelector: false }; - selector.push(SCOPE_PSEUDO); - return findFilterElements(root2, selector, opts, true, elements.length); - } - return findFilterElements(elements, selector, options, false, elements.length); -} -function select(selector, root2, options = {}, limit = Infinity) { - if (typeof selector === "function") { - return find2(root2, selector); - } - const [plain, filtered] = groupSelectors(parse(selector)); - const results = filtered.map((sel) => findFilterElements(root2, sel, options, true, limit)); - if (plain.length) { - results.push(findElements(root2, plain, options, limit)); - } - if (results.length === 0) { - return []; - } - if (results.length === 1) { - return results[0]; - } - return uniqueSort(results.reduce((a, b) => [...a, ...b])); -} -function findFilterElements(root2, selector, options, queryForSelector, totalLimit) { - const filterIndex = selector.findIndex(isFilter); - const sub = selector.slice(0, filterIndex); - const filter4 = selector[filterIndex]; - const partLimit = selector.length - 1 === filterIndex ? totalLimit : Infinity; - const limit = getLimit(filter4.name, filter4.data, partLimit); - if (limit === 0) - return []; - const elemsNoLimit = sub.length === 0 && !Array.isArray(root2) ? getChildren(root2).filter(isTag2) : sub.length === 0 ? (Array.isArray(root2) ? root2 : [root2]).filter(isTag2) : queryForSelector || sub.some(isTraversal) ? findElements(root2, [sub], options, limit) : filterElements(root2, [sub], options); - const elems = elemsNoLimit.slice(0, limit); - let result = filterByPosition(filter4.name, elems, filter4.data, options); - if (result.length === 0 || selector.length === filterIndex + 1) { - return result; - } - const remainingSelector = selector.slice(filterIndex + 1); - const remainingHasTraversal = remainingSelector.some(isTraversal); - if (remainingHasTraversal) { - if (isTraversal(remainingSelector[0])) { - const { type } = remainingSelector[0]; - if (type === SelectorType.Sibling || type === SelectorType.Adjacent) { - result = prepareContext(result, esm_exports2, true); - } - remainingSelector.unshift(UNIVERSAL_SELECTOR); - } - options = { - ...options, - // Avoid absolutizing the selector - relativeSelector: false, - /* - * Add a custom root func, to make sure traversals don't match elements - * that aren't a part of the considered tree. - */ - rootFunc: (el) => result.includes(el) - }; - } else if (options.rootFunc && options.rootFunc !== boolbase7.trueFunc) { - options = { ...options, rootFunc: boolbase7.trueFunc }; - } - return remainingSelector.some(isFilter) ? findFilterElements(result, remainingSelector, options, false, totalLimit) : remainingHasTraversal ? ( - // Query existing elements to resolve traversal. - findElements(result, [remainingSelector], options, totalLimit) - ) : ( - // If we don't have any more traversals, simply filter elements. - filterElements(result, [remainingSelector], options) - ); -} -function findElements(root2, sel, options, limit) { - const query = _compileToken(sel, options, root2); - return find2(root2, query, limit); -} -function find2(root2, query, limit = Infinity) { - const elems = prepareContext(root2, esm_exports2, query.shouldTestNextSiblings); - return find((node) => isTag2(node) && query(node), elems, true, limit); -} -function filterElements(elements, sel, options) { - const els = (Array.isArray(elements) ? elements : [elements]).filter(isTag2); - if (els.length === 0) - return els; - const query = _compileToken(sel, options); - return query === boolbase7.trueFunc ? els : els.filter(query); -} - -// node_modules/cheerio/dist/browser/api/traversing.js -var reSiblingSelector = /^\s*[+~]/; -function find3(selectorOrHaystack) { - if (!selectorOrHaystack) { - return this._make([]); - } - if (typeof selectorOrHaystack !== "string") { - const haystack = isCheerio(selectorOrHaystack) ? selectorOrHaystack.toArray() : [selectorOrHaystack]; - const context = this.toArray(); - return this._make(haystack.filter((elem) => context.some((node) => contains(node, elem)))); - } - return this._findBySelector(selectorOrHaystack, Number.POSITIVE_INFINITY); -} -function _findBySelector(selector, limit) { - var _a5; - const context = this.toArray(); - const elems = reSiblingSelector.test(selector) ? context : this.children().toArray(); - const options = { - context, - root: (_a5 = this._root) === null || _a5 === void 0 ? void 0 : _a5[0], - // Pass options that are recognized by `cheerio-select` - xmlMode: this.options.xmlMode, - lowerCaseTags: this.options.lowerCaseTags, - lowerCaseAttributeNames: this.options.lowerCaseAttributeNames, - pseudos: this.options.pseudos, - quirksMode: this.options.quirksMode - }; - return this._make(select(selector, elems, options, limit)); -} -function _getMatcher(matchMap) { - return function(fn, ...postFns) { - return function(selector) { - var _a5; - let matched = matchMap(fn, this); - if (selector) { - matched = filterArray(matched, selector, this.options.xmlMode, (_a5 = this._root) === null || _a5 === void 0 ? void 0 : _a5[0]); - } - return this._make( - // Post processing is only necessary if there is more than one element. - this.length > 1 && matched.length > 1 ? postFns.reduce((elems, fn2) => fn2(elems), matched) : matched - ); - }; - }; -} -var _matcher = _getMatcher((fn, elems) => { - let ret = []; - for (let i = 0; i < elems.length; i++) { - const value = fn(elems[i]); - if (value.length > 0) - ret = ret.concat(value); - } - return ret; -}); -var _singleMatcher = _getMatcher((fn, elems) => { - const ret = []; - for (let i = 0; i < elems.length; i++) { - const value = fn(elems[i]); - if (value !== null) { - ret.push(value); - } - } - return ret; -}); -function _matchUntil(nextElem, ...postFns) { - let matches = null; - const innerMatcher = _getMatcher((nextElem2, elems) => { - const matched = []; - domEach(elems, (elem) => { - for (let next2; next2 = nextElem2(elem); elem = next2) { - if (matches === null || matches === void 0 ? void 0 : matches(next2, matched.length)) - break; - matched.push(next2); - } - }); - return matched; - })(nextElem, ...postFns); - return function(selector, filterSelector) { - matches = typeof selector === "string" ? (elem) => is2(elem, selector, this.options) : selector ? getFilterFn(selector) : null; - const ret = innerMatcher.call(this, filterSelector); - matches = null; - return ret; - }; -} -function _removeDuplicates(elems) { - return elems.length > 1 ? Array.from(new Set(elems)) : elems; -} -var parent = _singleMatcher(({ parent: parent2 }) => parent2 && !isDocument(parent2) ? parent2 : null, _removeDuplicates); -var parents = _matcher((elem) => { - const matched = []; - while (elem.parent && !isDocument(elem.parent)) { - matched.push(elem.parent); - elem = elem.parent; - } - return matched; -}, uniqueSort, (elems) => elems.reverse()); -var parentsUntil = _matchUntil(({ parent: parent2 }) => parent2 && !isDocument(parent2) ? parent2 : null, uniqueSort, (elems) => elems.reverse()); -function closest(selector) { - var _a5; - const set = []; - if (!selector) { - return this._make(set); - } - const selectOpts = { - xmlMode: this.options.xmlMode, - root: (_a5 = this._root) === null || _a5 === void 0 ? void 0 : _a5[0] - }; - const selectFn = typeof selector === "string" ? (elem) => is2(elem, selector, selectOpts) : getFilterFn(selector); - domEach(this, (elem) => { - if (elem && !isDocument(elem) && !isTag2(elem)) { - elem = elem.parent; - } - while (elem && isTag2(elem)) { - if (selectFn(elem, 0)) { - if (!set.includes(elem)) { - set.push(elem); - } - break; - } - elem = elem.parent; - } - }); - return this._make(set); -} -var next = _singleMatcher((elem) => nextElementSibling(elem)); -var nextAll = _matcher((elem) => { - const matched = []; - while (elem.next) { - elem = elem.next; - if (isTag2(elem)) - matched.push(elem); - } - return matched; -}, _removeDuplicates); -var nextUntil = _matchUntil((el) => nextElementSibling(el), _removeDuplicates); -var prev = _singleMatcher((elem) => prevElementSibling(elem)); -var prevAll = _matcher((elem) => { - const matched = []; - while (elem.prev) { - elem = elem.prev; - if (isTag2(elem)) - matched.push(elem); - } - return matched; -}, _removeDuplicates); -var prevUntil = _matchUntil((el) => prevElementSibling(el), _removeDuplicates); -var siblings = _matcher((elem) => getSiblings(elem).filter((el) => isTag2(el) && el !== elem), uniqueSort); -var children = _matcher((elem) => getChildren(elem).filter(isTag2), _removeDuplicates); -function contents() { - const elems = this.toArray().reduce((newElems, elem) => hasChildren(elem) ? newElems.concat(elem.children) : newElems, []); - return this._make(elems); -} -function each(fn) { - let i = 0; - const len = this.length; - while (i < len && fn.call(this[i], i, this[i]) !== false) - ++i; - return this; -} -function map(fn) { - let elems = []; - for (let i = 0; i < this.length; i++) { - const el = this[i]; - const val2 = fn.call(el, i, el); - if (val2 != null) { - elems = elems.concat(val2); - } - } - return this._make(elems); -} -function getFilterFn(match) { - if (typeof match === "function") { - return (el, i) => match.call(el, i, el); - } - if (isCheerio(match)) { - return (el) => Array.prototype.includes.call(match, el); - } - return function(el) { - return match === el; - }; -} -function filter3(match) { - var _a5; - return this._make(filterArray(this.toArray(), match, this.options.xmlMode, (_a5 = this._root) === null || _a5 === void 0 ? void 0 : _a5[0])); -} -function filterArray(nodes, match, xmlMode, root2) { - return typeof match === "string" ? filter2(match, nodes, { xmlMode, root: root2 }) : nodes.filter(getFilterFn(match)); -} -function is3(selector) { - const nodes = this.toArray(); - return typeof selector === "string" ? some(nodes.filter(isTag2), selector, this.options) : selector ? nodes.some(getFilterFn(selector)) : false; -} -function not(match) { - let nodes = this.toArray(); - if (typeof match === "string") { - const matches = new Set(filter2(match, nodes, this.options)); - nodes = nodes.filter((el) => !matches.has(el)); - } else { - const filterFn = getFilterFn(match); - nodes = nodes.filter((el, i) => !filterFn(el, i)); - } - return this._make(nodes); -} -function has(selectorOrHaystack) { - return this.filter(typeof selectorOrHaystack === "string" ? ( - // Using the `:has` selector here short-circuits searches. - `:has(${selectorOrHaystack})` - ) : (_, el) => this._make(el).find(selectorOrHaystack).length > 0); -} -function first() { - return this.length > 1 ? this._make(this[0]) : this; -} -function last() { - return this.length > 0 ? this._make(this[this.length - 1]) : this; -} -function eq(i) { - var _a5; - i = +i; - if (i === 0 && this.length <= 1) - return this; - if (i < 0) - i = this.length + i; - return this._make((_a5 = this[i]) !== null && _a5 !== void 0 ? _a5 : []); -} -function get(i) { - if (i == null) { - return this.toArray(); - } - return this[i < 0 ? this.length + i : i]; -} -function toArray() { - return Array.prototype.slice.call(this); -} -function index(selectorOrNeedle) { - let $haystack; - let needle; - if (selectorOrNeedle == null) { - $haystack = this.parent().children(); - needle = this[0]; - } else if (typeof selectorOrNeedle === "string") { - $haystack = this._make(selectorOrNeedle); - needle = this[0]; - } else { - $haystack = this; - needle = isCheerio(selectorOrNeedle) ? selectorOrNeedle[0] : selectorOrNeedle; - } - return Array.prototype.indexOf.call($haystack, needle); -} -function slice(start, end2) { - return this._make(Array.prototype.slice.call(this, start, end2)); -} -function end() { - var _a5; - return (_a5 = this.prevObject) !== null && _a5 !== void 0 ? _a5 : this._make([]); -} -function add(other, context) { - const selection = this._make(other, context); - const contents2 = uniqueSort([...this.get(), ...selection.get()]); - return this._make(contents2); -} -function addBack(selector) { - return this.prevObject ? this.add(selector ? this.prevObject.filter(selector) : this.prevObject) : this; -} - -// node_modules/cheerio/dist/browser/api/manipulation.js -var manipulation_exports = {}; -__export(manipulation_exports, { - _makeDomArray: () => _makeDomArray, - after: () => after, - append: () => append2, - appendTo: () => appendTo, - before: () => before, - clone: () => clone, - empty: () => empty, - html: () => html2, - insertAfter: () => insertAfter, - insertBefore: () => insertBefore, - prepend: () => prepend2, - prependTo: () => prependTo, - remove: () => remove, - replaceWith: () => replaceWith, - text: () => text2, - toString: () => toString, - unwrap: () => unwrap, - wrap: () => wrap, - wrapAll: () => wrapAll, - wrapInner: () => wrapInner -}); - -// node_modules/cheerio/dist/browser/parse.js -function getParse(parser) { - return function parse6(content, options, isDocument2, context) { - if (typeof Buffer !== "undefined" && Buffer.isBuffer(content)) { - content = content.toString(); - } - if (typeof content === "string") { - return parser(content, options, isDocument2, context); - } - const doc = content; - if (!Array.isArray(doc) && isDocument(doc)) { - return doc; - } - const root2 = new Document([]); - update(doc, root2); - return root2; - }; -} -function update(newChilds, parent2) { - const arr = Array.isArray(newChilds) ? newChilds : [newChilds]; - if (parent2) { - parent2.children = arr; - } else { - parent2 = null; - } - for (let i = 0; i < arr.length; i++) { - const node = arr[i]; - if (node.parent && node.parent.children !== arr) { - removeElement(node); - } - if (parent2) { - node.prev = arr[i - 1] || null; - node.next = arr[i + 1] || null; - } else { - node.prev = node.next = null; - } - node.parent = parent2; - } - return parent2; -} - -// node_modules/cheerio/dist/browser/api/manipulation.js -function _makeDomArray(elem, clone2) { - if (elem == null) { - return []; - } - if (typeof elem === "string") { - return this._parse(elem, this.options, false, null).children.slice(0); - } - if ("length" in elem) { - if (elem.length === 1) { - return this._makeDomArray(elem[0], clone2); - } - const result = []; - for (let i = 0; i < elem.length; i++) { - const el = elem[i]; - if (typeof el === "object") { - if (el == null) { - continue; - } - if (!("length" in el)) { - result.push(clone2 ? cloneNode(el, true) : el); - continue; - } - } - result.push(...this._makeDomArray(el, clone2)); - } - return result; - } - return [clone2 ? cloneNode(elem, true) : elem]; -} -function _insert(concatenator) { - return function(...elems) { - const lastIdx = this.length - 1; - return domEach(this, (el, i) => { - if (!hasChildren(el)) - return; - const domSrc = typeof elems[0] === "function" ? elems[0].call(el, i, this._render(el.children)) : elems; - const dom = this._makeDomArray(domSrc, i < lastIdx); - concatenator(dom, el.children, el); - }); - }; -} -function uniqueSplice(array, spliceIdx, spliceCount, newElems, parent2) { - var _a5, _b; - const spliceArgs = [ - spliceIdx, - spliceCount, - ...newElems - ]; - const prev2 = spliceIdx === 0 ? null : array[spliceIdx - 1]; - const next2 = spliceIdx + spliceCount >= array.length ? null : array[spliceIdx + spliceCount]; - for (let idx = 0; idx < newElems.length; ++idx) { - const node = newElems[idx]; - const oldParent = node.parent; - if (oldParent) { - const oldSiblings = oldParent.children; - const prevIdx = oldSiblings.indexOf(node); - if (prevIdx !== -1) { - oldParent.children.splice(prevIdx, 1); - if (parent2 === oldParent && spliceIdx > prevIdx) { - spliceArgs[0]--; - } - } - } - node.parent = parent2; - if (node.prev) { - node.prev.next = (_a5 = node.next) !== null && _a5 !== void 0 ? _a5 : null; - } - if (node.next) { - node.next.prev = (_b = node.prev) !== null && _b !== void 0 ? _b : null; - } - node.prev = idx === 0 ? prev2 : newElems[idx - 1]; - node.next = idx === newElems.length - 1 ? next2 : newElems[idx + 1]; - } - if (prev2) { - prev2.next = newElems[0]; - } - if (next2) { - next2.prev = newElems[newElems.length - 1]; - } - return array.splice(...spliceArgs); -} -function appendTo(target) { - const appendTarget = isCheerio(target) ? target : this._make(target); - appendTarget.append(this); - return this; -} -function prependTo(target) { - const prependTarget = isCheerio(target) ? target : this._make(target); - prependTarget.prepend(this); - return this; -} -var append2 = _insert((dom, children2, parent2) => { - uniqueSplice(children2, children2.length, 0, dom, parent2); -}); -var prepend2 = _insert((dom, children2, parent2) => { - uniqueSplice(children2, 0, 0, dom, parent2); -}); -function _wrap(insert) { - return function(wrapper) { - const lastIdx = this.length - 1; - const lastParent = this.parents().last(); - for (let i = 0; i < this.length; i++) { - const el = this[i]; - const wrap2 = typeof wrapper === "function" ? wrapper.call(el, i, el) : typeof wrapper === "string" && !isHtml(wrapper) ? lastParent.find(wrapper).clone() : wrapper; - const [wrapperDom] = this._makeDomArray(wrap2, i < lastIdx); - if (!wrapperDom || !hasChildren(wrapperDom)) - continue; - let elInsertLocation = wrapperDom; - let j = 0; - while (j < elInsertLocation.children.length) { - const child = elInsertLocation.children[j]; - if (isTag2(child)) { - elInsertLocation = child; - j = 0; - } else { - j++; - } - } - insert(el, elInsertLocation, [wrapperDom]); - } - return this; - }; -} -var wrap = _wrap((el, elInsertLocation, wrapperDom) => { - const { parent: parent2 } = el; - if (!parent2) - return; - const siblings2 = parent2.children; - const index2 = siblings2.indexOf(el); - update([el], elInsertLocation); - uniqueSplice(siblings2, index2, 0, wrapperDom, parent2); -}); -var wrapInner = _wrap((el, elInsertLocation, wrapperDom) => { - if (!hasChildren(el)) - return; - update(el.children, elInsertLocation); - update(wrapperDom, el); -}); -function unwrap(selector) { - this.parent(selector).not("body").each((_, el) => { - this._make(el).replaceWith(el.children); - }); - return this; -} -function wrapAll(wrapper) { - const el = this[0]; - if (el) { - const wrap2 = this._make(typeof wrapper === "function" ? wrapper.call(el, 0, el) : wrapper).insertBefore(el); - let elInsertLocation; - for (let i = 0; i < wrap2.length; i++) { - if (wrap2[i].type === esm_exports.Tag) { - elInsertLocation = wrap2[i]; - } - } - let j = 0; - while (elInsertLocation && j < elInsertLocation.children.length) { - const child = elInsertLocation.children[j]; - if (child.type === esm_exports.Tag) { - elInsertLocation = child; - j = 0; - } else { - j++; - } - } - if (elInsertLocation) - this._make(elInsertLocation).append(this); - } - return this; -} -function after(...elems) { - const lastIdx = this.length - 1; - return domEach(this, (el, i) => { - if (!hasChildren(el) || !el.parent) { - return; - } - const siblings2 = el.parent.children; - const index2 = siblings2.indexOf(el); - if (index2 === -1) - return; - const domSrc = typeof elems[0] === "function" ? elems[0].call(el, i, this._render(el.children)) : elems; - const dom = this._makeDomArray(domSrc, i < lastIdx); - uniqueSplice(siblings2, index2 + 1, 0, dom, el.parent); - }); -} -function insertAfter(target) { - if (typeof target === "string") { - target = this._make(target); - } - this.remove(); - const clones = []; - for (const el of this._makeDomArray(target)) { - const clonedSelf = this.clone().toArray(); - const { parent: parent2 } = el; - if (!parent2) { - continue; - } - const siblings2 = parent2.children; - const index2 = siblings2.indexOf(el); - if (index2 === -1) - continue; - uniqueSplice(siblings2, index2 + 1, 0, clonedSelf, parent2); - clones.push(...clonedSelf); - } - return this._make(clones); -} -function before(...elems) { - const lastIdx = this.length - 1; - return domEach(this, (el, i) => { - if (!hasChildren(el) || !el.parent) { - return; - } - const siblings2 = el.parent.children; - const index2 = siblings2.indexOf(el); - if (index2 === -1) - return; - const domSrc = typeof elems[0] === "function" ? elems[0].call(el, i, this._render(el.children)) : elems; - const dom = this._makeDomArray(domSrc, i < lastIdx); - uniqueSplice(siblings2, index2, 0, dom, el.parent); - }); -} -function insertBefore(target) { - const targetArr = this._make(target); - this.remove(); - const clones = []; - domEach(targetArr, (el) => { - const clonedSelf = this.clone().toArray(); - const { parent: parent2 } = el; - if (!parent2) { - return; - } - const siblings2 = parent2.children; - const index2 = siblings2.indexOf(el); - if (index2 === -1) - return; - uniqueSplice(siblings2, index2, 0, clonedSelf, parent2); - clones.push(...clonedSelf); - }); - return this._make(clones); -} -function remove(selector) { - const elems = selector ? this.filter(selector) : this; - domEach(elems, (el) => { - removeElement(el); - el.prev = el.next = el.parent = null; - }); - return this; -} -function replaceWith(content) { - return domEach(this, (el, i) => { - const { parent: parent2 } = el; - if (!parent2) { - return; - } - const siblings2 = parent2.children; - const cont = typeof content === "function" ? content.call(el, i, el) : content; - const dom = this._makeDomArray(cont); - update(dom, null); - const index2 = siblings2.indexOf(el); - uniqueSplice(siblings2, index2, 1, dom, parent2); - if (!dom.includes(el)) { - el.parent = el.prev = el.next = null; - } - }); -} -function empty() { - return domEach(this, (el) => { - if (!hasChildren(el)) - return; - for (const child of el.children) { - child.next = child.prev = child.parent = null; - } - el.children.length = 0; - }); -} -function html2(str) { - if (str === void 0) { - const el = this[0]; - if (!el || !hasChildren(el)) - return null; - return this._render(el.children); - } - return domEach(this, (el) => { - if (!hasChildren(el)) - return; - for (const child of el.children) { - child.next = child.prev = child.parent = null; - } - const content = isCheerio(str) ? str.toArray() : this._parse(`${str}`, this.options, false, el).children; - update(content, el); - }); -} -function toString() { - return this._render(this); -} -function text2(str) { - if (str === void 0) { - return text(this); - } - if (typeof str === "function") { - return domEach(this, (el, i) => this._make(el).text(str.call(el, i, text([el])))); - } - return domEach(this, (el) => { - if (!hasChildren(el)) - return; - for (const child of el.children) { - child.next = child.prev = child.parent = null; - } - const textNode = new Text2(`${str}`); - update(textNode, el); - }); -} -function clone() { - const clone2 = Array.prototype.map.call(this.get(), (el) => cloneNode(el, true)); - const root2 = new Document(clone2); - for (const node of clone2) { - node.parent = root2; - } - return this._make(clone2); -} - -// node_modules/cheerio/dist/browser/api/css.js -var css_exports = {}; -__export(css_exports, { - css: () => css -}); -function css(prop2, val2) { - if (prop2 != null && val2 != null || // When `prop` is a "plain" object - typeof prop2 === "object" && !Array.isArray(prop2)) { - return domEach(this, (el, i) => { - if (isTag2(el)) { - setCss(el, prop2, val2, i); - } - }); - } - if (this.length === 0) { - return void 0; - } - return getCss(this[0], prop2); -} -function setCss(el, prop2, value, idx) { - if (typeof prop2 === "string") { - const styles = getCss(el); - const val2 = typeof value === "function" ? value.call(el, idx, styles[prop2]) : value; - if (val2 === "") { - delete styles[prop2]; - } else if (val2 != null) { - styles[prop2] = val2; - } - el.attribs["style"] = stringify(styles); - } else if (typeof prop2 === "object") { - const keys = Object.keys(prop2); - for (let i = 0; i < keys.length; i++) { - const k = keys[i]; - setCss(el, k, prop2[k], i); - } - } -} -function getCss(el, prop2) { - if (!el || !isTag2(el)) - return; - const styles = parse3(el.attribs["style"]); - if (typeof prop2 === "string") { - return styles[prop2]; - } - if (Array.isArray(prop2)) { - const newStyles = {}; - for (const item of prop2) { - if (styles[item] != null) { - newStyles[item] = styles[item]; - } - } - return newStyles; - } - return styles; -} -function stringify(obj) { - return Object.keys(obj).reduce((str, prop2) => `${str}${str ? " " : ""}${prop2}: ${obj[prop2]};`, ""); -} -function parse3(styles) { - styles = (styles || "").trim(); - if (!styles) - return {}; - const obj = {}; - let key; - for (const str of styles.split(";")) { - const n = str.indexOf(":"); - if (n < 1 || n === str.length - 1) { - const trimmed = str.trimEnd(); - if (trimmed.length > 0 && key !== void 0) { - obj[key] += `;${trimmed}`; - } - } else { - key = str.slice(0, n).trim(); - obj[key] = str.slice(n + 1).trim(); - } - } - return obj; -} - -// node_modules/cheerio/dist/browser/api/forms.js -var forms_exports = {}; -__export(forms_exports, { - serialize: () => serialize, - serializeArray: () => serializeArray -}); -var submittableSelector = "input,select,textarea,keygen"; -var r20 = /%20/g; -var rCRLF = /\r?\n/g; -function serialize() { - const arr = this.serializeArray(); - const retArr = arr.map((data2) => `${encodeURIComponent(data2.name)}=${encodeURIComponent(data2.value)}`); - return retArr.join("&").replace(r20, "+"); -} -function serializeArray() { - return this.map((_, elem) => { - const $elem = this._make(elem); - if (isTag2(elem) && elem.name === "form") { - return $elem.find(submittableSelector).toArray(); - } - return $elem.filter(submittableSelector).toArray(); - }).filter( - // Verify elements have a name (`attr.name`) and are not disabled (`:enabled`) - '[name!=""]:enabled:not(:submit, :button, :image, :reset, :file):matches([checked], :not(:checkbox, :radio))' - ).map((_, elem) => { - var _a5; - const $elem = this._make(elem); - const name = $elem.attr("name"); - const value = (_a5 = $elem.val()) !== null && _a5 !== void 0 ? _a5 : ""; - if (Array.isArray(value)) { - return value.map((val2) => ( - /* - * We trim replace any line endings (e.g. `\r` or `\r\n` with `\r\n`) to guarantee consistency across platforms - * These can occur inside of `<textarea>'s` - */ - { name, value: val2.replace(rCRLF, "\r\n") } - )); - } - return { name, value: value.replace(rCRLF, "\r\n") }; - }).toArray(); -} - -// node_modules/cheerio/dist/browser/api/extract.js -var extract_exports = {}; -__export(extract_exports, { - extract: () => extract2 -}); -function getExtractDescr(descr) { - var _a5; - if (typeof descr === "string") { - return { selector: descr, value: "textContent" }; - } - return { - selector: descr.selector, - value: (_a5 = descr.value) !== null && _a5 !== void 0 ? _a5 : "textContent" - }; -} -function extract2(map2) { - const ret = {}; - for (const key in map2) { - const descr = map2[key]; - const isArray = Array.isArray(descr); - const { selector, value } = getExtractDescr(isArray ? descr[0] : descr); - const fn = typeof value === "function" ? value : typeof value === "string" ? (el) => this._make(el).prop(value) : (el) => this._make(el).extract(value); - if (isArray) { - ret[key] = this._findBySelector(selector, Number.POSITIVE_INFINITY).map((_, el) => fn(el, key, ret)).get(); - } else { - const $2 = this._findBySelector(selector, 1); - ret[key] = $2.length > 0 ? fn($2[0], key, ret) : void 0; - } - } - return ret; -} - -// node_modules/cheerio/dist/browser/cheerio.js -var Cheerio = class { - /** - * Instance of cheerio. Methods are specified in the modules. Usage of this - * constructor is not recommended. Please use `$.load` instead. - * - * @private - * @param elements - The new selection. - * @param root - Sets the root node. - * @param options - Options for the instance. - */ - constructor(elements, root2, options) { - this.length = 0; - this.options = options; - this._root = root2; - if (elements) { - for (let idx = 0; idx < elements.length; idx++) { - this[idx] = elements[idx]; - } - this.length = elements.length; - } - } -}; -Cheerio.prototype.cheerio = "[cheerio object]"; -Cheerio.prototype.splice = Array.prototype.splice; -Cheerio.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator]; -Object.assign(Cheerio.prototype, attributes_exports, traversing_exports, manipulation_exports, css_exports, forms_exports, extract_exports); - -// node_modules/cheerio/dist/browser/load.js -function getLoad(parse6, render3) { - return function load2(content, options, isDocument2 = true) { - if (content == null) { - throw new Error("cheerio.load() expects a string"); - } - const internalOpts = flattenOptions(options); - const initialRoot = parse6(content, internalOpts, isDocument2, null); - class LoadedCheerio extends Cheerio { - _make(selector, context) { - const cheerio = initialize(selector, context); - cheerio.prevObject = this; - return cheerio; - } - _parse(content2, options2, isDocument3, context) { - return parse6(content2, options2, isDocument3, context); - } - _render(dom) { - return render3(dom, this.options); - } - } - function initialize(selector, context, root2 = initialRoot, opts) { - if (selector && isCheerio(selector)) - return selector; - const options2 = flattenOptions(opts, internalOpts); - const r = typeof root2 === "string" ? [parse6(root2, options2, false, null)] : "length" in root2 ? root2 : [root2]; - const rootInstance = isCheerio(r) ? r : new LoadedCheerio(r, null, options2); - rootInstance._root = rootInstance; - if (!selector) { - return new LoadedCheerio(void 0, rootInstance, options2); - } - const elements = typeof selector === "string" && isHtml(selector) ? ( - // $(<html>) - parse6(selector, options2, false, null).children - ) : isNode(selector) ? ( - // $(dom) - [selector] - ) : Array.isArray(selector) ? ( - // $([dom]) - selector - ) : void 0; - const instance = new LoadedCheerio(elements, rootInstance, options2); - if (elements) { - return instance; - } - if (typeof selector !== "string") { - throw new TypeError("Unexpected type of selector"); - } - let search = selector; - const searchContext = context ? ( - // If we don't have a context, maybe we have a root, from loading - typeof context === "string" ? isHtml(context) ? ( - // $('li', '<ul>...</ul>') - new LoadedCheerio([parse6(context, options2, false, null)], rootInstance, options2) - ) : ( - // $('li', 'ul') - (search = `${context} ${search}`, rootInstance) - ) : isCheerio(context) ? ( - // $('li', $) - context - ) : ( - // $('li', node), $('li', [nodes]) - new LoadedCheerio(Array.isArray(context) ? context : [context], rootInstance, options2) - ) - ) : rootInstance; - if (!searchContext) - return instance; - return searchContext.find(search); - } - Object.assign(initialize, static_exports, { - load: load2, - // `_root` and `_options` are used in static methods. - _root: initialRoot, - _options: internalOpts, - // Add `fn` for plugins - fn: LoadedCheerio.prototype, - // Add the prototype here to maintain `instanceof` behavior. - prototype: LoadedCheerio.prototype - }); - return initialize; - }; -} -function isNode(obj) { - return ( - // @ts-expect-error: TS doesn't know about the `name` property. - !!obj.name || // @ts-expect-error: TS doesn't know about the `type` property. - obj.type === esm_exports.Root || // @ts-expect-error: TS doesn't know about the `type` property. - obj.type === esm_exports.Text || // @ts-expect-error: TS doesn't know about the `type` property. - obj.type === esm_exports.Comment - ); -} - -// node_modules/parse5/dist/common/unicode.js -var UNDEFINED_CODE_POINTS = /* @__PURE__ */ new Set([ - 65534, - 65535, - 131070, - 131071, - 196606, - 196607, - 262142, - 262143, - 327678, - 327679, - 393214, - 393215, - 458750, - 458751, - 524286, - 524287, - 589822, - 589823, - 655358, - 655359, - 720894, - 720895, - 786430, - 786431, - 851966, - 851967, - 917502, - 917503, - 983038, - 983039, - 1048574, - 1048575, - 1114110, - 1114111 -]); -var REPLACEMENT_CHARACTER = "\uFFFD"; -var CODE_POINTS; -(function(CODE_POINTS2) { - CODE_POINTS2[CODE_POINTS2["EOF"] = -1] = "EOF"; - CODE_POINTS2[CODE_POINTS2["NULL"] = 0] = "NULL"; - CODE_POINTS2[CODE_POINTS2["TABULATION"] = 9] = "TABULATION"; - CODE_POINTS2[CODE_POINTS2["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN"; - CODE_POINTS2[CODE_POINTS2["LINE_FEED"] = 10] = "LINE_FEED"; - CODE_POINTS2[CODE_POINTS2["FORM_FEED"] = 12] = "FORM_FEED"; - CODE_POINTS2[CODE_POINTS2["SPACE"] = 32] = "SPACE"; - CODE_POINTS2[CODE_POINTS2["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK"; - CODE_POINTS2[CODE_POINTS2["QUOTATION_MARK"] = 34] = "QUOTATION_MARK"; - CODE_POINTS2[CODE_POINTS2["AMPERSAND"] = 38] = "AMPERSAND"; - CODE_POINTS2[CODE_POINTS2["APOSTROPHE"] = 39] = "APOSTROPHE"; - CODE_POINTS2[CODE_POINTS2["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS"; - CODE_POINTS2[CODE_POINTS2["SOLIDUS"] = 47] = "SOLIDUS"; - CODE_POINTS2[CODE_POINTS2["DIGIT_0"] = 48] = "DIGIT_0"; - CODE_POINTS2[CODE_POINTS2["DIGIT_9"] = 57] = "DIGIT_9"; - CODE_POINTS2[CODE_POINTS2["SEMICOLON"] = 59] = "SEMICOLON"; - CODE_POINTS2[CODE_POINTS2["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN"; - CODE_POINTS2[CODE_POINTS2["EQUALS_SIGN"] = 61] = "EQUALS_SIGN"; - CODE_POINTS2[CODE_POINTS2["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN"; - CODE_POINTS2[CODE_POINTS2["QUESTION_MARK"] = 63] = "QUESTION_MARK"; - CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A"; - CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z"; - CODE_POINTS2[CODE_POINTS2["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET"; - CODE_POINTS2[CODE_POINTS2["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT"; - CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A"; - CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z"; -})(CODE_POINTS || (CODE_POINTS = {})); -var SEQUENCES = { - DASH_DASH: "--", - CDATA_START: "[CDATA[", - DOCTYPE: "doctype", - SCRIPT: "script", - PUBLIC: "public", - SYSTEM: "system" -}; -function isSurrogate(cp) { - return cp >= 55296 && cp <= 57343; -} -function isSurrogatePair(cp) { - return cp >= 56320 && cp <= 57343; -} -function getSurrogatePairCodePoint(cp1, cp2) { - return (cp1 - 55296) * 1024 + 9216 + cp2; -} -function isControlCodePoint(cp) { - return cp !== 32 && cp !== 10 && cp !== 13 && cp !== 9 && cp !== 12 && cp >= 1 && cp <= 31 || cp >= 127 && cp <= 159; -} -function isUndefinedCodePoint(cp) { - return cp >= 64976 && cp <= 65007 || UNDEFINED_CODE_POINTS.has(cp); -} - -// node_modules/parse5/dist/common/error-codes.js -var ERR; -(function(ERR2) { - ERR2["controlCharacterInInputStream"] = "control-character-in-input-stream"; - ERR2["noncharacterInInputStream"] = "noncharacter-in-input-stream"; - ERR2["surrogateInInputStream"] = "surrogate-in-input-stream"; - ERR2["nonVoidHtmlElementStartTagWithTrailingSolidus"] = "non-void-html-element-start-tag-with-trailing-solidus"; - ERR2["endTagWithAttributes"] = "end-tag-with-attributes"; - ERR2["endTagWithTrailingSolidus"] = "end-tag-with-trailing-solidus"; - ERR2["unexpectedSolidusInTag"] = "unexpected-solidus-in-tag"; - ERR2["unexpectedNullCharacter"] = "unexpected-null-character"; - ERR2["unexpectedQuestionMarkInsteadOfTagName"] = "unexpected-question-mark-instead-of-tag-name"; - ERR2["invalidFirstCharacterOfTagName"] = "invalid-first-character-of-tag-name"; - ERR2["unexpectedEqualsSignBeforeAttributeName"] = "unexpected-equals-sign-before-attribute-name"; - ERR2["missingEndTagName"] = "missing-end-tag-name"; - ERR2["unexpectedCharacterInAttributeName"] = "unexpected-character-in-attribute-name"; - ERR2["unknownNamedCharacterReference"] = "unknown-named-character-reference"; - ERR2["missingSemicolonAfterCharacterReference"] = "missing-semicolon-after-character-reference"; - ERR2["unexpectedCharacterAfterDoctypeSystemIdentifier"] = "unexpected-character-after-doctype-system-identifier"; - ERR2["unexpectedCharacterInUnquotedAttributeValue"] = "unexpected-character-in-unquoted-attribute-value"; - ERR2["eofBeforeTagName"] = "eof-before-tag-name"; - ERR2["eofInTag"] = "eof-in-tag"; - ERR2["missingAttributeValue"] = "missing-attribute-value"; - ERR2["missingWhitespaceBetweenAttributes"] = "missing-whitespace-between-attributes"; - ERR2["missingWhitespaceAfterDoctypePublicKeyword"] = "missing-whitespace-after-doctype-public-keyword"; - ERR2["missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers"] = "missing-whitespace-between-doctype-public-and-system-identifiers"; - ERR2["missingWhitespaceAfterDoctypeSystemKeyword"] = "missing-whitespace-after-doctype-system-keyword"; - ERR2["missingQuoteBeforeDoctypePublicIdentifier"] = "missing-quote-before-doctype-public-identifier"; - ERR2["missingQuoteBeforeDoctypeSystemIdentifier"] = "missing-quote-before-doctype-system-identifier"; - ERR2["missingDoctypePublicIdentifier"] = "missing-doctype-public-identifier"; - ERR2["missingDoctypeSystemIdentifier"] = "missing-doctype-system-identifier"; - ERR2["abruptDoctypePublicIdentifier"] = "abrupt-doctype-public-identifier"; - ERR2["abruptDoctypeSystemIdentifier"] = "abrupt-doctype-system-identifier"; - ERR2["cdataInHtmlContent"] = "cdata-in-html-content"; - ERR2["incorrectlyOpenedComment"] = "incorrectly-opened-comment"; - ERR2["eofInScriptHtmlCommentLikeText"] = "eof-in-script-html-comment-like-text"; - ERR2["eofInDoctype"] = "eof-in-doctype"; - ERR2["nestedComment"] = "nested-comment"; - ERR2["abruptClosingOfEmptyComment"] = "abrupt-closing-of-empty-comment"; - ERR2["eofInComment"] = "eof-in-comment"; - ERR2["incorrectlyClosedComment"] = "incorrectly-closed-comment"; - ERR2["eofInCdata"] = "eof-in-cdata"; - ERR2["absenceOfDigitsInNumericCharacterReference"] = "absence-of-digits-in-numeric-character-reference"; - ERR2["nullCharacterReference"] = "null-character-reference"; - ERR2["surrogateCharacterReference"] = "surrogate-character-reference"; - ERR2["characterReferenceOutsideUnicodeRange"] = "character-reference-outside-unicode-range"; - ERR2["controlCharacterReference"] = "control-character-reference"; - ERR2["noncharacterCharacterReference"] = "noncharacter-character-reference"; - ERR2["missingWhitespaceBeforeDoctypeName"] = "missing-whitespace-before-doctype-name"; - ERR2["missingDoctypeName"] = "missing-doctype-name"; - ERR2["invalidCharacterSequenceAfterDoctypeName"] = "invalid-character-sequence-after-doctype-name"; - ERR2["duplicateAttribute"] = "duplicate-attribute"; - ERR2["nonConformingDoctype"] = "non-conforming-doctype"; - ERR2["missingDoctype"] = "missing-doctype"; - ERR2["misplacedDoctype"] = "misplaced-doctype"; - ERR2["endTagWithoutMatchingOpenElement"] = "end-tag-without-matching-open-element"; - ERR2["closingOfElementWithOpenChildElements"] = "closing-of-element-with-open-child-elements"; - ERR2["disallowedContentInNoscriptInHead"] = "disallowed-content-in-noscript-in-head"; - ERR2["openElementsLeftAfterEof"] = "open-elements-left-after-eof"; - ERR2["abandonedHeadElementChild"] = "abandoned-head-element-child"; - ERR2["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element"; - ERR2["nestedNoscriptInHead"] = "nested-noscript-in-head"; - ERR2["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text"; -})(ERR || (ERR = {})); - -// node_modules/parse5/dist/tokenizer/preprocessor.js -var DEFAULT_BUFFER_WATERLINE = 1 << 16; -var Preprocessor = class { - constructor(handler) { - this.handler = handler; - this.html = ""; - this.pos = -1; - this.lastGapPos = -2; - this.gapStack = []; - this.skipNextNewLine = false; - this.lastChunkWritten = false; - this.endOfChunkHit = false; - this.bufferWaterline = DEFAULT_BUFFER_WATERLINE; - this.isEol = false; - this.lineStartPos = 0; - this.droppedBufferSize = 0; - this.line = 1; - this.lastErrOffset = -1; - } - /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */ - get col() { - return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos); - } - get offset() { - return this.droppedBufferSize + this.pos; - } - getError(code, cpOffset) { - const { line, col, offset } = this; - const startCol = col + cpOffset; - const startOffset = offset + cpOffset; - return { - code, - startLine: line, - endLine: line, - startCol, - endCol: startCol, - startOffset, - endOffset: startOffset - }; - } - _err(code) { - if (this.handler.onParseError && this.lastErrOffset !== this.offset) { - this.lastErrOffset = this.offset; - this.handler.onParseError(this.getError(code, 0)); - } - } - _addGap() { - this.gapStack.push(this.lastGapPos); - this.lastGapPos = this.pos; - } - _processSurrogate(cp) { - if (this.pos !== this.html.length - 1) { - const nextCp = this.html.charCodeAt(this.pos + 1); - if (isSurrogatePair(nextCp)) { - this.pos++; - this._addGap(); - return getSurrogatePairCodePoint(cp, nextCp); - } - } else if (!this.lastChunkWritten) { - this.endOfChunkHit = true; - return CODE_POINTS.EOF; - } - this._err(ERR.surrogateInInputStream); - return cp; - } - willDropParsedChunk() { - return this.pos > this.bufferWaterline; - } - dropParsedChunk() { - if (this.willDropParsedChunk()) { - this.html = this.html.substring(this.pos); - this.lineStartPos -= this.pos; - this.droppedBufferSize += this.pos; - this.pos = 0; - this.lastGapPos = -2; - this.gapStack.length = 0; - } - } - write(chunk, isLastChunk) { - if (this.html.length > 0) { - this.html += chunk; - } else { - this.html = chunk; - } - this.endOfChunkHit = false; - this.lastChunkWritten = isLastChunk; - } - insertHtmlAtCurrentPos(chunk) { - this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1); - this.endOfChunkHit = false; - } - startsWith(pattern, caseSensitive) { - if (this.pos + pattern.length > this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return false; - } - if (caseSensitive) { - return this.html.startsWith(pattern, this.pos); - } - for (let i = 0; i < pattern.length; i++) { - const cp = this.html.charCodeAt(this.pos + i) | 32; - if (cp !== pattern.charCodeAt(i)) { - return false; - } - } - return true; - } - peek(offset) { - const pos = this.pos + offset; - if (pos >= this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return CODE_POINTS.EOF; - } - const code = this.html.charCodeAt(pos); - return code === CODE_POINTS.CARRIAGE_RETURN ? CODE_POINTS.LINE_FEED : code; - } - advance() { - this.pos++; - if (this.isEol) { - this.isEol = false; - this.line++; - this.lineStartPos = this.pos; - } - if (this.pos >= this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return CODE_POINTS.EOF; - } - let cp = this.html.charCodeAt(this.pos); - if (cp === CODE_POINTS.CARRIAGE_RETURN) { - this.isEol = true; - this.skipNextNewLine = true; - return CODE_POINTS.LINE_FEED; - } - if (cp === CODE_POINTS.LINE_FEED) { - this.isEol = true; - if (this.skipNextNewLine) { - this.line--; - this.skipNextNewLine = false; - this._addGap(); - return this.advance(); - } - } - this.skipNextNewLine = false; - if (isSurrogate(cp)) { - cp = this._processSurrogate(cp); - } - const isCommonValidRange = this.handler.onParseError === null || cp > 31 && cp < 127 || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.CARRIAGE_RETURN || cp > 159 && cp < 64976; - if (!isCommonValidRange) { - this._checkForProblematicCharacters(cp); - } - return cp; - } - _checkForProblematicCharacters(cp) { - if (isControlCodePoint(cp)) { - this._err(ERR.controlCharacterInInputStream); - } else if (isUndefinedCodePoint(cp)) { - this._err(ERR.noncharacterInInputStream); - } - } - retreat(count) { - this.pos -= count; - while (this.pos < this.lastGapPos) { - this.lastGapPos = this.gapStack.pop(); - this.pos--; - } - this.isEol = false; - } -}; - -// node_modules/parse5/dist/common/token.js -var token_exports = {}; -__export(token_exports, { - TokenType: () => TokenType, - getTokenAttr: () => getTokenAttr -}); -var TokenType; -(function(TokenType2) { - TokenType2[TokenType2["CHARACTER"] = 0] = "CHARACTER"; - TokenType2[TokenType2["NULL_CHARACTER"] = 1] = "NULL_CHARACTER"; - TokenType2[TokenType2["WHITESPACE_CHARACTER"] = 2] = "WHITESPACE_CHARACTER"; - TokenType2[TokenType2["START_TAG"] = 3] = "START_TAG"; - TokenType2[TokenType2["END_TAG"] = 4] = "END_TAG"; - TokenType2[TokenType2["COMMENT"] = 5] = "COMMENT"; - TokenType2[TokenType2["DOCTYPE"] = 6] = "DOCTYPE"; - TokenType2[TokenType2["EOF"] = 7] = "EOF"; - TokenType2[TokenType2["HIBERNATION"] = 8] = "HIBERNATION"; -})(TokenType || (TokenType = {})); -function getTokenAttr(token, attrName) { - for (let i = token.attrs.length - 1; i >= 0; i--) { - if (token.attrs[i].name === attrName) { - return token.attrs[i].value; - } - } - return null; -} - -// node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js -var htmlDecodeTree2 = /* @__PURE__ */ new Uint16Array( - // prettier-ignore - /* @__PURE__ */ '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js -var _a4; -var decodeMap3 = /* @__PURE__ */ new Map([ - [0, 65533], - // C1 Unicode control character reference replacements - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] -]); -var fromCodePoint3 = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins - (_a4 = String.fromCodePoint) !== null && _a4 !== void 0 ? _a4 : function(codePoint) { - let output = ""; - if (codePoint > 65535) { - codePoint -= 65536; - output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; - } - output += String.fromCharCode(codePoint); - return output; - } -); -function replaceCodePoint3(codePoint) { - var _a5; - if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { - return 65533; - } - return (_a5 = decodeMap3.get(codePoint)) !== null && _a5 !== void 0 ? _a5 : codePoint; -} - -// node_modules/parse5/node_modules/entities/dist/esm/decode.js -var CharCodes4; -(function(CharCodes5) { - CharCodes5[CharCodes5["NUM"] = 35] = "NUM"; - CharCodes5[CharCodes5["SEMI"] = 59] = "SEMI"; - CharCodes5[CharCodes5["EQUALS"] = 61] = "EQUALS"; - CharCodes5[CharCodes5["ZERO"] = 48] = "ZERO"; - CharCodes5[CharCodes5["NINE"] = 57] = "NINE"; - CharCodes5[CharCodes5["LOWER_A"] = 97] = "LOWER_A"; - CharCodes5[CharCodes5["LOWER_F"] = 102] = "LOWER_F"; - CharCodes5[CharCodes5["LOWER_X"] = 120] = "LOWER_X"; - CharCodes5[CharCodes5["LOWER_Z"] = 122] = "LOWER_Z"; - CharCodes5[CharCodes5["UPPER_A"] = 65] = "UPPER_A"; - CharCodes5[CharCodes5["UPPER_F"] = 70] = "UPPER_F"; - CharCodes5[CharCodes5["UPPER_Z"] = 90] = "UPPER_Z"; -})(CharCodes4 || (CharCodes4 = {})); -var TO_LOWER_BIT3 = 32; -var BinTrieFlags3; -(function(BinTrieFlags4) { - BinTrieFlags4[BinTrieFlags4["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; - BinTrieFlags4[BinTrieFlags4["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; - BinTrieFlags4[BinTrieFlags4["JUMP_TABLE"] = 127] = "JUMP_TABLE"; -})(BinTrieFlags3 || (BinTrieFlags3 = {})); -function isNumber3(code) { - return code >= CharCodes4.ZERO && code <= CharCodes4.NINE; -} -function isHexadecimalCharacter3(code) { - return code >= CharCodes4.UPPER_A && code <= CharCodes4.UPPER_F || code >= CharCodes4.LOWER_A && code <= CharCodes4.LOWER_F; -} -function isAsciiAlphaNumeric3(code) { - return code >= CharCodes4.UPPER_A && code <= CharCodes4.UPPER_Z || code >= CharCodes4.LOWER_A && code <= CharCodes4.LOWER_Z || isNumber3(code); -} -function isEntityInAttributeInvalidEnd3(code) { - return code === CharCodes4.EQUALS || isAsciiAlphaNumeric3(code); -} -var EntityDecoderState3; -(function(EntityDecoderState4) { - EntityDecoderState4[EntityDecoderState4["EntityStart"] = 0] = "EntityStart"; - EntityDecoderState4[EntityDecoderState4["NumericStart"] = 1] = "NumericStart"; - EntityDecoderState4[EntityDecoderState4["NumericDecimal"] = 2] = "NumericDecimal"; - EntityDecoderState4[EntityDecoderState4["NumericHex"] = 3] = "NumericHex"; - EntityDecoderState4[EntityDecoderState4["NamedEntity"] = 4] = "NamedEntity"; -})(EntityDecoderState3 || (EntityDecoderState3 = {})); -var DecodingMode3; -(function(DecodingMode4) { - DecodingMode4[DecodingMode4["Legacy"] = 0] = "Legacy"; - DecodingMode4[DecodingMode4["Strict"] = 1] = "Strict"; - DecodingMode4[DecodingMode4["Attribute"] = 2] = "Attribute"; -})(DecodingMode3 || (DecodingMode3 = {})); -var EntityDecoder3 = class { - constructor(decodeTree, emitCodePoint, errors) { - this.decodeTree = decodeTree; - this.emitCodePoint = emitCodePoint; - this.errors = errors; - this.state = EntityDecoderState3.EntityStart; - this.consumed = 1; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.decodeMode = DecodingMode3.Strict; - } - /** Resets the instance to make it reusable. */ - startEntity(decodeMode) { - this.decodeMode = decodeMode; - this.state = EntityDecoderState3.EntityStart; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.consumed = 1; - } - /** - * Write an entity to the decoder. This can be called multiple times with partial entities. - * If the entity is incomplete, the decoder will return -1. - * - * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the - * entity is incomplete, and resume when the next string is written. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - write(input, offset) { - switch (this.state) { - case EntityDecoderState3.EntityStart: { - if (input.charCodeAt(offset) === CharCodes4.NUM) { - this.state = EntityDecoderState3.NumericStart; - this.consumed += 1; - return this.stateNumericStart(input, offset + 1); - } - this.state = EntityDecoderState3.NamedEntity; - return this.stateNamedEntity(input, offset); - } - case EntityDecoderState3.NumericStart: { - return this.stateNumericStart(input, offset); - } - case EntityDecoderState3.NumericDecimal: { - return this.stateNumericDecimal(input, offset); - } - case EntityDecoderState3.NumericHex: { - return this.stateNumericHex(input, offset); - } - case EntityDecoderState3.NamedEntity: { - return this.stateNamedEntity(input, offset); - } - } - } - /** - * Switches between the numeric decimal and hexadecimal states. - * - * Equivalent to the `Numeric character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericStart(input, offset) { - if (offset >= input.length) { - return -1; - } - if ((input.charCodeAt(offset) | TO_LOWER_BIT3) === CharCodes4.LOWER_X) { - this.state = EntityDecoderState3.NumericHex; - this.consumed += 1; - return this.stateNumericHex(input, offset + 1); - } - this.state = EntityDecoderState3.NumericDecimal; - return this.stateNumericDecimal(input, offset); - } - addToNumericResult(input, start, end2, base) { - if (start !== end2) { - const digitCount = end2 - start; - this.result = this.result * Math.pow(base, digitCount) + Number.parseInt(input.substr(start, digitCount), base); - this.consumed += digitCount; - } - } - /** - * Parses a hexadecimal numeric entity. - * - * Equivalent to the `Hexademical character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericHex(input, offset) { - const startIndex = offset; - while (offset < input.length) { - const char = input.charCodeAt(offset); - if (isNumber3(char) || isHexadecimalCharacter3(char)) { - offset += 1; - } else { - this.addToNumericResult(input, startIndex, offset, 16); - return this.emitNumericEntity(char, 3); - } - } - this.addToNumericResult(input, startIndex, offset, 16); - return -1; - } - /** - * Parses a decimal numeric entity. - * - * Equivalent to the `Decimal character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericDecimal(input, offset) { - const startIndex = offset; - while (offset < input.length) { - const char = input.charCodeAt(offset); - if (isNumber3(char)) { - offset += 1; - } else { - this.addToNumericResult(input, startIndex, offset, 10); - return this.emitNumericEntity(char, 2); - } - } - this.addToNumericResult(input, startIndex, offset, 10); - return -1; - } - /** - * Validate and emit a numeric entity. - * - * Implements the logic from the `Hexademical character reference start - * state` and `Numeric character reference end state` in the HTML spec. - * - * @param lastCp The last code point of the entity. Used to see if the - * entity was terminated with a semicolon. - * @param expectedLength The minimum number of characters that should be - * consumed. Used to validate that at least one digit - * was consumed. - * @returns The number of characters that were consumed. - */ - emitNumericEntity(lastCp, expectedLength) { - var _a5; - if (this.consumed <= expectedLength) { - (_a5 = this.errors) === null || _a5 === void 0 ? void 0 : _a5.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - if (lastCp === CharCodes4.SEMI) { - this.consumed += 1; - } else if (this.decodeMode === DecodingMode3.Strict) { - return 0; - } - this.emitCodePoint(replaceCodePoint3(this.result), this.consumed); - if (this.errors) { - if (lastCp !== CharCodes4.SEMI) { - this.errors.missingSemicolonAfterCharacterReference(); - } - this.errors.validateNumericCharacterReference(this.result); - } - return this.consumed; - } - /** - * Parses a named entity. - * - * Equivalent to the `Named character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNamedEntity(input, offset) { - const { decodeTree } = this; - let current = decodeTree[this.treeIndex]; - let valueLength = (current & BinTrieFlags3.VALUE_LENGTH) >> 14; - for (; offset < input.length; offset++, this.excess++) { - const char = input.charCodeAt(offset); - this.treeIndex = determineBranch3(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); - if (this.treeIndex < 0) { - return this.result === 0 || // If we are parsing an attribute - this.decodeMode === DecodingMode3.Attribute && // We shouldn't have consumed any characters after the entity, - (valueLength === 0 || // And there should be no invalid characters. - isEntityInAttributeInvalidEnd3(char)) ? 0 : this.emitNotTerminatedNamedEntity(); - } - current = decodeTree[this.treeIndex]; - valueLength = (current & BinTrieFlags3.VALUE_LENGTH) >> 14; - if (valueLength !== 0) { - if (char === CharCodes4.SEMI) { - return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); - } - if (this.decodeMode !== DecodingMode3.Strict) { - this.result = this.treeIndex; - this.consumed += this.excess; - this.excess = 0; - } - } - } - return -1; - } - /** - * Emit a named entity that was not terminated with a semicolon. - * - * @returns The number of characters consumed. - */ - emitNotTerminatedNamedEntity() { - var _a5; - const { result, decodeTree } = this; - const valueLength = (decodeTree[result] & BinTrieFlags3.VALUE_LENGTH) >> 14; - this.emitNamedEntityData(result, valueLength, this.consumed); - (_a5 = this.errors) === null || _a5 === void 0 ? void 0 : _a5.missingSemicolonAfterCharacterReference(); - return this.consumed; - } - /** - * Emit a named entity. - * - * @param result The index of the entity in the decode tree. - * @param valueLength The number of bytes in the entity. - * @param consumed The number of characters consumed. - * - * @returns The number of characters consumed. - */ - emitNamedEntityData(result, valueLength, consumed) { - const { decodeTree } = this; - this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags3.VALUE_LENGTH : decodeTree[result + 1], consumed); - if (valueLength === 3) { - this.emitCodePoint(decodeTree[result + 2], consumed); - } - return consumed; - } - /** - * Signal to the parser that the end of the input was reached. - * - * Remaining data will be emitted and relevant errors will be produced. - * - * @returns The number of characters consumed. - */ - end() { - var _a5; - switch (this.state) { - case EntityDecoderState3.NamedEntity: { - return this.result !== 0 && (this.decodeMode !== DecodingMode3.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; - } - // Otherwise, emit a numeric entity if we have one. - case EntityDecoderState3.NumericDecimal: { - return this.emitNumericEntity(0, 2); - } - case EntityDecoderState3.NumericHex: { - return this.emitNumericEntity(0, 3); - } - case EntityDecoderState3.NumericStart: { - (_a5 = this.errors) === null || _a5 === void 0 ? void 0 : _a5.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - case EntityDecoderState3.EntityStart: { - return 0; - } - } - } -}; -function determineBranch3(decodeTree, current, nodeIndex, char) { - const branchCount = (current & BinTrieFlags3.BRANCH_LENGTH) >> 7; - const jumpOffset = current & BinTrieFlags3.JUMP_TABLE; - if (branchCount === 0) { - return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1; - } - if (jumpOffset) { - const value = char - jumpOffset; - return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIndex + value] - 1; - } - let lo = nodeIndex; - let hi = lo + branchCount - 1; - while (lo <= hi) { - const mid = lo + hi >>> 1; - const midValue = decodeTree[mid]; - if (midValue < char) { - lo = mid + 1; - } else if (midValue > char) { - hi = mid - 1; - } else { - return decodeTree[mid + branchCount]; - } - } - return -1; -} - -// node_modules/parse5/dist/common/html.js -var html_exports = {}; -__export(html_exports, { - ATTRS: () => ATTRS, - DOCUMENT_MODE: () => DOCUMENT_MODE, - NS: () => NS, - NUMBERED_HEADERS: () => NUMBERED_HEADERS, - SPECIAL_ELEMENTS: () => SPECIAL_ELEMENTS, - TAG_ID: () => TAG_ID, - TAG_NAMES: () => TAG_NAMES, - getTagID: () => getTagID, - hasUnescapedText: () => hasUnescapedText -}); -var NS; -(function(NS2) { - NS2["HTML"] = "http://www.w3.org/1999/xhtml"; - NS2["MATHML"] = "http://www.w3.org/1998/Math/MathML"; - NS2["SVG"] = "http://www.w3.org/2000/svg"; - NS2["XLINK"] = "http://www.w3.org/1999/xlink"; - NS2["XML"] = "http://www.w3.org/XML/1998/namespace"; - NS2["XMLNS"] = "http://www.w3.org/2000/xmlns/"; -})(NS || (NS = {})); -var ATTRS; -(function(ATTRS2) { - ATTRS2["TYPE"] = "type"; - ATTRS2["ACTION"] = "action"; - ATTRS2["ENCODING"] = "encoding"; - ATTRS2["PROMPT"] = "prompt"; - ATTRS2["NAME"] = "name"; - ATTRS2["COLOR"] = "color"; - ATTRS2["FACE"] = "face"; - ATTRS2["SIZE"] = "size"; -})(ATTRS || (ATTRS = {})); -var DOCUMENT_MODE; -(function(DOCUMENT_MODE2) { - DOCUMENT_MODE2["NO_QUIRKS"] = "no-quirks"; - DOCUMENT_MODE2["QUIRKS"] = "quirks"; - DOCUMENT_MODE2["LIMITED_QUIRKS"] = "limited-quirks"; -})(DOCUMENT_MODE || (DOCUMENT_MODE = {})); -var TAG_NAMES; -(function(TAG_NAMES2) { - TAG_NAMES2["A"] = "a"; - TAG_NAMES2["ADDRESS"] = "address"; - TAG_NAMES2["ANNOTATION_XML"] = "annotation-xml"; - TAG_NAMES2["APPLET"] = "applet"; - TAG_NAMES2["AREA"] = "area"; - TAG_NAMES2["ARTICLE"] = "article"; - TAG_NAMES2["ASIDE"] = "aside"; - TAG_NAMES2["B"] = "b"; - TAG_NAMES2["BASE"] = "base"; - TAG_NAMES2["BASEFONT"] = "basefont"; - TAG_NAMES2["BGSOUND"] = "bgsound"; - TAG_NAMES2["BIG"] = "big"; - TAG_NAMES2["BLOCKQUOTE"] = "blockquote"; - TAG_NAMES2["BODY"] = "body"; - TAG_NAMES2["BR"] = "br"; - TAG_NAMES2["BUTTON"] = "button"; - TAG_NAMES2["CAPTION"] = "caption"; - TAG_NAMES2["CENTER"] = "center"; - TAG_NAMES2["CODE"] = "code"; - TAG_NAMES2["COL"] = "col"; - TAG_NAMES2["COLGROUP"] = "colgroup"; - TAG_NAMES2["DD"] = "dd"; - TAG_NAMES2["DESC"] = "desc"; - TAG_NAMES2["DETAILS"] = "details"; - TAG_NAMES2["DIALOG"] = "dialog"; - TAG_NAMES2["DIR"] = "dir"; - TAG_NAMES2["DIV"] = "div"; - TAG_NAMES2["DL"] = "dl"; - TAG_NAMES2["DT"] = "dt"; - TAG_NAMES2["EM"] = "em"; - TAG_NAMES2["EMBED"] = "embed"; - TAG_NAMES2["FIELDSET"] = "fieldset"; - TAG_NAMES2["FIGCAPTION"] = "figcaption"; - TAG_NAMES2["FIGURE"] = "figure"; - TAG_NAMES2["FONT"] = "font"; - TAG_NAMES2["FOOTER"] = "footer"; - TAG_NAMES2["FOREIGN_OBJECT"] = "foreignObject"; - TAG_NAMES2["FORM"] = "form"; - TAG_NAMES2["FRAME"] = "frame"; - TAG_NAMES2["FRAMESET"] = "frameset"; - TAG_NAMES2["H1"] = "h1"; - TAG_NAMES2["H2"] = "h2"; - TAG_NAMES2["H3"] = "h3"; - TAG_NAMES2["H4"] = "h4"; - TAG_NAMES2["H5"] = "h5"; - TAG_NAMES2["H6"] = "h6"; - TAG_NAMES2["HEAD"] = "head"; - TAG_NAMES2["HEADER"] = "header"; - TAG_NAMES2["HGROUP"] = "hgroup"; - TAG_NAMES2["HR"] = "hr"; - TAG_NAMES2["HTML"] = "html"; - TAG_NAMES2["I"] = "i"; - TAG_NAMES2["IMG"] = "img"; - TAG_NAMES2["IMAGE"] = "image"; - TAG_NAMES2["INPUT"] = "input"; - TAG_NAMES2["IFRAME"] = "iframe"; - TAG_NAMES2["KEYGEN"] = "keygen"; - TAG_NAMES2["LABEL"] = "label"; - TAG_NAMES2["LI"] = "li"; - TAG_NAMES2["LINK"] = "link"; - TAG_NAMES2["LISTING"] = "listing"; - TAG_NAMES2["MAIN"] = "main"; - TAG_NAMES2["MALIGNMARK"] = "malignmark"; - TAG_NAMES2["MARQUEE"] = "marquee"; - TAG_NAMES2["MATH"] = "math"; - TAG_NAMES2["MENU"] = "menu"; - TAG_NAMES2["META"] = "meta"; - TAG_NAMES2["MGLYPH"] = "mglyph"; - TAG_NAMES2["MI"] = "mi"; - TAG_NAMES2["MO"] = "mo"; - TAG_NAMES2["MN"] = "mn"; - TAG_NAMES2["MS"] = "ms"; - TAG_NAMES2["MTEXT"] = "mtext"; - TAG_NAMES2["NAV"] = "nav"; - TAG_NAMES2["NOBR"] = "nobr"; - TAG_NAMES2["NOFRAMES"] = "noframes"; - TAG_NAMES2["NOEMBED"] = "noembed"; - TAG_NAMES2["NOSCRIPT"] = "noscript"; - TAG_NAMES2["OBJECT"] = "object"; - TAG_NAMES2["OL"] = "ol"; - TAG_NAMES2["OPTGROUP"] = "optgroup"; - TAG_NAMES2["OPTION"] = "option"; - TAG_NAMES2["P"] = "p"; - TAG_NAMES2["PARAM"] = "param"; - TAG_NAMES2["PLAINTEXT"] = "plaintext"; - TAG_NAMES2["PRE"] = "pre"; - TAG_NAMES2["RB"] = "rb"; - TAG_NAMES2["RP"] = "rp"; - TAG_NAMES2["RT"] = "rt"; - TAG_NAMES2["RTC"] = "rtc"; - TAG_NAMES2["RUBY"] = "ruby"; - TAG_NAMES2["S"] = "s"; - TAG_NAMES2["SCRIPT"] = "script"; - TAG_NAMES2["SEARCH"] = "search"; - TAG_NAMES2["SECTION"] = "section"; - TAG_NAMES2["SELECT"] = "select"; - TAG_NAMES2["SOURCE"] = "source"; - TAG_NAMES2["SMALL"] = "small"; - TAG_NAMES2["SPAN"] = "span"; - TAG_NAMES2["STRIKE"] = "strike"; - TAG_NAMES2["STRONG"] = "strong"; - TAG_NAMES2["STYLE"] = "style"; - TAG_NAMES2["SUB"] = "sub"; - TAG_NAMES2["SUMMARY"] = "summary"; - TAG_NAMES2["SUP"] = "sup"; - TAG_NAMES2["TABLE"] = "table"; - TAG_NAMES2["TBODY"] = "tbody"; - TAG_NAMES2["TEMPLATE"] = "template"; - TAG_NAMES2["TEXTAREA"] = "textarea"; - TAG_NAMES2["TFOOT"] = "tfoot"; - TAG_NAMES2["TD"] = "td"; - TAG_NAMES2["TH"] = "th"; - TAG_NAMES2["THEAD"] = "thead"; - TAG_NAMES2["TITLE"] = "title"; - TAG_NAMES2["TR"] = "tr"; - TAG_NAMES2["TRACK"] = "track"; - TAG_NAMES2["TT"] = "tt"; - TAG_NAMES2["U"] = "u"; - TAG_NAMES2["UL"] = "ul"; - TAG_NAMES2["SVG"] = "svg"; - TAG_NAMES2["VAR"] = "var"; - TAG_NAMES2["WBR"] = "wbr"; - TAG_NAMES2["XMP"] = "xmp"; -})(TAG_NAMES || (TAG_NAMES = {})); -var TAG_ID; -(function(TAG_ID2) { - TAG_ID2[TAG_ID2["UNKNOWN"] = 0] = "UNKNOWN"; - TAG_ID2[TAG_ID2["A"] = 1] = "A"; - TAG_ID2[TAG_ID2["ADDRESS"] = 2] = "ADDRESS"; - TAG_ID2[TAG_ID2["ANNOTATION_XML"] = 3] = "ANNOTATION_XML"; - TAG_ID2[TAG_ID2["APPLET"] = 4] = "APPLET"; - TAG_ID2[TAG_ID2["AREA"] = 5] = "AREA"; - TAG_ID2[TAG_ID2["ARTICLE"] = 6] = "ARTICLE"; - TAG_ID2[TAG_ID2["ASIDE"] = 7] = "ASIDE"; - TAG_ID2[TAG_ID2["B"] = 8] = "B"; - TAG_ID2[TAG_ID2["BASE"] = 9] = "BASE"; - TAG_ID2[TAG_ID2["BASEFONT"] = 10] = "BASEFONT"; - TAG_ID2[TAG_ID2["BGSOUND"] = 11] = "BGSOUND"; - TAG_ID2[TAG_ID2["BIG"] = 12] = "BIG"; - TAG_ID2[TAG_ID2["BLOCKQUOTE"] = 13] = "BLOCKQUOTE"; - TAG_ID2[TAG_ID2["BODY"] = 14] = "BODY"; - TAG_ID2[TAG_ID2["BR"] = 15] = "BR"; - TAG_ID2[TAG_ID2["BUTTON"] = 16] = "BUTTON"; - TAG_ID2[TAG_ID2["CAPTION"] = 17] = "CAPTION"; - TAG_ID2[TAG_ID2["CENTER"] = 18] = "CENTER"; - TAG_ID2[TAG_ID2["CODE"] = 19] = "CODE"; - TAG_ID2[TAG_ID2["COL"] = 20] = "COL"; - TAG_ID2[TAG_ID2["COLGROUP"] = 21] = "COLGROUP"; - TAG_ID2[TAG_ID2["DD"] = 22] = "DD"; - TAG_ID2[TAG_ID2["DESC"] = 23] = "DESC"; - TAG_ID2[TAG_ID2["DETAILS"] = 24] = "DETAILS"; - TAG_ID2[TAG_ID2["DIALOG"] = 25] = "DIALOG"; - TAG_ID2[TAG_ID2["DIR"] = 26] = "DIR"; - TAG_ID2[TAG_ID2["DIV"] = 27] = "DIV"; - TAG_ID2[TAG_ID2["DL"] = 28] = "DL"; - TAG_ID2[TAG_ID2["DT"] = 29] = "DT"; - TAG_ID2[TAG_ID2["EM"] = 30] = "EM"; - TAG_ID2[TAG_ID2["EMBED"] = 31] = "EMBED"; - TAG_ID2[TAG_ID2["FIELDSET"] = 32] = "FIELDSET"; - TAG_ID2[TAG_ID2["FIGCAPTION"] = 33] = "FIGCAPTION"; - TAG_ID2[TAG_ID2["FIGURE"] = 34] = "FIGURE"; - TAG_ID2[TAG_ID2["FONT"] = 35] = "FONT"; - TAG_ID2[TAG_ID2["FOOTER"] = 36] = "FOOTER"; - TAG_ID2[TAG_ID2["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT"; - TAG_ID2[TAG_ID2["FORM"] = 38] = "FORM"; - TAG_ID2[TAG_ID2["FRAME"] = 39] = "FRAME"; - TAG_ID2[TAG_ID2["FRAMESET"] = 40] = "FRAMESET"; - TAG_ID2[TAG_ID2["H1"] = 41] = "H1"; - TAG_ID2[TAG_ID2["H2"] = 42] = "H2"; - TAG_ID2[TAG_ID2["H3"] = 43] = "H3"; - TAG_ID2[TAG_ID2["H4"] = 44] = "H4"; - TAG_ID2[TAG_ID2["H5"] = 45] = "H5"; - TAG_ID2[TAG_ID2["H6"] = 46] = "H6"; - TAG_ID2[TAG_ID2["HEAD"] = 47] = "HEAD"; - TAG_ID2[TAG_ID2["HEADER"] = 48] = "HEADER"; - TAG_ID2[TAG_ID2["HGROUP"] = 49] = "HGROUP"; - TAG_ID2[TAG_ID2["HR"] = 50] = "HR"; - TAG_ID2[TAG_ID2["HTML"] = 51] = "HTML"; - TAG_ID2[TAG_ID2["I"] = 52] = "I"; - TAG_ID2[TAG_ID2["IMG"] = 53] = "IMG"; - TAG_ID2[TAG_ID2["IMAGE"] = 54] = "IMAGE"; - TAG_ID2[TAG_ID2["INPUT"] = 55] = "INPUT"; - TAG_ID2[TAG_ID2["IFRAME"] = 56] = "IFRAME"; - TAG_ID2[TAG_ID2["KEYGEN"] = 57] = "KEYGEN"; - TAG_ID2[TAG_ID2["LABEL"] = 58] = "LABEL"; - TAG_ID2[TAG_ID2["LI"] = 59] = "LI"; - TAG_ID2[TAG_ID2["LINK"] = 60] = "LINK"; - TAG_ID2[TAG_ID2["LISTING"] = 61] = "LISTING"; - TAG_ID2[TAG_ID2["MAIN"] = 62] = "MAIN"; - TAG_ID2[TAG_ID2["MALIGNMARK"] = 63] = "MALIGNMARK"; - TAG_ID2[TAG_ID2["MARQUEE"] = 64] = "MARQUEE"; - TAG_ID2[TAG_ID2["MATH"] = 65] = "MATH"; - TAG_ID2[TAG_ID2["MENU"] = 66] = "MENU"; - TAG_ID2[TAG_ID2["META"] = 67] = "META"; - TAG_ID2[TAG_ID2["MGLYPH"] = 68] = "MGLYPH"; - TAG_ID2[TAG_ID2["MI"] = 69] = "MI"; - TAG_ID2[TAG_ID2["MO"] = 70] = "MO"; - TAG_ID2[TAG_ID2["MN"] = 71] = "MN"; - TAG_ID2[TAG_ID2["MS"] = 72] = "MS"; - TAG_ID2[TAG_ID2["MTEXT"] = 73] = "MTEXT"; - TAG_ID2[TAG_ID2["NAV"] = 74] = "NAV"; - TAG_ID2[TAG_ID2["NOBR"] = 75] = "NOBR"; - TAG_ID2[TAG_ID2["NOFRAMES"] = 76] = "NOFRAMES"; - TAG_ID2[TAG_ID2["NOEMBED"] = 77] = "NOEMBED"; - TAG_ID2[TAG_ID2["NOSCRIPT"] = 78] = "NOSCRIPT"; - TAG_ID2[TAG_ID2["OBJECT"] = 79] = "OBJECT"; - TAG_ID2[TAG_ID2["OL"] = 80] = "OL"; - TAG_ID2[TAG_ID2["OPTGROUP"] = 81] = "OPTGROUP"; - TAG_ID2[TAG_ID2["OPTION"] = 82] = "OPTION"; - TAG_ID2[TAG_ID2["P"] = 83] = "P"; - TAG_ID2[TAG_ID2["PARAM"] = 84] = "PARAM"; - TAG_ID2[TAG_ID2["PLAINTEXT"] = 85] = "PLAINTEXT"; - TAG_ID2[TAG_ID2["PRE"] = 86] = "PRE"; - TAG_ID2[TAG_ID2["RB"] = 87] = "RB"; - TAG_ID2[TAG_ID2["RP"] = 88] = "RP"; - TAG_ID2[TAG_ID2["RT"] = 89] = "RT"; - TAG_ID2[TAG_ID2["RTC"] = 90] = "RTC"; - TAG_ID2[TAG_ID2["RUBY"] = 91] = "RUBY"; - TAG_ID2[TAG_ID2["S"] = 92] = "S"; - TAG_ID2[TAG_ID2["SCRIPT"] = 93] = "SCRIPT"; - TAG_ID2[TAG_ID2["SEARCH"] = 94] = "SEARCH"; - TAG_ID2[TAG_ID2["SECTION"] = 95] = "SECTION"; - TAG_ID2[TAG_ID2["SELECT"] = 96] = "SELECT"; - TAG_ID2[TAG_ID2["SOURCE"] = 97] = "SOURCE"; - TAG_ID2[TAG_ID2["SMALL"] = 98] = "SMALL"; - TAG_ID2[TAG_ID2["SPAN"] = 99] = "SPAN"; - TAG_ID2[TAG_ID2["STRIKE"] = 100] = "STRIKE"; - TAG_ID2[TAG_ID2["STRONG"] = 101] = "STRONG"; - TAG_ID2[TAG_ID2["STYLE"] = 102] = "STYLE"; - TAG_ID2[TAG_ID2["SUB"] = 103] = "SUB"; - TAG_ID2[TAG_ID2["SUMMARY"] = 104] = "SUMMARY"; - TAG_ID2[TAG_ID2["SUP"] = 105] = "SUP"; - TAG_ID2[TAG_ID2["TABLE"] = 106] = "TABLE"; - TAG_ID2[TAG_ID2["TBODY"] = 107] = "TBODY"; - TAG_ID2[TAG_ID2["TEMPLATE"] = 108] = "TEMPLATE"; - TAG_ID2[TAG_ID2["TEXTAREA"] = 109] = "TEXTAREA"; - TAG_ID2[TAG_ID2["TFOOT"] = 110] = "TFOOT"; - TAG_ID2[TAG_ID2["TD"] = 111] = "TD"; - TAG_ID2[TAG_ID2["TH"] = 112] = "TH"; - TAG_ID2[TAG_ID2["THEAD"] = 113] = "THEAD"; - TAG_ID2[TAG_ID2["TITLE"] = 114] = "TITLE"; - TAG_ID2[TAG_ID2["TR"] = 115] = "TR"; - TAG_ID2[TAG_ID2["TRACK"] = 116] = "TRACK"; - TAG_ID2[TAG_ID2["TT"] = 117] = "TT"; - TAG_ID2[TAG_ID2["U"] = 118] = "U"; - TAG_ID2[TAG_ID2["UL"] = 119] = "UL"; - TAG_ID2[TAG_ID2["SVG"] = 120] = "SVG"; - TAG_ID2[TAG_ID2["VAR"] = 121] = "VAR"; - TAG_ID2[TAG_ID2["WBR"] = 122] = "WBR"; - TAG_ID2[TAG_ID2["XMP"] = 123] = "XMP"; -})(TAG_ID || (TAG_ID = {})); -var TAG_NAME_TO_ID = /* @__PURE__ */ new Map([ - [TAG_NAMES.A, TAG_ID.A], - [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS], - [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML], - [TAG_NAMES.APPLET, TAG_ID.APPLET], - [TAG_NAMES.AREA, TAG_ID.AREA], - [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE], - [TAG_NAMES.ASIDE, TAG_ID.ASIDE], - [TAG_NAMES.B, TAG_ID.B], - [TAG_NAMES.BASE, TAG_ID.BASE], - [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT], - [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND], - [TAG_NAMES.BIG, TAG_ID.BIG], - [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE], - [TAG_NAMES.BODY, TAG_ID.BODY], - [TAG_NAMES.BR, TAG_ID.BR], - [TAG_NAMES.BUTTON, TAG_ID.BUTTON], - [TAG_NAMES.CAPTION, TAG_ID.CAPTION], - [TAG_NAMES.CENTER, TAG_ID.CENTER], - [TAG_NAMES.CODE, TAG_ID.CODE], - [TAG_NAMES.COL, TAG_ID.COL], - [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP], - [TAG_NAMES.DD, TAG_ID.DD], - [TAG_NAMES.DESC, TAG_ID.DESC], - [TAG_NAMES.DETAILS, TAG_ID.DETAILS], - [TAG_NAMES.DIALOG, TAG_ID.DIALOG], - [TAG_NAMES.DIR, TAG_ID.DIR], - [TAG_NAMES.DIV, TAG_ID.DIV], - [TAG_NAMES.DL, TAG_ID.DL], - [TAG_NAMES.DT, TAG_ID.DT], - [TAG_NAMES.EM, TAG_ID.EM], - [TAG_NAMES.EMBED, TAG_ID.EMBED], - [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET], - [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION], - [TAG_NAMES.FIGURE, TAG_ID.FIGURE], - [TAG_NAMES.FONT, TAG_ID.FONT], - [TAG_NAMES.FOOTER, TAG_ID.FOOTER], - [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT], - [TAG_NAMES.FORM, TAG_ID.FORM], - [TAG_NAMES.FRAME, TAG_ID.FRAME], - [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET], - [TAG_NAMES.H1, TAG_ID.H1], - [TAG_NAMES.H2, TAG_ID.H2], - [TAG_NAMES.H3, TAG_ID.H3], - [TAG_NAMES.H4, TAG_ID.H4], - [TAG_NAMES.H5, TAG_ID.H5], - [TAG_NAMES.H6, TAG_ID.H6], - [TAG_NAMES.HEAD, TAG_ID.HEAD], - [TAG_NAMES.HEADER, TAG_ID.HEADER], - [TAG_NAMES.HGROUP, TAG_ID.HGROUP], - [TAG_NAMES.HR, TAG_ID.HR], - [TAG_NAMES.HTML, TAG_ID.HTML], - [TAG_NAMES.I, TAG_ID.I], - [TAG_NAMES.IMG, TAG_ID.IMG], - [TAG_NAMES.IMAGE, TAG_ID.IMAGE], - [TAG_NAMES.INPUT, TAG_ID.INPUT], - [TAG_NAMES.IFRAME, TAG_ID.IFRAME], - [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN], - [TAG_NAMES.LABEL, TAG_ID.LABEL], - [TAG_NAMES.LI, TAG_ID.LI], - [TAG_NAMES.LINK, TAG_ID.LINK], - [TAG_NAMES.LISTING, TAG_ID.LISTING], - [TAG_NAMES.MAIN, TAG_ID.MAIN], - [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK], - [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE], - [TAG_NAMES.MATH, TAG_ID.MATH], - [TAG_NAMES.MENU, TAG_ID.MENU], - [TAG_NAMES.META, TAG_ID.META], - [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH], - [TAG_NAMES.MI, TAG_ID.MI], - [TAG_NAMES.MO, TAG_ID.MO], - [TAG_NAMES.MN, TAG_ID.MN], - [TAG_NAMES.MS, TAG_ID.MS], - [TAG_NAMES.MTEXT, TAG_ID.MTEXT], - [TAG_NAMES.NAV, TAG_ID.NAV], - [TAG_NAMES.NOBR, TAG_ID.NOBR], - [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES], - [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED], - [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT], - [TAG_NAMES.OBJECT, TAG_ID.OBJECT], - [TAG_NAMES.OL, TAG_ID.OL], - [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP], - [TAG_NAMES.OPTION, TAG_ID.OPTION], - [TAG_NAMES.P, TAG_ID.P], - [TAG_NAMES.PARAM, TAG_ID.PARAM], - [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT], - [TAG_NAMES.PRE, TAG_ID.PRE], - [TAG_NAMES.RB, TAG_ID.RB], - [TAG_NAMES.RP, TAG_ID.RP], - [TAG_NAMES.RT, TAG_ID.RT], - [TAG_NAMES.RTC, TAG_ID.RTC], - [TAG_NAMES.RUBY, TAG_ID.RUBY], - [TAG_NAMES.S, TAG_ID.S], - [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT], - [TAG_NAMES.SEARCH, TAG_ID.SEARCH], - [TAG_NAMES.SECTION, TAG_ID.SECTION], - [TAG_NAMES.SELECT, TAG_ID.SELECT], - [TAG_NAMES.SOURCE, TAG_ID.SOURCE], - [TAG_NAMES.SMALL, TAG_ID.SMALL], - [TAG_NAMES.SPAN, TAG_ID.SPAN], - [TAG_NAMES.STRIKE, TAG_ID.STRIKE], - [TAG_NAMES.STRONG, TAG_ID.STRONG], - [TAG_NAMES.STYLE, TAG_ID.STYLE], - [TAG_NAMES.SUB, TAG_ID.SUB], - [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY], - [TAG_NAMES.SUP, TAG_ID.SUP], - [TAG_NAMES.TABLE, TAG_ID.TABLE], - [TAG_NAMES.TBODY, TAG_ID.TBODY], - [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE], - [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA], - [TAG_NAMES.TFOOT, TAG_ID.TFOOT], - [TAG_NAMES.TD, TAG_ID.TD], - [TAG_NAMES.TH, TAG_ID.TH], - [TAG_NAMES.THEAD, TAG_ID.THEAD], - [TAG_NAMES.TITLE, TAG_ID.TITLE], - [TAG_NAMES.TR, TAG_ID.TR], - [TAG_NAMES.TRACK, TAG_ID.TRACK], - [TAG_NAMES.TT, TAG_ID.TT], - [TAG_NAMES.U, TAG_ID.U], - [TAG_NAMES.UL, TAG_ID.UL], - [TAG_NAMES.SVG, TAG_ID.SVG], - [TAG_NAMES.VAR, TAG_ID.VAR], - [TAG_NAMES.WBR, TAG_ID.WBR], - [TAG_NAMES.XMP, TAG_ID.XMP] -]); -function getTagID(tagName) { - var _a5; - return (_a5 = TAG_NAME_TO_ID.get(tagName)) !== null && _a5 !== void 0 ? _a5 : TAG_ID.UNKNOWN; -} -var $ = TAG_ID; -var SPECIAL_ELEMENTS = { - [NS.HTML]: /* @__PURE__ */ new Set([ - $.ADDRESS, - $.APPLET, - $.AREA, - $.ARTICLE, - $.ASIDE, - $.BASE, - $.BASEFONT, - $.BGSOUND, - $.BLOCKQUOTE, - $.BODY, - $.BR, - $.BUTTON, - $.CAPTION, - $.CENTER, - $.COL, - $.COLGROUP, - $.DD, - $.DETAILS, - $.DIR, - $.DIV, - $.DL, - $.DT, - $.EMBED, - $.FIELDSET, - $.FIGCAPTION, - $.FIGURE, - $.FOOTER, - $.FORM, - $.FRAME, - $.FRAMESET, - $.H1, - $.H2, - $.H3, - $.H4, - $.H5, - $.H6, - $.HEAD, - $.HEADER, - $.HGROUP, - $.HR, - $.HTML, - $.IFRAME, - $.IMG, - $.INPUT, - $.LI, - $.LINK, - $.LISTING, - $.MAIN, - $.MARQUEE, - $.MENU, - $.META, - $.NAV, - $.NOEMBED, - $.NOFRAMES, - $.NOSCRIPT, - $.OBJECT, - $.OL, - $.P, - $.PARAM, - $.PLAINTEXT, - $.PRE, - $.SCRIPT, - $.SECTION, - $.SELECT, - $.SOURCE, - $.STYLE, - $.SUMMARY, - $.TABLE, - $.TBODY, - $.TD, - $.TEMPLATE, - $.TEXTAREA, - $.TFOOT, - $.TH, - $.THEAD, - $.TITLE, - $.TR, - $.TRACK, - $.UL, - $.WBR, - $.XMP - ]), - [NS.MATHML]: /* @__PURE__ */ new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]), - [NS.SVG]: /* @__PURE__ */ new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]), - [NS.XLINK]: /* @__PURE__ */ new Set(), - [NS.XML]: /* @__PURE__ */ new Set(), - [NS.XMLNS]: /* @__PURE__ */ new Set() -}; -var NUMBERED_HEADERS = /* @__PURE__ */ new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]); -var UNESCAPED_TEXT = /* @__PURE__ */ new Set([ - TAG_NAMES.STYLE, - TAG_NAMES.SCRIPT, - TAG_NAMES.XMP, - TAG_NAMES.IFRAME, - TAG_NAMES.NOEMBED, - TAG_NAMES.NOFRAMES, - TAG_NAMES.PLAINTEXT -]); -function hasUnescapedText(tn, scriptingEnabled) { - return UNESCAPED_TEXT.has(tn) || scriptingEnabled && tn === TAG_NAMES.NOSCRIPT; -} - -// node_modules/parse5/dist/tokenizer/index.js -var State2; -(function(State3) { - State3[State3["DATA"] = 0] = "DATA"; - State3[State3["RCDATA"] = 1] = "RCDATA"; - State3[State3["RAWTEXT"] = 2] = "RAWTEXT"; - State3[State3["SCRIPT_DATA"] = 3] = "SCRIPT_DATA"; - State3[State3["PLAINTEXT"] = 4] = "PLAINTEXT"; - State3[State3["TAG_OPEN"] = 5] = "TAG_OPEN"; - State3[State3["END_TAG_OPEN"] = 6] = "END_TAG_OPEN"; - State3[State3["TAG_NAME"] = 7] = "TAG_NAME"; - State3[State3["RCDATA_LESS_THAN_SIGN"] = 8] = "RCDATA_LESS_THAN_SIGN"; - State3[State3["RCDATA_END_TAG_OPEN"] = 9] = "RCDATA_END_TAG_OPEN"; - State3[State3["RCDATA_END_TAG_NAME"] = 10] = "RCDATA_END_TAG_NAME"; - State3[State3["RAWTEXT_LESS_THAN_SIGN"] = 11] = "RAWTEXT_LESS_THAN_SIGN"; - State3[State3["RAWTEXT_END_TAG_OPEN"] = 12] = "RAWTEXT_END_TAG_OPEN"; - State3[State3["RAWTEXT_END_TAG_NAME"] = 13] = "RAWTEXT_END_TAG_NAME"; - State3[State3["SCRIPT_DATA_LESS_THAN_SIGN"] = 14] = "SCRIPT_DATA_LESS_THAN_SIGN"; - State3[State3["SCRIPT_DATA_END_TAG_OPEN"] = 15] = "SCRIPT_DATA_END_TAG_OPEN"; - State3[State3["SCRIPT_DATA_END_TAG_NAME"] = 16] = "SCRIPT_DATA_END_TAG_NAME"; - State3[State3["SCRIPT_DATA_ESCAPE_START"] = 17] = "SCRIPT_DATA_ESCAPE_START"; - State3[State3["SCRIPT_DATA_ESCAPE_START_DASH"] = 18] = "SCRIPT_DATA_ESCAPE_START_DASH"; - State3[State3["SCRIPT_DATA_ESCAPED"] = 19] = "SCRIPT_DATA_ESCAPED"; - State3[State3["SCRIPT_DATA_ESCAPED_DASH"] = 20] = "SCRIPT_DATA_ESCAPED_DASH"; - State3[State3["SCRIPT_DATA_ESCAPED_DASH_DASH"] = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH"; - State3[State3["SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"] = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"; - State3[State3["SCRIPT_DATA_ESCAPED_END_TAG_OPEN"] = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN"; - State3[State3["SCRIPT_DATA_ESCAPED_END_TAG_NAME"] = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPE_START"] = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPED"] = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPED_DASH"] = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"] = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"] = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"; - State3[State3["SCRIPT_DATA_DOUBLE_ESCAPE_END"] = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END"; - State3[State3["BEFORE_ATTRIBUTE_NAME"] = 31] = "BEFORE_ATTRIBUTE_NAME"; - State3[State3["ATTRIBUTE_NAME"] = 32] = "ATTRIBUTE_NAME"; - State3[State3["AFTER_ATTRIBUTE_NAME"] = 33] = "AFTER_ATTRIBUTE_NAME"; - State3[State3["BEFORE_ATTRIBUTE_VALUE"] = 34] = "BEFORE_ATTRIBUTE_VALUE"; - State3[State3["ATTRIBUTE_VALUE_DOUBLE_QUOTED"] = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED"; - State3[State3["ATTRIBUTE_VALUE_SINGLE_QUOTED"] = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED"; - State3[State3["ATTRIBUTE_VALUE_UNQUOTED"] = 37] = "ATTRIBUTE_VALUE_UNQUOTED"; - State3[State3["AFTER_ATTRIBUTE_VALUE_QUOTED"] = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED"; - State3[State3["SELF_CLOSING_START_TAG"] = 39] = "SELF_CLOSING_START_TAG"; - State3[State3["BOGUS_COMMENT"] = 40] = "BOGUS_COMMENT"; - State3[State3["MARKUP_DECLARATION_OPEN"] = 41] = "MARKUP_DECLARATION_OPEN"; - State3[State3["COMMENT_START"] = 42] = "COMMENT_START"; - State3[State3["COMMENT_START_DASH"] = 43] = "COMMENT_START_DASH"; - State3[State3["COMMENT"] = 44] = "COMMENT"; - State3[State3["COMMENT_LESS_THAN_SIGN"] = 45] = "COMMENT_LESS_THAN_SIGN"; - State3[State3["COMMENT_LESS_THAN_SIGN_BANG"] = 46] = "COMMENT_LESS_THAN_SIGN_BANG"; - State3[State3["COMMENT_LESS_THAN_SIGN_BANG_DASH"] = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH"; - State3[State3["COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"] = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"; - State3[State3["COMMENT_END_DASH"] = 49] = "COMMENT_END_DASH"; - State3[State3["COMMENT_END"] = 50] = "COMMENT_END"; - State3[State3["COMMENT_END_BANG"] = 51] = "COMMENT_END_BANG"; - State3[State3["DOCTYPE"] = 52] = "DOCTYPE"; - State3[State3["BEFORE_DOCTYPE_NAME"] = 53] = "BEFORE_DOCTYPE_NAME"; - State3[State3["DOCTYPE_NAME"] = 54] = "DOCTYPE_NAME"; - State3[State3["AFTER_DOCTYPE_NAME"] = 55] = "AFTER_DOCTYPE_NAME"; - State3[State3["AFTER_DOCTYPE_PUBLIC_KEYWORD"] = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD"; - State3[State3["BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"] = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"; - State3[State3["DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"] = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"; - State3[State3["DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"] = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"; - State3[State3["AFTER_DOCTYPE_PUBLIC_IDENTIFIER"] = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER"; - State3[State3["BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"] = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"; - State3[State3["AFTER_DOCTYPE_SYSTEM_KEYWORD"] = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD"; - State3[State3["BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"] = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"; - State3[State3["DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"] = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"; - State3[State3["DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"] = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"; - State3[State3["AFTER_DOCTYPE_SYSTEM_IDENTIFIER"] = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER"; - State3[State3["BOGUS_DOCTYPE"] = 67] = "BOGUS_DOCTYPE"; - State3[State3["CDATA_SECTION"] = 68] = "CDATA_SECTION"; - State3[State3["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET"; - State3[State3["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END"; - State3[State3["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE"; - State3[State3["AMBIGUOUS_AMPERSAND"] = 72] = "AMBIGUOUS_AMPERSAND"; -})(State2 || (State2 = {})); -var TokenizerMode = { - DATA: State2.DATA, - RCDATA: State2.RCDATA, - RAWTEXT: State2.RAWTEXT, - SCRIPT_DATA: State2.SCRIPT_DATA, - PLAINTEXT: State2.PLAINTEXT, - CDATA_SECTION: State2.CDATA_SECTION -}; -function isAsciiDigit(cp) { - return cp >= CODE_POINTS.DIGIT_0 && cp <= CODE_POINTS.DIGIT_9; -} -function isAsciiUpper(cp) { - return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_Z; -} -function isAsciiLower(cp) { - return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_Z; -} -function isAsciiLetter(cp) { - return isAsciiLower(cp) || isAsciiUpper(cp); -} -function isAsciiAlphaNumeric4(cp) { - return isAsciiLetter(cp) || isAsciiDigit(cp); -} -function toAsciiLower(cp) { - return cp + 32; -} -function isWhitespace3(cp) { - return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED; -} -function isScriptDataDoubleEscapeSequenceEnd(cp) { - return isWhitespace3(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN; -} -function getErrorForNumericCharacterReference(code) { - if (code === CODE_POINTS.NULL) { - return ERR.nullCharacterReference; - } else if (code > 1114111) { - return ERR.characterReferenceOutsideUnicodeRange; - } else if (isSurrogate(code)) { - return ERR.surrogateCharacterReference; - } else if (isUndefinedCodePoint(code)) { - return ERR.noncharacterCharacterReference; - } else if (isControlCodePoint(code) || code === CODE_POINTS.CARRIAGE_RETURN) { - return ERR.controlCharacterReference; - } - return null; -} -var Tokenizer2 = class { - constructor(options, handler) { - this.options = options; - this.handler = handler; - this.paused = false; - this.inLoop = false; - this.inForeignNode = false; - this.lastStartTagName = ""; - this.active = false; - this.state = State2.DATA; - this.returnState = State2.DATA; - this.entityStartPos = 0; - this.consumedAfterSnapshot = -1; - this.currentCharacterToken = null; - this.currentToken = null; - this.currentAttr = { name: "", value: "" }; - this.preprocessor = new Preprocessor(handler); - this.currentLocation = this.getCurrentLocation(-1); - this.entityDecoder = new EntityDecoder3(htmlDecodeTree2, (cp, consumed) => { - this.preprocessor.pos = this.entityStartPos + consumed - 1; - this._flushCodePointConsumedAsCharacterReference(cp); - }, handler.onParseError ? { - missingSemicolonAfterCharacterReference: () => { - this._err(ERR.missingSemicolonAfterCharacterReference, 1); - }, - absenceOfDigitsInNumericCharacterReference: (consumed) => { - this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed); - }, - validateNumericCharacterReference: (code) => { - const error = getErrorForNumericCharacterReference(code); - if (error) - this._err(error, 1); - } - } : void 0); - } - //Errors - _err(code, cpOffset = 0) { - var _a5, _b; - (_b = (_a5 = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a5, this.preprocessor.getError(code, cpOffset)); - } - // NOTE: `offset` may never run across line boundaries. - getCurrentLocation(offset) { - if (!this.options.sourceCodeLocationInfo) { - return null; - } - return { - startLine: this.preprocessor.line, - startCol: this.preprocessor.col - offset, - startOffset: this.preprocessor.offset - offset, - endLine: -1, - endCol: -1, - endOffset: -1 - }; - } - _runParsingLoop() { - if (this.inLoop) - return; - this.inLoop = true; - while (this.active && !this.paused) { - this.consumedAfterSnapshot = 0; - const cp = this._consume(); - if (!this._ensureHibernation()) { - this._callState(cp); - } - } - this.inLoop = false; - } - //API - pause() { - this.paused = true; - } - resume(writeCallback) { - if (!this.paused) { - throw new Error("Parser was already resumed"); - } - this.paused = false; - if (this.inLoop) - return; - this._runParsingLoop(); - if (!this.paused) { - writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); - } - } - write(chunk, isLastChunk, writeCallback) { - this.active = true; - this.preprocessor.write(chunk, isLastChunk); - this._runParsingLoop(); - if (!this.paused) { - writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); - } - } - insertHtmlAtCurrentPos(chunk) { - this.active = true; - this.preprocessor.insertHtmlAtCurrentPos(chunk); - this._runParsingLoop(); - } - //Hibernation - _ensureHibernation() { - if (this.preprocessor.endOfChunkHit) { - this.preprocessor.retreat(this.consumedAfterSnapshot); - this.consumedAfterSnapshot = 0; - this.active = false; - return true; - } - return false; - } - //Consumption - _consume() { - this.consumedAfterSnapshot++; - return this.preprocessor.advance(); - } - _advanceBy(count) { - this.consumedAfterSnapshot += count; - for (let i = 0; i < count; i++) { - this.preprocessor.advance(); - } - } - _consumeSequenceIfMatch(pattern, caseSensitive) { - if (this.preprocessor.startsWith(pattern, caseSensitive)) { - this._advanceBy(pattern.length - 1); - return true; - } - return false; - } - //Token creation - _createStartTagToken() { - this.currentToken = { - type: TokenType.START_TAG, - tagName: "", - tagID: TAG_ID.UNKNOWN, - selfClosing: false, - ackSelfClosing: false, - attrs: [], - location: this.getCurrentLocation(1) - }; - } - _createEndTagToken() { - this.currentToken = { - type: TokenType.END_TAG, - tagName: "", - tagID: TAG_ID.UNKNOWN, - selfClosing: false, - ackSelfClosing: false, - attrs: [], - location: this.getCurrentLocation(2) - }; - } - _createCommentToken(offset) { - this.currentToken = { - type: TokenType.COMMENT, - data: "", - location: this.getCurrentLocation(offset) - }; - } - _createDoctypeToken(initialName) { - this.currentToken = { - type: TokenType.DOCTYPE, - name: initialName, - forceQuirks: false, - publicId: null, - systemId: null, - location: this.currentLocation - }; - } - _createCharacterToken(type, chars) { - this.currentCharacterToken = { - type, - chars, - location: this.currentLocation - }; - } - //Tag attributes - _createAttr(attrNameFirstCh) { - this.currentAttr = { - name: attrNameFirstCh, - value: "" - }; - this.currentLocation = this.getCurrentLocation(0); - } - _leaveAttrName() { - var _a5; - var _b; - const token = this.currentToken; - if (getTokenAttr(token, this.currentAttr.name) === null) { - token.attrs.push(this.currentAttr); - if (token.location && this.currentLocation) { - const attrLocations = (_a5 = (_b = token.location).attrs) !== null && _a5 !== void 0 ? _a5 : _b.attrs = /* @__PURE__ */ Object.create(null); - attrLocations[this.currentAttr.name] = this.currentLocation; - this._leaveAttrValue(); - } - } else { - this._err(ERR.duplicateAttribute); - } - } - _leaveAttrValue() { - if (this.currentLocation) { - this.currentLocation.endLine = this.preprocessor.line; - this.currentLocation.endCol = this.preprocessor.col; - this.currentLocation.endOffset = this.preprocessor.offset; - } - } - //Token emission - prepareToken(ct) { - this._emitCurrentCharacterToken(ct.location); - this.currentToken = null; - if (ct.location) { - ct.location.endLine = this.preprocessor.line; - ct.location.endCol = this.preprocessor.col + 1; - ct.location.endOffset = this.preprocessor.offset + 1; - } - this.currentLocation = this.getCurrentLocation(-1); - } - emitCurrentTagToken() { - const ct = this.currentToken; - this.prepareToken(ct); - ct.tagID = getTagID(ct.tagName); - if (ct.type === TokenType.START_TAG) { - this.lastStartTagName = ct.tagName; - this.handler.onStartTag(ct); - } else { - if (ct.attrs.length > 0) { - this._err(ERR.endTagWithAttributes); - } - if (ct.selfClosing) { - this._err(ERR.endTagWithTrailingSolidus); - } - this.handler.onEndTag(ct); - } - this.preprocessor.dropParsedChunk(); - } - emitCurrentComment(ct) { - this.prepareToken(ct); - this.handler.onComment(ct); - this.preprocessor.dropParsedChunk(); - } - emitCurrentDoctype(ct) { - this.prepareToken(ct); - this.handler.onDoctype(ct); - this.preprocessor.dropParsedChunk(); - } - _emitCurrentCharacterToken(nextLocation) { - if (this.currentCharacterToken) { - if (nextLocation && this.currentCharacterToken.location) { - this.currentCharacterToken.location.endLine = nextLocation.startLine; - this.currentCharacterToken.location.endCol = nextLocation.startCol; - this.currentCharacterToken.location.endOffset = nextLocation.startOffset; - } - switch (this.currentCharacterToken.type) { - case TokenType.CHARACTER: { - this.handler.onCharacter(this.currentCharacterToken); - break; - } - case TokenType.NULL_CHARACTER: { - this.handler.onNullCharacter(this.currentCharacterToken); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - this.handler.onWhitespaceCharacter(this.currentCharacterToken); - break; - } - } - this.currentCharacterToken = null; - } - } - _emitEOFToken() { - const location = this.getCurrentLocation(0); - if (location) { - location.endLine = location.startLine; - location.endCol = location.startCol; - location.endOffset = location.startOffset; - } - this._emitCurrentCharacterToken(location); - this.handler.onEof({ type: TokenType.EOF, location }); - this.active = false; - } - //Characters emission - //OPTIMIZATION: The specification uses only one type of character token (one token per character). - //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters. - //If we have a sequence of characters that belong to the same group, the parser can process it - //as a single solid character token. - //So, there are 3 types of character tokens in parse5: - //1)TokenType.NULL_CHARACTER - \u0000-character sequences (e.g. '\u0000\u0000\u0000') - //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\n \r\t \f') - //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^') - _appendCharToCurrentCharacterToken(type, ch) { - if (this.currentCharacterToken) { - if (this.currentCharacterToken.type === type) { - this.currentCharacterToken.chars += ch; - return; - } else { - this.currentLocation = this.getCurrentLocation(0); - this._emitCurrentCharacterToken(this.currentLocation); - this.preprocessor.dropParsedChunk(); - } - } - this._createCharacterToken(type, ch); - } - _emitCodePoint(cp) { - const type = isWhitespace3(cp) ? TokenType.WHITESPACE_CHARACTER : cp === CODE_POINTS.NULL ? TokenType.NULL_CHARACTER : TokenType.CHARACTER; - this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp)); - } - //NOTE: used when we emit characters explicitly. - //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks. - _emitChars(ch) { - this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch); - } - // Character reference helpers - _startCharacterReference() { - this.returnState = this.state; - this.state = State2.CHARACTER_REFERENCE; - this.entityStartPos = this.preprocessor.pos; - this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode3.Attribute : DecodingMode3.Legacy); - } - _isCharacterReferenceInAttribute() { - return this.returnState === State2.ATTRIBUTE_VALUE_DOUBLE_QUOTED || this.returnState === State2.ATTRIBUTE_VALUE_SINGLE_QUOTED || this.returnState === State2.ATTRIBUTE_VALUE_UNQUOTED; - } - _flushCodePointConsumedAsCharacterReference(cp) { - if (this._isCharacterReferenceInAttribute()) { - this.currentAttr.value += String.fromCodePoint(cp); - } else { - this._emitCodePoint(cp); - } - } - // Calling states this way turns out to be much faster than any other approach. - _callState(cp) { - switch (this.state) { - case State2.DATA: { - this._stateData(cp); - break; - } - case State2.RCDATA: { - this._stateRcdata(cp); - break; - } - case State2.RAWTEXT: { - this._stateRawtext(cp); - break; - } - case State2.SCRIPT_DATA: { - this._stateScriptData(cp); - break; - } - case State2.PLAINTEXT: { - this._statePlaintext(cp); - break; - } - case State2.TAG_OPEN: { - this._stateTagOpen(cp); - break; - } - case State2.END_TAG_OPEN: { - this._stateEndTagOpen(cp); - break; - } - case State2.TAG_NAME: { - this._stateTagName(cp); - break; - } - case State2.RCDATA_LESS_THAN_SIGN: { - this._stateRcdataLessThanSign(cp); - break; - } - case State2.RCDATA_END_TAG_OPEN: { - this._stateRcdataEndTagOpen(cp); - break; - } - case State2.RCDATA_END_TAG_NAME: { - this._stateRcdataEndTagName(cp); - break; - } - case State2.RAWTEXT_LESS_THAN_SIGN: { - this._stateRawtextLessThanSign(cp); - break; - } - case State2.RAWTEXT_END_TAG_OPEN: { - this._stateRawtextEndTagOpen(cp); - break; - } - case State2.RAWTEXT_END_TAG_NAME: { - this._stateRawtextEndTagName(cp); - break; - } - case State2.SCRIPT_DATA_LESS_THAN_SIGN: { - this._stateScriptDataLessThanSign(cp); - break; - } - case State2.SCRIPT_DATA_END_TAG_OPEN: { - this._stateScriptDataEndTagOpen(cp); - break; - } - case State2.SCRIPT_DATA_END_TAG_NAME: { - this._stateScriptDataEndTagName(cp); - break; - } - case State2.SCRIPT_DATA_ESCAPE_START: { - this._stateScriptDataEscapeStart(cp); - break; - } - case State2.SCRIPT_DATA_ESCAPE_START_DASH: { - this._stateScriptDataEscapeStartDash(cp); - break; - } - case State2.SCRIPT_DATA_ESCAPED: { - this._stateScriptDataEscaped(cp); - break; - } - case State2.SCRIPT_DATA_ESCAPED_DASH: { - this._stateScriptDataEscapedDash(cp); - break; - } - case State2.SCRIPT_DATA_ESCAPED_DASH_DASH: { - this._stateScriptDataEscapedDashDash(cp); - break; - } - case State2.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: { - this._stateScriptDataEscapedLessThanSign(cp); - break; - } - case State2.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: { - this._stateScriptDataEscapedEndTagOpen(cp); - break; - } - case State2.SCRIPT_DATA_ESCAPED_END_TAG_NAME: { - this._stateScriptDataEscapedEndTagName(cp); - break; - } - case State2.SCRIPT_DATA_DOUBLE_ESCAPE_START: { - this._stateScriptDataDoubleEscapeStart(cp); - break; - } - case State2.SCRIPT_DATA_DOUBLE_ESCAPED: { - this._stateScriptDataDoubleEscaped(cp); - break; - } - case State2.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: { - this._stateScriptDataDoubleEscapedDash(cp); - break; - } - case State2.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: { - this._stateScriptDataDoubleEscapedDashDash(cp); - break; - } - case State2.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: { - this._stateScriptDataDoubleEscapedLessThanSign(cp); - break; - } - case State2.SCRIPT_DATA_DOUBLE_ESCAPE_END: { - this._stateScriptDataDoubleEscapeEnd(cp); - break; - } - case State2.BEFORE_ATTRIBUTE_NAME: { - this._stateBeforeAttributeName(cp); - break; - } - case State2.ATTRIBUTE_NAME: { - this._stateAttributeName(cp); - break; - } - case State2.AFTER_ATTRIBUTE_NAME: { - this._stateAfterAttributeName(cp); - break; - } - case State2.BEFORE_ATTRIBUTE_VALUE: { - this._stateBeforeAttributeValue(cp); - break; - } - case State2.ATTRIBUTE_VALUE_DOUBLE_QUOTED: { - this._stateAttributeValueDoubleQuoted(cp); - break; - } - case State2.ATTRIBUTE_VALUE_SINGLE_QUOTED: { - this._stateAttributeValueSingleQuoted(cp); - break; - } - case State2.ATTRIBUTE_VALUE_UNQUOTED: { - this._stateAttributeValueUnquoted(cp); - break; - } - case State2.AFTER_ATTRIBUTE_VALUE_QUOTED: { - this._stateAfterAttributeValueQuoted(cp); - break; - } - case State2.SELF_CLOSING_START_TAG: { - this._stateSelfClosingStartTag(cp); - break; - } - case State2.BOGUS_COMMENT: { - this._stateBogusComment(cp); - break; - } - case State2.MARKUP_DECLARATION_OPEN: { - this._stateMarkupDeclarationOpen(cp); - break; - } - case State2.COMMENT_START: { - this._stateCommentStart(cp); - break; - } - case State2.COMMENT_START_DASH: { - this._stateCommentStartDash(cp); - break; - } - case State2.COMMENT: { - this._stateComment(cp); - break; - } - case State2.COMMENT_LESS_THAN_SIGN: { - this._stateCommentLessThanSign(cp); - break; - } - case State2.COMMENT_LESS_THAN_SIGN_BANG: { - this._stateCommentLessThanSignBang(cp); - break; - } - case State2.COMMENT_LESS_THAN_SIGN_BANG_DASH: { - this._stateCommentLessThanSignBangDash(cp); - break; - } - case State2.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: { - this._stateCommentLessThanSignBangDashDash(cp); - break; - } - case State2.COMMENT_END_DASH: { - this._stateCommentEndDash(cp); - break; - } - case State2.COMMENT_END: { - this._stateCommentEnd(cp); - break; - } - case State2.COMMENT_END_BANG: { - this._stateCommentEndBang(cp); - break; - } - case State2.DOCTYPE: { - this._stateDoctype(cp); - break; - } - case State2.BEFORE_DOCTYPE_NAME: { - this._stateBeforeDoctypeName(cp); - break; - } - case State2.DOCTYPE_NAME: { - this._stateDoctypeName(cp); - break; - } - case State2.AFTER_DOCTYPE_NAME: { - this._stateAfterDoctypeName(cp); - break; - } - case State2.AFTER_DOCTYPE_PUBLIC_KEYWORD: { - this._stateAfterDoctypePublicKeyword(cp); - break; - } - case State2.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: { - this._stateBeforeDoctypePublicIdentifier(cp); - break; - } - case State2.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: { - this._stateDoctypePublicIdentifierDoubleQuoted(cp); - break; - } - case State2.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: { - this._stateDoctypePublicIdentifierSingleQuoted(cp); - break; - } - case State2.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: { - this._stateAfterDoctypePublicIdentifier(cp); - break; - } - case State2.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: { - this._stateBetweenDoctypePublicAndSystemIdentifiers(cp); - break; - } - case State2.AFTER_DOCTYPE_SYSTEM_KEYWORD: { - this._stateAfterDoctypeSystemKeyword(cp); - break; - } - case State2.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: { - this._stateBeforeDoctypeSystemIdentifier(cp); - break; - } - case State2.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: { - this._stateDoctypeSystemIdentifierDoubleQuoted(cp); - break; - } - case State2.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: { - this._stateDoctypeSystemIdentifierSingleQuoted(cp); - break; - } - case State2.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: { - this._stateAfterDoctypeSystemIdentifier(cp); - break; - } - case State2.BOGUS_DOCTYPE: { - this._stateBogusDoctype(cp); - break; - } - case State2.CDATA_SECTION: { - this._stateCdataSection(cp); - break; - } - case State2.CDATA_SECTION_BRACKET: { - this._stateCdataSectionBracket(cp); - break; - } - case State2.CDATA_SECTION_END: { - this._stateCdataSectionEnd(cp); - break; - } - case State2.CHARACTER_REFERENCE: { - this._stateCharacterReference(); - break; - } - case State2.AMBIGUOUS_AMPERSAND: { - this._stateAmbiguousAmpersand(cp); - break; - } - default: { - throw new Error("Unknown state"); - } - } - } - // State machine - // Data state - //------------------------------------------------------------------ - _stateData(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State2.TAG_OPEN; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitCodePoint(cp); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // RCDATA state - //------------------------------------------------------------------ - _stateRcdata(cp) { - switch (cp) { - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State2.RCDATA_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // RAWTEXT state - //------------------------------------------------------------------ - _stateRawtext(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State2.RAWTEXT_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Script data state - //------------------------------------------------------------------ - _stateScriptData(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State2.SCRIPT_DATA_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // PLAINTEXT state - //------------------------------------------------------------------ - _statePlaintext(cp) { - switch (cp) { - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Tag open state - //------------------------------------------------------------------ - _stateTagOpen(cp) { - if (isAsciiLetter(cp)) { - this._createStartTagToken(); - this.state = State2.TAG_NAME; - this._stateTagName(cp); - } else - switch (cp) { - case CODE_POINTS.EXCLAMATION_MARK: { - this.state = State2.MARKUP_DECLARATION_OPEN; - break; - } - case CODE_POINTS.SOLIDUS: { - this.state = State2.END_TAG_OPEN; - break; - } - case CODE_POINTS.QUESTION_MARK: { - this._err(ERR.unexpectedQuestionMarkInsteadOfTagName); - this._createCommentToken(1); - this.state = State2.BOGUS_COMMENT; - this._stateBogusComment(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofBeforeTagName); - this._emitChars("<"); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.invalidFirstCharacterOfTagName); - this._emitChars("<"); - this.state = State2.DATA; - this._stateData(cp); - } - } - } - // End tag open state - //------------------------------------------------------------------ - _stateEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this._createEndTagToken(); - this.state = State2.TAG_NAME; - this._stateTagName(cp); - } else - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingEndTagName); - this.state = State2.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofBeforeTagName); - this._emitChars("</"); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.invalidFirstCharacterOfTagName); - this._createCommentToken(2); - this.state = State2.BOGUS_COMMENT; - this._stateBogusComment(cp); - } - } - } - // Tag name state - //------------------------------------------------------------------ - _stateTagName(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State2.BEFORE_ATTRIBUTE_NAME; - break; - } - case CODE_POINTS.SOLIDUS: { - this.state = State2.SELF_CLOSING_START_TAG; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State2.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.tagName += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); - } - } - } - // RCDATA less-than sign state - //------------------------------------------------------------------ - _stateRcdataLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State2.RCDATA_END_TAG_OPEN; - } else { - this._emitChars("<"); - this.state = State2.RCDATA; - this._stateRcdata(cp); - } - } - // RCDATA end tag open state - //------------------------------------------------------------------ - _stateRcdataEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State2.RCDATA_END_TAG_NAME; - this._stateRcdataEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State2.RCDATA; - this._stateRcdata(cp); - } - } - handleSpecialEndTag(_cp) { - if (!this.preprocessor.startsWith(this.lastStartTagName, false)) { - return !this._ensureHibernation(); - } - this._createEndTagToken(); - const token = this.currentToken; - token.tagName = this.lastStartTagName; - const cp = this.preprocessor.peek(this.lastStartTagName.length); - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this._advanceBy(this.lastStartTagName.length); - this.state = State2.BEFORE_ATTRIBUTE_NAME; - return false; - } - case CODE_POINTS.SOLIDUS: { - this._advanceBy(this.lastStartTagName.length); - this.state = State2.SELF_CLOSING_START_TAG; - return false; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._advanceBy(this.lastStartTagName.length); - this.emitCurrentTagToken(); - this.state = State2.DATA; - return false; - } - default: { - return !this._ensureHibernation(); - } - } - } - // RCDATA end tag name state - //------------------------------------------------------------------ - _stateRcdataEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State2.RCDATA; - this._stateRcdata(cp); - } - } - // RAWTEXT less-than sign state - //------------------------------------------------------------------ - _stateRawtextLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State2.RAWTEXT_END_TAG_OPEN; - } else { - this._emitChars("<"); - this.state = State2.RAWTEXT; - this._stateRawtext(cp); - } - } - // RAWTEXT end tag open state - //------------------------------------------------------------------ - _stateRawtextEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State2.RAWTEXT_END_TAG_NAME; - this._stateRawtextEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State2.RAWTEXT; - this._stateRawtext(cp); - } - } - // RAWTEXT end tag name state - //------------------------------------------------------------------ - _stateRawtextEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State2.RAWTEXT; - this._stateRawtext(cp); - } - } - // Script data less-than sign state - //------------------------------------------------------------------ - _stateScriptDataLessThanSign(cp) { - switch (cp) { - case CODE_POINTS.SOLIDUS: { - this.state = State2.SCRIPT_DATA_END_TAG_OPEN; - break; - } - case CODE_POINTS.EXCLAMATION_MARK: { - this.state = State2.SCRIPT_DATA_ESCAPE_START; - this._emitChars("<!"); - break; - } - default: { - this._emitChars("<"); - this.state = State2.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - } - // Script data end tag open state - //------------------------------------------------------------------ - _stateScriptDataEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State2.SCRIPT_DATA_END_TAG_NAME; - this._stateScriptDataEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State2.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data end tag name state - //------------------------------------------------------------------ - _stateScriptDataEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State2.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data escape start state - //------------------------------------------------------------------ - _stateScriptDataEscapeStart(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State2.SCRIPT_DATA_ESCAPE_START_DASH; - this._emitChars("-"); - } else { - this.state = State2.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data escape start dash state - //------------------------------------------------------------------ - _stateScriptDataEscapeStartDash(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State2.SCRIPT_DATA_ESCAPED_DASH_DASH; - this._emitChars("-"); - } else { - this.state = State2.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data escaped state - //------------------------------------------------------------------ - _stateScriptDataEscaped(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State2.SCRIPT_DATA_ESCAPED_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State2.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Script data escaped dash state - //------------------------------------------------------------------ - _stateScriptDataEscapedDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State2.SCRIPT_DATA_ESCAPED_DASH_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State2.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State2.SCRIPT_DATA_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State2.SCRIPT_DATA_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data escaped dash dash state - //------------------------------------------------------------------ - _stateScriptDataEscapedDashDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State2.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State2.SCRIPT_DATA; - this._emitChars(">"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State2.SCRIPT_DATA_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State2.SCRIPT_DATA_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data escaped less-than sign state - //------------------------------------------------------------------ - _stateScriptDataEscapedLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State2.SCRIPT_DATA_ESCAPED_END_TAG_OPEN; - } else if (isAsciiLetter(cp)) { - this._emitChars("<"); - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPE_START; - this._stateScriptDataDoubleEscapeStart(cp); - } else { - this._emitChars("<"); - this.state = State2.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data escaped end tag open state - //------------------------------------------------------------------ - _stateScriptDataEscapedEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State2.SCRIPT_DATA_ESCAPED_END_TAG_NAME; - this._stateScriptDataEscapedEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State2.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data escaped end tag name state - //------------------------------------------------------------------ - _stateScriptDataEscapedEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State2.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data double escape start state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapeStart(cp) { - if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) { - this._emitCodePoint(cp); - for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) { - this._emitCodePoint(this._consume()); - } - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED; - } else if (!this._ensureHibernation()) { - this.state = State2.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data double escaped state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscaped(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; - this._emitChars("<"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Script data double escaped dash state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapedDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; - this._emitChars("<"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data double escaped dash dash state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapedDashDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; - this._emitChars("<"); - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State2.SCRIPT_DATA; - this._emitChars(">"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data double escaped less-than sign state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapedLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPE_END; - this._emitChars("/"); - } else { - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED; - this._stateScriptDataDoubleEscaped(cp); - } - } - // Script data double escape end state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapeEnd(cp) { - if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) { - this._emitCodePoint(cp); - for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) { - this._emitCodePoint(this._consume()); - } - this.state = State2.SCRIPT_DATA_ESCAPED; - } else if (!this._ensureHibernation()) { - this.state = State2.SCRIPT_DATA_DOUBLE_ESCAPED; - this._stateScriptDataDoubleEscaped(cp); - } - } - // Before attribute name state - //------------------------------------------------------------------ - _stateBeforeAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.SOLIDUS: - case CODE_POINTS.GREATER_THAN_SIGN: - case CODE_POINTS.EOF: { - this.state = State2.AFTER_ATTRIBUTE_NAME; - this._stateAfterAttributeName(cp); - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this._err(ERR.unexpectedEqualsSignBeforeAttributeName); - this._createAttr("="); - this.state = State2.ATTRIBUTE_NAME; - break; - } - default: { - this._createAttr(""); - this.state = State2.ATTRIBUTE_NAME; - this._stateAttributeName(cp); - } - } - } - // Attribute name state - //------------------------------------------------------------------ - _stateAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: - case CODE_POINTS.SOLIDUS: - case CODE_POINTS.GREATER_THAN_SIGN: - case CODE_POINTS.EOF: { - this._leaveAttrName(); - this.state = State2.AFTER_ATTRIBUTE_NAME; - this._stateAfterAttributeName(cp); - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this._leaveAttrName(); - this.state = State2.BEFORE_ATTRIBUTE_VALUE; - break; - } - case CODE_POINTS.QUOTATION_MARK: - case CODE_POINTS.APOSTROPHE: - case CODE_POINTS.LESS_THAN_SIGN: { - this._err(ERR.unexpectedCharacterInAttributeName); - this.currentAttr.name += String.fromCodePoint(cp); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.name += REPLACEMENT_CHARACTER; - break; - } - default: { - this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); - } - } - } - // After attribute name state - //------------------------------------------------------------------ - _stateAfterAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.SOLIDUS: { - this.state = State2.SELF_CLOSING_START_TAG; - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this.state = State2.BEFORE_ATTRIBUTE_VALUE; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State2.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._createAttr(""); - this.state = State2.ATTRIBUTE_NAME; - this._stateAttributeName(cp); - } - } - } - // Before attribute value state - //------------------------------------------------------------------ - _stateBeforeAttributeValue(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this.state = State2.ATTRIBUTE_VALUE_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this.state = State2.ATTRIBUTE_VALUE_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingAttributeValue); - this.state = State2.DATA; - this.emitCurrentTagToken(); - break; - } - default: { - this.state = State2.ATTRIBUTE_VALUE_UNQUOTED; - this._stateAttributeValueUnquoted(cp); - } - } - } - // Attribute value (double-quoted) state - //------------------------------------------------------------------ - _stateAttributeValueDoubleQuoted(cp) { - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State2.AFTER_ATTRIBUTE_VALUE_QUOTED; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // Attribute value (single-quoted) state - //------------------------------------------------------------------ - _stateAttributeValueSingleQuoted(cp) { - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State2.AFTER_ATTRIBUTE_VALUE_QUOTED; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // Attribute value (unquoted) state - //------------------------------------------------------------------ - _stateAttributeValueUnquoted(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this._leaveAttrValue(); - this.state = State2.BEFORE_ATTRIBUTE_NAME; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._leaveAttrValue(); - this.state = State2.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.QUOTATION_MARK: - case CODE_POINTS.APOSTROPHE: - case CODE_POINTS.LESS_THAN_SIGN: - case CODE_POINTS.EQUALS_SIGN: - case CODE_POINTS.GRAVE_ACCENT: { - this._err(ERR.unexpectedCharacterInUnquotedAttributeValue); - this.currentAttr.value += String.fromCodePoint(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // After attribute value (quoted) state - //------------------------------------------------------------------ - _stateAfterAttributeValueQuoted(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this._leaveAttrValue(); - this.state = State2.BEFORE_ATTRIBUTE_NAME; - break; - } - case CODE_POINTS.SOLIDUS: { - this._leaveAttrValue(); - this.state = State2.SELF_CLOSING_START_TAG; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._leaveAttrValue(); - this.state = State2.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingWhitespaceBetweenAttributes); - this.state = State2.BEFORE_ATTRIBUTE_NAME; - this._stateBeforeAttributeName(cp); - } - } - } - // Self-closing start tag state - //------------------------------------------------------------------ - _stateSelfClosingStartTag(cp) { - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - const token = this.currentToken; - token.selfClosing = true; - this.state = State2.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.unexpectedSolidusInTag); - this.state = State2.BEFORE_ATTRIBUTE_NAME; - this._stateBeforeAttributeName(cp); - } - } - } - // Bogus comment state - //------------------------------------------------------------------ - _stateBogusComment(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State2.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.data += REPLACEMENT_CHARACTER; - break; - } - default: { - token.data += String.fromCodePoint(cp); - } - } - } - // Markup declaration open state - //------------------------------------------------------------------ - _stateMarkupDeclarationOpen(cp) { - if (this._consumeSequenceIfMatch(SEQUENCES.DASH_DASH, true)) { - this._createCommentToken(SEQUENCES.DASH_DASH.length + 1); - this.state = State2.COMMENT_START; - } else if (this._consumeSequenceIfMatch(SEQUENCES.DOCTYPE, false)) { - this.currentLocation = this.getCurrentLocation(SEQUENCES.DOCTYPE.length + 1); - this.state = State2.DOCTYPE; - } else if (this._consumeSequenceIfMatch(SEQUENCES.CDATA_START, true)) { - if (this.inForeignNode) { - this.state = State2.CDATA_SECTION; - } else { - this._err(ERR.cdataInHtmlContent); - this._createCommentToken(SEQUENCES.CDATA_START.length + 1); - this.currentToken.data = "[CDATA["; - this.state = State2.BOGUS_COMMENT; - } - } else if (!this._ensureHibernation()) { - this._err(ERR.incorrectlyOpenedComment); - this._createCommentToken(2); - this.state = State2.BOGUS_COMMENT; - this._stateBogusComment(cp); - } - } - // Comment start state - //------------------------------------------------------------------ - _stateCommentStart(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State2.COMMENT_START_DASH; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptClosingOfEmptyComment); - this.state = State2.DATA; - const token = this.currentToken; - this.emitCurrentComment(token); - break; - } - default: { - this.state = State2.COMMENT; - this._stateComment(cp); - } - } - } - // Comment start dash state - //------------------------------------------------------------------ - _stateCommentStartDash(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State2.COMMENT_END; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptClosingOfEmptyComment); - this.state = State2.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "-"; - this.state = State2.COMMENT; - this._stateComment(cp); - } - } - } - // Comment state - //------------------------------------------------------------------ - _stateComment(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State2.COMMENT_END_DASH; - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - token.data += "<"; - this.state = State2.COMMENT_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.data += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += String.fromCodePoint(cp); - } - } - } - // Comment less-than sign state - //------------------------------------------------------------------ - _stateCommentLessThanSign(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.EXCLAMATION_MARK: { - token.data += "!"; - this.state = State2.COMMENT_LESS_THAN_SIGN_BANG; - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - token.data += "<"; - break; - } - default: { - this.state = State2.COMMENT; - this._stateComment(cp); - } - } - } - // Comment less-than sign bang state - //------------------------------------------------------------------ - _stateCommentLessThanSignBang(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State2.COMMENT_LESS_THAN_SIGN_BANG_DASH; - } else { - this.state = State2.COMMENT; - this._stateComment(cp); - } - } - // Comment less-than sign bang dash state - //------------------------------------------------------------------ - _stateCommentLessThanSignBangDash(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State2.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH; - } else { - this.state = State2.COMMENT_END_DASH; - this._stateCommentEndDash(cp); - } - } - // Comment less-than sign bang dash dash state - //------------------------------------------------------------------ - _stateCommentLessThanSignBangDashDash(cp) { - if (cp !== CODE_POINTS.GREATER_THAN_SIGN && cp !== CODE_POINTS.EOF) { - this._err(ERR.nestedComment); - } - this.state = State2.COMMENT_END; - this._stateCommentEnd(cp); - } - // Comment end dash state - //------------------------------------------------------------------ - _stateCommentEndDash(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State2.COMMENT_END; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "-"; - this.state = State2.COMMENT; - this._stateComment(cp); - } - } - } - // Comment end state - //------------------------------------------------------------------ - _stateCommentEnd(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State2.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EXCLAMATION_MARK: { - this.state = State2.COMMENT_END_BANG; - break; - } - case CODE_POINTS.HYPHEN_MINUS: { - token.data += "-"; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "--"; - this.state = State2.COMMENT; - this._stateComment(cp); - } - } - } - // Comment end bang state - //------------------------------------------------------------------ - _stateCommentEndBang(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - token.data += "--!"; - this.state = State2.COMMENT_END_DASH; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.incorrectlyClosedComment); - this.state = State2.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "--!"; - this.state = State2.COMMENT; - this._stateComment(cp); - } - } - } - // DOCTYPE state - //------------------------------------------------------------------ - _stateDoctype(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State2.BEFORE_DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State2.BEFORE_DOCTYPE_NAME; - this._stateBeforeDoctypeName(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingWhitespaceBeforeDoctypeName); - this.state = State2.BEFORE_DOCTYPE_NAME; - this._stateBeforeDoctypeName(cp); - } - } - } - // Before DOCTYPE name state - //------------------------------------------------------------------ - _stateBeforeDoctypeName(cp) { - if (isAsciiUpper(cp)) { - this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp))); - this.state = State2.DOCTYPE_NAME; - } else - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._createDoctypeToken(REPLACEMENT_CHARACTER); - this.state = State2.DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeName); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State2.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._createDoctypeToken(String.fromCodePoint(cp)); - this.state = State2.DOCTYPE_NAME; - } - } - } - // DOCTYPE name state - //------------------------------------------------------------------ - _stateDoctypeName(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State2.AFTER_DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State2.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.name += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); - } - } - } - // After DOCTYPE name state - //------------------------------------------------------------------ - _stateAfterDoctypeName(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State2.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - if (this._consumeSequenceIfMatch(SEQUENCES.PUBLIC, false)) { - this.state = State2.AFTER_DOCTYPE_PUBLIC_KEYWORD; - } else if (this._consumeSequenceIfMatch(SEQUENCES.SYSTEM, false)) { - this.state = State2.AFTER_DOCTYPE_SYSTEM_KEYWORD; - } else if (!this._ensureHibernation()) { - this._err(ERR.invalidCharacterSequenceAfterDoctypeName); - token.forceQuirks = true; - this.state = State2.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - } - // After DOCTYPE public keyword state - //------------------------------------------------------------------ - _stateAfterDoctypePublicKeyword(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State2.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); - token.publicId = ""; - this.state = State2.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); - token.publicId = ""; - this.state = State2.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State2.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State2.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Before DOCTYPE public identifier state - //------------------------------------------------------------------ - _stateBeforeDoctypePublicIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.publicId = ""; - this.state = State2.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.publicId = ""; - this.state = State2.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State2.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State2.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // DOCTYPE public identifier (double-quoted) state - //------------------------------------------------------------------ - _stateDoctypePublicIdentifierDoubleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State2.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.publicId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypePublicIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State2.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.publicId += String.fromCodePoint(cp); - } - } - } - // DOCTYPE public identifier (single-quoted) state - //------------------------------------------------------------------ - _stateDoctypePublicIdentifierSingleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State2.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.publicId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypePublicIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State2.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.publicId += String.fromCodePoint(cp); - } - } - } - // After DOCTYPE public identifier state - //------------------------------------------------------------------ - _stateAfterDoctypePublicIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State2.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State2.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); - token.systemId = ""; - this.state = State2.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); - token.systemId = ""; - this.state = State2.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State2.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Between DOCTYPE public and system identifiers state - //------------------------------------------------------------------ - _stateBetweenDoctypePublicAndSystemIdentifiers(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State2.DATA; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.systemId = ""; - this.state = State2.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.systemId = ""; - this.state = State2.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State2.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // After DOCTYPE system keyword state - //------------------------------------------------------------------ - _stateAfterDoctypeSystemKeyword(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State2.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); - token.systemId = ""; - this.state = State2.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); - token.systemId = ""; - this.state = State2.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State2.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State2.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Before DOCTYPE system identifier state - //------------------------------------------------------------------ - _stateBeforeDoctypeSystemIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.systemId = ""; - this.state = State2.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.systemId = ""; - this.state = State2.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State2.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State2.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // DOCTYPE system identifier (double-quoted) state - //------------------------------------------------------------------ - _stateDoctypeSystemIdentifierDoubleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State2.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.systemId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypeSystemIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State2.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.systemId += String.fromCodePoint(cp); - } - } - } - // DOCTYPE system identifier (single-quoted) state - //------------------------------------------------------------------ - _stateDoctypeSystemIdentifierSingleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State2.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.systemId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypeSystemIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State2.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.systemId += String.fromCodePoint(cp); - } - } - } - // After DOCTYPE system identifier state - //------------------------------------------------------------------ - _stateAfterDoctypeSystemIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State2.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier); - this.state = State2.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Bogus DOCTYPE state - //------------------------------------------------------------------ - _stateBogusDoctype(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State2.DATA; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - break; - } - case CODE_POINTS.EOF: { - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: - } - } - // CDATA section state - //------------------------------------------------------------------ - _stateCdataSection(cp) { - switch (cp) { - case CODE_POINTS.RIGHT_SQUARE_BRACKET: { - this.state = State2.CDATA_SECTION_BRACKET; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInCdata); - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // CDATA section bracket state - //------------------------------------------------------------------ - _stateCdataSectionBracket(cp) { - if (cp === CODE_POINTS.RIGHT_SQUARE_BRACKET) { - this.state = State2.CDATA_SECTION_END; - } else { - this._emitChars("]"); - this.state = State2.CDATA_SECTION; - this._stateCdataSection(cp); - } - } - // CDATA section end state - //------------------------------------------------------------------ - _stateCdataSectionEnd(cp) { - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State2.DATA; - break; - } - case CODE_POINTS.RIGHT_SQUARE_BRACKET: { - this._emitChars("]"); - break; - } - default: { - this._emitChars("]]"); - this.state = State2.CDATA_SECTION; - this._stateCdataSection(cp); - } - } - } - // Character reference state - //------------------------------------------------------------------ - _stateCharacterReference() { - let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos); - if (length < 0) { - if (this.preprocessor.lastChunkWritten) { - length = this.entityDecoder.end(); - } else { - this.active = false; - this.preprocessor.pos = this.preprocessor.html.length - 1; - this.consumedAfterSnapshot = 0; - this.preprocessor.endOfChunkHit = true; - return; - } - } - if (length === 0) { - this.preprocessor.pos = this.entityStartPos; - this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); - this.state = !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric4(this.preprocessor.peek(1)) ? State2.AMBIGUOUS_AMPERSAND : this.returnState; - } else { - this.state = this.returnState; - } - } - // Ambiguos ampersand state - //------------------------------------------------------------------ - _stateAmbiguousAmpersand(cp) { - if (isAsciiAlphaNumeric4(cp)) { - this._flushCodePointConsumedAsCharacterReference(cp); - } else { - if (cp === CODE_POINTS.SEMICOLON) { - this._err(ERR.unknownNamedCharacterReference); - } - this.state = this.returnState; - this._callState(cp); - } - } -}; - -// node_modules/parse5/dist/parser/open-element-stack.js -var IMPLICIT_END_TAG_REQUIRED = /* @__PURE__ */ new Set([TAG_ID.DD, TAG_ID.DT, TAG_ID.LI, TAG_ID.OPTGROUP, TAG_ID.OPTION, TAG_ID.P, TAG_ID.RB, TAG_ID.RP, TAG_ID.RT, TAG_ID.RTC]); -var IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = /* @__PURE__ */ new Set([ - ...IMPLICIT_END_TAG_REQUIRED, - TAG_ID.CAPTION, - TAG_ID.COLGROUP, - TAG_ID.TBODY, - TAG_ID.TD, - TAG_ID.TFOOT, - TAG_ID.TH, - TAG_ID.THEAD, - TAG_ID.TR -]); -var SCOPING_ELEMENTS_HTML = /* @__PURE__ */ new Set([ - TAG_ID.APPLET, - TAG_ID.CAPTION, - TAG_ID.HTML, - TAG_ID.MARQUEE, - TAG_ID.OBJECT, - TAG_ID.TABLE, - TAG_ID.TD, - TAG_ID.TEMPLATE, - TAG_ID.TH -]); -var SCOPING_ELEMENTS_HTML_LIST = /* @__PURE__ */ new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.OL, TAG_ID.UL]); -var SCOPING_ELEMENTS_HTML_BUTTON = /* @__PURE__ */ new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.BUTTON]); -var SCOPING_ELEMENTS_MATHML = /* @__PURE__ */ new Set([TAG_ID.ANNOTATION_XML, TAG_ID.MI, TAG_ID.MN, TAG_ID.MO, TAG_ID.MS, TAG_ID.MTEXT]); -var SCOPING_ELEMENTS_SVG = /* @__PURE__ */ new Set([TAG_ID.DESC, TAG_ID.FOREIGN_OBJECT, TAG_ID.TITLE]); -var TABLE_ROW_CONTEXT = /* @__PURE__ */ new Set([TAG_ID.TR, TAG_ID.TEMPLATE, TAG_ID.HTML]); -var TABLE_BODY_CONTEXT = /* @__PURE__ */ new Set([TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TEMPLATE, TAG_ID.HTML]); -var TABLE_CONTEXT = /* @__PURE__ */ new Set([TAG_ID.TABLE, TAG_ID.TEMPLATE, TAG_ID.HTML]); -var TABLE_CELLS = /* @__PURE__ */ new Set([TAG_ID.TD, TAG_ID.TH]); -var OpenElementStack = class { - get currentTmplContentOrNode() { - return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current; - } - constructor(document2, treeAdapter, handler) { - this.treeAdapter = treeAdapter; - this.handler = handler; - this.items = []; - this.tagIDs = []; - this.stackTop = -1; - this.tmplCount = 0; - this.currentTagId = TAG_ID.UNKNOWN; - this.current = document2; - } - //Index of element - _indexOf(element) { - return this.items.lastIndexOf(element, this.stackTop); - } - //Update current element - _isInTemplate() { - return this.currentTagId === TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML; - } - _updateCurrentElement() { - this.current = this.items[this.stackTop]; - this.currentTagId = this.tagIDs[this.stackTop]; - } - //Mutations - push(element, tagID) { - this.stackTop++; - this.items[this.stackTop] = element; - this.current = element; - this.tagIDs[this.stackTop] = tagID; - this.currentTagId = tagID; - if (this._isInTemplate()) { - this.tmplCount++; - } - this.handler.onItemPush(element, tagID, true); - } - pop() { - const popped = this.current; - if (this.tmplCount > 0 && this._isInTemplate()) { - this.tmplCount--; - } - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(popped, true); - } - replace(oldElement, newElement) { - const idx = this._indexOf(oldElement); - this.items[idx] = newElement; - if (idx === this.stackTop) { - this.current = newElement; - } - } - insertAfter(referenceElement, newElement, newElementID) { - const insertionIdx = this._indexOf(referenceElement) + 1; - this.items.splice(insertionIdx, 0, newElement); - this.tagIDs.splice(insertionIdx, 0, newElementID); - this.stackTop++; - if (insertionIdx === this.stackTop) { - this._updateCurrentElement(); - } - if (this.current && this.currentTagId !== void 0) { - this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop); - } - } - popUntilTagNamePopped(tagName) { - let targetIdx = this.stackTop + 1; - do { - targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1); - } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML); - this.shortenToLength(Math.max(targetIdx, 0)); - } - shortenToLength(idx) { - while (this.stackTop >= idx) { - const popped = this.current; - if (this.tmplCount > 0 && this._isInTemplate()) { - this.tmplCount -= 1; - } - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(popped, this.stackTop < idx); - } - } - popUntilElementPopped(element) { - const idx = this._indexOf(element); - this.shortenToLength(Math.max(idx, 0)); - } - popUntilPopped(tagNames, targetNS) { - const idx = this._indexOfTagNames(tagNames, targetNS); - this.shortenToLength(Math.max(idx, 0)); - } - popUntilNumberedHeaderPopped() { - this.popUntilPopped(NUMBERED_HEADERS, NS.HTML); - } - popUntilTableCellPopped() { - this.popUntilPopped(TABLE_CELLS, NS.HTML); - } - popAllUpToHtmlElement() { - this.tmplCount = 0; - this.shortenToLength(1); - } - _indexOfTagNames(tagNames, namespace) { - for (let i = this.stackTop; i >= 0; i--) { - if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) { - return i; - } - } - return -1; - } - clearBackTo(tagNames, targetNS) { - const idx = this._indexOfTagNames(tagNames, targetNS); - this.shortenToLength(idx + 1); - } - clearBackToTableContext() { - this.clearBackTo(TABLE_CONTEXT, NS.HTML); - } - clearBackToTableBodyContext() { - this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML); - } - clearBackToTableRowContext() { - this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML); - } - remove(element) { - const idx = this._indexOf(element); - if (idx >= 0) { - if (idx === this.stackTop) { - this.pop(); - } else { - this.items.splice(idx, 1); - this.tagIDs.splice(idx, 1); - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(element, false); - } - } - } - //Search - tryPeekProperlyNestedBodyElement() { - return this.stackTop >= 1 && this.tagIDs[1] === TAG_ID.BODY ? this.items[1] : null; - } - contains(element) { - return this._indexOf(element) > -1; - } - getCommonAncestor(element) { - const elementIdx = this._indexOf(element) - 1; - return elementIdx >= 0 ? this.items[elementIdx] : null; - } - isRootHtmlElementCurrent() { - return this.stackTop === 0 && this.tagIDs[0] === TAG_ID.HTML; - } - //Element in scope - hasInDynamicScope(tagName, htmlScope) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - switch (this.treeAdapter.getNamespaceURI(this.items[i])) { - case NS.HTML: { - if (tn === tagName) - return true; - if (htmlScope.has(tn)) - return false; - break; - } - case NS.SVG: { - if (SCOPING_ELEMENTS_SVG.has(tn)) - return false; - break; - } - case NS.MATHML: { - if (SCOPING_ELEMENTS_MATHML.has(tn)) - return false; - break; - } - } - } - return true; - } - hasInScope(tagName) { - return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML); - } - hasInListItemScope(tagName) { - return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST); - } - hasInButtonScope(tagName) { - return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON); - } - hasNumberedHeaderInScope() { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - switch (this.treeAdapter.getNamespaceURI(this.items[i])) { - case NS.HTML: { - if (NUMBERED_HEADERS.has(tn)) - return true; - if (SCOPING_ELEMENTS_HTML.has(tn)) - return false; - break; - } - case NS.SVG: { - if (SCOPING_ELEMENTS_SVG.has(tn)) - return false; - break; - } - case NS.MATHML: { - if (SCOPING_ELEMENTS_MATHML.has(tn)) - return false; - break; - } - } - } - return true; - } - hasInTableScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) { - continue; - } - switch (this.tagIDs[i]) { - case tagName: { - return true; - } - case TAG_ID.TABLE: - case TAG_ID.HTML: { - return false; - } - } - } - return true; - } - hasTableBodyContextInTableScope() { - for (let i = this.stackTop; i >= 0; i--) { - if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) { - continue; - } - switch (this.tagIDs[i]) { - case TAG_ID.TBODY: - case TAG_ID.THEAD: - case TAG_ID.TFOOT: { - return true; - } - case TAG_ID.TABLE: - case TAG_ID.HTML: { - return false; - } - } - } - return true; - } - hasInSelectScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) { - continue; - } - switch (this.tagIDs[i]) { - case tagName: { - return true; - } - case TAG_ID.OPTION: - case TAG_ID.OPTGROUP: { - break; - } - default: { - return false; - } - } - } - return true; - } - //Implied end tags - generateImpliedEndTags() { - while (this.currentTagId !== void 0 && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) { - this.pop(); - } - } - generateImpliedEndTagsThoroughly() { - while (this.currentTagId !== void 0 && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { - this.pop(); - } - } - generateImpliedEndTagsWithExclusion(exclusionId) { - while (this.currentTagId !== void 0 && this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { - this.pop(); - } - } -}; - -// node_modules/parse5/dist/parser/formatting-element-list.js -var NOAH_ARK_CAPACITY = 3; -var EntryType; -(function(EntryType2) { - EntryType2[EntryType2["Marker"] = 0] = "Marker"; - EntryType2[EntryType2["Element"] = 1] = "Element"; -})(EntryType || (EntryType = {})); -var MARKER = { type: EntryType.Marker }; -var FormattingElementList = class { - constructor(treeAdapter) { - this.treeAdapter = treeAdapter; - this.entries = []; - this.bookmark = null; - } - //Noah Ark's condition - //OPTIMIZATION: at first we try to find possible candidates for exclusion using - //lightweight heuristics without thorough attributes check. - _getNoahArkConditionCandidates(newElement, neAttrs) { - const candidates = []; - const neAttrsLength = neAttrs.length; - const neTagName = this.treeAdapter.getTagName(newElement); - const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement); - for (let i = 0; i < this.entries.length; i++) { - const entry = this.entries[i]; - if (entry.type === EntryType.Marker) { - break; - } - const { element } = entry; - if (this.treeAdapter.getTagName(element) === neTagName && this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) { - const elementAttrs = this.treeAdapter.getAttrList(element); - if (elementAttrs.length === neAttrsLength) { - candidates.push({ idx: i, attrs: elementAttrs }); - } - } - } - return candidates; - } - _ensureNoahArkCondition(newElement) { - if (this.entries.length < NOAH_ARK_CAPACITY) - return; - const neAttrs = this.treeAdapter.getAttrList(newElement); - const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs); - if (candidates.length < NOAH_ARK_CAPACITY) - return; - const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value])); - let validCandidates = 0; - for (let i = 0; i < candidates.length; i++) { - const candidate = candidates[i]; - if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) { - validCandidates += 1; - if (validCandidates >= NOAH_ARK_CAPACITY) { - this.entries.splice(candidate.idx, 1); - } - } - } - } - //Mutations - insertMarker() { - this.entries.unshift(MARKER); - } - pushElement(element, token) { - this._ensureNoahArkCondition(element); - this.entries.unshift({ - type: EntryType.Element, - element, - token - }); - } - insertElementAfterBookmark(element, token) { - const bookmarkIdx = this.entries.indexOf(this.bookmark); - this.entries.splice(bookmarkIdx, 0, { - type: EntryType.Element, - element, - token - }); - } - removeEntry(entry) { - const entryIndex = this.entries.indexOf(entry); - if (entryIndex !== -1) { - this.entries.splice(entryIndex, 1); - } - } - /** - * Clears the list of formatting elements up to the last marker. - * - * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker - */ - clearToLastMarker() { - const markerIdx = this.entries.indexOf(MARKER); - if (markerIdx === -1) { - this.entries.length = 0; - } else { - this.entries.splice(0, markerIdx + 1); - } - } - //Search - getElementEntryInScopeWithTagName(tagName) { - const entry = this.entries.find((entry2) => entry2.type === EntryType.Marker || this.treeAdapter.getTagName(entry2.element) === tagName); - return entry && entry.type === EntryType.Element ? entry : null; - } - getElementEntry(element) { - return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element); - } -}; - -// node_modules/parse5/dist/tree-adapters/default.js -var defaultTreeAdapter = { - //Node construction - createDocument() { - return { - nodeName: "#document", - mode: DOCUMENT_MODE.NO_QUIRKS, - childNodes: [] - }; - }, - createDocumentFragment() { - return { - nodeName: "#document-fragment", - childNodes: [] - }; - }, - createElement(tagName, namespaceURI, attrs) { - return { - nodeName: tagName, - tagName, - attrs, - namespaceURI, - childNodes: [], - parentNode: null - }; - }, - createCommentNode(data2) { - return { - nodeName: "#comment", - data: data2, - parentNode: null - }; - }, - createTextNode(value) { - return { - nodeName: "#text", - value, - parentNode: null - }; - }, - //Tree mutation - appendChild(parentNode, newNode) { - parentNode.childNodes.push(newNode); - newNode.parentNode = parentNode; - }, - insertBefore(parentNode, newNode, referenceNode) { - const insertionIdx = parentNode.childNodes.indexOf(referenceNode); - parentNode.childNodes.splice(insertionIdx, 0, newNode); - newNode.parentNode = parentNode; - }, - setTemplateContent(templateElement, contentElement) { - templateElement.content = contentElement; - }, - getTemplateContent(templateElement) { - return templateElement.content; - }, - setDocumentType(document2, name, publicId, systemId) { - const doctypeNode = document2.childNodes.find((node) => node.nodeName === "#documentType"); - if (doctypeNode) { - doctypeNode.name = name; - doctypeNode.publicId = publicId; - doctypeNode.systemId = systemId; - } else { - const node = { - nodeName: "#documentType", - name, - publicId, - systemId, - parentNode: null - }; - defaultTreeAdapter.appendChild(document2, node); - } - }, - setDocumentMode(document2, mode) { - document2.mode = mode; - }, - getDocumentMode(document2) { - return document2.mode; - }, - detachNode(node) { - if (node.parentNode) { - const idx = node.parentNode.childNodes.indexOf(node); - node.parentNode.childNodes.splice(idx, 1); - node.parentNode = null; - } - }, - insertText(parentNode, text3) { - if (parentNode.childNodes.length > 0) { - const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1]; - if (defaultTreeAdapter.isTextNode(prevNode)) { - prevNode.value += text3; - return; - } - } - defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text3)); - }, - insertTextBefore(parentNode, text3, referenceNode) { - const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1]; - if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) { - prevNode.value += text3; - } else { - defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text3), referenceNode); - } - }, - adoptAttributes(recipient, attrs) { - const recipientAttrsMap = new Set(recipient.attrs.map((attr2) => attr2.name)); - for (let j = 0; j < attrs.length; j++) { - if (!recipientAttrsMap.has(attrs[j].name)) { - recipient.attrs.push(attrs[j]); - } - } - }, - //Tree traversing - getFirstChild(node) { - return node.childNodes[0]; - }, - getChildNodes(node) { - return node.childNodes; - }, - getParentNode(node) { - return node.parentNode; - }, - getAttrList(element) { - return element.attrs; - }, - //Node data - getTagName(element) { - return element.tagName; - }, - getNamespaceURI(element) { - return element.namespaceURI; - }, - getTextNodeContent(textNode) { - return textNode.value; - }, - getCommentNodeContent(commentNode) { - return commentNode.data; - }, - getDocumentTypeNodeName(doctypeNode) { - return doctypeNode.name; - }, - getDocumentTypeNodePublicId(doctypeNode) { - return doctypeNode.publicId; - }, - getDocumentTypeNodeSystemId(doctypeNode) { - return doctypeNode.systemId; - }, - //Node types - isTextNode(node) { - return node.nodeName === "#text"; - }, - isCommentNode(node) { - return node.nodeName === "#comment"; - }, - isDocumentTypeNode(node) { - return node.nodeName === "#documentType"; - }, - isElementNode(node) { - return Object.prototype.hasOwnProperty.call(node, "tagName"); - }, - // Source code location - setNodeSourceCodeLocation(node, location) { - node.sourceCodeLocation = location; - }, - getNodeSourceCodeLocation(node) { - return node.sourceCodeLocation; - }, - updateNodeSourceCodeLocation(node, endLocation) { - node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation }; - } -}; - -// node_modules/parse5/dist/common/doctype.js -var VALID_DOCTYPE_NAME = "html"; -var VALID_SYSTEM_ID = "about:legacy-compat"; -var QUIRKS_MODE_SYSTEM_ID = "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"; -var QUIRKS_MODE_PUBLIC_ID_PREFIXES = [ - "+//silmaril//dtd html pro v0r11 19970101//", - "-//as//dtd html 3.0 aswedit + extensions//", - "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", - "-//ietf//dtd html 2.0 level 1//", - "-//ietf//dtd html 2.0 level 2//", - "-//ietf//dtd html 2.0 strict level 1//", - "-//ietf//dtd html 2.0 strict level 2//", - "-//ietf//dtd html 2.0 strict//", - "-//ietf//dtd html 2.0//", - "-//ietf//dtd html 2.1e//", - "-//ietf//dtd html 3.0//", - "-//ietf//dtd html 3.2 final//", - "-//ietf//dtd html 3.2//", - "-//ietf//dtd html 3//", - "-//ietf//dtd html level 0//", - "-//ietf//dtd html level 1//", - "-//ietf//dtd html level 2//", - "-//ietf//dtd html level 3//", - "-//ietf//dtd html strict level 0//", - "-//ietf//dtd html strict level 1//", - "-//ietf//dtd html strict level 2//", - "-//ietf//dtd html strict level 3//", - "-//ietf//dtd html strict//", - "-//ietf//dtd html//", - "-//metrius//dtd metrius presentational//", - "-//microsoft//dtd internet explorer 2.0 html strict//", - "-//microsoft//dtd internet explorer 2.0 html//", - "-//microsoft//dtd internet explorer 2.0 tables//", - "-//microsoft//dtd internet explorer 3.0 html strict//", - "-//microsoft//dtd internet explorer 3.0 html//", - "-//microsoft//dtd internet explorer 3.0 tables//", - "-//netscape comm. corp.//dtd html//", - "-//netscape comm. corp.//dtd strict html//", - "-//o'reilly and associates//dtd html 2.0//", - "-//o'reilly and associates//dtd html extended 1.0//", - "-//o'reilly and associates//dtd html extended relaxed 1.0//", - "-//sq//dtd html 2.0 hotmetal + extensions//", - "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", - "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", - "-//spyglass//dtd html 2.0 extended//", - "-//sun microsystems corp.//dtd hotjava html//", - "-//sun microsystems corp.//dtd hotjava strict html//", - "-//w3c//dtd html 3 1995-03-24//", - "-//w3c//dtd html 3.2 draft//", - "-//w3c//dtd html 3.2 final//", - "-//w3c//dtd html 3.2//", - "-//w3c//dtd html 3.2s draft//", - "-//w3c//dtd html 4.0 frameset//", - "-//w3c//dtd html 4.0 transitional//", - "-//w3c//dtd html experimental 19960712//", - "-//w3c//dtd html experimental 970421//", - "-//w3c//dtd w3 html//", - "-//w3o//dtd w3 html 3.0//", - "-//webtechs//dtd mozilla html 2.0//", - "-//webtechs//dtd mozilla html//" -]; -var QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ - ...QUIRKS_MODE_PUBLIC_ID_PREFIXES, - "-//w3c//dtd html 4.01 frameset//", - "-//w3c//dtd html 4.01 transitional//" -]; -var QUIRKS_MODE_PUBLIC_IDS = /* @__PURE__ */ new Set([ - "-//w3o//dtd w3 html strict 3.0//en//", - "-/w3c/dtd html 4.0 transitional/en", - "html" -]); -var LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ["-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//"]; -var LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ - ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES, - "-//w3c//dtd html 4.01 frameset//", - "-//w3c//dtd html 4.01 transitional//" -]; -function hasPrefix(publicId, prefixes) { - return prefixes.some((prefix) => publicId.startsWith(prefix)); -} -function isConforming(token) { - return token.name === VALID_DOCTYPE_NAME && token.publicId === null && (token.systemId === null || token.systemId === VALID_SYSTEM_ID); -} -function getDocumentMode(token) { - if (token.name !== VALID_DOCTYPE_NAME) { - return DOCUMENT_MODE.QUIRKS; - } - const { systemId } = token; - if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) { - return DOCUMENT_MODE.QUIRKS; - } - let { publicId } = token; - if (publicId !== null) { - publicId = publicId.toLowerCase(); - if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) { - return DOCUMENT_MODE.QUIRKS; - } - let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES; - if (hasPrefix(publicId, prefixes)) { - return DOCUMENT_MODE.QUIRKS; - } - prefixes = systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES; - if (hasPrefix(publicId, prefixes)) { - return DOCUMENT_MODE.LIMITED_QUIRKS; - } - } - return DOCUMENT_MODE.NO_QUIRKS; -} - -// node_modules/parse5/dist/common/foreign-content.js -var foreign_content_exports = {}; -__export(foreign_content_exports, { - SVG_TAG_NAMES_ADJUSTMENT_MAP: () => SVG_TAG_NAMES_ADJUSTMENT_MAP, - adjustTokenMathMLAttrs: () => adjustTokenMathMLAttrs, - adjustTokenSVGAttrs: () => adjustTokenSVGAttrs, - adjustTokenSVGTagName: () => adjustTokenSVGTagName, - adjustTokenXMLAttrs: () => adjustTokenXMLAttrs, - causesExit: () => causesExit, - isIntegrationPoint: () => isIntegrationPoint -}); -var MIME_TYPES = { - TEXT_HTML: "text/html", - APPLICATION_XML: "application/xhtml+xml" -}; -var DEFINITION_URL_ATTR = "definitionurl"; -var ADJUSTED_DEFINITION_URL_ATTR = "definitionURL"; -var SVG_ATTRS_ADJUSTMENT_MAP = new Map([ - "attributeName", - "attributeType", - "baseFrequency", - "baseProfile", - "calcMode", - "clipPathUnits", - "diffuseConstant", - "edgeMode", - "filterUnits", - "glyphRef", - "gradientTransform", - "gradientUnits", - "kernelMatrix", - "kernelUnitLength", - "keyPoints", - "keySplines", - "keyTimes", - "lengthAdjust", - "limitingConeAngle", - "markerHeight", - "markerUnits", - "markerWidth", - "maskContentUnits", - "maskUnits", - "numOctaves", - "pathLength", - "patternContentUnits", - "patternTransform", - "patternUnits", - "pointsAtX", - "pointsAtY", - "pointsAtZ", - "preserveAlpha", - "preserveAspectRatio", - "primitiveUnits", - "refX", - "refY", - "repeatCount", - "repeatDur", - "requiredExtensions", - "requiredFeatures", - "specularConstant", - "specularExponent", - "spreadMethod", - "startOffset", - "stdDeviation", - "stitchTiles", - "surfaceScale", - "systemLanguage", - "tableValues", - "targetX", - "targetY", - "textLength", - "viewBox", - "viewTarget", - "xChannelSelector", - "yChannelSelector", - "zoomAndPan" -].map((attr2) => [attr2.toLowerCase(), attr2])); -var XML_ATTRS_ADJUSTMENT_MAP = /* @__PURE__ */ new Map([ - ["xlink:actuate", { prefix: "xlink", name: "actuate", namespace: NS.XLINK }], - ["xlink:arcrole", { prefix: "xlink", name: "arcrole", namespace: NS.XLINK }], - ["xlink:href", { prefix: "xlink", name: "href", namespace: NS.XLINK }], - ["xlink:role", { prefix: "xlink", name: "role", namespace: NS.XLINK }], - ["xlink:show", { prefix: "xlink", name: "show", namespace: NS.XLINK }], - ["xlink:title", { prefix: "xlink", name: "title", namespace: NS.XLINK }], - ["xlink:type", { prefix: "xlink", name: "type", namespace: NS.XLINK }], - ["xml:lang", { prefix: "xml", name: "lang", namespace: NS.XML }], - ["xml:space", { prefix: "xml", name: "space", namespace: NS.XML }], - ["xmlns", { prefix: "", name: "xmlns", namespace: NS.XMLNS }], - ["xmlns:xlink", { prefix: "xmlns", name: "xlink", namespace: NS.XMLNS }] -]); -var SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([ - "altGlyph", - "altGlyphDef", - "altGlyphItem", - "animateColor", - "animateMotion", - "animateTransform", - "clipPath", - "feBlend", - "feColorMatrix", - "feComponentTransfer", - "feComposite", - "feConvolveMatrix", - "feDiffuseLighting", - "feDisplacementMap", - "feDistantLight", - "feFlood", - "feFuncA", - "feFuncB", - "feFuncG", - "feFuncR", - "feGaussianBlur", - "feImage", - "feMerge", - "feMergeNode", - "feMorphology", - "feOffset", - "fePointLight", - "feSpecularLighting", - "feSpotLight", - "feTile", - "feTurbulence", - "foreignObject", - "glyphRef", - "linearGradient", - "radialGradient", - "textPath" -].map((tn) => [tn.toLowerCase(), tn])); -var EXITS_FOREIGN_CONTENT = /* @__PURE__ */ new Set([ - TAG_ID.B, - TAG_ID.BIG, - TAG_ID.BLOCKQUOTE, - TAG_ID.BODY, - TAG_ID.BR, - TAG_ID.CENTER, - TAG_ID.CODE, - TAG_ID.DD, - TAG_ID.DIV, - TAG_ID.DL, - TAG_ID.DT, - TAG_ID.EM, - TAG_ID.EMBED, - TAG_ID.H1, - TAG_ID.H2, - TAG_ID.H3, - TAG_ID.H4, - TAG_ID.H5, - TAG_ID.H6, - TAG_ID.HEAD, - TAG_ID.HR, - TAG_ID.I, - TAG_ID.IMG, - TAG_ID.LI, - TAG_ID.LISTING, - TAG_ID.MENU, - TAG_ID.META, - TAG_ID.NOBR, - TAG_ID.OL, - TAG_ID.P, - TAG_ID.PRE, - TAG_ID.RUBY, - TAG_ID.S, - TAG_ID.SMALL, - TAG_ID.SPAN, - TAG_ID.STRONG, - TAG_ID.STRIKE, - TAG_ID.SUB, - TAG_ID.SUP, - TAG_ID.TABLE, - TAG_ID.TT, - TAG_ID.U, - TAG_ID.UL, - TAG_ID.VAR -]); -function causesExit(startTagToken) { - const tn = startTagToken.tagID; - const isFontWithAttrs = tn === TAG_ID.FONT && startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE); - return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn); -} -function adjustTokenMathMLAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - if (token.attrs[i].name === DEFINITION_URL_ATTR) { - token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR; - break; - } - } -} -function adjustTokenSVGAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); - if (adjustedAttrName != null) { - token.attrs[i].name = adjustedAttrName; - } - } -} -function adjustTokenXMLAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); - if (adjustedAttrEntry) { - token.attrs[i].prefix = adjustedAttrEntry.prefix; - token.attrs[i].name = adjustedAttrEntry.name; - token.attrs[i].namespace = adjustedAttrEntry.namespace; - } - } -} -function adjustTokenSVGTagName(token) { - const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName); - if (adjustedTagName != null) { - token.tagName = adjustedTagName; - token.tagID = getTagID(token.tagName); - } -} -function isMathMLTextIntegrationPoint(tn, ns) { - return ns === NS.MATHML && (tn === TAG_ID.MI || tn === TAG_ID.MO || tn === TAG_ID.MN || tn === TAG_ID.MS || tn === TAG_ID.MTEXT); -} -function isHtmlIntegrationPoint(tn, ns, attrs) { - if (ns === NS.MATHML && tn === TAG_ID.ANNOTATION_XML) { - for (let i = 0; i < attrs.length; i++) { - if (attrs[i].name === ATTRS.ENCODING) { - const value = attrs[i].value.toLowerCase(); - return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML; - } - } - } - return ns === NS.SVG && (tn === TAG_ID.FOREIGN_OBJECT || tn === TAG_ID.DESC || tn === TAG_ID.TITLE); -} -function isIntegrationPoint(tn, ns, attrs, foreignNS) { - return (!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs) || (!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns); -} - -// node_modules/parse5/dist/parser/index.js -var HIDDEN_INPUT_TYPE = "hidden"; -var AA_OUTER_LOOP_ITER = 8; -var AA_INNER_LOOP_ITER = 3; -var InsertionMode; -(function(InsertionMode2) { - InsertionMode2[InsertionMode2["INITIAL"] = 0] = "INITIAL"; - InsertionMode2[InsertionMode2["BEFORE_HTML"] = 1] = "BEFORE_HTML"; - InsertionMode2[InsertionMode2["BEFORE_HEAD"] = 2] = "BEFORE_HEAD"; - InsertionMode2[InsertionMode2["IN_HEAD"] = 3] = "IN_HEAD"; - InsertionMode2[InsertionMode2["IN_HEAD_NO_SCRIPT"] = 4] = "IN_HEAD_NO_SCRIPT"; - InsertionMode2[InsertionMode2["AFTER_HEAD"] = 5] = "AFTER_HEAD"; - InsertionMode2[InsertionMode2["IN_BODY"] = 6] = "IN_BODY"; - InsertionMode2[InsertionMode2["TEXT"] = 7] = "TEXT"; - InsertionMode2[InsertionMode2["IN_TABLE"] = 8] = "IN_TABLE"; - InsertionMode2[InsertionMode2["IN_TABLE_TEXT"] = 9] = "IN_TABLE_TEXT"; - InsertionMode2[InsertionMode2["IN_CAPTION"] = 10] = "IN_CAPTION"; - InsertionMode2[InsertionMode2["IN_COLUMN_GROUP"] = 11] = "IN_COLUMN_GROUP"; - InsertionMode2[InsertionMode2["IN_TABLE_BODY"] = 12] = "IN_TABLE_BODY"; - InsertionMode2[InsertionMode2["IN_ROW"] = 13] = "IN_ROW"; - InsertionMode2[InsertionMode2["IN_CELL"] = 14] = "IN_CELL"; - InsertionMode2[InsertionMode2["IN_SELECT"] = 15] = "IN_SELECT"; - InsertionMode2[InsertionMode2["IN_SELECT_IN_TABLE"] = 16] = "IN_SELECT_IN_TABLE"; - InsertionMode2[InsertionMode2["IN_TEMPLATE"] = 17] = "IN_TEMPLATE"; - InsertionMode2[InsertionMode2["AFTER_BODY"] = 18] = "AFTER_BODY"; - InsertionMode2[InsertionMode2["IN_FRAMESET"] = 19] = "IN_FRAMESET"; - InsertionMode2[InsertionMode2["AFTER_FRAMESET"] = 20] = "AFTER_FRAMESET"; - InsertionMode2[InsertionMode2["AFTER_AFTER_BODY"] = 21] = "AFTER_AFTER_BODY"; - InsertionMode2[InsertionMode2["AFTER_AFTER_FRAMESET"] = 22] = "AFTER_AFTER_FRAMESET"; -})(InsertionMode || (InsertionMode = {})); -var BASE_LOC = { - startLine: -1, - startCol: -1, - startOffset: -1, - endLine: -1, - endCol: -1, - endOffset: -1 -}; -var TABLE_STRUCTURE_TAGS = /* @__PURE__ */ new Set([TAG_ID.TABLE, TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TR]); -var defaultParserOptions = { - scriptingEnabled: true, - sourceCodeLocationInfo: false, - treeAdapter: defaultTreeAdapter, - onParseError: null -}; -var Parser2 = class { - constructor(options, document2, fragmentContext = null, scriptHandler = null) { - this.fragmentContext = fragmentContext; - this.scriptHandler = scriptHandler; - this.currentToken = null; - this.stopped = false; - this.insertionMode = InsertionMode.INITIAL; - this.originalInsertionMode = InsertionMode.INITIAL; - this.headElement = null; - this.formElement = null; - this.currentNotInHTML = false; - this.tmplInsertionModeStack = []; - this.pendingCharacterTokens = []; - this.hasNonWhitespacePendingCharacterToken = false; - this.framesetOk = true; - this.skipNextNewLine = false; - this.fosterParentingEnabled = false; - this.options = { - ...defaultParserOptions, - ...options - }; - this.treeAdapter = this.options.treeAdapter; - this.onParseError = this.options.onParseError; - if (this.onParseError) { - this.options.sourceCodeLocationInfo = true; - } - this.document = document2 !== null && document2 !== void 0 ? document2 : this.treeAdapter.createDocument(); - this.tokenizer = new Tokenizer2(this.options, this); - this.activeFormattingElements = new FormattingElementList(this.treeAdapter); - this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : TAG_ID.UNKNOWN; - this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID); - this.openElements = new OpenElementStack(this.document, this.treeAdapter, this); - } - // API - static parse(html3, options) { - const parser = new this(options); - parser.tokenizer.write(html3, true); - return parser.document; - } - static getFragmentParser(fragmentContext, options) { - const opts = { - ...defaultParserOptions, - ...options - }; - fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : fragmentContext = opts.treeAdapter.createElement(TAG_NAMES.TEMPLATE, NS.HTML, []); - const documentMock = opts.treeAdapter.createElement("documentmock", NS.HTML, []); - const parser = new this(opts, documentMock, fragmentContext); - if (parser.fragmentContextID === TAG_ID.TEMPLATE) { - parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); - } - parser._initTokenizerForFragmentParsing(); - parser._insertFakeRootElement(); - parser._resetInsertionMode(); - parser._findFormInFragmentContext(); - return parser; - } - getFragment() { - const rootElement = this.treeAdapter.getFirstChild(this.document); - const fragment = this.treeAdapter.createDocumentFragment(); - this._adoptNodes(rootElement, fragment); - return fragment; - } - //Errors - /** @internal */ - _err(token, code, beforeToken) { - var _a5; - if (!this.onParseError) - return; - const loc = (_a5 = token.location) !== null && _a5 !== void 0 ? _a5 : BASE_LOC; - const err = { - code, - startLine: loc.startLine, - startCol: loc.startCol, - startOffset: loc.startOffset, - endLine: beforeToken ? loc.startLine : loc.endLine, - endCol: beforeToken ? loc.startCol : loc.endCol, - endOffset: beforeToken ? loc.startOffset : loc.endOffset - }; - this.onParseError(err); - } - //Stack events - /** @internal */ - onItemPush(node, tid, isTop) { - var _a5, _b; - (_b = (_a5 = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a5, node); - if (isTop && this.openElements.stackTop > 0) - this._setContextModes(node, tid); - } - /** @internal */ - onItemPop(node, isTop) { - var _a5, _b; - if (this.options.sourceCodeLocationInfo) { - this._setEndLocation(node, this.currentToken); - } - (_b = (_a5 = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a5, node, this.openElements.current); - if (isTop) { - let current; - let currentTagId; - if (this.openElements.stackTop === 0 && this.fragmentContext) { - current = this.fragmentContext; - currentTagId = this.fragmentContextID; - } else { - ({ current, currentTagId } = this.openElements); - } - this._setContextModes(current, currentTagId); - } - } - _setContextModes(current, tid) { - const isHTML = current === this.document || current && this.treeAdapter.getNamespaceURI(current) === NS.HTML; - this.currentNotInHTML = !isHTML; - this.tokenizer.inForeignNode = !isHTML && current !== void 0 && tid !== void 0 && !this._isIntegrationPoint(tid, current); - } - /** @protected */ - _switchToTextParsing(currentToken, nextTokenizerState) { - this._insertElement(currentToken, NS.HTML); - this.tokenizer.state = nextTokenizerState; - this.originalInsertionMode = this.insertionMode; - this.insertionMode = InsertionMode.TEXT; - } - switchToPlaintextParsing() { - this.insertionMode = InsertionMode.TEXT; - this.originalInsertionMode = InsertionMode.IN_BODY; - this.tokenizer.state = TokenizerMode.PLAINTEXT; - } - //Fragment parsing - /** @protected */ - _getAdjustedCurrentElement() { - return this.openElements.stackTop === 0 && this.fragmentContext ? this.fragmentContext : this.openElements.current; - } - /** @protected */ - _findFormInFragmentContext() { - let node = this.fragmentContext; - while (node) { - if (this.treeAdapter.getTagName(node) === TAG_NAMES.FORM) { - this.formElement = node; - break; - } - node = this.treeAdapter.getParentNode(node); - } - } - _initTokenizerForFragmentParsing() { - if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) { - return; - } - switch (this.fragmentContextID) { - case TAG_ID.TITLE: - case TAG_ID.TEXTAREA: { - this.tokenizer.state = TokenizerMode.RCDATA; - break; - } - case TAG_ID.STYLE: - case TAG_ID.XMP: - case TAG_ID.IFRAME: - case TAG_ID.NOEMBED: - case TAG_ID.NOFRAMES: - case TAG_ID.NOSCRIPT: { - this.tokenizer.state = TokenizerMode.RAWTEXT; - break; - } - case TAG_ID.SCRIPT: { - this.tokenizer.state = TokenizerMode.SCRIPT_DATA; - break; - } - case TAG_ID.PLAINTEXT: { - this.tokenizer.state = TokenizerMode.PLAINTEXT; - break; - } - default: - } - } - //Tree mutation - /** @protected */ - _setDocumentType(token) { - const name = token.name || ""; - const publicId = token.publicId || ""; - const systemId = token.systemId || ""; - this.treeAdapter.setDocumentType(this.document, name, publicId, systemId); - if (token.location) { - const documentChildren = this.treeAdapter.getChildNodes(this.document); - const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node)); - if (docTypeNode) { - this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location); - } - } - } - /** @protected */ - _attachElementToTree(element, location) { - if (this.options.sourceCodeLocationInfo) { - const loc = location && { - ...location, - startTag: location - }; - this.treeAdapter.setNodeSourceCodeLocation(element, loc); - } - if (this._shouldFosterParentOnInsertion()) { - this._fosterParentElement(element); - } else { - const parent2 = this.openElements.currentTmplContentOrNode; - this.treeAdapter.appendChild(parent2 !== null && parent2 !== void 0 ? parent2 : this.document, element); - } - } - /** - * For self-closing tags. Add an element to the tree, but skip adding it - * to the stack. - */ - /** @protected */ - _appendElement(token, namespaceURI) { - const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); - this._attachElementToTree(element, token.location); - } - /** @protected */ - _insertElement(token, namespaceURI) { - const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); - this._attachElementToTree(element, token.location); - this.openElements.push(element, token.tagID); - } - /** @protected */ - _insertFakeElement(tagName, tagID) { - const element = this.treeAdapter.createElement(tagName, NS.HTML, []); - this._attachElementToTree(element, null); - this.openElements.push(element, tagID); - } - /** @protected */ - _insertTemplate(token) { - const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs); - const content = this.treeAdapter.createDocumentFragment(); - this.treeAdapter.setTemplateContent(tmpl, content); - this._attachElementToTree(tmpl, token.location); - this.openElements.push(tmpl, token.tagID); - if (this.options.sourceCodeLocationInfo) - this.treeAdapter.setNodeSourceCodeLocation(content, null); - } - /** @protected */ - _insertFakeRootElement() { - const element = this.treeAdapter.createElement(TAG_NAMES.HTML, NS.HTML, []); - if (this.options.sourceCodeLocationInfo) - this.treeAdapter.setNodeSourceCodeLocation(element, null); - this.treeAdapter.appendChild(this.openElements.current, element); - this.openElements.push(element, TAG_ID.HTML); - } - /** @protected */ - _appendCommentNode(token, parent2) { - const commentNode = this.treeAdapter.createCommentNode(token.data); - this.treeAdapter.appendChild(parent2, commentNode); - if (this.options.sourceCodeLocationInfo) { - this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location); - } - } - /** @protected */ - _insertCharacters(token) { - let parent2; - let beforeElement; - if (this._shouldFosterParentOnInsertion()) { - ({ parent: parent2, beforeElement } = this._findFosterParentingLocation()); - if (beforeElement) { - this.treeAdapter.insertTextBefore(parent2, token.chars, beforeElement); - } else { - this.treeAdapter.insertText(parent2, token.chars); - } - } else { - parent2 = this.openElements.currentTmplContentOrNode; - this.treeAdapter.insertText(parent2, token.chars); - } - if (!token.location) - return; - const siblings2 = this.treeAdapter.getChildNodes(parent2); - const textNodeIdx = beforeElement ? siblings2.lastIndexOf(beforeElement) : siblings2.length; - const textNode = siblings2[textNodeIdx - 1]; - const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode); - if (tnLoc) { - const { endLine, endCol, endOffset } = token.location; - this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset }); - } else if (this.options.sourceCodeLocationInfo) { - this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location); - } - } - /** @protected */ - _adoptNodes(donor, recipient) { - for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) { - this.treeAdapter.detachNode(child); - this.treeAdapter.appendChild(recipient, child); - } - } - /** @protected */ - _setEndLocation(element, closingToken) { - if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) { - const ctLoc = closingToken.location; - const tn = this.treeAdapter.getTagName(element); - const endLoc = ( - // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing - // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag. - closingToken.type === TokenType.END_TAG && tn === closingToken.tagName ? { - endTag: { ...ctLoc }, - endLine: ctLoc.endLine, - endCol: ctLoc.endCol, - endOffset: ctLoc.endOffset - } : { - endLine: ctLoc.startLine, - endCol: ctLoc.startCol, - endOffset: ctLoc.startOffset - } - ); - this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc); - } - } - //Token processing - shouldProcessStartTagTokenInForeignContent(token) { - if (!this.currentNotInHTML) - return false; - let current; - let currentTagId; - if (this.openElements.stackTop === 0 && this.fragmentContext) { - current = this.fragmentContext; - currentTagId = this.fragmentContextID; - } else { - ({ current, currentTagId } = this.openElements); - } - if (token.tagID === TAG_ID.SVG && this.treeAdapter.getTagName(current) === TAG_NAMES.ANNOTATION_XML && this.treeAdapter.getNamespaceURI(current) === NS.MATHML) { - return false; - } - return ( - // Check that `current` is not an integration point for HTML or MathML elements. - this.tokenizer.inForeignNode || // If it _is_ an integration point, then we might have to check that it is not an HTML - // integration point. - (token.tagID === TAG_ID.MGLYPH || token.tagID === TAG_ID.MALIGNMARK) && currentTagId !== void 0 && !this._isIntegrationPoint(currentTagId, current, NS.HTML) - ); - } - /** @protected */ - _processToken(token) { - switch (token.type) { - case TokenType.CHARACTER: { - this.onCharacter(token); - break; - } - case TokenType.NULL_CHARACTER: { - this.onNullCharacter(token); - break; - } - case TokenType.COMMENT: { - this.onComment(token); - break; - } - case TokenType.DOCTYPE: { - this.onDoctype(token); - break; - } - case TokenType.START_TAG: { - this._processStartTag(token); - break; - } - case TokenType.END_TAG: { - this.onEndTag(token); - break; - } - case TokenType.EOF: { - this.onEof(token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - this.onWhitespaceCharacter(token); - break; - } - } - } - //Integration points - /** @protected */ - _isIntegrationPoint(tid, element, foreignNS) { - const ns = this.treeAdapter.getNamespaceURI(element); - const attrs = this.treeAdapter.getAttrList(element); - return isIntegrationPoint(tid, ns, attrs, foreignNS); - } - //Active formatting elements reconstruction - /** @protected */ - _reconstructActiveFormattingElements() { - const listLength = this.activeFormattingElements.entries.length; - if (listLength) { - const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element)); - const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1; - for (let i = unopenIdx; i >= 0; i--) { - const entry = this.activeFormattingElements.entries[i]; - this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element)); - entry.element = this.openElements.current; - } - } - } - //Close elements - /** @protected */ - _closeTableCell() { - this.openElements.generateImpliedEndTags(); - this.openElements.popUntilTableCellPopped(); - this.activeFormattingElements.clearToLastMarker(); - this.insertionMode = InsertionMode.IN_ROW; - } - /** @protected */ - _closePElement() { - this.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.P); - this.openElements.popUntilTagNamePopped(TAG_ID.P); - } - //Insertion modes - /** @protected */ - _resetInsertionMode() { - for (let i = this.openElements.stackTop; i >= 0; i--) { - switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) { - case TAG_ID.TR: { - this.insertionMode = InsertionMode.IN_ROW; - return; - } - case TAG_ID.TBODY: - case TAG_ID.THEAD: - case TAG_ID.TFOOT: { - this.insertionMode = InsertionMode.IN_TABLE_BODY; - return; - } - case TAG_ID.CAPTION: { - this.insertionMode = InsertionMode.IN_CAPTION; - return; - } - case TAG_ID.COLGROUP: { - this.insertionMode = InsertionMode.IN_COLUMN_GROUP; - return; - } - case TAG_ID.TABLE: { - this.insertionMode = InsertionMode.IN_TABLE; - return; - } - case TAG_ID.BODY: { - this.insertionMode = InsertionMode.IN_BODY; - return; - } - case TAG_ID.FRAMESET: { - this.insertionMode = InsertionMode.IN_FRAMESET; - return; - } - case TAG_ID.SELECT: { - this._resetInsertionModeForSelect(i); - return; - } - case TAG_ID.TEMPLATE: { - this.insertionMode = this.tmplInsertionModeStack[0]; - return; - } - case TAG_ID.HTML: { - this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD; - return; - } - case TAG_ID.TD: - case TAG_ID.TH: { - if (i > 0) { - this.insertionMode = InsertionMode.IN_CELL; - return; - } - break; - } - case TAG_ID.HEAD: { - if (i > 0) { - this.insertionMode = InsertionMode.IN_HEAD; - return; - } - break; - } - } - } - this.insertionMode = InsertionMode.IN_BODY; - } - /** @protected */ - _resetInsertionModeForSelect(selectIdx) { - if (selectIdx > 0) { - for (let i = selectIdx - 1; i > 0; i--) { - const tn = this.openElements.tagIDs[i]; - if (tn === TAG_ID.TEMPLATE) { - break; - } else if (tn === TAG_ID.TABLE) { - this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE; - return; - } - } - } - this.insertionMode = InsertionMode.IN_SELECT; - } - //Foster parenting - /** @protected */ - _isElementCausesFosterParenting(tn) { - return TABLE_STRUCTURE_TAGS.has(tn); - } - /** @protected */ - _shouldFosterParentOnInsertion() { - return this.fosterParentingEnabled && this.openElements.currentTagId !== void 0 && this._isElementCausesFosterParenting(this.openElements.currentTagId); - } - /** @protected */ - _findFosterParentingLocation() { - for (let i = this.openElements.stackTop; i >= 0; i--) { - const openElement = this.openElements.items[i]; - switch (this.openElements.tagIDs[i]) { - case TAG_ID.TEMPLATE: { - if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) { - return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null }; - } - break; - } - case TAG_ID.TABLE: { - const parent2 = this.treeAdapter.getParentNode(openElement); - if (parent2) { - return { parent: parent2, beforeElement: openElement }; - } - return { parent: this.openElements.items[i - 1], beforeElement: null }; - } - default: - } - } - return { parent: this.openElements.items[0], beforeElement: null }; - } - /** @protected */ - _fosterParentElement(element) { - const location = this._findFosterParentingLocation(); - if (location.beforeElement) { - this.treeAdapter.insertBefore(location.parent, element, location.beforeElement); - } else { - this.treeAdapter.appendChild(location.parent, element); - } - } - //Special elements - /** @protected */ - _isSpecialElement(element, id) { - const ns = this.treeAdapter.getNamespaceURI(element); - return SPECIAL_ELEMENTS[ns].has(id); - } - /** @internal */ - onCharacter(token) { - this.skipNextNewLine = false; - if (this.tokenizer.inForeignNode) { - characterInForeignContent(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_CELL: - case InsertionMode.IN_TEMPLATE: { - characterInBody(this, token); - break; - } - case InsertionMode.TEXT: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - characterInTableText(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - tokenInColumnGroup(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - tokenAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - /** @internal */ - onNullCharacter(token) { - this.skipNextNewLine = false; - if (this.tokenizer.inForeignNode) { - nullCharacterInForeignContent(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.TEXT: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - tokenInColumnGroup(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - tokenAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - /** @internal */ - onComment(token) { - this.skipNextNewLine = false; - if (this.currentNotInHTML) { - appendComment(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: - case InsertionMode.BEFORE_HTML: - case InsertionMode.BEFORE_HEAD: - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: - case InsertionMode.IN_BODY: - case InsertionMode.IN_TABLE: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: - case InsertionMode.IN_CELL: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: - case InsertionMode.IN_TEMPLATE: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: { - appendComment(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - appendCommentToRootHtmlElement(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - appendCommentToDocument(this, token); - break; - } - default: - } - } - /** @internal */ - onDoctype(token) { - this.skipNextNewLine = false; - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - doctypeInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: { - this._err(token, ERR.misplacedDoctype); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - default: - } - } - /** @internal */ - onStartTag(token) { - this.skipNextNewLine = false; - this.currentToken = token; - this._processStartTag(token); - if (token.selfClosing && !token.ackSelfClosing) { - this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus); - } - } - /** - * Processes a given start tag. - * - * `onStartTag` checks if a self-closing tag was recognized. When a token - * is moved inbetween multiple insertion modes, this check for self-closing - * could lead to false positives. To avoid this, `_processStartTag` is used - * for nested calls. - * - * @param token The token to process. - * @protected - */ - _processStartTag(token) { - if (this.shouldProcessStartTagTokenInForeignContent(token)) { - startTagInForeignContent(this, token); - } else { - this._startTagOutsideForeignContent(token); - } - } - /** @protected */ - _startTagOutsideForeignContent(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - startTagBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - startTagBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - startTagInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - startTagInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - startTagAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: { - startTagInBody(this, token); - break; - } - case InsertionMode.IN_TABLE: { - startTagInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_CAPTION: { - startTagInCaption(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - startTagInColumnGroup(this, token); - break; - } - case InsertionMode.IN_TABLE_BODY: { - startTagInTableBody(this, token); - break; - } - case InsertionMode.IN_ROW: { - startTagInRow(this, token); - break; - } - case InsertionMode.IN_CELL: { - startTagInCell(this, token); - break; - } - case InsertionMode.IN_SELECT: { - startTagInSelect(this, token); - break; - } - case InsertionMode.IN_SELECT_IN_TABLE: { - startTagInSelectInTable(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - startTagInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - startTagAfterBody(this, token); - break; - } - case InsertionMode.IN_FRAMESET: { - startTagInFrameset(this, token); - break; - } - case InsertionMode.AFTER_FRAMESET: { - startTagAfterFrameset(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - startTagAfterAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_FRAMESET: { - startTagAfterAfterFrameset(this, token); - break; - } - default: - } - } - /** @internal */ - onEndTag(token) { - this.skipNextNewLine = false; - this.currentToken = token; - if (this.currentNotInHTML) { - endTagInForeignContent(this, token); - } else { - this._endTagOutsideForeignContent(token); - } - } - /** @protected */ - _endTagOutsideForeignContent(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - endTagBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - endTagBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - endTagInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - endTagInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - endTagAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: { - endTagInBody(this, token); - break; - } - case InsertionMode.TEXT: { - endTagInText(this, token); - break; - } - case InsertionMode.IN_TABLE: { - endTagInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_CAPTION: { - endTagInCaption(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - endTagInColumnGroup(this, token); - break; - } - case InsertionMode.IN_TABLE_BODY: { - endTagInTableBody(this, token); - break; - } - case InsertionMode.IN_ROW: { - endTagInRow(this, token); - break; - } - case InsertionMode.IN_CELL: { - endTagInCell(this, token); - break; - } - case InsertionMode.IN_SELECT: { - endTagInSelect(this, token); - break; - } - case InsertionMode.IN_SELECT_IN_TABLE: { - endTagInSelectInTable(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - endTagInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - endTagAfterBody(this, token); - break; - } - case InsertionMode.IN_FRAMESET: { - endTagInFrameset(this, token); - break; - } - case InsertionMode.AFTER_FRAMESET: { - endTagAfterFrameset(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - /** @internal */ - onEof(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_TABLE: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: - case InsertionMode.IN_CELL: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: { - eofInBody(this, token); - break; - } - case InsertionMode.TEXT: { - eofInText(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - eofInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - stopParsing(this, token); - break; - } - default: - } - } - /** @internal */ - onWhitespaceCharacter(token) { - if (this.skipNextNewLine) { - this.skipNextNewLine = false; - if (token.chars.charCodeAt(0) === CODE_POINTS.LINE_FEED) { - if (token.chars.length === 1) { - return; - } - token.chars = token.chars.substr(1); - } - } - if (this.tokenizer.inForeignNode) { - this._insertCharacters(token); - return; - } - switch (this.insertionMode) { - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: - case InsertionMode.TEXT: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_CELL: - case InsertionMode.IN_TEMPLATE: - case InsertionMode.AFTER_BODY: - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - whitespaceCharacterInBody(this, token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - whitespaceCharacterInTableText(this, token); - break; - } - default: - } - } -}; -function aaObtainFormattingElementEntry(p, token) { - let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName); - if (formattingElementEntry) { - if (!p.openElements.contains(formattingElementEntry.element)) { - p.activeFormattingElements.removeEntry(formattingElementEntry); - formattingElementEntry = null; - } else if (!p.openElements.hasInScope(token.tagID)) { - formattingElementEntry = null; - } - } else { - genericEndTagInBody(p, token); - } - return formattingElementEntry; -} -function aaObtainFurthestBlock(p, formattingElementEntry) { - let furthestBlock = null; - let idx = p.openElements.stackTop; - for (; idx >= 0; idx--) { - const element = p.openElements.items[idx]; - if (element === formattingElementEntry.element) { - break; - } - if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) { - furthestBlock = element; - } - } - if (!furthestBlock) { - p.openElements.shortenToLength(Math.max(idx, 0)); - p.activeFormattingElements.removeEntry(formattingElementEntry); - } - return furthestBlock; -} -function aaInnerLoop(p, furthestBlock, formattingElement) { - let lastElement = furthestBlock; - let nextElement = p.openElements.getCommonAncestor(furthestBlock); - for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) { - nextElement = p.openElements.getCommonAncestor(element); - const elementEntry = p.activeFormattingElements.getElementEntry(element); - const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER; - const shouldRemoveFromOpenElements = !elementEntry || counterOverflow; - if (shouldRemoveFromOpenElements) { - if (counterOverflow) { - p.activeFormattingElements.removeEntry(elementEntry); - } - p.openElements.remove(element); - } else { - element = aaRecreateElementFromEntry(p, elementEntry); - if (lastElement === furthestBlock) { - p.activeFormattingElements.bookmark = elementEntry; - } - p.treeAdapter.detachNode(lastElement); - p.treeAdapter.appendChild(element, lastElement); - lastElement = element; - } - } - return lastElement; -} -function aaRecreateElementFromEntry(p, elementEntry) { - const ns = p.treeAdapter.getNamespaceURI(elementEntry.element); - const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs); - p.openElements.replace(elementEntry.element, newElement); - elementEntry.element = newElement; - return newElement; -} -function aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) { - const tn = p.treeAdapter.getTagName(commonAncestor); - const tid = getTagID(tn); - if (p._isElementCausesFosterParenting(tid)) { - p._fosterParentElement(lastElement); - } else { - const ns = p.treeAdapter.getNamespaceURI(commonAncestor); - if (tid === TAG_ID.TEMPLATE && ns === NS.HTML) { - commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor); - } - p.treeAdapter.appendChild(commonAncestor, lastElement); - } -} -function aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) { - const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element); - const { token } = formattingElementEntry; - const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs); - p._adoptNodes(furthestBlock, newElement); - p.treeAdapter.appendChild(furthestBlock, newElement); - p.activeFormattingElements.insertElementAfterBookmark(newElement, token); - p.activeFormattingElements.removeEntry(formattingElementEntry); - p.openElements.remove(formattingElementEntry.element); - p.openElements.insertAfter(furthestBlock, newElement, token.tagID); -} -function callAdoptionAgency(p, token) { - for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) { - const formattingElementEntry = aaObtainFormattingElementEntry(p, token); - if (!formattingElementEntry) { - break; - } - const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry); - if (!furthestBlock) { - break; - } - p.activeFormattingElements.bookmark = formattingElementEntry; - const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element); - const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element); - p.treeAdapter.detachNode(lastElement); - if (commonAncestor) - aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement); - aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry); - } -} -function appendComment(p, token) { - p._appendCommentNode(token, p.openElements.currentTmplContentOrNode); -} -function appendCommentToRootHtmlElement(p, token) { - p._appendCommentNode(token, p.openElements.items[0]); -} -function appendCommentToDocument(p, token) { - p._appendCommentNode(token, p.document); -} -function stopParsing(p, token) { - p.stopped = true; - if (token.location) { - const target = p.fragmentContext ? 0 : 2; - for (let i = p.openElements.stackTop; i >= target; i--) { - p._setEndLocation(p.openElements.items[i], token); - } - if (!p.fragmentContext && p.openElements.stackTop >= 0) { - const htmlElement = p.openElements.items[0]; - const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement); - if (htmlLocation && !htmlLocation.endTag) { - p._setEndLocation(htmlElement, token); - if (p.openElements.stackTop >= 1) { - const bodyElement = p.openElements.items[1]; - const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement); - if (bodyLocation && !bodyLocation.endTag) { - p._setEndLocation(bodyElement, token); - } - } - } - } - } -} -function doctypeInInitialMode(p, token) { - p._setDocumentType(token); - const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : getDocumentMode(token); - if (!isConforming(token)) { - p._err(token, ERR.nonConformingDoctype); - } - p.treeAdapter.setDocumentMode(p.document, mode); - p.insertionMode = InsertionMode.BEFORE_HTML; -} -function tokenInInitialMode(p, token) { - p._err(token, ERR.missingDoctype, true); - p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS); - p.insertionMode = InsertionMode.BEFORE_HTML; - p._processToken(token); -} -function startTagBeforeHtml(p, token) { - if (token.tagID === TAG_ID.HTML) { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.BEFORE_HEAD; - } else { - tokenBeforeHtml(p, token); - } -} -function endTagBeforeHtml(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.HTML || tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.BR) { - tokenBeforeHtml(p, token); - } -} -function tokenBeforeHtml(p, token) { - p._insertFakeRootElement(); - p.insertionMode = InsertionMode.BEFORE_HEAD; - p._processToken(token); -} -function startTagBeforeHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.HEAD: { - p._insertElement(token, NS.HTML); - p.headElement = p.openElements.current; - p.insertionMode = InsertionMode.IN_HEAD; - break; - } - default: { - tokenBeforeHead(p, token); - } - } -} -function endTagBeforeHead(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.HTML || tn === TAG_ID.BR) { - tokenBeforeHead(p, token); - } else { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } -} -function tokenBeforeHead(p, token) { - p._insertFakeElement(TAG_NAMES.HEAD, TAG_ID.HEAD); - p.headElement = p.openElements.current; - p.insertionMode = InsertionMode.IN_HEAD; - p._processToken(token); -} -function startTagInHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.TITLE: { - p._switchToTextParsing(token, TokenizerMode.RCDATA); - break; - } - case TAG_ID.NOSCRIPT: { - if (p.options.scriptingEnabled) { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); - } else { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT; - } - break; - } - case TAG_ID.NOFRAMES: - case TAG_ID.STYLE: { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); - break; - } - case TAG_ID.SCRIPT: { - p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA); - break; - } - case TAG_ID.TEMPLATE: { - p._insertTemplate(token); - p.activeFormattingElements.insertMarker(); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_TEMPLATE; - p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); - break; - } - case TAG_ID.HEAD: { - p._err(token, ERR.misplacedStartTagForHeadElement); - break; - } - default: { - tokenInHead(p, token); - } - } -} -function endTagInHead(p, token) { - switch (token.tagID) { - case TAG_ID.HEAD: { - p.openElements.pop(); - p.insertionMode = InsertionMode.AFTER_HEAD; - break; - } - case TAG_ID.BODY: - case TAG_ID.BR: - case TAG_ID.HTML: { - tokenInHead(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } -} -function templateEndTagInHead(p, token) { - if (p.openElements.tmplCount > 0) { - p.openElements.generateImpliedEndTagsThoroughly(); - if (p.openElements.currentTagId !== TAG_ID.TEMPLATE) { - p._err(token, ERR.closingOfElementWithOpenChildElements); - } - p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE); - p.activeFormattingElements.clearToLastMarker(); - p.tmplInsertionModeStack.shift(); - p._resetInsertionMode(); - } else { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } -} -function tokenInHead(p, token) { - p.openElements.pop(); - p.insertionMode = InsertionMode.AFTER_HEAD; - p._processToken(token); -} -function startTagInHeadNoScript(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.HEAD: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.STYLE: { - startTagInHead(p, token); - break; - } - case TAG_ID.NOSCRIPT: { - p._err(token, ERR.nestedNoscriptInHead); - break; - } - default: { - tokenInHeadNoScript(p, token); - } - } -} -function endTagInHeadNoScript(p, token) { - switch (token.tagID) { - case TAG_ID.NOSCRIPT: { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_HEAD; - break; - } - case TAG_ID.BR: { - tokenInHeadNoScript(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } -} -function tokenInHeadNoScript(p, token) { - const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead; - p._err(token, errCode); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_HEAD; - p._processToken(token); -} -function startTagAfterHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BODY: { - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_BODY; - break; - } - case TAG_ID.FRAMESET: { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_FRAMESET; - break; - } - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.SCRIPT: - case TAG_ID.STYLE: - case TAG_ID.TEMPLATE: - case TAG_ID.TITLE: { - p._err(token, ERR.abandonedHeadElementChild); - p.openElements.push(p.headElement, TAG_ID.HEAD); - startTagInHead(p, token); - p.openElements.remove(p.headElement); - break; - } - case TAG_ID.HEAD: { - p._err(token, ERR.misplacedStartTagForHeadElement); - break; - } - default: { - tokenAfterHead(p, token); - } - } -} -function endTagAfterHead(p, token) { - switch (token.tagID) { - case TAG_ID.BODY: - case TAG_ID.HTML: - case TAG_ID.BR: { - tokenAfterHead(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } -} -function tokenAfterHead(p, token) { - p._insertFakeElement(TAG_NAMES.BODY, TAG_ID.BODY); - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); -} -function modeInBody(p, token) { - switch (token.type) { - case TokenType.CHARACTER: { - characterInBody(p, token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - whitespaceCharacterInBody(p, token); - break; - } - case TokenType.COMMENT: { - appendComment(p, token); - break; - } - case TokenType.START_TAG: { - startTagInBody(p, token); - break; - } - case TokenType.END_TAG: { - endTagInBody(p, token); - break; - } - case TokenType.EOF: { - eofInBody(p, token); - break; - } - default: - } -} -function whitespaceCharacterInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertCharacters(token); -} -function characterInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertCharacters(token); - p.framesetOk = false; -} -function htmlStartTagInBody(p, token) { - if (p.openElements.tmplCount === 0) { - p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs); - } -} -function bodyStartTagInBody(p, token) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (bodyElement && p.openElements.tmplCount === 0) { - p.framesetOk = false; - p.treeAdapter.adoptAttributes(bodyElement, token.attrs); - } -} -function framesetStartTagInBody(p, token) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (p.framesetOk && bodyElement) { - p.treeAdapter.detachNode(bodyElement); - p.openElements.popAllUpToHtmlElement(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_FRAMESET; - } -} -function addressStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); -} -function numberedHeaderStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - if (p.openElements.currentTagId !== void 0 && NUMBERED_HEADERS.has(p.openElements.currentTagId)) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); -} -function preStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.skipNextNewLine = true; - p.framesetOk = false; -} -function formStartTagInBody(p, token) { - const inTemplate = p.openElements.tmplCount > 0; - if (!p.formElement || inTemplate) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - if (!inTemplate) { - p.formElement = p.openElements.current; - } - } -} -function listItemStartTagInBody(p, token) { - p.framesetOk = false; - const tn = token.tagID; - for (let i = p.openElements.stackTop; i >= 0; i--) { - const elementId = p.openElements.tagIDs[i]; - if (tn === TAG_ID.LI && elementId === TAG_ID.LI || (tn === TAG_ID.DD || tn === TAG_ID.DT) && (elementId === TAG_ID.DD || elementId === TAG_ID.DT)) { - p.openElements.generateImpliedEndTagsWithExclusion(elementId); - p.openElements.popUntilTagNamePopped(elementId); - break; - } - if (elementId !== TAG_ID.ADDRESS && elementId !== TAG_ID.DIV && elementId !== TAG_ID.P && p._isSpecialElement(p.openElements.items[i], elementId)) { - break; - } - } - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); -} -function plaintextStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.tokenizer.state = TokenizerMode.PLAINTEXT; -} -function buttonStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BUTTON)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.BUTTON); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.framesetOk = false; -} -function aStartTagInBody(p, token) { - const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TAG_NAMES.A); - if (activeElementEntry) { - callAdoptionAgency(p, token); - p.openElements.remove(activeElementEntry.element); - p.activeFormattingElements.removeEntry(activeElementEntry); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); -} -function bStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); -} -function nobrStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - if (p.openElements.hasInScope(TAG_ID.NOBR)) { - callAdoptionAgency(p, token); - p._reconstructActiveFormattingElements(); - } - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); -} -function appletStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.insertMarker(); - p.framesetOk = false; -} -function tableStartTagInBody(p, token) { - if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_TABLE; -} -function areaStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._appendElement(token, NS.HTML); - p.framesetOk = false; - token.ackSelfClosing = true; -} -function isHiddenInput(token) { - const inputType = getTokenAttr(token, ATTRS.TYPE); - return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE; -} -function inputStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._appendElement(token, NS.HTML); - if (!isHiddenInput(token)) { - p.framesetOk = false; - } - token.ackSelfClosing = true; -} -function paramStartTagInBody(p, token) { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; -} -function hrStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._appendElement(token, NS.HTML); - p.framesetOk = false; - token.ackSelfClosing = true; -} -function imageStartTagInBody(p, token) { - token.tagName = TAG_NAMES.IMG; - token.tagID = TAG_ID.IMG; - areaStartTagInBody(p, token); -} -function textareaStartTagInBody(p, token) { - p._insertElement(token, NS.HTML); - p.skipNextNewLine = true; - p.tokenizer.state = TokenizerMode.RCDATA; - p.originalInsertionMode = p.insertionMode; - p.framesetOk = false; - p.insertionMode = InsertionMode.TEXT; -} -function xmpStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._reconstructActiveFormattingElements(); - p.framesetOk = false; - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); -} -function iframeStartTagInBody(p, token) { - p.framesetOk = false; - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); -} -function rawTextStartTagInBody(p, token) { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); -} -function selectStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = p.insertionMode === InsertionMode.IN_TABLE || p.insertionMode === InsertionMode.IN_CAPTION || p.insertionMode === InsertionMode.IN_TABLE_BODY || p.insertionMode === InsertionMode.IN_ROW || p.insertionMode === InsertionMode.IN_CELL ? InsertionMode.IN_SELECT_IN_TABLE : InsertionMode.IN_SELECT; -} -function optgroupStartTagInBody(p, token) { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); -} -function rbStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.RUBY)) { - p.openElements.generateImpliedEndTags(); - } - p._insertElement(token, NS.HTML); -} -function rtStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.RUBY)) { - p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.RTC); - } - p._insertElement(token, NS.HTML); -} -function mathStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - adjustTokenMathMLAttrs(token); - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, NS.MATHML); - } else { - p._insertElement(token, NS.MATHML); - } - token.ackSelfClosing = true; -} -function svgStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - adjustTokenSVGAttrs(token); - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, NS.SVG); - } else { - p._insertElement(token, NS.SVG); - } - token.ackSelfClosing = true; -} -function genericStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); -} -function startTagInBody(p, token) { - switch (token.tagID) { - case TAG_ID.I: - case TAG_ID.S: - case TAG_ID.B: - case TAG_ID.U: - case TAG_ID.EM: - case TAG_ID.TT: - case TAG_ID.BIG: - case TAG_ID.CODE: - case TAG_ID.FONT: - case TAG_ID.SMALL: - case TAG_ID.STRIKE: - case TAG_ID.STRONG: { - bStartTagInBody(p, token); - break; - } - case TAG_ID.A: { - aStartTagInBody(p, token); - break; - } - case TAG_ID.H1: - case TAG_ID.H2: - case TAG_ID.H3: - case TAG_ID.H4: - case TAG_ID.H5: - case TAG_ID.H6: { - numberedHeaderStartTagInBody(p, token); - break; - } - case TAG_ID.P: - case TAG_ID.DL: - case TAG_ID.OL: - case TAG_ID.UL: - case TAG_ID.DIV: - case TAG_ID.DIR: - case TAG_ID.NAV: - case TAG_ID.MAIN: - case TAG_ID.MENU: - case TAG_ID.ASIDE: - case TAG_ID.CENTER: - case TAG_ID.FIGURE: - case TAG_ID.FOOTER: - case TAG_ID.HEADER: - case TAG_ID.HGROUP: - case TAG_ID.DIALOG: - case TAG_ID.DETAILS: - case TAG_ID.ADDRESS: - case TAG_ID.ARTICLE: - case TAG_ID.SEARCH: - case TAG_ID.SECTION: - case TAG_ID.SUMMARY: - case TAG_ID.FIELDSET: - case TAG_ID.BLOCKQUOTE: - case TAG_ID.FIGCAPTION: { - addressStartTagInBody(p, token); - break; - } - case TAG_ID.LI: - case TAG_ID.DD: - case TAG_ID.DT: { - listItemStartTagInBody(p, token); - break; - } - case TAG_ID.BR: - case TAG_ID.IMG: - case TAG_ID.WBR: - case TAG_ID.AREA: - case TAG_ID.EMBED: - case TAG_ID.KEYGEN: { - areaStartTagInBody(p, token); - break; - } - case TAG_ID.HR: { - hrStartTagInBody(p, token); - break; - } - case TAG_ID.RB: - case TAG_ID.RTC: { - rbStartTagInBody(p, token); - break; - } - case TAG_ID.RT: - case TAG_ID.RP: { - rtStartTagInBody(p, token); - break; - } - case TAG_ID.PRE: - case TAG_ID.LISTING: { - preStartTagInBody(p, token); - break; - } - case TAG_ID.XMP: { - xmpStartTagInBody(p, token); - break; - } - case TAG_ID.SVG: { - svgStartTagInBody(p, token); - break; - } - case TAG_ID.HTML: { - htmlStartTagInBody(p, token); - break; - } - case TAG_ID.BASE: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.STYLE: - case TAG_ID.TITLE: - case TAG_ID.SCRIPT: - case TAG_ID.BGSOUND: - case TAG_ID.BASEFONT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - case TAG_ID.BODY: { - bodyStartTagInBody(p, token); - break; - } - case TAG_ID.FORM: { - formStartTagInBody(p, token); - break; - } - case TAG_ID.NOBR: { - nobrStartTagInBody(p, token); - break; - } - case TAG_ID.MATH: { - mathStartTagInBody(p, token); - break; - } - case TAG_ID.TABLE: { - tableStartTagInBody(p, token); - break; - } - case TAG_ID.INPUT: { - inputStartTagInBody(p, token); - break; - } - case TAG_ID.PARAM: - case TAG_ID.TRACK: - case TAG_ID.SOURCE: { - paramStartTagInBody(p, token); - break; - } - case TAG_ID.IMAGE: { - imageStartTagInBody(p, token); - break; - } - case TAG_ID.BUTTON: { - buttonStartTagInBody(p, token); - break; - } - case TAG_ID.APPLET: - case TAG_ID.OBJECT: - case TAG_ID.MARQUEE: { - appletStartTagInBody(p, token); - break; - } - case TAG_ID.IFRAME: { - iframeStartTagInBody(p, token); - break; - } - case TAG_ID.SELECT: { - selectStartTagInBody(p, token); - break; - } - case TAG_ID.OPTION: - case TAG_ID.OPTGROUP: { - optgroupStartTagInBody(p, token); - break; - } - case TAG_ID.NOEMBED: - case TAG_ID.NOFRAMES: { - rawTextStartTagInBody(p, token); - break; - } - case TAG_ID.FRAMESET: { - framesetStartTagInBody(p, token); - break; - } - case TAG_ID.TEXTAREA: { - textareaStartTagInBody(p, token); - break; - } - case TAG_ID.NOSCRIPT: { - if (p.options.scriptingEnabled) { - rawTextStartTagInBody(p, token); - } else { - genericStartTagInBody(p, token); - } - break; - } - case TAG_ID.PLAINTEXT: { - plaintextStartTagInBody(p, token); - break; - } - case TAG_ID.COL: - case TAG_ID.TH: - case TAG_ID.TD: - case TAG_ID.TR: - case TAG_ID.HEAD: - case TAG_ID.FRAME: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.CAPTION: - case TAG_ID.COLGROUP: { - break; - } - default: { - genericStartTagInBody(p, token); - } - } -} -function bodyEndTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BODY)) { - p.insertionMode = InsertionMode.AFTER_BODY; - if (p.options.sourceCodeLocationInfo) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (bodyElement) { - p._setEndLocation(bodyElement, token); - } - } - } -} -function htmlEndTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BODY)) { - p.insertionMode = InsertionMode.AFTER_BODY; - endTagAfterBody(p, token); - } -} -function addressEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - } -} -function formEndTagInBody(p) { - const inTemplate = p.openElements.tmplCount > 0; - const { formElement } = p; - if (!inTemplate) { - p.formElement = null; - } - if ((formElement || inTemplate) && p.openElements.hasInScope(TAG_ID.FORM)) { - p.openElements.generateImpliedEndTags(); - if (inTemplate) { - p.openElements.popUntilTagNamePopped(TAG_ID.FORM); - } else if (formElement) { - p.openElements.remove(formElement); - } - } -} -function pEndTagInBody(p) { - if (!p.openElements.hasInButtonScope(TAG_ID.P)) { - p._insertFakeElement(TAG_NAMES.P, TAG_ID.P); - } - p._closePElement(); -} -function liEndTagInBody(p) { - if (p.openElements.hasInListItemScope(TAG_ID.LI)) { - p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.LI); - p.openElements.popUntilTagNamePopped(TAG_ID.LI); - } -} -function ddEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTagsWithExclusion(tn); - p.openElements.popUntilTagNamePopped(tn); - } -} -function numberedHeaderEndTagInBody(p) { - if (p.openElements.hasNumberedHeaderInScope()) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilNumberedHeaderPopped(); - } -} -function appletEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - p.activeFormattingElements.clearToLastMarker(); - } -} -function brEndTagInBody(p) { - p._reconstructActiveFormattingElements(); - p._insertFakeElement(TAG_NAMES.BR, TAG_ID.BR); - p.openElements.pop(); - p.framesetOk = false; -} -function genericEndTagInBody(p, token) { - const tn = token.tagName; - const tid = token.tagID; - for (let i = p.openElements.stackTop; i > 0; i--) { - const element = p.openElements.items[i]; - const elementId = p.openElements.tagIDs[i]; - if (tid === elementId && (tid !== TAG_ID.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) { - p.openElements.generateImpliedEndTagsWithExclusion(tid); - if (p.openElements.stackTop >= i) - p.openElements.shortenToLength(i); - break; - } - if (p._isSpecialElement(element, elementId)) { - break; - } - } -} -function endTagInBody(p, token) { - switch (token.tagID) { - case TAG_ID.A: - case TAG_ID.B: - case TAG_ID.I: - case TAG_ID.S: - case TAG_ID.U: - case TAG_ID.EM: - case TAG_ID.TT: - case TAG_ID.BIG: - case TAG_ID.CODE: - case TAG_ID.FONT: - case TAG_ID.NOBR: - case TAG_ID.SMALL: - case TAG_ID.STRIKE: - case TAG_ID.STRONG: { - callAdoptionAgency(p, token); - break; - } - case TAG_ID.P: { - pEndTagInBody(p); - break; - } - case TAG_ID.DL: - case TAG_ID.UL: - case TAG_ID.OL: - case TAG_ID.DIR: - case TAG_ID.DIV: - case TAG_ID.NAV: - case TAG_ID.PRE: - case TAG_ID.MAIN: - case TAG_ID.MENU: - case TAG_ID.ASIDE: - case TAG_ID.BUTTON: - case TAG_ID.CENTER: - case TAG_ID.FIGURE: - case TAG_ID.FOOTER: - case TAG_ID.HEADER: - case TAG_ID.HGROUP: - case TAG_ID.DIALOG: - case TAG_ID.ADDRESS: - case TAG_ID.ARTICLE: - case TAG_ID.DETAILS: - case TAG_ID.SEARCH: - case TAG_ID.SECTION: - case TAG_ID.SUMMARY: - case TAG_ID.LISTING: - case TAG_ID.FIELDSET: - case TAG_ID.BLOCKQUOTE: - case TAG_ID.FIGCAPTION: { - addressEndTagInBody(p, token); - break; - } - case TAG_ID.LI: { - liEndTagInBody(p); - break; - } - case TAG_ID.DD: - case TAG_ID.DT: { - ddEndTagInBody(p, token); - break; - } - case TAG_ID.H1: - case TAG_ID.H2: - case TAG_ID.H3: - case TAG_ID.H4: - case TAG_ID.H5: - case TAG_ID.H6: { - numberedHeaderEndTagInBody(p); - break; - } - case TAG_ID.BR: { - brEndTagInBody(p); - break; - } - case TAG_ID.BODY: { - bodyEndTagInBody(p, token); - break; - } - case TAG_ID.HTML: { - htmlEndTagInBody(p, token); - break; - } - case TAG_ID.FORM: { - formEndTagInBody(p); - break; - } - case TAG_ID.APPLET: - case TAG_ID.OBJECT: - case TAG_ID.MARQUEE: { - appletEndTagInBody(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - genericEndTagInBody(p, token); - } - } -} -function eofInBody(p, token) { - if (p.tmplInsertionModeStack.length > 0) { - eofInTemplate(p, token); - } else { - stopParsing(p, token); - } -} -function endTagInText(p, token) { - var _a5; - if (token.tagID === TAG_ID.SCRIPT) { - (_a5 = p.scriptHandler) === null || _a5 === void 0 ? void 0 : _a5.call(p, p.openElements.current); - } - p.openElements.pop(); - p.insertionMode = p.originalInsertionMode; -} -function eofInText(p, token) { - p._err(token, ERR.eofInElementThatCanContainOnlyText); - p.openElements.pop(); - p.insertionMode = p.originalInsertionMode; - p.onEof(token); -} -function characterInTable(p, token) { - if (p.openElements.currentTagId !== void 0 && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) { - p.pendingCharacterTokens.length = 0; - p.hasNonWhitespacePendingCharacterToken = false; - p.originalInsertionMode = p.insertionMode; - p.insertionMode = InsertionMode.IN_TABLE_TEXT; - switch (token.type) { - case TokenType.CHARACTER: { - characterInTableText(p, token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - whitespaceCharacterInTableText(p, token); - break; - } - } - } else { - tokenInTable(p, token); - } -} -function captionStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p.activeFormattingElements.insertMarker(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_CAPTION; -} -function colgroupStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; -} -function colStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertFakeElement(TAG_NAMES.COLGROUP, TAG_ID.COLGROUP); - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; - startTagInColumnGroup(p, token); -} -function tbodyStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_TABLE_BODY; -} -function tdStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertFakeElement(TAG_NAMES.TBODY, TAG_ID.TBODY); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); -} -function tableStartTagInTable(p, token) { - if (p.openElements.hasInTableScope(TAG_ID.TABLE)) { - p.openElements.popUntilTagNamePopped(TAG_ID.TABLE); - p._resetInsertionMode(); - p._processStartTag(token); - } -} -function inputStartTagInTable(p, token) { - if (isHiddenInput(token)) { - p._appendElement(token, NS.HTML); - } else { - tokenInTable(p, token); - } - token.ackSelfClosing = true; -} -function formStartTagInTable(p, token) { - if (!p.formElement && p.openElements.tmplCount === 0) { - p._insertElement(token, NS.HTML); - p.formElement = p.openElements.current; - p.openElements.pop(); - } -} -function startTagInTable(p, token) { - switch (token.tagID) { - case TAG_ID.TD: - case TAG_ID.TH: - case TAG_ID.TR: { - tdStartTagInTable(p, token); - break; - } - case TAG_ID.STYLE: - case TAG_ID.SCRIPT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - case TAG_ID.COL: { - colStartTagInTable(p, token); - break; - } - case TAG_ID.FORM: { - formStartTagInTable(p, token); - break; - } - case TAG_ID.TABLE: { - tableStartTagInTable(p, token); - break; - } - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - tbodyStartTagInTable(p, token); - break; - } - case TAG_ID.INPUT: { - inputStartTagInTable(p, token); - break; - } - case TAG_ID.CAPTION: { - captionStartTagInTable(p, token); - break; - } - case TAG_ID.COLGROUP: { - colgroupStartTagInTable(p, token); - break; - } - default: { - tokenInTable(p, token); - } - } -} -function endTagInTable(p, token) { - switch (token.tagID) { - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.TABLE)) { - p.openElements.popUntilTagNamePopped(TAG_ID.TABLE); - p._resetInsertionMode(); - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TBODY: - case TAG_ID.TD: - case TAG_ID.TFOOT: - case TAG_ID.TH: - case TAG_ID.THEAD: - case TAG_ID.TR: { - break; - } - default: { - tokenInTable(p, token); - } - } -} -function tokenInTable(p, token) { - const savedFosterParentingState = p.fosterParentingEnabled; - p.fosterParentingEnabled = true; - modeInBody(p, token); - p.fosterParentingEnabled = savedFosterParentingState; -} -function whitespaceCharacterInTableText(p, token) { - p.pendingCharacterTokens.push(token); -} -function characterInTableText(p, token) { - p.pendingCharacterTokens.push(token); - p.hasNonWhitespacePendingCharacterToken = true; -} -function tokenInTableText(p, token) { - let i = 0; - if (p.hasNonWhitespacePendingCharacterToken) { - for (; i < p.pendingCharacterTokens.length; i++) { - tokenInTable(p, p.pendingCharacterTokens[i]); - } - } else { - for (; i < p.pendingCharacterTokens.length; i++) { - p._insertCharacters(p.pendingCharacterTokens[i]); - } - } - p.insertionMode = p.originalInsertionMode; - p._processToken(token); -} -var TABLE_VOID_ELEMENTS = /* @__PURE__ */ new Set([TAG_ID.CAPTION, TAG_ID.COL, TAG_ID.COLGROUP, TAG_ID.TBODY, TAG_ID.TD, TAG_ID.TFOOT, TAG_ID.TH, TAG_ID.THEAD, TAG_ID.TR]); -function startTagInCaption(p, token) { - const tn = token.tagID; - if (TABLE_VOID_ELEMENTS.has(tn)) { - if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - } - } else { - startTagInBody(p, token); - } -} -function endTagInCaption(p, token) { - const tn = token.tagID; - switch (tn) { - case TAG_ID.CAPTION: - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_TABLE; - if (tn === TAG_ID.TABLE) { - endTagInTable(p, token); - } - } - break; - } - case TAG_ID.BODY: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TBODY: - case TAG_ID.TD: - case TAG_ID.TFOOT: - case TAG_ID.TH: - case TAG_ID.THEAD: - case TAG_ID.TR: { - break; - } - default: { - endTagInBody(p, token); - } - } -} -function startTagInColumnGroup(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.COL: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - default: { - tokenInColumnGroup(p, token); - } - } -} -function endTagInColumnGroup(p, token) { - switch (token.tagID) { - case TAG_ID.COLGROUP: { - if (p.openElements.currentTagId === TAG_ID.COLGROUP) { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - case TAG_ID.COL: { - break; - } - default: { - tokenInColumnGroup(p, token); - } - } -} -function tokenInColumnGroup(p, token) { - if (p.openElements.currentTagId === TAG_ID.COLGROUP) { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - p._processToken(token); - } -} -function startTagInTableBody(p, token) { - switch (token.tagID) { - case TAG_ID.TR: { - p.openElements.clearBackToTableBodyContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_ROW; - break; - } - case TAG_ID.TH: - case TAG_ID.TD: { - p.openElements.clearBackToTableBodyContext(); - p._insertFakeElement(TAG_NAMES.TR, TAG_ID.TR); - p.insertionMode = InsertionMode.IN_ROW; - startTagInRow(p, token); - break; - } - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasTableBodyContextInTableScope()) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - } - break; - } - default: { - startTagInTable(p, token); - } - } -} -function endTagInTableBody(p, token) { - const tn = token.tagID; - switch (token.tagID) { - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - } - break; - } - case TAG_ID.TABLE: { - if (p.openElements.hasTableBodyContextInTableScope()) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - endTagInTable(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TD: - case TAG_ID.TH: - case TAG_ID.TR: { - break; - } - default: { - endTagInTable(p, token); - } - } -} -function startTagInRow(p, token) { - switch (token.tagID) { - case TAG_ID.TH: - case TAG_ID.TD: { - p.openElements.clearBackToTableRowContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_CELL; - p.activeFormattingElements.insertMarker(); - break; - } - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); - } - break; - } - default: { - startTagInTable(p, token); - } - } -} -function endTagInRow(p, token) { - switch (token.tagID) { - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - } - break; - } - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - endTagInTableBody(p, token); - } - break; - } - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - endTagInTableBody(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TD: - case TAG_ID.TH: { - break; - } - default: { - endTagInTable(p, token); - } - } -} -function startTagInCell(p, token) { - const tn = token.tagID; - if (TABLE_VOID_ELEMENTS.has(tn)) { - if (p.openElements.hasInTableScope(TAG_ID.TD) || p.openElements.hasInTableScope(TAG_ID.TH)) { - p._closeTableCell(); - startTagInRow(p, token); - } - } else { - startTagInBody(p, token); - } -} -function endTagInCell(p, token) { - const tn = token.tagID; - switch (tn) { - case TAG_ID.TD: - case TAG_ID.TH: { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_ROW; - } - break; - } - case TAG_ID.TABLE: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(tn)) { - p._closeTableCell(); - endTagInRow(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: { - break; - } - default: { - endTagInBody(p, token); - } - } -} -function startTagInSelect(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.OPTION: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.OPTGROUP: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - if (p.openElements.currentTagId === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.HR: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - if (p.openElements.currentTagId === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.INPUT: - case TAG_ID.KEYGEN: - case TAG_ID.TEXTAREA: - case TAG_ID.SELECT: { - if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - if (token.tagID !== TAG_ID.SELECT) { - p._processStartTag(token); - } - } - break; - } - case TAG_ID.SCRIPT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - default: - } -} -function endTagInSelect(p, token) { - switch (token.tagID) { - case TAG_ID.OPTGROUP: { - if (p.openElements.stackTop > 0 && p.openElements.currentTagId === TAG_ID.OPTION && p.openElements.tagIDs[p.openElements.stackTop - 1] === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - if (p.openElements.currentTagId === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - break; - } - case TAG_ID.OPTION: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - break; - } - case TAG_ID.SELECT: { - if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: - } -} -function startTagInSelectInTable(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - p._processStartTag(token); - } else { - startTagInSelect(p, token); - } -} -function endTagInSelectInTable(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - p.onEndTag(token); - } - } else { - endTagInSelect(p, token); - } -} -function startTagInTemplate(p, token) { - switch (token.tagID) { - // First, handle tags that can start without a mode change - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.SCRIPT: - case TAG_ID.STYLE: - case TAG_ID.TEMPLATE: - case TAG_ID.TITLE: { - startTagInHead(p, token); - break; - } - // Re-process the token in the appropriate mode - case TAG_ID.CAPTION: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE; - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - break; - } - case TAG_ID.COL: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP; - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; - startTagInColumnGroup(p, token); - break; - } - case TAG_ID.TR: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY; - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); - break; - } - case TAG_ID.TD: - case TAG_ID.TH: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW; - p.insertionMode = InsertionMode.IN_ROW; - startTagInRow(p, token); - break; - } - default: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY; - p.insertionMode = InsertionMode.IN_BODY; - startTagInBody(p, token); - } - } -} -function endTagInTemplate(p, token) { - if (token.tagID === TAG_ID.TEMPLATE) { - templateEndTagInHead(p, token); - } -} -function eofInTemplate(p, token) { - if (p.openElements.tmplCount > 0) { - p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE); - p.activeFormattingElements.clearToLastMarker(); - p.tmplInsertionModeStack.shift(); - p._resetInsertionMode(); - p.onEof(token); - } else { - stopParsing(p, token); - } -} -function startTagAfterBody(p, token) { - if (token.tagID === TAG_ID.HTML) { - startTagInBody(p, token); - } else { - tokenAfterBody(p, token); - } -} -function endTagAfterBody(p, token) { - var _a5; - if (token.tagID === TAG_ID.HTML) { - if (!p.fragmentContext) { - p.insertionMode = InsertionMode.AFTER_AFTER_BODY; - } - if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === TAG_ID.HTML) { - p._setEndLocation(p.openElements.items[0], token); - const bodyElement = p.openElements.items[1]; - if (bodyElement && !((_a5 = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a5 === void 0 ? void 0 : _a5.endTag)) { - p._setEndLocation(bodyElement, token); - } - } - } else { - tokenAfterBody(p, token); - } -} -function tokenAfterBody(p, token) { - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); -} -function startTagInFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.FRAMESET: { - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.FRAME: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } -} -function endTagInFrameset(p, token) { - if (token.tagID === TAG_ID.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) { - p.openElements.pop(); - if (!p.fragmentContext && p.openElements.currentTagId !== TAG_ID.FRAMESET) { - p.insertionMode = InsertionMode.AFTER_FRAMESET; - } - } -} -function startTagAfterFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } -} -function endTagAfterFrameset(p, token) { - if (token.tagID === TAG_ID.HTML) { - p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET; - } -} -function startTagAfterAfterBody(p, token) { - if (token.tagID === TAG_ID.HTML) { - startTagInBody(p, token); - } else { - tokenAfterAfterBody(p, token); - } -} -function tokenAfterAfterBody(p, token) { - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); -} -function startTagAfterAfterFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } -} -function nullCharacterInForeignContent(p, token) { - token.chars = REPLACEMENT_CHARACTER; - p._insertCharacters(token); -} -function characterInForeignContent(p, token) { - p._insertCharacters(token); - p.framesetOk = false; -} -function popUntilHtmlOrIntegrationPoint(p) { - while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML && p.openElements.currentTagId !== void 0 && !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) { - p.openElements.pop(); - } -} -function startTagInForeignContent(p, token) { - if (causesExit(token)) { - popUntilHtmlOrIntegrationPoint(p); - p._startTagOutsideForeignContent(token); - } else { - const current = p._getAdjustedCurrentElement(); - const currentNs = p.treeAdapter.getNamespaceURI(current); - if (currentNs === NS.MATHML) { - adjustTokenMathMLAttrs(token); - } else if (currentNs === NS.SVG) { - adjustTokenSVGTagName(token); - adjustTokenSVGAttrs(token); - } - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, currentNs); - } else { - p._insertElement(token, currentNs); - } - token.ackSelfClosing = true; - } -} -function endTagInForeignContent(p, token) { - if (token.tagID === TAG_ID.P || token.tagID === TAG_ID.BR) { - popUntilHtmlOrIntegrationPoint(p); - p._endTagOutsideForeignContent(token); - return; - } - for (let i = p.openElements.stackTop; i > 0; i--) { - const element = p.openElements.items[i]; - if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) { - p._endTagOutsideForeignContent(token); - break; - } - const tagName = p.treeAdapter.getTagName(element); - if (tagName.toLowerCase() === token.tagName) { - token.tagName = tagName; - p.openElements.shortenToLength(i); - break; - } - } -} - -// node_modules/parse5/node_modules/entities/dist/esm/escape.js -var getCodePoint2 = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - String.prototype.codePointAt == null ? (c, index2) => (c.charCodeAt(index2) & 64512) === 55296 ? (c.charCodeAt(index2) - 55296) * 1024 + c.charCodeAt(index2 + 1) - 56320 + 65536 : c.charCodeAt(index2) : ( - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - (input, index2) => input.codePointAt(index2) - ) -); -function getEscaper2(regex, map2) { - return function escape2(data2) { - let match; - let lastIndex = 0; - let result = ""; - while (match = regex.exec(data2)) { - if (lastIndex !== match.index) { - result += data2.substring(lastIndex, match.index); - } - result += map2.get(match[0].charCodeAt(0)); - lastIndex = match.index + 1; - } - return result + data2.substring(lastIndex); - }; -} -var escapeAttribute2 = /* @__PURE__ */ getEscaper2(/["&\u00A0]/g, /* @__PURE__ */ new Map([ - [34, """], - [38, "&"], - [160, " "] -])); -var escapeText2 = /* @__PURE__ */ getEscaper2(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([ - [38, "&"], - [60, "<"], - [62, ">"], - [160, " "] -])); - -// node_modules/parse5/dist/serializer/index.js -var VOID_ELEMENTS = /* @__PURE__ */ new Set([ - TAG_NAMES.AREA, - TAG_NAMES.BASE, - TAG_NAMES.BASEFONT, - TAG_NAMES.BGSOUND, - TAG_NAMES.BR, - TAG_NAMES.COL, - TAG_NAMES.EMBED, - TAG_NAMES.FRAME, - TAG_NAMES.HR, - TAG_NAMES.IMG, - TAG_NAMES.INPUT, - TAG_NAMES.KEYGEN, - TAG_NAMES.LINK, - TAG_NAMES.META, - TAG_NAMES.PARAM, - TAG_NAMES.SOURCE, - TAG_NAMES.TRACK, - TAG_NAMES.WBR -]); -function isVoidElement(node, options) { - return options.treeAdapter.isElementNode(node) && options.treeAdapter.getNamespaceURI(node) === NS.HTML && VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)); -} -var defaultOpts3 = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true }; -function serializeOuter(node, options) { - const opts = { ...defaultOpts3, ...options }; - return serializeNode(node, opts); -} -function serializeChildNodes(parentNode, options) { - let html3 = ""; - const container = options.treeAdapter.isElementNode(parentNode) && options.treeAdapter.getTagName(parentNode) === TAG_NAMES.TEMPLATE && options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML ? options.treeAdapter.getTemplateContent(parentNode) : parentNode; - const childNodes = options.treeAdapter.getChildNodes(container); - if (childNodes) { - for (const currentNode of childNodes) { - html3 += serializeNode(currentNode, options); - } - } - return html3; -} -function serializeNode(node, options) { - if (options.treeAdapter.isElementNode(node)) { - return serializeElement(node, options); - } - if (options.treeAdapter.isTextNode(node)) { - return serializeTextNode(node, options); - } - if (options.treeAdapter.isCommentNode(node)) { - return serializeCommentNode(node, options); - } - if (options.treeAdapter.isDocumentTypeNode(node)) { - return serializeDocumentTypeNode(node, options); - } - return ""; -} -function serializeElement(node, options) { - const tn = options.treeAdapter.getTagName(node); - return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? "" : `${serializeChildNodes(node, options)}</${tn}>`}`; -} -function serializeAttributes(node, { treeAdapter }) { - let html3 = ""; - for (const attr2 of treeAdapter.getAttrList(node)) { - html3 += " "; - if (attr2.namespace) { - switch (attr2.namespace) { - case NS.XML: { - html3 += `xml:${attr2.name}`; - break; - } - case NS.XMLNS: { - if (attr2.name !== "xmlns") { - html3 += "xmlns:"; - } - html3 += attr2.name; - break; - } - case NS.XLINK: { - html3 += `xlink:${attr2.name}`; - break; - } - default: { - html3 += `${attr2.prefix}:${attr2.name}`; - } - } - } else { - html3 += attr2.name; - } - html3 += `="${escapeAttribute2(attr2.value)}"`; - } - return html3; -} -function serializeTextNode(node, options) { - const { treeAdapter } = options; - const content = treeAdapter.getTextNodeContent(node); - const parent2 = treeAdapter.getParentNode(node); - const parentTn = parent2 && treeAdapter.isElementNode(parent2) && treeAdapter.getTagName(parent2); - return parentTn && treeAdapter.getNamespaceURI(parent2) === NS.HTML && hasUnescapedText(parentTn, options.scriptingEnabled) ? content : escapeText2(content); -} -function serializeCommentNode(node, { treeAdapter }) { - return `<!--${treeAdapter.getCommentNodeContent(node)}-->`; -} -function serializeDocumentTypeNode(node, { treeAdapter }) { - return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`; -} - -// node_modules/parse5/dist/index.js -function parse4(html3, options) { - return Parser2.parse(html3, options); -} -function parseFragment(fragmentContext, html3, options) { - if (typeof fragmentContext === "string") { - options = html3; - html3 = fragmentContext; - fragmentContext = null; - } - const parser = Parser2.getFragmentParser(fragmentContext, options); - parser.tokenizer.write(html3, true); - return parser.getFragment(); -} - -// node_modules/parse5-htmlparser2-tree-adapter/dist/index.js -function enquoteDoctypeId(id) { - const quote = id.includes('"') ? "'" : '"'; - return quote + id + quote; -} -function serializeDoctypeContent(name, publicId, systemId) { - let str = "!DOCTYPE "; - if (name) { - str += name; - } - if (publicId) { - str += ` PUBLIC ${enquoteDoctypeId(publicId)}`; - } else if (systemId) { - str += " SYSTEM"; - } - if (systemId) { - str += ` ${enquoteDoctypeId(systemId)}`; - } - return str; -} -var adapter = { - // Re-exports from domhandler - isCommentNode: isComment, - isElementNode: isTag2, - isTextNode: isText, - //Node construction - createDocument() { - const node = new Document([]); - node["x-mode"] = html_exports.DOCUMENT_MODE.NO_QUIRKS; - return node; - }, - createDocumentFragment() { - return new Document([]); - }, - createElement(tagName, namespaceURI, attrs) { - const attribs = /* @__PURE__ */ Object.create(null); - const attribsNamespace = /* @__PURE__ */ Object.create(null); - const attribsPrefix = /* @__PURE__ */ Object.create(null); - for (let i = 0; i < attrs.length; i++) { - const attrName = attrs[i].name; - attribs[attrName] = attrs[i].value; - attribsNamespace[attrName] = attrs[i].namespace; - attribsPrefix[attrName] = attrs[i].prefix; - } - const node = new Element(tagName, attribs, []); - node.namespace = namespaceURI; - node["x-attribsNamespace"] = attribsNamespace; - node["x-attribsPrefix"] = attribsPrefix; - return node; - }, - createCommentNode(data2) { - return new Comment2(data2); - }, - createTextNode(value) { - return new Text2(value); - }, - //Tree mutation - appendChild(parentNode, newNode) { - const prev2 = parentNode.children[parentNode.children.length - 1]; - if (prev2) { - prev2.next = newNode; - newNode.prev = prev2; - } - parentNode.children.push(newNode); - newNode.parent = parentNode; - }, - insertBefore(parentNode, newNode, referenceNode) { - const insertionIdx = parentNode.children.indexOf(referenceNode); - const { prev: prev2 } = referenceNode; - if (prev2) { - prev2.next = newNode; - newNode.prev = prev2; - } - referenceNode.prev = newNode; - newNode.next = referenceNode; - parentNode.children.splice(insertionIdx, 0, newNode); - newNode.parent = parentNode; - }, - setTemplateContent(templateElement, contentElement) { - adapter.appendChild(templateElement, contentElement); - }, - getTemplateContent(templateElement) { - return templateElement.children[0]; - }, - setDocumentType(document2, name, publicId, systemId) { - const data2 = serializeDoctypeContent(name, publicId, systemId); - let doctypeNode = document2.children.find((node) => isDirective(node) && node.name === "!doctype"); - if (doctypeNode) { - doctypeNode.data = data2 !== null && data2 !== void 0 ? data2 : null; - } else { - doctypeNode = new ProcessingInstruction("!doctype", data2); - adapter.appendChild(document2, doctypeNode); - } - doctypeNode["x-name"] = name; - doctypeNode["x-publicId"] = publicId; - doctypeNode["x-systemId"] = systemId; - }, - setDocumentMode(document2, mode) { - document2["x-mode"] = mode; - }, - getDocumentMode(document2) { - return document2["x-mode"]; - }, - detachNode(node) { - if (node.parent) { - const idx = node.parent.children.indexOf(node); - const { prev: prev2, next: next2 } = node; - node.prev = null; - node.next = null; - if (prev2) { - prev2.next = next2; - } - if (next2) { - next2.prev = prev2; - } - node.parent.children.splice(idx, 1); - node.parent = null; - } - }, - insertText(parentNode, text3) { - const lastChild = parentNode.children[parentNode.children.length - 1]; - if (lastChild && isText(lastChild)) { - lastChild.data += text3; - } else { - adapter.appendChild(parentNode, adapter.createTextNode(text3)); - } - }, - insertTextBefore(parentNode, text3, referenceNode) { - const prevNode = parentNode.children[parentNode.children.indexOf(referenceNode) - 1]; - if (prevNode && isText(prevNode)) { - prevNode.data += text3; - } else { - adapter.insertBefore(parentNode, adapter.createTextNode(text3), referenceNode); - } - }, - adoptAttributes(recipient, attrs) { - for (let i = 0; i < attrs.length; i++) { - const attrName = attrs[i].name; - if (recipient.attribs[attrName] === void 0) { - recipient.attribs[attrName] = attrs[i].value; - recipient["x-attribsNamespace"][attrName] = attrs[i].namespace; - recipient["x-attribsPrefix"][attrName] = attrs[i].prefix; - } - } - }, - //Tree traversing - getFirstChild(node) { - return node.children[0]; - }, - getChildNodes(node) { - return node.children; - }, - getParentNode(node) { - return node.parent; - }, - getAttrList(element) { - return element.attributes; - }, - //Node data - getTagName(element) { - return element.name; - }, - getNamespaceURI(element) { - return element.namespace; - }, - getTextNodeContent(textNode) { - return textNode.data; - }, - getCommentNodeContent(commentNode) { - return commentNode.data; - }, - getDocumentTypeNodeName(doctypeNode) { - var _a5; - return (_a5 = doctypeNode["x-name"]) !== null && _a5 !== void 0 ? _a5 : ""; - }, - getDocumentTypeNodePublicId(doctypeNode) { - var _a5; - return (_a5 = doctypeNode["x-publicId"]) !== null && _a5 !== void 0 ? _a5 : ""; - }, - getDocumentTypeNodeSystemId(doctypeNode) { - var _a5; - return (_a5 = doctypeNode["x-systemId"]) !== null && _a5 !== void 0 ? _a5 : ""; - }, - //Node types - isDocumentTypeNode(node) { - return isDirective(node) && node.name === "!doctype"; - }, - // Source code location - setNodeSourceCodeLocation(node, location) { - if (location) { - node.startIndex = location.startOffset; - node.endIndex = location.endOffset; - } - node.sourceCodeLocation = location; - }, - getNodeSourceCodeLocation(node) { - return node.sourceCodeLocation; - }, - updateNodeSourceCodeLocation(node, endLocation) { - if (endLocation.endOffset != null) - node.endIndex = endLocation.endOffset; - node.sourceCodeLocation = { - ...node.sourceCodeLocation, - ...endLocation - }; - } -}; - -// node_modules/cheerio/dist/browser/parsers/parse5-adapter.js -function parseWithParse5(content, options, isDocument2, context) { - var _a5; - (_a5 = options.treeAdapter) !== null && _a5 !== void 0 ? _a5 : options.treeAdapter = adapter; - if (options.scriptingEnabled !== false) { - options.scriptingEnabled = true; - } - return isDocument2 ? parse4(content, options) : parseFragment(context, content, options); -} -var renderOpts = { treeAdapter: adapter }; -function renderWithParse5(dom) { - const nodes = "length" in dom ? dom : [dom]; - for (let index2 = 0; index2 < nodes.length; index2 += 1) { - const node = nodes[index2]; - if (isDocument(node)) { - Array.prototype.splice.call(nodes, index2, 1, ...node.children); - } - } - let result = ""; - for (let index2 = 0; index2 < nodes.length; index2 += 1) { - const node = nodes[index2]; - result += serializeOuter(node, renderOpts); - } - return result; -} - -// node_modules/cheerio/dist/browser/load-parse.js -var parse5 = getParse((content, options, isDocument2, context) => options._useHtmlParser2 ? parseDocument(content, options) : parseWithParse5(content, options, isDocument2, context)); -var load = getLoad(parse5, (dom, options) => options._useHtmlParser2 ? esm_default(dom, options) : renderWithParse5(dom)); - -// src/utils/webScrapingUtils.ts -async function fetchMetadataFromUrl(url) { - const defaultMetadata = { - title: "", - description: "", - cover: "" - }; - if (!url || !url.startsWith("http")) { - return defaultMetadata; - } - try { - const html3 = await (0, import_obsidian4.request)({ url }); - const $2 = load(html3); - let title = $2("title").text() || ""; - let description = $2('meta[name="description"]').attr("content") || $2('meta[property="og:description"]').attr("content") || ""; - let cover = $2('meta[property="og:image"]').attr("content") || $2('meta[name="twitter:image"]').attr("content") || ""; - if (!title) { - title = $2('meta[property="og:title"]').attr("content") || ""; - } - title = title.trim(); - description = description.trim(); - if (cover && !cover.startsWith("http")) { - cover = ""; - } - return { - title, - description, - cover - }; - } catch (error) { - console.error("Error fetching metadata from URL:", url, error); - return defaultMetadata; - } -} - -// src/utils/yamlUtils.ts -var import_obsidian5 = require("obsidian"); - -// src/main.ts -var RaindropTypes = { - LINK: "link", - ARTICLE: "article", - IMAGE: "image", - VIDEO: "video", - DOCUMENT: "document", - AUDIO: "audio" -}; -var TagMatchTypes = { - ALL: "all", - ANY: "any" -}; -var SystemCollections = { - UNSORTED: -1, - TRASH: -99 -}; -var FilterTypes = { - ...RaindropTypes, - ALL: "all" -}; -var DEFAULT_SETTINGS = { - apiToken: "", - defaultFolder: "", - fileNameTemplate: "{{title}}", - showRibbonIcon: true, - bannerFieldName: "banner", - isTemplateSystemEnabled: true, - // New modern UI settings - enableMdxSupport: true, - enableModernUI: true, - useCardLayout: true, - enableAnimations: true, - colorTheme: "auto", - compactMode: false, - defaultTemplate: `--- + )`,enabled:":not(:disabled)",checked:":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",required:":is(input, select, textarea)[required]",optional:":is(input, select, textarea):not([required])",selected:"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",checkbox:"[type=checkbox]",file:"[type=file]",password:"[type=password]",radio:"[type=radio]",reset:"[type=reset]",image:"[type=image]",submit:"[type=submit]",parent:":not(:empty)",header:":is(h1, h2, h3, h4, h5, h6)",button:":is(button, input[type=button])",input:":is(input, textarea, select, button)",text:"input:is(:not([type!='']), [type=text])"};var Te=je(qe(),1);var J0={};function Z0(e,u){return e===Te.default.falseFunc?Te.default.falseFunc:t=>u.isTag(t)&&e(t)}function ea(e,u){let t=u.getSiblings(e);if(t.length<=1)return[];let a=t.indexOf(e);return a<0||a===t.length-1?[]:t.slice(a+1).filter(u.isTag)}function z0(e){return{xmlMode:!!e.xmlMode,lowerCaseAttributeNames:!!e.lowerCaseAttributeNames,lowerCaseTags:!!e.lowerCaseTags,quirksMode:!!e.quirksMode,cacheResults:!!e.cacheResults,pseudos:e.pseudos,adapter:e.adapter,equals:e.equals}}var K0=(e,u,t,a,r)=>{let n=r(u,z0(t),a);return n===Te.default.trueFunc?e:n===Te.default.falseFunc?Te.default.falseFunc:s=>n(s)&&e(s)},wt={is:K0,matches:K0,where:K0,not(e,u,t,a,r){let n=r(u,z0(t),a);return n===Te.default.falseFunc?e:n===Te.default.trueFunc?Te.default.falseFunc:s=>!n(s)&&e(s)},has(e,u,t,a,r){let{adapter:n}=t,s=z0(t);s.relativeSelector=!0;let c=u.some(b=>b.some(Uu))?[J0]:void 0,o=r(u,s,c);if(o===Te.default.falseFunc)return Te.default.falseFunc;let f=Z0(o,n);if(c&&o!==Te.default.trueFunc){let{shouldTestNextSiblings:b=!1}=o;return E=>{if(!e(E))return!1;c[0]=E;let g=n.getChildren(E),_=b?[...g,...ea(E,n)]:g;return n.existsOne(f,_)}}return b=>e(b)&&n.existsOne(f,n.getChildren(b))}};function Br(e,u,t,a,r){var n;let{name:s,data:c}=u;if(Array.isArray(c)){if(!(s in wt))throw new Error(`Unknown pseudo-class :${s}(${c})`);return wt[s](e,c,t,a,r)}let o=(n=t.pseudos)===null||n===void 0?void 0:n[s],f=typeof o=="string"?o:Pt[s];if(typeof f=="string"){if(c!=null)throw new Error(`Pseudo ${s} doesn't have any arguments`);let b=we(f);return wt.is(e,b,t,a,r)}if(typeof o=="function")return j0(o,s,c,1),b=>o(b,c)&&e(b);if(s in gu)return gu[s](e,c,t,a);if(s in Hu){let b=Hu[s];return j0(b,s,c,2),E=>b(E,t,c)&&e(E)}throw new Error(`Unknown pseudo-class :${s}`)}function ua(e,u){let t=u.getParent(e);return t&&u.isTag(t)?t:null}function Ur(e,u,t,a,r){let{adapter:n,equals:s}=t;switch(u.type){case D.PseudoElement:throw new Error("Pseudo-elements are not supported by css-select");case D.ColumnCombinator:throw new Error("Column combinators are not yet supported by css-select");case D.Attribute:{if(u.namespace!=null)throw new Error("Namespaced attributes are not yet supported by css-select");return(!t.xmlMode||t.lowerCaseAttributeNames)&&(u.name=u.name.toLowerCase()),wr[u.action](e,u,t)}case D.Pseudo:return Br(e,u,t,a,r);case D.Tag:{if(u.namespace!=null)throw new Error("Namespaced tag names are not yet supported by css-select");let{name:c}=u;return(!t.xmlMode||t.lowerCaseTags)&&(c=c.toLowerCase()),function(f){return n.getName(f)===c&&e(f)}}case D.Descendant:{if(t.cacheResults===!1||typeof WeakSet=="undefined")return function(f){let b=f;for(;b=ua(b,n);)if(e(b))return!0;return!1};let c=new WeakSet;return function(f){let b=f;for(;b=ua(b,n);)if(!c.has(b)){if(n.isTag(b)&&e(b))return!0;c.add(b)}return!1}}case"_flexibleDescendant":return function(o){let f=o;do if(e(f))return!0;while(f=ua(f,n));return!1};case D.Parent:return function(o){return n.getChildren(o).some(f=>n.isTag(f)&&e(f))};case D.Child:return function(o){let f=n.getParent(o);return f!=null&&n.isTag(f)&&e(f)};case D.Sibling:return function(o){let f=n.getSiblings(o);for(let b=0;b<f.length;b++){let E=f[b];if(s(o,E))break;if(n.isTag(E)&&e(E))return!0}return!1};case D.Adjacent:return n.prevElementSibling?function(o){let f=n.prevElementSibling(o);return f!=null&&e(f)}:function(o){let f=n.getSiblings(o),b;for(let E=0;E<f.length;E++){let g=f[E];if(s(o,g))break;n.isTag(g)&&(b=g)}return!!b&&e(b)};case D.Universal:{if(u.namespace!=null&&u.namespace!=="*")throw new Error("Namespaced universal selectors are not yet supported by css-select");return e}}}function Fr(e,u,t){let a=kt(e,u,t);return Z0(a,u.adapter)}function kt(e,u,t){let a=typeof e=="string"?we(e):e;return Mt(a,u,t)}function Hr(e){return e.type===D.Pseudo&&(e.name==="scope"||Array.isArray(e.data)&&e.data.some(u=>u.some(Hr)))}var qs={type:D.Descendant},Ys={type:"_flexibleDescendant"},Vs={type:D.Pseudo,name:"scope",data:null};function $s(e,{adapter:u},t){let a=!!(t!=null&&t.every(r=>{let n=u.isTag(r)&&u.getParent(r);return r===J0||n&&u.isTag(n)}));for(let r of e){if(!(r.length>0&&Uu(r[0])&&r[0].type!==D.Descendant))if(a&&!r.some(Hr))r.unshift(qs);else continue;r.unshift(Vs)}}function Mt(e,u,t){var a;e.forEach(W0),t=(a=u.context)!==null&&a!==void 0?a:t;let r=Array.isArray(t),n=t&&(Array.isArray(t)?t:[t]);if(u.relativeSelector!==!1)$s(e,u,n);else if(e.some(o=>o.length>0&&Uu(o[0])))throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");let s=!1,c=e.map(o=>{if(o.length>=2){let[f,b]=o;f.type!==D.Pseudo||f.name!=="scope"||(r&&b.type===D.Descendant?o[1]=Ys:(b.type===D.Adjacent||b.type===D.Sibling)&&(s=!0))}return Gs(o,u,n)}).reduce(Ws,ke.default.falseFunc);return c.shouldTestNextSiblings=s,c}function Gs(e,u,t){var a;return e.reduce((r,n)=>r===ke.default.falseFunc?ke.default.falseFunc:Ur(r,n,u,t,Mt),(a=u.rootFunc)!==null&&a!==void 0?a:ke.default.trueFunc)}function Ws(e,u){return u===ke.default.falseFunc||e===ke.default.trueFunc?e:e===ke.default.falseFunc||u===ke.default.trueFunc?u:function(a){return e(a)||u(a)}}var qr=(e,u)=>e===u,Qs={adapter:Oe,equals:qr};function Yr(e){var u,t,a,r;let n=e!=null?e:Qs;return(u=n.adapter)!==null&&u!==void 0||(n.adapter=Oe),(t=n.equals)!==null&&t!==void 0||(n.equals=(r=(a=n.adapter)===null||a===void 0?void 0:a.equals)!==null&&r!==void 0?r:qr),n}function aa(e){return function(t,a,r){let n=Yr(a);return e(t,n,r)}}var C2=aa(Fr),S2=aa(kt),vt=aa(Mt);function Vr(e){return function(t,a,r){let n=Yr(r);typeof t!="function"&&(t=kt(t,n,a));let s=Bt(a,n.adapter,t.shouldTestNextSiblings);return e(t,s,n)}}function Bt(e,u,t=!1){return t&&(e=Xs(e,u)),Array.isArray(e)?u.removeSubsets(e):u.getChildren(e)}function Xs(e,u){let t=Array.isArray(e)?e.slice(0):[e],a=t.length;for(let r=0;r<a;r++){let n=ea(t[r],u);t.push(...n)}return t}var y2=Vr((e,u,t)=>e===ta.default.falseFunc||!u||u.length===0?[]:t.adapter.findAll(e,u)),D2=Vr((e,u,t)=>e===ta.default.falseFunc||!u||u.length===0?null:t.adapter.findOne(e,u));var Ft=je(qe(),1);var js=new Set(["first","last","eq","gt","nth","lt","even","odd"]);function xu(e){return e.type!=="pseudo"?!1:js.has(e.name)?!0:e.name==="not"&&Array.isArray(e.data)?e.data.some(u=>u.some(xu)):!1}function $r(e,u,t){let a=u!=null?parseInt(u,10):NaN;switch(e){case"first":return 1;case"nth":case"eq":return isFinite(a)?a>=0?a+1:1/0:0;case"lt":return isFinite(a)?a>=0?Math.min(a,t):1/0:0;case"gt":return isFinite(a)?1/0:0;case"odd":return 2*t;case"even":return 2*t-1;case"last":case"not":return 1/0}}function Gr(e){for(;e.parent;)e=e.parent;return e}function Ut(e){let u=[],t=[];for(let a of e)a.some(xu)?u.push(a):t.push(a);return[t,u]}var Ks={type:D.Universal,namespace:null},zs={type:D.Pseudo,name:"scope",data:null};function na(e,u,t={}){return sa([e],u,t)}function sa(e,u,t={}){if(typeof u=="function")return e.some(u);let[a,r]=Ut(we(u));return a.length>0&&e.some(vt(a,t))||r.some(n=>Qr(n,e,t).length>0)}function Js(e,u,t,a){let r=typeof t=="string"?parseInt(t,10):NaN;switch(e){case"first":case"lt":return u;case"last":return u.length>0?[u[u.length-1]]:u;case"nth":case"eq":return isFinite(r)&&Math.abs(r)<u.length?[r<0?u[u.length+r]:u[r]]:[];case"gt":return isFinite(r)?u.slice(r+1):[];case"even":return u.filter((n,s)=>s%2===0);case"odd":return u.filter((n,s)=>s%2===1);case"not":{let n=new Set(Wr(t,u,a));return u.filter(s=>!n.has(s))}}}function ca(e,u,t={}){return Wr(we(e),u,t)}function Wr(e,u,t){if(u.length===0)return[];let[a,r]=Ut(e),n;if(a.length){let s=ia(u,a,t);if(r.length===0)return s;s.length&&(n=new Set(s))}for(let s=0;s<r.length&&(n==null?void 0:n.size)!==u.length;s++){let c=r[s];if((n?u.filter(b=>C(b)&&!n.has(b)):u).length===0)break;let f=Qr(c,u,t);if(f.length)if(n)f.forEach(b=>n.add(b));else{if(s===r.length-1)return f;n=new Set(f)}}return typeof n!="undefined"?n.size===u.length?u:u.filter(s=>n.has(s)):[]}function Qr(e,u,t){var a;if(e.some(ru)){let r=(a=t.root)!==null&&a!==void 0?a:Gr(u[0]),n={...t,context:u,relativeSelector:!1};return e.push(zs),Ht(r,e,n,!0,u.length)}return Ht(u,e,t,!1,u.length)}function Xr(e,u,t={},a=1/0){if(typeof e=="function")return jr(u,e);let[r,n]=Ut(we(e)),s=n.map(c=>Ht(u,c,t,!0,a));return r.length&&s.push(ra(u,r,t,a)),s.length===0?[]:s.length===1?s[0]:Ue(s.reduce((c,o)=>[...c,...o]))}function Ht(e,u,t,a,r){let n=u.findIndex(xu),s=u.slice(0,n),c=u[n],o=u.length-1===n?r:1/0,f=$r(c.name,c.data,o);if(f===0)return[];let E=(s.length===0&&!Array.isArray(e)?hu(e).filter(C):s.length===0?(Array.isArray(e)?e:[e]).filter(C):a||s.some(ru)?ra(e,[s],t,f):ia(e,[s],t)).slice(0,f),g=Js(c.name,E,c.data,t);if(g.length===0||u.length===n+1)return g;let _=u.slice(n+1),N=_.some(ru);if(N){if(ru(_[0])){let{type:v}=_[0];(v===D.Sibling||v===D.Adjacent)&&(g=Bt(g,Oe,!0)),_.unshift(Ks)}t={...t,relativeSelector:!1,rootFunc:v=>g.includes(v)}}else t.rootFunc&&t.rootFunc!==Ft.trueFunc&&(t={...t,rootFunc:Ft.trueFunc});return _.some(xu)?Ht(g,_,t,!1,r):N?ra(g,[_],t,r):ia(g,[_],t)}function ra(e,u,t,a){let r=vt(u,t,e);return jr(e,r,a)}function jr(e,u,t=1/0){let a=Bt(e,Oe,u.shouldTestNextSiblings);return xt(r=>C(r)&&u(r),a,!0,t)}function ia(e,u,t){let a=(Array.isArray(e)?e:[e]).filter(C);if(a.length===0)return a;let r=vt(u,t);return r===Ft.trueFunc?a:a.filter(r)}var ec=/^\s*[+~]/;function uc(e){if(!e)return this._make([]);if(typeof e!="string"){let u=me(e)?e.toArray():[e],t=this.toArray();return this._make(u.filter(a=>t.some(r=>It(r,a))))}return this._findBySelector(e,Number.POSITIVE_INFINITY)}function tc(e,u){var t;let a=this.toArray(),r=ec.test(e)?a:this.children().toArray(),n={context:a,root:(t=this._root)===null||t===void 0?void 0:t[0],xmlMode:this.options.xmlMode,lowerCaseTags:this.options.lowerCaseTags,lowerCaseAttributeNames:this.options.lowerCaseAttributeNames,pseudos:this.options.pseudos,quirksMode:this.options.quirksMode};return this._make(Xr(e,r,n,u))}function oa(e){return function(u,...t){return function(a){var r;let n=e(u,this);return a&&(n=fa(n,a,this.options.xmlMode,(r=this._root)===null||r===void 0?void 0:r[0])),this._make(this.length>1&&n.length>1?t.reduce((s,c)=>c(s),n):n)}}}var qu=oa((e,u)=>{let t=[];for(let a=0;a<u.length;a++){let r=e(u[a]);r.length>0&&(t=t.concat(r))}return t}),da=oa((e,u)=>{let t=[];for(let a=0;a<u.length;a++){let r=e(u[a]);r!==null&&t.push(r)}return t});function la(e,...u){let t=null,a=oa((r,n)=>{let s=[];return Y(n,c=>{for(let o;(o=r(c))&&!(t!=null&&t(o,s.length));c=o)s.push(o)}),s})(e,...u);return function(r,n){t=typeof r=="string"?c=>na(c,r,this.options):r?Yu(r):null;let s=a.call(this,n);return t=null,s}}function Au(e){return e.length>1?Array.from(new Set(e)):e}var ac=da(({parent:e})=>e&&!be(e)?e:null,Au),rc=qu(e=>{let u=[];for(;e.parent&&!be(e.parent);)u.push(e.parent),e=e.parent;return u},Ue,e=>e.reverse()),ic=la(({parent:e})=>e&&!be(e)?e:null,Ue,e=>e.reverse());function nc(e){var u;let t=[];if(!e)return this._make(t);let a={xmlMode:this.options.xmlMode,root:(u=this._root)===null||u===void 0?void 0:u[0]},r=typeof e=="string"?n=>na(n,e,a):Yu(e);return Y(this,n=>{for(n&&!be(n)&&!C(n)&&(n=n.parent);n&&C(n);){if(r(n,0)){t.includes(n)||t.push(n);break}n=n.parent}}),this._make(t)}var sc=da(e=>Tt(e)),cc=qu(e=>{let u=[];for(;e.next;)e=e.next,C(e)&&u.push(e);return u},Au),oc=la(e=>Tt(e),Au),dc=da(e=>gt(e)),lc=qu(e=>{let u=[];for(;e.prev;)e=e.prev,C(e)&&u.push(e);return u},Au),fc=la(e=>gt(e),Au),hc=qu(e=>w0(e).filter(u=>C(u)&&u!==e),Ue),bc=qu(e=>hu(e).filter(C),Au);function pc(){let e=this.toArray().reduce((u,t)=>H(t)?u.concat(t.children):u,[]);return this._make(e)}function mc(e){let u=0,t=this.length;for(;u<t&&e.call(this[u],u,this[u])!==!1;)++u;return this}function Ec(e){let u=[];for(let t=0;t<this.length;t++){let a=this[t],r=e.call(a,t,a);r!=null&&(u=u.concat(r))}return this._make(u)}function Yu(e){return typeof e=="function"?(u,t)=>e.call(u,t,u):me(e)?u=>Array.prototype.includes.call(e,u):function(u){return e===u}}function Tc(e){var u;return this._make(fa(this.toArray(),e,this.options.xmlMode,(u=this._root)===null||u===void 0?void 0:u[0]))}function fa(e,u,t,a){return typeof u=="string"?ca(u,e,{xmlMode:t,root:a}):e.filter(Yu(u))}function gc(e){let u=this.toArray();return typeof e=="string"?sa(u.filter(C),e,this.options):e?u.some(Yu(e)):!1}function xc(e){let u=this.toArray();if(typeof e=="string"){let t=new Set(ca(e,u,this.options));u=u.filter(a=>!t.has(a))}else{let t=Yu(e);u=u.filter((a,r)=>!t(a,r))}return this._make(u)}function Ac(e){return this.filter(typeof e=="string"?`:has(${e})`:(u,t)=>this._make(t).find(e).length>0)}function _c(){return this.length>1?this._make(this[0]):this}function Nc(){return this.length>0?this._make(this[this.length-1]):this}function Ic(e){var u;return e=+e,e===0&&this.length<=1?this:(e<0&&(e=this.length+e),this._make((u=this[e])!==null&&u!==void 0?u:[]))}function Cc(e){return e==null?this.toArray():this[e<0?this.length+e:e]}function Sc(){return Array.prototype.slice.call(this)}function yc(e){let u,t;return e==null?(u=this.parent().children(),t=this[0]):typeof e=="string"?(u=this._make(e),t=this[0]):(u=this,t=me(e)?e[0]:e),Array.prototype.indexOf.call(u,t)}function Dc(e,u){return this._make(Array.prototype.slice.call(this,e,u))}function Lc(){var e;return(e=this.prevObject)!==null&&e!==void 0?e:this._make([])}function Rc(e,u){let t=this._make(e,u),a=Ue([...this.get(),...t.get()]);return this._make(a)}function Oc(e){return this.prevObject?this.add(e?this.prevObject.filter(e):this.prevObject):this}var ba={};le(ba,{_makeDomArray:()=>Pc,after:()=>qc,append:()=>Mc,appendTo:()=>wc,before:()=>Vc,clone:()=>zc,empty:()=>Qc,html:()=>Xc,insertAfter:()=>Yc,insertBefore:()=>$c,prepend:()=>vc,prependTo:()=>kc,remove:()=>Gc,replaceWith:()=>Wc,text:()=>Kc,toString:()=>jc,unwrap:()=>Fc,wrap:()=>Bc,wrapAll:()=>Hc,wrapInner:()=>Uc});function Kr(e){return function(t,a,r,n){if(typeof Buffer!="undefined"&&Buffer.isBuffer(t)&&(t=t.toString()),typeof t=="string")return e(t,a,r,n);let s=t;if(!Array.isArray(s)&&be(s))return s;let c=new he([]);return Ye(s,c),c}}function Ye(e,u){let t=Array.isArray(e)?e:[e];u?u.children=t:u=null;for(let a=0;a<t.length;a++){let r=t[a];r.parent&&r.parent.children!==t&&Re(r),u?(r.prev=t[a-1]||null,r.next=t[a+1]||null):r.prev=r.next=null,r.parent=u}return u}function Pc(e,u){if(e==null)return[];if(typeof e=="string")return this._parse(e,this.options,!1,null).children.slice(0);if("length"in e){if(e.length===1)return this._makeDomArray(e[0],u);let t=[];for(let a=0;a<e.length;a++){let r=e[a];if(typeof r=="object"){if(r==null)continue;if(!("length"in r)){t.push(u?lu(r,!0):r);continue}}t.push(...this._makeDomArray(r,u))}return t}return[u?lu(e,!0):e]}function zr(e){return function(...u){let t=this.length-1;return Y(this,(a,r)=>{if(!H(a))return;let n=typeof u[0]=="function"?u[0].call(a,r,this._render(a.children)):u,s=this._makeDomArray(n,r<t);e(s,a.children,a)})}}function Ve(e,u,t,a,r){var n,s;let c=[u,t,...a],o=u===0?null:e[u-1],f=u+t>=e.length?null:e[u+t];for(let b=0;b<a.length;++b){let E=a[b],g=E.parent;if(g){let N=g.children.indexOf(E);N!==-1&&(g.children.splice(N,1),r===g&&u>N&&c[0]--)}E.parent=r,E.prev&&(E.prev.next=(n=E.next)!==null&&n!==void 0?n:null),E.next&&(E.next.prev=(s=E.prev)!==null&&s!==void 0?s:null),E.prev=b===0?o:a[b-1],E.next=b===a.length-1?f:a[b+1]}return o&&(o.next=a[0]),f&&(f.prev=a[a.length-1]),e.splice(...c)}function wc(e){return(me(e)?e:this._make(e)).append(this),this}function kc(e){return(me(e)?e:this._make(e)).prepend(this),this}var Mc=zr((e,u,t)=>{Ve(u,u.length,0,e,t)}),vc=zr((e,u,t)=>{Ve(u,0,0,e,t)});function Jr(e){return function(u){let t=this.length-1,a=this.parents().last();for(let r=0;r<this.length;r++){let n=this[r],s=typeof u=="function"?u.call(n,r,n):typeof u=="string"&&!Pu(u)?a.find(u).clone():u,[c]=this._makeDomArray(s,r<t);if(!c||!H(c))continue;let o=c,f=0;for(;f<o.children.length;){let b=o.children[f];C(b)?(o=b,f=0):f++}e(n,o,[c])}return this}}var Bc=Jr((e,u,t)=>{let{parent:a}=e;if(!a)return;let r=a.children,n=r.indexOf(e);Ye([e],u),Ve(r,n,0,t,a)}),Uc=Jr((e,u,t)=>{H(e)&&(Ye(e.children,u),Ye(t,e))});function Fc(e){return this.parent(e).not("body").each((u,t)=>{this._make(t).replaceWith(t.children)}),this}function Hc(e){let u=this[0];if(u){let t=this._make(typeof e=="function"?e.call(u,0,u):e).insertBefore(u),a;for(let n=0;n<t.length;n++)t[n].type===fe.Tag&&(a=t[n]);let r=0;for(;a&&r<a.children.length;){let n=a.children[r];n.type===fe.Tag?(a=n,r=0):r++}a&&this._make(a).append(this)}return this}function qc(...e){let u=this.length-1;return Y(this,(t,a)=>{if(!H(t)||!t.parent)return;let r=t.parent.children,n=r.indexOf(t);if(n===-1)return;let s=typeof e[0]=="function"?e[0].call(t,a,this._render(t.children)):e,c=this._makeDomArray(s,a<u);Ve(r,n+1,0,c,t.parent)})}function Yc(e){typeof e=="string"&&(e=this._make(e)),this.remove();let u=[];for(let t of this._makeDomArray(e)){let a=this.clone().toArray(),{parent:r}=t;if(!r)continue;let n=r.children,s=n.indexOf(t);s!==-1&&(Ve(n,s+1,0,a,r),u.push(...a))}return this._make(u)}function Vc(...e){let u=this.length-1;return Y(this,(t,a)=>{if(!H(t)||!t.parent)return;let r=t.parent.children,n=r.indexOf(t);if(n===-1)return;let s=typeof e[0]=="function"?e[0].call(t,a,this._render(t.children)):e,c=this._makeDomArray(s,a<u);Ve(r,n,0,c,t.parent)})}function $c(e){let u=this._make(e);this.remove();let t=[];return Y(u,a=>{let r=this.clone().toArray(),{parent:n}=a;if(!n)return;let s=n.children,c=s.indexOf(a);c!==-1&&(Ve(s,c,0,r,n),t.push(...r))}),this._make(t)}function Gc(e){let u=e?this.filter(e):this;return Y(u,t=>{Re(t),t.prev=t.next=t.parent=null}),this}function Wc(e){return Y(this,(u,t)=>{let{parent:a}=u;if(!a)return;let r=a.children,n=typeof e=="function"?e.call(u,t,u):e,s=this._makeDomArray(n);Ye(s,null);let c=r.indexOf(u);Ve(r,c,1,s,a),s.includes(u)||(u.parent=u.prev=u.next=null)})}function Qc(){return Y(this,e=>{if(H(e)){for(let u of e.children)u.next=u.prev=u.parent=null;e.children.length=0}})}function Xc(e){if(e===void 0){let u=this[0];return!u||!H(u)?null:this._render(u.children)}return Y(this,u=>{if(!H(u))return;for(let a of u.children)a.next=a.prev=a.parent=null;let t=me(e)?e.toArray():this._parse(`${e}`,this.options,!1,u).children;Ye(t,u)})}function jc(){return this._render(this)}function Kc(e){return e===void 0?tu(this):typeof e=="function"?Y(this,(u,t)=>this._make(u).text(e.call(u,t,tu([u])))):Y(this,u=>{if(!H(u))return;for(let a of u.children)a.next=a.prev=a.parent=null;let t=new Ie(`${e}`);Ye(t,u)})}function zc(){let e=Array.prototype.map.call(this.get(),t=>lu(t,!0)),u=new he(e);for(let t of e)t.parent=u;return this._make(e)}var pa={};le(pa,{css:()=>Jc});function Jc(e,u){if(e!=null&&u!=null||typeof e=="object"&&!Array.isArray(e))return Y(this,(t,a)=>{C(t)&&Zr(t,e,u,a)});if(this.length!==0)return ei(this[0],e)}function Zr(e,u,t,a){if(typeof u=="string"){let r=ei(e),n=typeof t=="function"?t.call(e,a,r[u]):t;n===""?delete r[u]:n!=null&&(r[u]=n),e.attribs.style=Zc(r)}else if(typeof u=="object"){let r=Object.keys(u);for(let n=0;n<r.length;n++){let s=r[n];Zr(e,s,u[s],n)}}}function ei(e,u){if(!e||!C(e))return;let t=eo(e.attribs.style);if(typeof u=="string")return t[u];if(Array.isArray(u)){let a={};for(let r of u)t[r]!=null&&(a[r]=t[r]);return a}return t}function Zc(e){return Object.keys(e).reduce((u,t)=>`${u}${u?" ":""}${t}: ${e[t]};`,"")}function eo(e){if(e=(e||"").trim(),!e)return{};let u={},t;for(let a of e.split(";")){let r=a.indexOf(":");if(r<1||r===a.length-1){let n=a.trimEnd();n.length>0&&t!==void 0&&(u[t]+=`;${n}`)}else t=a.slice(0,r).trim(),u[t]=a.slice(r+1).trim()}return u}var ma={};le(ma,{serialize:()=>to,serializeArray:()=>ao});var ui="input,select,textarea,keygen",uo=/%20/g,ti=/\r?\n/g;function to(){return this.serializeArray().map(t=>`${encodeURIComponent(t.name)}=${encodeURIComponent(t.value)}`).join("&").replace(uo,"+")}function ao(){return this.map((e,u)=>{let t=this._make(u);return C(u)&&u.name==="form"?t.find(ui).toArray():t.filter(ui).toArray()}).filter('[name!=""]:enabled:not(:submit, :button, :image, :reset, :file):matches([checked], :not(:checkbox, :radio))').map((e,u)=>{var t;let a=this._make(u),r=a.attr("name"),n=(t=a.val())!==null&&t!==void 0?t:"";return Array.isArray(n)?n.map(s=>({name:r,value:s.replace(ti,`\r +`)})):{name:r,value:n.replace(ti,`\r +`)}}).toArray()}var Ea={};le(Ea,{extract:()=>io});function ro(e){var u;return typeof e=="string"?{selector:e,value:"textContent"}:{selector:e.selector,value:(u=e.value)!==null&&u!==void 0?u:"textContent"}}function io(e){let u={};for(let t in e){let a=e[t],r=Array.isArray(a),{selector:n,value:s}=ro(r?a[0]:a),c=typeof s=="function"?s:typeof s=="string"?o=>this._make(o).prop(s):o=>this._make(o).extract(s);if(r)u[t]=this._findBySelector(n,Number.POSITIVE_INFINITY).map((o,f)=>c(f,t,u)).get();else{let o=this._findBySelector(n,1);u[t]=o.length>0?c(o[0],t,u):void 0}}return u}var $e=class{constructor(u,t,a){if(this.length=0,this.options=a,this._root=t,u){for(let r=0;r<u.length;r++)this[r]=u[r];this.length=u.length}}};$e.prototype.cheerio="[cheerio object]";$e.prototype.splice=Array.prototype.splice;$e.prototype[Symbol.iterator]=Array.prototype[Symbol.iterator];Object.assign($e.prototype,$0,ha,ba,pa,ma,Ea);function ai(e,u){return function t(a,r,n=!0){if(a==null)throw new Error("cheerio.load() expects a string");let s=Ou(r),c=e(a,s,n,null);class o extends $e{_make(E,g){let _=f(E,g);return _.prevObject=this,_}_parse(E,g,_,N){return e(E,g,_,N)}_render(E){return u(E,this.options)}}function f(b,E,g=c,_){if(b&&me(b))return b;let N=Ou(_,s),v=typeof g=="string"?[e(g,N,!1,null)]:"length"in g?g:[g],S=me(v)?v:new o(v,null,N);if(S._root=S,!b)return new o(void 0,S,N);let P=typeof b=="string"&&Pu(b)?e(b,N,!1,null).children:no(b)?[b]:Array.isArray(b)?b:void 0,L=new o(P,S,N);if(P)return L;if(typeof b!="string")throw new TypeError("Unexpected type of selector");let M=b,R=E?typeof E=="string"?Pu(E)?new o([e(E,N,!1,null)],S,N):(M=`${E} ${M}`,S):me(E)?E:new o(Array.isArray(E)?E:[E],S,N):S;return R?R.find(M):L}return Object.assign(f,v0,{load:t,_root:c,_options:s,fn:o.prototype,prototype:o.prototype}),f}}function no(e){return!!e.name||e.type===fe.Root||e.type===fe.Text||e.type===fe.Comment}var so=new Set([65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]),$="\uFFFD",d;(function(e){e[e.EOF=-1]="EOF",e[e.NULL=0]="NULL",e[e.TABULATION=9]="TABULATION",e[e.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",e[e.LINE_FEED=10]="LINE_FEED",e[e.FORM_FEED=12]="FORM_FEED",e[e.SPACE=32]="SPACE",e[e.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",e[e.QUOTATION_MARK=34]="QUOTATION_MARK",e[e.AMPERSAND=38]="AMPERSAND",e[e.APOSTROPHE=39]="APOSTROPHE",e[e.HYPHEN_MINUS=45]="HYPHEN_MINUS",e[e.SOLIDUS=47]="SOLIDUS",e[e.DIGIT_0=48]="DIGIT_0",e[e.DIGIT_9=57]="DIGIT_9",e[e.SEMICOLON=59]="SEMICOLON",e[e.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",e[e.EQUALS_SIGN=61]="EQUALS_SIGN",e[e.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",e[e.QUESTION_MARK=63]="QUESTION_MARK",e[e.LATIN_CAPITAL_A=65]="LATIN_CAPITAL_A",e[e.LATIN_CAPITAL_Z=90]="LATIN_CAPITAL_Z",e[e.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",e[e.GRAVE_ACCENT=96]="GRAVE_ACCENT",e[e.LATIN_SMALL_A=97]="LATIN_SMALL_A",e[e.LATIN_SMALL_Z=122]="LATIN_SMALL_Z"})(d||(d={}));var ie={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function qt(e){return e>=55296&&e<=57343}function ri(e){return e>=56320&&e<=57343}function ii(e,u){return(e-55296)*1024+9216+u}function Yt(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function Vt(e){return e>=64976&&e<=65007||so.has(e)}var m;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(m||(m={}));var oo=65536,$t=class{constructor(u){this.handler=u,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=oo,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(u,t){let{line:a,col:r,offset:n}=this,s=r+t,c=n+t;return{code:u,startLine:a,endLine:a,startCol:s,endCol:s,startOffset:c,endOffset:c}}_err(u){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(u,0)))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(u){if(this.pos!==this.html.length-1){let t=this.html.charCodeAt(this.pos+1);if(ri(t))return this.pos++,this._addGap(),ii(u,t)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,d.EOF;return this._err(m.surrogateInInputStream),u}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0)}write(u,t){this.html.length>0?this.html+=u:this.html=u,this.endOfChunkHit=!1,this.lastChunkWritten=t}insertHtmlAtCurrentPos(u){this.html=this.html.substring(0,this.pos+1)+u+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(u,t){if(this.pos+u.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(t)return this.html.startsWith(u,this.pos);for(let a=0;a<u.length;a++)if((this.html.charCodeAt(this.pos+a)|32)!==u.charCodeAt(a))return!1;return!0}peek(u){let t=this.pos+u;if(t>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,d.EOF;let a=this.html.charCodeAt(t);return a===d.CARRIAGE_RETURN?d.LINE_FEED:a}advance(){if(this.pos++,this.isEol&&(this.isEol=!1,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,d.EOF;let u=this.html.charCodeAt(this.pos);return u===d.CARRIAGE_RETURN?(this.isEol=!0,this.skipNextNewLine=!0,d.LINE_FEED):u===d.LINE_FEED&&(this.isEol=!0,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()):(this.skipNextNewLine=!1,qt(u)&&(u=this._processSurrogate(u)),this.handler.onParseError===null||u>31&&u<127||u===d.LINE_FEED||u===d.CARRIAGE_RETURN||u>159&&u<64976||this._checkForProblematicCharacters(u),u)}_checkForProblematicCharacters(u){Yt(u)?this._err(m.controlCharacterInInputStream):Vt(u)&&this._err(m.noncharacterInInputStream)}retreat(u){for(this.pos-=u;this.pos<this.lastGapPos;)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=!1}};var Ta={};le(Ta,{TokenType:()=>B,getTokenAttr:()=>Vu});var B;(function(e){e[e.CHARACTER=0]="CHARACTER",e[e.NULL_CHARACTER=1]="NULL_CHARACTER",e[e.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",e[e.START_TAG=3]="START_TAG",e[e.END_TAG=4]="END_TAG",e[e.COMMENT=5]="COMMENT",e[e.DOCTYPE=6]="DOCTYPE",e[e.EOF=7]="EOF",e[e.HIBERNATION=8]="HIBERNATION"})(B||(B={}));function Vu(e,u){for(let t=e.attrs.length-1;t>=0;t--)if(e.attrs[t].name===u)return e.attrs[t].value;return null}var Gt=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(e=>e.charCodeAt(0)));var ga,lo=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),ni=(ga=String.fromCodePoint)!==null&&ga!==void 0?ga:function(e){let u="";return e>65535&&(e-=65536,u+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),u+=String.fromCharCode(e),u};function xa(e){var u;return e>=55296&&e<=57343||e>1114111?65533:(u=lo.get(e))!==null&&u!==void 0?u:e}var Z;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(Z||(Z={}));var ho=32,Ge;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(Ge||(Ge={}));function Aa(e){return e>=Z.ZERO&&e<=Z.NINE}function bo(e){return e>=Z.UPPER_A&&e<=Z.UPPER_F||e>=Z.LOWER_A&&e<=Z.LOWER_F}function po(e){return e>=Z.UPPER_A&&e<=Z.UPPER_Z||e>=Z.LOWER_A&&e<=Z.LOWER_Z||Aa(e)}function mo(e){return e===Z.EQUALS||po(e)}var J;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(J||(J={}));var Ce;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Ce||(Ce={}));var Wt=class{constructor(u,t,a){this.decodeTree=u,this.emitCodePoint=t,this.errors=a,this.state=J.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Ce.Strict}startEntity(u){this.decodeMode=u,this.state=J.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(u,t){switch(this.state){case J.EntityStart:return u.charCodeAt(t)===Z.NUM?(this.state=J.NumericStart,this.consumed+=1,this.stateNumericStart(u,t+1)):(this.state=J.NamedEntity,this.stateNamedEntity(u,t));case J.NumericStart:return this.stateNumericStart(u,t);case J.NumericDecimal:return this.stateNumericDecimal(u,t);case J.NumericHex:return this.stateNumericHex(u,t);case J.NamedEntity:return this.stateNamedEntity(u,t)}}stateNumericStart(u,t){return t>=u.length?-1:(u.charCodeAt(t)|ho)===Z.LOWER_X?(this.state=J.NumericHex,this.consumed+=1,this.stateNumericHex(u,t+1)):(this.state=J.NumericDecimal,this.stateNumericDecimal(u,t))}addToNumericResult(u,t,a,r){if(t!==a){let n=a-t;this.result=this.result*Math.pow(r,n)+Number.parseInt(u.substr(t,n),r),this.consumed+=n}}stateNumericHex(u,t){let a=t;for(;t<u.length;){let r=u.charCodeAt(t);if(Aa(r)||bo(r))t+=1;else return this.addToNumericResult(u,a,t,16),this.emitNumericEntity(r,3)}return this.addToNumericResult(u,a,t,16),-1}stateNumericDecimal(u,t){let a=t;for(;t<u.length;){let r=u.charCodeAt(t);if(Aa(r))t+=1;else return this.addToNumericResult(u,a,t,10),this.emitNumericEntity(r,2)}return this.addToNumericResult(u,a,t,10),-1}emitNumericEntity(u,t){var a;if(this.consumed<=t)return(a=this.errors)===null||a===void 0||a.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(u===Z.SEMI)this.consumed+=1;else if(this.decodeMode===Ce.Strict)return 0;return this.emitCodePoint(xa(this.result),this.consumed),this.errors&&(u!==Z.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(u,t){let{decodeTree:a}=this,r=a[this.treeIndex],n=(r&Ge.VALUE_LENGTH)>>14;for(;t<u.length;t++,this.excess++){let s=u.charCodeAt(t);if(this.treeIndex=Eo(a,r,this.treeIndex+Math.max(1,n),s),this.treeIndex<0)return this.result===0||this.decodeMode===Ce.Attribute&&(n===0||mo(s))?0:this.emitNotTerminatedNamedEntity();if(r=a[this.treeIndex],n=(r&Ge.VALUE_LENGTH)>>14,n!==0){if(s===Z.SEMI)return this.emitNamedEntityData(this.treeIndex,n,this.consumed+this.excess);this.decodeMode!==Ce.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var u;let{result:t,decodeTree:a}=this,r=(a[t]&Ge.VALUE_LENGTH)>>14;return this.emitNamedEntityData(t,r,this.consumed),(u=this.errors)===null||u===void 0||u.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(u,t,a){let{decodeTree:r}=this;return this.emitCodePoint(t===1?r[u]&~Ge.VALUE_LENGTH:r[u+1],a),t===3&&this.emitCodePoint(r[u+2],a),a}end(){var u;switch(this.state){case J.NamedEntity:return this.result!==0&&(this.decodeMode!==Ce.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case J.NumericDecimal:return this.emitNumericEntity(0,2);case J.NumericHex:return this.emitNumericEntity(0,3);case J.NumericStart:return(u=this.errors)===null||u===void 0||u.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case J.EntityStart:return 0}}};function Eo(e,u,t,a){let r=(u&Ge.BRANCH_LENGTH)>>7,n=u&Ge.JUMP_TABLE;if(r===0)return n!==0&&a===n?t:-1;if(n){let o=a-n;return o<0||o>=r?-1:e[t+o]-1}let s=t,c=s+r-1;for(;s<=c;){let o=s+c>>>1,f=e[o];if(f<a)s=o+1;else if(f>a)c=o-1;else return e[o+r]}return-1}var $u={};le($u,{ATTRS:()=>Se,DOCUMENT_MODE:()=>ue,NS:()=>T,NUMBERED_HEADERS:()=>_u,SPECIAL_ELEMENTS:()=>_a,TAG_ID:()=>i,TAG_NAMES:()=>p,getTagID:()=>We,hasUnescapedText:()=>Na});var T;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/"})(T||(T={}));var Se;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size"})(Se||(Se={}));var ue;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks"})(ue||(ue={}));var p;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SEARCH="search",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp"})(p||(p={}));var i;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SEARCH=94]="SEARCH",e[e.SECTION=95]="SECTION",e[e.SELECT=96]="SELECT",e[e.SOURCE=97]="SOURCE",e[e.SMALL=98]="SMALL",e[e.SPAN=99]="SPAN",e[e.STRIKE=100]="STRIKE",e[e.STRONG=101]="STRONG",e[e.STYLE=102]="STYLE",e[e.SUB=103]="SUB",e[e.SUMMARY=104]="SUMMARY",e[e.SUP=105]="SUP",e[e.TABLE=106]="TABLE",e[e.TBODY=107]="TBODY",e[e.TEMPLATE=108]="TEMPLATE",e[e.TEXTAREA=109]="TEXTAREA",e[e.TFOOT=110]="TFOOT",e[e.TD=111]="TD",e[e.TH=112]="TH",e[e.THEAD=113]="THEAD",e[e.TITLE=114]="TITLE",e[e.TR=115]="TR",e[e.TRACK=116]="TRACK",e[e.TT=117]="TT",e[e.U=118]="U",e[e.UL=119]="UL",e[e.SVG=120]="SVG",e[e.VAR=121]="VAR",e[e.WBR=122]="WBR",e[e.XMP=123]="XMP"})(i||(i={}));var To=new Map([[p.A,i.A],[p.ADDRESS,i.ADDRESS],[p.ANNOTATION_XML,i.ANNOTATION_XML],[p.APPLET,i.APPLET],[p.AREA,i.AREA],[p.ARTICLE,i.ARTICLE],[p.ASIDE,i.ASIDE],[p.B,i.B],[p.BASE,i.BASE],[p.BASEFONT,i.BASEFONT],[p.BGSOUND,i.BGSOUND],[p.BIG,i.BIG],[p.BLOCKQUOTE,i.BLOCKQUOTE],[p.BODY,i.BODY],[p.BR,i.BR],[p.BUTTON,i.BUTTON],[p.CAPTION,i.CAPTION],[p.CENTER,i.CENTER],[p.CODE,i.CODE],[p.COL,i.COL],[p.COLGROUP,i.COLGROUP],[p.DD,i.DD],[p.DESC,i.DESC],[p.DETAILS,i.DETAILS],[p.DIALOG,i.DIALOG],[p.DIR,i.DIR],[p.DIV,i.DIV],[p.DL,i.DL],[p.DT,i.DT],[p.EM,i.EM],[p.EMBED,i.EMBED],[p.FIELDSET,i.FIELDSET],[p.FIGCAPTION,i.FIGCAPTION],[p.FIGURE,i.FIGURE],[p.FONT,i.FONT],[p.FOOTER,i.FOOTER],[p.FOREIGN_OBJECT,i.FOREIGN_OBJECT],[p.FORM,i.FORM],[p.FRAME,i.FRAME],[p.FRAMESET,i.FRAMESET],[p.H1,i.H1],[p.H2,i.H2],[p.H3,i.H3],[p.H4,i.H4],[p.H5,i.H5],[p.H6,i.H6],[p.HEAD,i.HEAD],[p.HEADER,i.HEADER],[p.HGROUP,i.HGROUP],[p.HR,i.HR],[p.HTML,i.HTML],[p.I,i.I],[p.IMG,i.IMG],[p.IMAGE,i.IMAGE],[p.INPUT,i.INPUT],[p.IFRAME,i.IFRAME],[p.KEYGEN,i.KEYGEN],[p.LABEL,i.LABEL],[p.LI,i.LI],[p.LINK,i.LINK],[p.LISTING,i.LISTING],[p.MAIN,i.MAIN],[p.MALIGNMARK,i.MALIGNMARK],[p.MARQUEE,i.MARQUEE],[p.MATH,i.MATH],[p.MENU,i.MENU],[p.META,i.META],[p.MGLYPH,i.MGLYPH],[p.MI,i.MI],[p.MO,i.MO],[p.MN,i.MN],[p.MS,i.MS],[p.MTEXT,i.MTEXT],[p.NAV,i.NAV],[p.NOBR,i.NOBR],[p.NOFRAMES,i.NOFRAMES],[p.NOEMBED,i.NOEMBED],[p.NOSCRIPT,i.NOSCRIPT],[p.OBJECT,i.OBJECT],[p.OL,i.OL],[p.OPTGROUP,i.OPTGROUP],[p.OPTION,i.OPTION],[p.P,i.P],[p.PARAM,i.PARAM],[p.PLAINTEXT,i.PLAINTEXT],[p.PRE,i.PRE],[p.RB,i.RB],[p.RP,i.RP],[p.RT,i.RT],[p.RTC,i.RTC],[p.RUBY,i.RUBY],[p.S,i.S],[p.SCRIPT,i.SCRIPT],[p.SEARCH,i.SEARCH],[p.SECTION,i.SECTION],[p.SELECT,i.SELECT],[p.SOURCE,i.SOURCE],[p.SMALL,i.SMALL],[p.SPAN,i.SPAN],[p.STRIKE,i.STRIKE],[p.STRONG,i.STRONG],[p.STYLE,i.STYLE],[p.SUB,i.SUB],[p.SUMMARY,i.SUMMARY],[p.SUP,i.SUP],[p.TABLE,i.TABLE],[p.TBODY,i.TBODY],[p.TEMPLATE,i.TEMPLATE],[p.TEXTAREA,i.TEXTAREA],[p.TFOOT,i.TFOOT],[p.TD,i.TD],[p.TH,i.TH],[p.THEAD,i.THEAD],[p.TITLE,i.TITLE],[p.TR,i.TR],[p.TRACK,i.TRACK],[p.TT,i.TT],[p.U,i.U],[p.UL,i.UL],[p.SVG,i.SVG],[p.VAR,i.VAR],[p.WBR,i.WBR],[p.XMP,i.XMP]]);function We(e){var u;return(u=To.get(e))!==null&&u!==void 0?u:i.UNKNOWN}var A=i,_a={[T.HTML]:new Set([A.ADDRESS,A.APPLET,A.AREA,A.ARTICLE,A.ASIDE,A.BASE,A.BASEFONT,A.BGSOUND,A.BLOCKQUOTE,A.BODY,A.BR,A.BUTTON,A.CAPTION,A.CENTER,A.COL,A.COLGROUP,A.DD,A.DETAILS,A.DIR,A.DIV,A.DL,A.DT,A.EMBED,A.FIELDSET,A.FIGCAPTION,A.FIGURE,A.FOOTER,A.FORM,A.FRAME,A.FRAMESET,A.H1,A.H2,A.H3,A.H4,A.H5,A.H6,A.HEAD,A.HEADER,A.HGROUP,A.HR,A.HTML,A.IFRAME,A.IMG,A.INPUT,A.LI,A.LINK,A.LISTING,A.MAIN,A.MARQUEE,A.MENU,A.META,A.NAV,A.NOEMBED,A.NOFRAMES,A.NOSCRIPT,A.OBJECT,A.OL,A.P,A.PARAM,A.PLAINTEXT,A.PRE,A.SCRIPT,A.SECTION,A.SELECT,A.SOURCE,A.STYLE,A.SUMMARY,A.TABLE,A.TBODY,A.TD,A.TEMPLATE,A.TEXTAREA,A.TFOOT,A.TH,A.THEAD,A.TITLE,A.TR,A.TRACK,A.UL,A.WBR,A.XMP]),[T.MATHML]:new Set([A.MI,A.MO,A.MN,A.MS,A.MTEXT,A.ANNOTATION_XML]),[T.SVG]:new Set([A.TITLE,A.FOREIGN_OBJECT,A.DESC]),[T.XLINK]:new Set,[T.XML]:new Set,[T.XMLNS]:new Set},_u=new Set([A.H1,A.H2,A.H3,A.H4,A.H5,A.H6]),go=new Set([p.STYLE,p.SCRIPT,p.XMP,p.IFRAME,p.NOEMBED,p.NOFRAMES,p.PLAINTEXT]);function Na(e,u){return go.has(e)||u&&e===p.NOSCRIPT}var l;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(l||(l={}));var te={DATA:l.DATA,RCDATA:l.RCDATA,RAWTEXT:l.RAWTEXT,SCRIPT_DATA:l.SCRIPT_DATA,PLAINTEXT:l.PLAINTEXT,CDATA_SECTION:l.CDATA_SECTION};function xo(e){return e>=d.DIGIT_0&&e<=d.DIGIT_9}function Gu(e){return e>=d.LATIN_CAPITAL_A&&e<=d.LATIN_CAPITAL_Z}function Ao(e){return e>=d.LATIN_SMALL_A&&e<=d.LATIN_SMALL_Z}function Qe(e){return Ao(e)||Gu(e)}function si(e){return Qe(e)||xo(e)}function Qt(e){return e+32}function oi(e){return e===d.SPACE||e===d.LINE_FEED||e===d.TABULATION||e===d.FORM_FEED}function ci(e){return oi(e)||e===d.SOLIDUS||e===d.GREATER_THAN_SIGN}function _o(e){return e===d.NULL?m.nullCharacterReference:e>1114111?m.characterReferenceOutsideUnicodeRange:qt(e)?m.surrogateCharacterReference:Vt(e)?m.noncharacterCharacterReference:Yt(e)||e===d.CARRIAGE_RETURN?m.controlCharacterReference:null}var Wu=class{constructor(u,t){this.options=u,this.handler=t,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=l.DATA,this.returnState=l.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new $t(t),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new Wt(Gt,(a,r)=>{this.preprocessor.pos=this.entityStartPos+r-1,this._flushCodePointConsumedAsCharacterReference(a)},t.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(m.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:a=>{this._err(m.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+a)},validateNumericCharacterReference:a=>{let r=_o(a);r&&this._err(r,1)}}:void 0)}_err(u,t=0){var a,r;(r=(a=this.handler).onParseError)===null||r===void 0||r.call(a,this.preprocessor.getError(u,t))}getCurrentLocation(u){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-u,startOffset:this.preprocessor.offset-u,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=!0;this.active&&!this.paused;){this.consumedAfterSnapshot=0;let u=this._consume();this._ensureHibernation()||this._callState(u)}this.inLoop=!1}}pause(){this.paused=!0}resume(u){if(!this.paused)throw new Error("Parser was already resumed");this.paused=!1,!this.inLoop&&(this._runParsingLoop(),this.paused||u==null||u())}write(u,t,a){this.active=!0,this.preprocessor.write(u,t),this._runParsingLoop(),this.paused||a==null||a()}insertHtmlAtCurrentPos(u){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(u),this._runParsingLoop()}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0):!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(u){this.consumedAfterSnapshot+=u;for(let t=0;t<u;t++)this.preprocessor.advance()}_consumeSequenceIfMatch(u,t){return this.preprocessor.startsWith(u,t)?(this._advanceBy(u.length-1),!0):!1}_createStartTagToken(){this.currentToken={type:B.START_TAG,tagName:"",tagID:i.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(1)}}_createEndTagToken(){this.currentToken={type:B.END_TAG,tagName:"",tagID:i.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(2)}}_createCommentToken(u){this.currentToken={type:B.COMMENT,data:"",location:this.getCurrentLocation(u)}}_createDoctypeToken(u){this.currentToken={type:B.DOCTYPE,name:u,forceQuirks:!1,publicId:null,systemId:null,location:this.currentLocation}}_createCharacterToken(u,t){this.currentCharacterToken={type:u,chars:t,location:this.currentLocation}}_createAttr(u){this.currentAttr={name:u,value:""},this.currentLocation=this.getCurrentLocation(0)}_leaveAttrName(){var u,t;let a=this.currentToken;if(Vu(a,this.currentAttr.name)===null){if(a.attrs.push(this.currentAttr),a.location&&this.currentLocation){let r=(u=(t=a.location).attrs)!==null&&u!==void 0?u:t.attrs=Object.create(null);r[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue()}}else this._err(m.duplicateAttribute)}_leaveAttrValue(){this.currentLocation&&(this.currentLocation.endLine=this.preprocessor.line,this.currentLocation.endCol=this.preprocessor.col,this.currentLocation.endOffset=this.preprocessor.offset)}prepareToken(u){this._emitCurrentCharacterToken(u.location),this.currentToken=null,u.location&&(u.location.endLine=this.preprocessor.line,u.location.endCol=this.preprocessor.col+1,u.location.endOffset=this.preprocessor.offset+1),this.currentLocation=this.getCurrentLocation(-1)}emitCurrentTagToken(){let u=this.currentToken;this.prepareToken(u),u.tagID=We(u.tagName),u.type===B.START_TAG?(this.lastStartTagName=u.tagName,this.handler.onStartTag(u)):(u.attrs.length>0&&this._err(m.endTagWithAttributes),u.selfClosing&&this._err(m.endTagWithTrailingSolidus),this.handler.onEndTag(u)),this.preprocessor.dropParsedChunk()}emitCurrentComment(u){this.prepareToken(u),this.handler.onComment(u),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(u){this.prepareToken(u),this.handler.onDoctype(u),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(u){if(this.currentCharacterToken){switch(u&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=u.startLine,this.currentCharacterToken.location.endCol=u.startCol,this.currentCharacterToken.location.endOffset=u.startOffset),this.currentCharacterToken.type){case B.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case B.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case B.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){let u=this.getCurrentLocation(0);u&&(u.endLine=u.startLine,u.endCol=u.startCol,u.endOffset=u.startOffset),this._emitCurrentCharacterToken(u),this.handler.onEof({type:B.EOF,location:u}),this.active=!1}_appendCharToCurrentCharacterToken(u,t){if(this.currentCharacterToken)if(this.currentCharacterToken.type===u){this.currentCharacterToken.chars+=t;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(u,t)}_emitCodePoint(u){let t=oi(u)?B.WHITESPACE_CHARACTER:u===d.NULL?B.NULL_CHARACTER:B.CHARACTER;this._appendCharToCurrentCharacterToken(t,String.fromCodePoint(u))}_emitChars(u){this._appendCharToCurrentCharacterToken(B.CHARACTER,u)}_startCharacterReference(){this.returnState=this.state,this.state=l.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?Ce.Attribute:Ce.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===l.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===l.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===l.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(u){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(u):this._emitCodePoint(u)}_callState(u){switch(this.state){case l.DATA:{this._stateData(u);break}case l.RCDATA:{this._stateRcdata(u);break}case l.RAWTEXT:{this._stateRawtext(u);break}case l.SCRIPT_DATA:{this._stateScriptData(u);break}case l.PLAINTEXT:{this._statePlaintext(u);break}case l.TAG_OPEN:{this._stateTagOpen(u);break}case l.END_TAG_OPEN:{this._stateEndTagOpen(u);break}case l.TAG_NAME:{this._stateTagName(u);break}case l.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(u);break}case l.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(u);break}case l.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(u);break}case l.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(u);break}case l.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(u);break}case l.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(u);break}case l.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(u);break}case l.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(u);break}case l.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(u);break}case l.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(u);break}case l.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(u);break}case l.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(u);break}case l.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(u);break}case l.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(u);break}case l.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(u);break}case l.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(u);break}case l.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(u);break}case l.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(u);break}case l.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(u);break}case l.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(u);break}case l.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(u);break}case l.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(u);break}case l.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(u);break}case l.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(u);break}case l.ATTRIBUTE_NAME:{this._stateAttributeName(u);break}case l.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(u);break}case l.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(u);break}case l.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(u);break}case l.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(u);break}case l.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(u);break}case l.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(u);break}case l.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(u);break}case l.BOGUS_COMMENT:{this._stateBogusComment(u);break}case l.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(u);break}case l.COMMENT_START:{this._stateCommentStart(u);break}case l.COMMENT_START_DASH:{this._stateCommentStartDash(u);break}case l.COMMENT:{this._stateComment(u);break}case l.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(u);break}case l.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(u);break}case l.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(u);break}case l.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(u);break}case l.COMMENT_END_DASH:{this._stateCommentEndDash(u);break}case l.COMMENT_END:{this._stateCommentEnd(u);break}case l.COMMENT_END_BANG:{this._stateCommentEndBang(u);break}case l.DOCTYPE:{this._stateDoctype(u);break}case l.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(u);break}case l.DOCTYPE_NAME:{this._stateDoctypeName(u);break}case l.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(u);break}case l.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(u);break}case l.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(u);break}case l.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(u);break}case l.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(u);break}case l.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(u);break}case l.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(u);break}case l.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(u);break}case l.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(u);break}case l.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(u);break}case l.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(u);break}case l.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(u);break}case l.BOGUS_DOCTYPE:{this._stateBogusDoctype(u);break}case l.CDATA_SECTION:{this._stateCdataSection(u);break}case l.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(u);break}case l.CDATA_SECTION_END:{this._stateCdataSectionEnd(u);break}case l.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case l.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(u);break}default:throw new Error("Unknown state")}}_stateData(u){switch(u){case d.LESS_THAN_SIGN:{this.state=l.TAG_OPEN;break}case d.AMPERSAND:{this._startCharacterReference();break}case d.NULL:{this._err(m.unexpectedNullCharacter),this._emitCodePoint(u);break}case d.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(u)}}_stateRcdata(u){switch(u){case d.AMPERSAND:{this._startCharacterReference();break}case d.LESS_THAN_SIGN:{this.state=l.RCDATA_LESS_THAN_SIGN;break}case d.NULL:{this._err(m.unexpectedNullCharacter),this._emitChars($);break}case d.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(u)}}_stateRawtext(u){switch(u){case d.LESS_THAN_SIGN:{this.state=l.RAWTEXT_LESS_THAN_SIGN;break}case d.NULL:{this._err(m.unexpectedNullCharacter),this._emitChars($);break}case d.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(u)}}_stateScriptData(u){switch(u){case d.LESS_THAN_SIGN:{this.state=l.SCRIPT_DATA_LESS_THAN_SIGN;break}case d.NULL:{this._err(m.unexpectedNullCharacter),this._emitChars($);break}case d.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(u)}}_statePlaintext(u){switch(u){case d.NULL:{this._err(m.unexpectedNullCharacter),this._emitChars($);break}case d.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(u)}}_stateTagOpen(u){if(Qe(u))this._createStartTagToken(),this.state=l.TAG_NAME,this._stateTagName(u);else switch(u){case d.EXCLAMATION_MARK:{this.state=l.MARKUP_DECLARATION_OPEN;break}case d.SOLIDUS:{this.state=l.END_TAG_OPEN;break}case d.QUESTION_MARK:{this._err(m.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=l.BOGUS_COMMENT,this._stateBogusComment(u);break}case d.EOF:{this._err(m.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(m.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=l.DATA,this._stateData(u)}}_stateEndTagOpen(u){if(Qe(u))this._createEndTagToken(),this.state=l.TAG_NAME,this._stateTagName(u);else switch(u){case d.GREATER_THAN_SIGN:{this._err(m.missingEndTagName),this.state=l.DATA;break}case d.EOF:{this._err(m.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(m.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=l.BOGUS_COMMENT,this._stateBogusComment(u)}}_stateTagName(u){let t=this.currentToken;switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:{this.state=l.BEFORE_ATTRIBUTE_NAME;break}case d.SOLIDUS:{this.state=l.SELF_CLOSING_START_TAG;break}case d.GREATER_THAN_SIGN:{this.state=l.DATA,this.emitCurrentTagToken();break}case d.NULL:{this._err(m.unexpectedNullCharacter),t.tagName+=$;break}case d.EOF:{this._err(m.eofInTag),this._emitEOFToken();break}default:t.tagName+=String.fromCodePoint(Gu(u)?Qt(u):u)}}_stateRcdataLessThanSign(u){u===d.SOLIDUS?this.state=l.RCDATA_END_TAG_OPEN:(this._emitChars("<"),this.state=l.RCDATA,this._stateRcdata(u))}_stateRcdataEndTagOpen(u){Qe(u)?(this.state=l.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(u)):(this._emitChars("</"),this.state=l.RCDATA,this._stateRcdata(u))}handleSpecialEndTag(u){if(!this.preprocessor.startsWith(this.lastStartTagName,!1))return!this._ensureHibernation();this._createEndTagToken();let t=this.currentToken;switch(t.tagName=this.lastStartTagName,this.preprocessor.peek(this.lastStartTagName.length)){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=l.BEFORE_ATTRIBUTE_NAME,!1;case d.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=l.SELF_CLOSING_START_TAG,!1;case d.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=l.DATA,!1;default:return!this._ensureHibernation()}}_stateRcdataEndTagName(u){this.handleSpecialEndTag(u)&&(this._emitChars("</"),this.state=l.RCDATA,this._stateRcdata(u))}_stateRawtextLessThanSign(u){u===d.SOLIDUS?this.state=l.RAWTEXT_END_TAG_OPEN:(this._emitChars("<"),this.state=l.RAWTEXT,this._stateRawtext(u))}_stateRawtextEndTagOpen(u){Qe(u)?(this.state=l.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(u)):(this._emitChars("</"),this.state=l.RAWTEXT,this._stateRawtext(u))}_stateRawtextEndTagName(u){this.handleSpecialEndTag(u)&&(this._emitChars("</"),this.state=l.RAWTEXT,this._stateRawtext(u))}_stateScriptDataLessThanSign(u){switch(u){case d.SOLIDUS:{this.state=l.SCRIPT_DATA_END_TAG_OPEN;break}case d.EXCLAMATION_MARK:{this.state=l.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=l.SCRIPT_DATA,this._stateScriptData(u)}}_stateScriptDataEndTagOpen(u){Qe(u)?(this.state=l.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(u)):(this._emitChars("</"),this.state=l.SCRIPT_DATA,this._stateScriptData(u))}_stateScriptDataEndTagName(u){this.handleSpecialEndTag(u)&&(this._emitChars("</"),this.state=l.SCRIPT_DATA,this._stateScriptData(u))}_stateScriptDataEscapeStart(u){u===d.HYPHEN_MINUS?(this.state=l.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-")):(this.state=l.SCRIPT_DATA,this._stateScriptData(u))}_stateScriptDataEscapeStartDash(u){u===d.HYPHEN_MINUS?(this.state=l.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-")):(this.state=l.SCRIPT_DATA,this._stateScriptData(u))}_stateScriptDataEscaped(u){switch(u){case d.HYPHEN_MINUS:{this.state=l.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case d.LESS_THAN_SIGN:{this.state=l.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case d.NULL:{this._err(m.unexpectedNullCharacter),this._emitChars($);break}case d.EOF:{this._err(m.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(u)}}_stateScriptDataEscapedDash(u){switch(u){case d.HYPHEN_MINUS:{this.state=l.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case d.LESS_THAN_SIGN:{this.state=l.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case d.NULL:{this._err(m.unexpectedNullCharacter),this.state=l.SCRIPT_DATA_ESCAPED,this._emitChars($);break}case d.EOF:{this._err(m.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=l.SCRIPT_DATA_ESCAPED,this._emitCodePoint(u)}}_stateScriptDataEscapedDashDash(u){switch(u){case d.HYPHEN_MINUS:{this._emitChars("-");break}case d.LESS_THAN_SIGN:{this.state=l.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case d.GREATER_THAN_SIGN:{this.state=l.SCRIPT_DATA,this._emitChars(">");break}case d.NULL:{this._err(m.unexpectedNullCharacter),this.state=l.SCRIPT_DATA_ESCAPED,this._emitChars($);break}case d.EOF:{this._err(m.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=l.SCRIPT_DATA_ESCAPED,this._emitCodePoint(u)}}_stateScriptDataEscapedLessThanSign(u){u===d.SOLIDUS?this.state=l.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:Qe(u)?(this._emitChars("<"),this.state=l.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(u)):(this._emitChars("<"),this.state=l.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(u))}_stateScriptDataEscapedEndTagOpen(u){Qe(u)?(this.state=l.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(u)):(this._emitChars("</"),this.state=l.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(u))}_stateScriptDataEscapedEndTagName(u){this.handleSpecialEndTag(u)&&(this._emitChars("</"),this.state=l.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(u))}_stateScriptDataDoubleEscapeStart(u){if(this.preprocessor.startsWith(ie.SCRIPT,!1)&&ci(this.preprocessor.peek(ie.SCRIPT.length))){this._emitCodePoint(u);for(let t=0;t<ie.SCRIPT.length;t++)this._emitCodePoint(this._consume());this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED}else this._ensureHibernation()||(this.state=l.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(u))}_stateScriptDataDoubleEscaped(u){switch(u){case d.HYPHEN_MINUS:{this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case d.LESS_THAN_SIGN:{this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case d.NULL:{this._err(m.unexpectedNullCharacter),this._emitChars($);break}case d.EOF:{this._err(m.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(u)}}_stateScriptDataDoubleEscapedDash(u){switch(u){case d.HYPHEN_MINUS:{this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case d.LESS_THAN_SIGN:{this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case d.NULL:{this._err(m.unexpectedNullCharacter),this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars($);break}case d.EOF:{this._err(m.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(u)}}_stateScriptDataDoubleEscapedDashDash(u){switch(u){case d.HYPHEN_MINUS:{this._emitChars("-");break}case d.LESS_THAN_SIGN:{this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case d.GREATER_THAN_SIGN:{this.state=l.SCRIPT_DATA,this._emitChars(">");break}case d.NULL:{this._err(m.unexpectedNullCharacter),this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars($);break}case d.EOF:{this._err(m.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(u)}}_stateScriptDataDoubleEscapedLessThanSign(u){u===d.SOLIDUS?(this.state=l.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(u))}_stateScriptDataDoubleEscapeEnd(u){if(this.preprocessor.startsWith(ie.SCRIPT,!1)&&ci(this.preprocessor.peek(ie.SCRIPT.length))){this._emitCodePoint(u);for(let t=0;t<ie.SCRIPT.length;t++)this._emitCodePoint(this._consume());this.state=l.SCRIPT_DATA_ESCAPED}else this._ensureHibernation()||(this.state=l.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(u))}_stateBeforeAttributeName(u){switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:break;case d.SOLIDUS:case d.GREATER_THAN_SIGN:case d.EOF:{this.state=l.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(u);break}case d.EQUALS_SIGN:{this._err(m.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=l.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=l.ATTRIBUTE_NAME,this._stateAttributeName(u)}}_stateAttributeName(u){switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:case d.SOLIDUS:case d.GREATER_THAN_SIGN:case d.EOF:{this._leaveAttrName(),this.state=l.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(u);break}case d.EQUALS_SIGN:{this._leaveAttrName(),this.state=l.BEFORE_ATTRIBUTE_VALUE;break}case d.QUOTATION_MARK:case d.APOSTROPHE:case d.LESS_THAN_SIGN:{this._err(m.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(u);break}case d.NULL:{this._err(m.unexpectedNullCharacter),this.currentAttr.name+=$;break}default:this.currentAttr.name+=String.fromCodePoint(Gu(u)?Qt(u):u)}}_stateAfterAttributeName(u){switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:break;case d.SOLIDUS:{this.state=l.SELF_CLOSING_START_TAG;break}case d.EQUALS_SIGN:{this.state=l.BEFORE_ATTRIBUTE_VALUE;break}case d.GREATER_THAN_SIGN:{this.state=l.DATA,this.emitCurrentTagToken();break}case d.EOF:{this._err(m.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=l.ATTRIBUTE_NAME,this._stateAttributeName(u)}}_stateBeforeAttributeValue(u){switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:break;case d.QUOTATION_MARK:{this.state=l.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case d.APOSTROPHE:{this.state=l.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case d.GREATER_THAN_SIGN:{this._err(m.missingAttributeValue),this.state=l.DATA,this.emitCurrentTagToken();break}default:this.state=l.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(u)}}_stateAttributeValueDoubleQuoted(u){switch(u){case d.QUOTATION_MARK:{this.state=l.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case d.AMPERSAND:{this._startCharacterReference();break}case d.NULL:{this._err(m.unexpectedNullCharacter),this.currentAttr.value+=$;break}case d.EOF:{this._err(m.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(u)}}_stateAttributeValueSingleQuoted(u){switch(u){case d.APOSTROPHE:{this.state=l.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case d.AMPERSAND:{this._startCharacterReference();break}case d.NULL:{this._err(m.unexpectedNullCharacter),this.currentAttr.value+=$;break}case d.EOF:{this._err(m.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(u)}}_stateAttributeValueUnquoted(u){switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:{this._leaveAttrValue(),this.state=l.BEFORE_ATTRIBUTE_NAME;break}case d.AMPERSAND:{this._startCharacterReference();break}case d.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=l.DATA,this.emitCurrentTagToken();break}case d.NULL:{this._err(m.unexpectedNullCharacter),this.currentAttr.value+=$;break}case d.QUOTATION_MARK:case d.APOSTROPHE:case d.LESS_THAN_SIGN:case d.EQUALS_SIGN:case d.GRAVE_ACCENT:{this._err(m.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(u);break}case d.EOF:{this._err(m.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(u)}}_stateAfterAttributeValueQuoted(u){switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:{this._leaveAttrValue(),this.state=l.BEFORE_ATTRIBUTE_NAME;break}case d.SOLIDUS:{this._leaveAttrValue(),this.state=l.SELF_CLOSING_START_TAG;break}case d.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=l.DATA,this.emitCurrentTagToken();break}case d.EOF:{this._err(m.eofInTag),this._emitEOFToken();break}default:this._err(m.missingWhitespaceBetweenAttributes),this.state=l.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(u)}}_stateSelfClosingStartTag(u){switch(u){case d.GREATER_THAN_SIGN:{let t=this.currentToken;t.selfClosing=!0,this.state=l.DATA,this.emitCurrentTagToken();break}case d.EOF:{this._err(m.eofInTag),this._emitEOFToken();break}default:this._err(m.unexpectedSolidusInTag),this.state=l.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(u)}}_stateBogusComment(u){let t=this.currentToken;switch(u){case d.GREATER_THAN_SIGN:{this.state=l.DATA,this.emitCurrentComment(t);break}case d.EOF:{this.emitCurrentComment(t),this._emitEOFToken();break}case d.NULL:{this._err(m.unexpectedNullCharacter),t.data+=$;break}default:t.data+=String.fromCodePoint(u)}}_stateMarkupDeclarationOpen(u){this._consumeSequenceIfMatch(ie.DASH_DASH,!0)?(this._createCommentToken(ie.DASH_DASH.length+1),this.state=l.COMMENT_START):this._consumeSequenceIfMatch(ie.DOCTYPE,!1)?(this.currentLocation=this.getCurrentLocation(ie.DOCTYPE.length+1),this.state=l.DOCTYPE):this._consumeSequenceIfMatch(ie.CDATA_START,!0)?this.inForeignNode?this.state=l.CDATA_SECTION:(this._err(m.cdataInHtmlContent),this._createCommentToken(ie.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=l.BOGUS_COMMENT):this._ensureHibernation()||(this._err(m.incorrectlyOpenedComment),this._createCommentToken(2),this.state=l.BOGUS_COMMENT,this._stateBogusComment(u))}_stateCommentStart(u){switch(u){case d.HYPHEN_MINUS:{this.state=l.COMMENT_START_DASH;break}case d.GREATER_THAN_SIGN:{this._err(m.abruptClosingOfEmptyComment),this.state=l.DATA;let t=this.currentToken;this.emitCurrentComment(t);break}default:this.state=l.COMMENT,this._stateComment(u)}}_stateCommentStartDash(u){let t=this.currentToken;switch(u){case d.HYPHEN_MINUS:{this.state=l.COMMENT_END;break}case d.GREATER_THAN_SIGN:{this._err(m.abruptClosingOfEmptyComment),this.state=l.DATA,this.emitCurrentComment(t);break}case d.EOF:{this._err(m.eofInComment),this.emitCurrentComment(t),this._emitEOFToken();break}default:t.data+="-",this.state=l.COMMENT,this._stateComment(u)}}_stateComment(u){let t=this.currentToken;switch(u){case d.HYPHEN_MINUS:{this.state=l.COMMENT_END_DASH;break}case d.LESS_THAN_SIGN:{t.data+="<",this.state=l.COMMENT_LESS_THAN_SIGN;break}case d.NULL:{this._err(m.unexpectedNullCharacter),t.data+=$;break}case d.EOF:{this._err(m.eofInComment),this.emitCurrentComment(t),this._emitEOFToken();break}default:t.data+=String.fromCodePoint(u)}}_stateCommentLessThanSign(u){let t=this.currentToken;switch(u){case d.EXCLAMATION_MARK:{t.data+="!",this.state=l.COMMENT_LESS_THAN_SIGN_BANG;break}case d.LESS_THAN_SIGN:{t.data+="<";break}default:this.state=l.COMMENT,this._stateComment(u)}}_stateCommentLessThanSignBang(u){u===d.HYPHEN_MINUS?this.state=l.COMMENT_LESS_THAN_SIGN_BANG_DASH:(this.state=l.COMMENT,this._stateComment(u))}_stateCommentLessThanSignBangDash(u){u===d.HYPHEN_MINUS?this.state=l.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:(this.state=l.COMMENT_END_DASH,this._stateCommentEndDash(u))}_stateCommentLessThanSignBangDashDash(u){u!==d.GREATER_THAN_SIGN&&u!==d.EOF&&this._err(m.nestedComment),this.state=l.COMMENT_END,this._stateCommentEnd(u)}_stateCommentEndDash(u){let t=this.currentToken;switch(u){case d.HYPHEN_MINUS:{this.state=l.COMMENT_END;break}case d.EOF:{this._err(m.eofInComment),this.emitCurrentComment(t),this._emitEOFToken();break}default:t.data+="-",this.state=l.COMMENT,this._stateComment(u)}}_stateCommentEnd(u){let t=this.currentToken;switch(u){case d.GREATER_THAN_SIGN:{this.state=l.DATA,this.emitCurrentComment(t);break}case d.EXCLAMATION_MARK:{this.state=l.COMMENT_END_BANG;break}case d.HYPHEN_MINUS:{t.data+="-";break}case d.EOF:{this._err(m.eofInComment),this.emitCurrentComment(t),this._emitEOFToken();break}default:t.data+="--",this.state=l.COMMENT,this._stateComment(u)}}_stateCommentEndBang(u){let t=this.currentToken;switch(u){case d.HYPHEN_MINUS:{t.data+="--!",this.state=l.COMMENT_END_DASH;break}case d.GREATER_THAN_SIGN:{this._err(m.incorrectlyClosedComment),this.state=l.DATA,this.emitCurrentComment(t);break}case d.EOF:{this._err(m.eofInComment),this.emitCurrentComment(t),this._emitEOFToken();break}default:t.data+="--!",this.state=l.COMMENT,this._stateComment(u)}}_stateDoctype(u){switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:{this.state=l.BEFORE_DOCTYPE_NAME;break}case d.GREATER_THAN_SIGN:{this.state=l.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(u);break}case d.EOF:{this._err(m.eofInDoctype),this._createDoctypeToken(null);let t=this.currentToken;t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:this._err(m.missingWhitespaceBeforeDoctypeName),this.state=l.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(u)}}_stateBeforeDoctypeName(u){if(Gu(u))this._createDoctypeToken(String.fromCharCode(Qt(u))),this.state=l.DOCTYPE_NAME;else switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:break;case d.NULL:{this._err(m.unexpectedNullCharacter),this._createDoctypeToken($),this.state=l.DOCTYPE_NAME;break}case d.GREATER_THAN_SIGN:{this._err(m.missingDoctypeName),this._createDoctypeToken(null);let t=this.currentToken;t.forceQuirks=!0,this.emitCurrentDoctype(t),this.state=l.DATA;break}case d.EOF:{this._err(m.eofInDoctype),this._createDoctypeToken(null);let t=this.currentToken;t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:this._createDoctypeToken(String.fromCodePoint(u)),this.state=l.DOCTYPE_NAME}}_stateDoctypeName(u){let t=this.currentToken;switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:{this.state=l.AFTER_DOCTYPE_NAME;break}case d.GREATER_THAN_SIGN:{this.state=l.DATA,this.emitCurrentDoctype(t);break}case d.NULL:{this._err(m.unexpectedNullCharacter),t.name+=$;break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:t.name+=String.fromCodePoint(Gu(u)?Qt(u):u)}}_stateAfterDoctypeName(u){let t=this.currentToken;switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:break;case d.GREATER_THAN_SIGN:{this.state=l.DATA,this.emitCurrentDoctype(t);break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:this._consumeSequenceIfMatch(ie.PUBLIC,!1)?this.state=l.AFTER_DOCTYPE_PUBLIC_KEYWORD:this._consumeSequenceIfMatch(ie.SYSTEM,!1)?this.state=l.AFTER_DOCTYPE_SYSTEM_KEYWORD:this._ensureHibernation()||(this._err(m.invalidCharacterSequenceAfterDoctypeName),t.forceQuirks=!0,this.state=l.BOGUS_DOCTYPE,this._stateBogusDoctype(u))}}_stateAfterDoctypePublicKeyword(u){let t=this.currentToken;switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:{this.state=l.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case d.QUOTATION_MARK:{this._err(m.missingWhitespaceAfterDoctypePublicKeyword),t.publicId="",this.state=l.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case d.APOSTROPHE:{this._err(m.missingWhitespaceAfterDoctypePublicKeyword),t.publicId="",this.state=l.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case d.GREATER_THAN_SIGN:{this._err(m.missingDoctypePublicIdentifier),t.forceQuirks=!0,this.state=l.DATA,this.emitCurrentDoctype(t);break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:this._err(m.missingQuoteBeforeDoctypePublicIdentifier),t.forceQuirks=!0,this.state=l.BOGUS_DOCTYPE,this._stateBogusDoctype(u)}}_stateBeforeDoctypePublicIdentifier(u){let t=this.currentToken;switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:break;case d.QUOTATION_MARK:{t.publicId="",this.state=l.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case d.APOSTROPHE:{t.publicId="",this.state=l.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case d.GREATER_THAN_SIGN:{this._err(m.missingDoctypePublicIdentifier),t.forceQuirks=!0,this.state=l.DATA,this.emitCurrentDoctype(t);break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:this._err(m.missingQuoteBeforeDoctypePublicIdentifier),t.forceQuirks=!0,this.state=l.BOGUS_DOCTYPE,this._stateBogusDoctype(u)}}_stateDoctypePublicIdentifierDoubleQuoted(u){let t=this.currentToken;switch(u){case d.QUOTATION_MARK:{this.state=l.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case d.NULL:{this._err(m.unexpectedNullCharacter),t.publicId+=$;break}case d.GREATER_THAN_SIGN:{this._err(m.abruptDoctypePublicIdentifier),t.forceQuirks=!0,this.emitCurrentDoctype(t),this.state=l.DATA;break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:t.publicId+=String.fromCodePoint(u)}}_stateDoctypePublicIdentifierSingleQuoted(u){let t=this.currentToken;switch(u){case d.APOSTROPHE:{this.state=l.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case d.NULL:{this._err(m.unexpectedNullCharacter),t.publicId+=$;break}case d.GREATER_THAN_SIGN:{this._err(m.abruptDoctypePublicIdentifier),t.forceQuirks=!0,this.emitCurrentDoctype(t),this.state=l.DATA;break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:t.publicId+=String.fromCodePoint(u)}}_stateAfterDoctypePublicIdentifier(u){let t=this.currentToken;switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:{this.state=l.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case d.GREATER_THAN_SIGN:{this.state=l.DATA,this.emitCurrentDoctype(t);break}case d.QUOTATION_MARK:{this._err(m.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),t.systemId="",this.state=l.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case d.APOSTROPHE:{this._err(m.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),t.systemId="",this.state=l.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:this._err(m.missingQuoteBeforeDoctypeSystemIdentifier),t.forceQuirks=!0,this.state=l.BOGUS_DOCTYPE,this._stateBogusDoctype(u)}}_stateBetweenDoctypePublicAndSystemIdentifiers(u){let t=this.currentToken;switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:break;case d.GREATER_THAN_SIGN:{this.emitCurrentDoctype(t),this.state=l.DATA;break}case d.QUOTATION_MARK:{t.systemId="",this.state=l.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case d.APOSTROPHE:{t.systemId="",this.state=l.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:this._err(m.missingQuoteBeforeDoctypeSystemIdentifier),t.forceQuirks=!0,this.state=l.BOGUS_DOCTYPE,this._stateBogusDoctype(u)}}_stateAfterDoctypeSystemKeyword(u){let t=this.currentToken;switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:{this.state=l.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case d.QUOTATION_MARK:{this._err(m.missingWhitespaceAfterDoctypeSystemKeyword),t.systemId="",this.state=l.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case d.APOSTROPHE:{this._err(m.missingWhitespaceAfterDoctypeSystemKeyword),t.systemId="",this.state=l.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case d.GREATER_THAN_SIGN:{this._err(m.missingDoctypeSystemIdentifier),t.forceQuirks=!0,this.state=l.DATA,this.emitCurrentDoctype(t);break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:this._err(m.missingQuoteBeforeDoctypeSystemIdentifier),t.forceQuirks=!0,this.state=l.BOGUS_DOCTYPE,this._stateBogusDoctype(u)}}_stateBeforeDoctypeSystemIdentifier(u){let t=this.currentToken;switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:break;case d.QUOTATION_MARK:{t.systemId="",this.state=l.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case d.APOSTROPHE:{t.systemId="",this.state=l.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case d.GREATER_THAN_SIGN:{this._err(m.missingDoctypeSystemIdentifier),t.forceQuirks=!0,this.state=l.DATA,this.emitCurrentDoctype(t);break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:this._err(m.missingQuoteBeforeDoctypeSystemIdentifier),t.forceQuirks=!0,this.state=l.BOGUS_DOCTYPE,this._stateBogusDoctype(u)}}_stateDoctypeSystemIdentifierDoubleQuoted(u){let t=this.currentToken;switch(u){case d.QUOTATION_MARK:{this.state=l.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case d.NULL:{this._err(m.unexpectedNullCharacter),t.systemId+=$;break}case d.GREATER_THAN_SIGN:{this._err(m.abruptDoctypeSystemIdentifier),t.forceQuirks=!0,this.emitCurrentDoctype(t),this.state=l.DATA;break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:t.systemId+=String.fromCodePoint(u)}}_stateDoctypeSystemIdentifierSingleQuoted(u){let t=this.currentToken;switch(u){case d.APOSTROPHE:{this.state=l.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case d.NULL:{this._err(m.unexpectedNullCharacter),t.systemId+=$;break}case d.GREATER_THAN_SIGN:{this._err(m.abruptDoctypeSystemIdentifier),t.forceQuirks=!0,this.emitCurrentDoctype(t),this.state=l.DATA;break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:t.systemId+=String.fromCodePoint(u)}}_stateAfterDoctypeSystemIdentifier(u){let t=this.currentToken;switch(u){case d.SPACE:case d.LINE_FEED:case d.TABULATION:case d.FORM_FEED:break;case d.GREATER_THAN_SIGN:{this.emitCurrentDoctype(t),this.state=l.DATA;break}case d.EOF:{this._err(m.eofInDoctype),t.forceQuirks=!0,this.emitCurrentDoctype(t),this._emitEOFToken();break}default:this._err(m.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=l.BOGUS_DOCTYPE,this._stateBogusDoctype(u)}}_stateBogusDoctype(u){let t=this.currentToken;switch(u){case d.GREATER_THAN_SIGN:{this.emitCurrentDoctype(t),this.state=l.DATA;break}case d.NULL:{this._err(m.unexpectedNullCharacter);break}case d.EOF:{this.emitCurrentDoctype(t),this._emitEOFToken();break}default:}}_stateCdataSection(u){switch(u){case d.RIGHT_SQUARE_BRACKET:{this.state=l.CDATA_SECTION_BRACKET;break}case d.EOF:{this._err(m.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(u)}}_stateCdataSectionBracket(u){u===d.RIGHT_SQUARE_BRACKET?this.state=l.CDATA_SECTION_END:(this._emitChars("]"),this.state=l.CDATA_SECTION,this._stateCdataSection(u))}_stateCdataSectionEnd(u){switch(u){case d.GREATER_THAN_SIGN:{this.state=l.DATA;break}case d.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=l.CDATA_SECTION,this._stateCdataSection(u)}}_stateCharacterReference(){let u=this.entityDecoder.write(this.preprocessor.html,this.preprocessor.pos);if(u<0)if(this.preprocessor.lastChunkWritten)u=this.entityDecoder.end();else{this.active=!1,this.preprocessor.pos=this.preprocessor.html.length-1,this.consumedAfterSnapshot=0,this.preprocessor.endOfChunkHit=!0;return}u===0?(this.preprocessor.pos=this.entityStartPos,this._flushCodePointConsumedAsCharacterReference(d.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&si(this.preprocessor.peek(1))?l.AMBIGUOUS_AMPERSAND:this.returnState):this.state=this.returnState}_stateAmbiguousAmpersand(u){si(u)?this._flushCodePointConsumedAsCharacterReference(u):(u===d.SEMICOLON&&this._err(m.unknownNamedCharacterReference),this.state=this.returnState,this._callState(u))}};var hi=new Set([i.DD,i.DT,i.LI,i.OPTGROUP,i.OPTION,i.P,i.RB,i.RP,i.RT,i.RTC]),di=new Set([...hi,i.CAPTION,i.COLGROUP,i.TBODY,i.TD,i.TFOOT,i.TH,i.THEAD,i.TR]),Xt=new Set([i.APPLET,i.CAPTION,i.HTML,i.MARQUEE,i.OBJECT,i.TABLE,i.TD,i.TEMPLATE,i.TH]),No=new Set([...Xt,i.OL,i.UL]),Io=new Set([...Xt,i.BUTTON]),li=new Set([i.ANNOTATION_XML,i.MI,i.MN,i.MO,i.MS,i.MTEXT]),fi=new Set([i.DESC,i.FOREIGN_OBJECT,i.TITLE]),Co=new Set([i.TR,i.TEMPLATE,i.HTML]),So=new Set([i.TBODY,i.TFOOT,i.THEAD,i.TEMPLATE,i.HTML]),yo=new Set([i.TABLE,i.TEMPLATE,i.HTML]),Do=new Set([i.TD,i.TH]),jt=class{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(u,t,a){this.treeAdapter=t,this.handler=a,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=i.UNKNOWN,this.current=u}_indexOf(u){return this.items.lastIndexOf(u,this.stackTop)}_isInTemplate(){return this.currentTagId===i.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===T.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop]}push(u,t){this.stackTop++,this.items[this.stackTop]=u,this.current=u,this.tagIDs[this.stackTop]=t,this.currentTagId=t,this._isInTemplate()&&this.tmplCount++,this.handler.onItemPush(u,t,!0)}pop(){let u=this.current;this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(u,!0)}replace(u,t){let a=this._indexOf(u);this.items[a]=t,a===this.stackTop&&(this.current=t)}insertAfter(u,t,a){let r=this._indexOf(u)+1;this.items.splice(r,0,t),this.tagIDs.splice(r,0,a),this.stackTop++,r===this.stackTop&&this._updateCurrentElement(),this.current&&this.currentTagId!==void 0&&this.handler.onItemPush(this.current,this.currentTagId,r===this.stackTop)}popUntilTagNamePopped(u){let t=this.stackTop+1;do t=this.tagIDs.lastIndexOf(u,t-1);while(t>0&&this.treeAdapter.getNamespaceURI(this.items[t])!==T.HTML);this.shortenToLength(Math.max(t,0))}shortenToLength(u){for(;this.stackTop>=u;){let t=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,this.stackTop<u)}}popUntilElementPopped(u){let t=this._indexOf(u);this.shortenToLength(Math.max(t,0))}popUntilPopped(u,t){let a=this._indexOfTagNames(u,t);this.shortenToLength(Math.max(a,0))}popUntilNumberedHeaderPopped(){this.popUntilPopped(_u,T.HTML)}popUntilTableCellPopped(){this.popUntilPopped(Do,T.HTML)}popAllUpToHtmlElement(){this.tmplCount=0,this.shortenToLength(1)}_indexOfTagNames(u,t){for(let a=this.stackTop;a>=0;a--)if(u.has(this.tagIDs[a])&&this.treeAdapter.getNamespaceURI(this.items[a])===t)return a;return-1}clearBackTo(u,t){let a=this._indexOfTagNames(u,t);this.shortenToLength(a+1)}clearBackToTableContext(){this.clearBackTo(yo,T.HTML)}clearBackToTableBodyContext(){this.clearBackTo(So,T.HTML)}clearBackToTableRowContext(){this.clearBackTo(Co,T.HTML)}remove(u){let t=this._indexOf(u);t>=0&&(t===this.stackTop?this.pop():(this.items.splice(t,1),this.tagIDs.splice(t,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(u,!1)))}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===i.BODY?this.items[1]:null}contains(u){return this._indexOf(u)>-1}getCommonAncestor(u){let t=this._indexOf(u)-1;return t>=0?this.items[t]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===i.HTML}hasInDynamicScope(u,t){for(let a=this.stackTop;a>=0;a--){let r=this.tagIDs[a];switch(this.treeAdapter.getNamespaceURI(this.items[a])){case T.HTML:{if(r===u)return!0;if(t.has(r))return!1;break}case T.SVG:{if(fi.has(r))return!1;break}case T.MATHML:{if(li.has(r))return!1;break}}}return!0}hasInScope(u){return this.hasInDynamicScope(u,Xt)}hasInListItemScope(u){return this.hasInDynamicScope(u,No)}hasInButtonScope(u){return this.hasInDynamicScope(u,Io)}hasNumberedHeaderInScope(){for(let u=this.stackTop;u>=0;u--){let t=this.tagIDs[u];switch(this.treeAdapter.getNamespaceURI(this.items[u])){case T.HTML:{if(_u.has(t))return!0;if(Xt.has(t))return!1;break}case T.SVG:{if(fi.has(t))return!1;break}case T.MATHML:{if(li.has(t))return!1;break}}}return!0}hasInTableScope(u){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===T.HTML)switch(this.tagIDs[t]){case u:return!0;case i.TABLE:case i.HTML:return!1}return!0}hasTableBodyContextInTableScope(){for(let u=this.stackTop;u>=0;u--)if(this.treeAdapter.getNamespaceURI(this.items[u])===T.HTML)switch(this.tagIDs[u]){case i.TBODY:case i.THEAD:case i.TFOOT:return!0;case i.TABLE:case i.HTML:return!1}return!0}hasInSelectScope(u){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===T.HTML)switch(this.tagIDs[t]){case u:return!0;case i.OPTION:case i.OPTGROUP:break;default:return!1}return!0}generateImpliedEndTags(){for(;this.currentTagId!==void 0&&hi.has(this.currentTagId);)this.pop()}generateImpliedEndTagsThoroughly(){for(;this.currentTagId!==void 0&&di.has(this.currentTagId);)this.pop()}generateImpliedEndTagsWithExclusion(u){for(;this.currentTagId!==void 0&&this.currentTagId!==u&&di.has(this.currentTagId);)this.pop()}};var Ae;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element"})(Ae||(Ae={}));var bi={type:Ae.Marker},Kt=class{constructor(u){this.treeAdapter=u,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(u,t){let a=[],r=t.length,n=this.treeAdapter.getTagName(u),s=this.treeAdapter.getNamespaceURI(u);for(let c=0;c<this.entries.length;c++){let o=this.entries[c];if(o.type===Ae.Marker)break;let{element:f}=o;if(this.treeAdapter.getTagName(f)===n&&this.treeAdapter.getNamespaceURI(f)===s){let b=this.treeAdapter.getAttrList(f);b.length===r&&a.push({idx:c,attrs:b})}}return a}_ensureNoahArkCondition(u){if(this.entries.length<3)return;let t=this.treeAdapter.getAttrList(u),a=this._getNoahArkConditionCandidates(u,t);if(a.length<3)return;let r=new Map(t.map(s=>[s.name,s.value])),n=0;for(let s=0;s<a.length;s++){let c=a[s];c.attrs.every(o=>r.get(o.name)===o.value)&&(n+=1,n>=3&&this.entries.splice(c.idx,1))}}insertMarker(){this.entries.unshift(bi)}pushElement(u,t){this._ensureNoahArkCondition(u),this.entries.unshift({type:Ae.Element,element:u,token:t})}insertElementAfterBookmark(u,t){let a=this.entries.indexOf(this.bookmark);this.entries.splice(a,0,{type:Ae.Element,element:u,token:t})}removeEntry(u){let t=this.entries.indexOf(u);t!==-1&&this.entries.splice(t,1)}clearToLastMarker(){let u=this.entries.indexOf(bi);u===-1?this.entries.length=0:this.entries.splice(0,u+1)}getElementEntryInScopeWithTagName(u){let t=this.entries.find(a=>a.type===Ae.Marker||this.treeAdapter.getTagName(a.element)===u);return t&&t.type===Ae.Element?t:null}getElementEntry(u){return this.entries.find(t=>t.type===Ae.Element&&t.element===u)}};var ge={createDocument(){return{nodeName:"#document",mode:ue.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(e,u,t){return{nodeName:e,tagName:e,attrs:t,namespaceURI:u,childNodes:[],parentNode:null}},createCommentNode(e){return{nodeName:"#comment",data:e,parentNode:null}},createTextNode(e){return{nodeName:"#text",value:e,parentNode:null}},appendChild(e,u){e.childNodes.push(u),u.parentNode=e},insertBefore(e,u,t){let a=e.childNodes.indexOf(t);e.childNodes.splice(a,0,u),u.parentNode=e},setTemplateContent(e,u){e.content=u},getTemplateContent(e){return e.content},setDocumentType(e,u,t,a){let r=e.childNodes.find(n=>n.nodeName==="#documentType");if(r)r.name=u,r.publicId=t,r.systemId=a;else{let n={nodeName:"#documentType",name:u,publicId:t,systemId:a,parentNode:null};ge.appendChild(e,n)}},setDocumentMode(e,u){e.mode=u},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){let u=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(u,1),e.parentNode=null}},insertText(e,u){if(e.childNodes.length>0){let t=e.childNodes[e.childNodes.length-1];if(ge.isTextNode(t)){t.value+=u;return}}ge.appendChild(e,ge.createTextNode(u))},insertTextBefore(e,u,t){let a=e.childNodes[e.childNodes.indexOf(t)-1];a&&ge.isTextNode(a)?a.value+=u:ge.insertBefore(e,ge.createTextNode(u),t)},adoptAttributes(e,u){let t=new Set(e.attrs.map(a=>a.name));for(let a=0;a<u.length;a++)t.has(u[a].name)||e.attrs.push(u[a])},getFirstChild(e){return e.childNodes[0]},getChildNodes(e){return e.childNodes},getParentNode(e){return e.parentNode},getAttrList(e){return e.attrs},getTagName(e){return e.tagName},getNamespaceURI(e){return e.namespaceURI},getTextNodeContent(e){return e.value},getCommentNodeContent(e){return e.data},getDocumentTypeNodeName(e){return e.name},getDocumentTypeNodePublicId(e){return e.publicId},getDocumentTypeNodeSystemId(e){return e.systemId},isTextNode(e){return e.nodeName==="#text"},isCommentNode(e){return e.nodeName==="#comment"},isDocumentTypeNode(e){return e.nodeName==="#documentType"},isElementNode(e){return Object.prototype.hasOwnProperty.call(e,"tagName")},setNodeSourceCodeLocation(e,u){e.sourceCodeLocation=u},getNodeSourceCodeLocation(e){return e.sourceCodeLocation},updateNodeSourceCodeLocation(e,u){e.sourceCodeLocation={...e.sourceCodeLocation,...u}}};var mi="html",Lo="about:legacy-compat",Ro="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",Ei=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],Oo=[...Ei,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],Po=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),Ti=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],wo=[...Ti,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function pi(e,u){return u.some(t=>e.startsWith(t))}function gi(e){return e.name===mi&&e.publicId===null&&(e.systemId===null||e.systemId===Lo)}function xi(e){if(e.name!==mi)return ue.QUIRKS;let{systemId:u}=e;if(u&&u.toLowerCase()===Ro)return ue.QUIRKS;let{publicId:t}=e;if(t!==null){if(t=t.toLowerCase(),Po.has(t))return ue.QUIRKS;let a=u===null?Oo:Ei;if(pi(t,a))return ue.QUIRKS;if(a=u===null?Ti:wo,pi(t,a))return ue.LIMITED_QUIRKS}return ue.NO_QUIRKS}var Zt={};le(Zt,{SVG_TAG_NAMES_ADJUSTMENT_MAP:()=>_i,adjustTokenMathMLAttrs:()=>zt,adjustTokenSVGAttrs:()=>Jt,adjustTokenSVGTagName:()=>Ca,adjustTokenXMLAttrs:()=>Qu,causesExit:()=>Ia,isIntegrationPoint:()=>Sa});var Ai={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},Mo="definitionurl",vo="definitionURL",Bo=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),Uo=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:T.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:T.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:T.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:T.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:T.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:T.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:T.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:T.XML}],["xml:space",{prefix:"xml",name:"space",namespace:T.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:T.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:T.XMLNS}]]),_i=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),Fo=new Set([i.B,i.BIG,i.BLOCKQUOTE,i.BODY,i.BR,i.CENTER,i.CODE,i.DD,i.DIV,i.DL,i.DT,i.EM,i.EMBED,i.H1,i.H2,i.H3,i.H4,i.H5,i.H6,i.HEAD,i.HR,i.I,i.IMG,i.LI,i.LISTING,i.MENU,i.META,i.NOBR,i.OL,i.P,i.PRE,i.RUBY,i.S,i.SMALL,i.SPAN,i.STRONG,i.STRIKE,i.SUB,i.SUP,i.TABLE,i.TT,i.U,i.UL,i.VAR]);function Ia(e){let u=e.tagID;return u===i.FONT&&e.attrs.some(({name:a})=>a===Se.COLOR||a===Se.SIZE||a===Se.FACE)||Fo.has(u)}function zt(e){for(let u=0;u<e.attrs.length;u++)if(e.attrs[u].name===Mo){e.attrs[u].name=vo;break}}function Jt(e){for(let u=0;u<e.attrs.length;u++){let t=Bo.get(e.attrs[u].name);t!=null&&(e.attrs[u].name=t)}}function Qu(e){for(let u=0;u<e.attrs.length;u++){let t=Uo.get(e.attrs[u].name);t&&(e.attrs[u].prefix=t.prefix,e.attrs[u].name=t.name,e.attrs[u].namespace=t.namespace)}}function Ca(e){let u=_i.get(e.tagName);u!=null&&(e.tagName=u,e.tagID=We(e.tagName))}function Ho(e,u){return u===T.MATHML&&(e===i.MI||e===i.MO||e===i.MN||e===i.MS||e===i.MTEXT)}function qo(e,u,t){if(u===T.MATHML&&e===i.ANNOTATION_XML){for(let a=0;a<t.length;a++)if(t[a].name===Se.ENCODING){let r=t[a].value.toLowerCase();return r===Ai.TEXT_HTML||r===Ai.APPLICATION_XML}}return u===T.SVG&&(e===i.FOREIGN_OBJECT||e===i.DESC||e===i.TITLE)}function Sa(e,u,t,a){return(!a||a===T.HTML)&&qo(e,u,t)||(!a||a===T.MATHML)&&Ho(e,u)}var Yo="hidden",Vo=8,$o=3,h;(function(e){e[e.INITIAL=0]="INITIAL",e[e.BEFORE_HTML=1]="BEFORE_HTML",e[e.BEFORE_HEAD=2]="BEFORE_HEAD",e[e.IN_HEAD=3]="IN_HEAD",e[e.IN_HEAD_NO_SCRIPT=4]="IN_HEAD_NO_SCRIPT",e[e.AFTER_HEAD=5]="AFTER_HEAD",e[e.IN_BODY=6]="IN_BODY",e[e.TEXT=7]="TEXT",e[e.IN_TABLE=8]="IN_TABLE",e[e.IN_TABLE_TEXT=9]="IN_TABLE_TEXT",e[e.IN_CAPTION=10]="IN_CAPTION",e[e.IN_COLUMN_GROUP=11]="IN_COLUMN_GROUP",e[e.IN_TABLE_BODY=12]="IN_TABLE_BODY",e[e.IN_ROW=13]="IN_ROW",e[e.IN_CELL=14]="IN_CELL",e[e.IN_SELECT=15]="IN_SELECT",e[e.IN_SELECT_IN_TABLE=16]="IN_SELECT_IN_TABLE",e[e.IN_TEMPLATE=17]="IN_TEMPLATE",e[e.AFTER_BODY=18]="AFTER_BODY",e[e.IN_FRAMESET=19]="IN_FRAMESET",e[e.AFTER_FRAMESET=20]="AFTER_FRAMESET",e[e.AFTER_AFTER_BODY=21]="AFTER_AFTER_BODY",e[e.AFTER_AFTER_FRAMESET=22]="AFTER_AFTER_FRAMESET"})(h||(h={}));var Go={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},Si=new Set([i.TABLE,i.TBODY,i.TFOOT,i.THEAD,i.TR]),Ni={scriptingEnabled:!0,sourceCodeLocationInfo:!1,treeAdapter:ge,onParseError:null},Nu=class{constructor(u,t,a=null,r=null){this.fragmentContext=a,this.scriptHandler=r,this.currentToken=null,this.stopped=!1,this.insertionMode=h.INITIAL,this.originalInsertionMode=h.INITIAL,this.headElement=null,this.formElement=null,this.currentNotInHTML=!1,this.tmplInsertionModeStack=[],this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1,this.options={...Ni,...u},this.treeAdapter=this.options.treeAdapter,this.onParseError=this.options.onParseError,this.onParseError&&(this.options.sourceCodeLocationInfo=!0),this.document=t!=null?t:this.treeAdapter.createDocument(),this.tokenizer=new Wu(this.options,this),this.activeFormattingElements=new Kt(this.treeAdapter),this.fragmentContextID=a?We(this.treeAdapter.getTagName(a)):i.UNKNOWN,this._setContextModes(a!=null?a:this.document,this.fragmentContextID),this.openElements=new jt(this.document,this.treeAdapter,this)}static parse(u,t){let a=new this(t);return a.tokenizer.write(u,!0),a.document}static getFragmentParser(u,t){let a={...Ni,...t};u!=null||(u=a.treeAdapter.createElement(p.TEMPLATE,T.HTML,[]));let r=a.treeAdapter.createElement("documentmock",T.HTML,[]),n=new this(a,r,u);return n.fragmentContextID===i.TEMPLATE&&n.tmplInsertionModeStack.unshift(h.IN_TEMPLATE),n._initTokenizerForFragmentParsing(),n._insertFakeRootElement(),n._resetInsertionMode(),n._findFormInFragmentContext(),n}getFragment(){let u=this.treeAdapter.getFirstChild(this.document),t=this.treeAdapter.createDocumentFragment();return this._adoptNodes(u,t),t}_err(u,t,a){var r;if(!this.onParseError)return;let n=(r=u.location)!==null&&r!==void 0?r:Go,s={code:t,startLine:n.startLine,startCol:n.startCol,startOffset:n.startOffset,endLine:a?n.startLine:n.endLine,endCol:a?n.startCol:n.endCol,endOffset:a?n.startOffset:n.endOffset};this.onParseError(s)}onItemPush(u,t,a){var r,n;(n=(r=this.treeAdapter).onItemPush)===null||n===void 0||n.call(r,u),a&&this.openElements.stackTop>0&&this._setContextModes(u,t)}onItemPop(u,t){var a,r;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(u,this.currentToken),(r=(a=this.treeAdapter).onItemPop)===null||r===void 0||r.call(a,u,this.openElements.current),t){let n,s;this.openElements.stackTop===0&&this.fragmentContext?(n=this.fragmentContext,s=this.fragmentContextID):{current:n,currentTagId:s}=this.openElements,this._setContextModes(n,s)}}_setContextModes(u,t){let a=u===this.document||u&&this.treeAdapter.getNamespaceURI(u)===T.HTML;this.currentNotInHTML=!a,this.tokenizer.inForeignNode=!a&&u!==void 0&&t!==void 0&&!this._isIntegrationPoint(t,u)}_switchToTextParsing(u,t){this._insertElement(u,T.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=h.TEXT}switchToPlaintextParsing(){this.insertionMode=h.TEXT,this.originalInsertionMode=h.IN_BODY,this.tokenizer.state=te.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let u=this.fragmentContext;for(;u;){if(this.treeAdapter.getTagName(u)===p.FORM){this.formElement=u;break}u=this.treeAdapter.getParentNode(u)}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==T.HTML))switch(this.fragmentContextID){case i.TITLE:case i.TEXTAREA:{this.tokenizer.state=te.RCDATA;break}case i.STYLE:case i.XMP:case i.IFRAME:case i.NOEMBED:case i.NOFRAMES:case i.NOSCRIPT:{this.tokenizer.state=te.RAWTEXT;break}case i.SCRIPT:{this.tokenizer.state=te.SCRIPT_DATA;break}case i.PLAINTEXT:{this.tokenizer.state=te.PLAINTEXT;break}default:}}_setDocumentType(u){let t=u.name||"",a=u.publicId||"",r=u.systemId||"";if(this.treeAdapter.setDocumentType(this.document,t,a,r),u.location){let s=this.treeAdapter.getChildNodes(this.document).find(c=>this.treeAdapter.isDocumentTypeNode(c));s&&this.treeAdapter.setNodeSourceCodeLocation(s,u.location)}}_attachElementToTree(u,t){if(this.options.sourceCodeLocationInfo){let a=t&&{...t,startTag:t};this.treeAdapter.setNodeSourceCodeLocation(u,a)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(u);else{let a=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(a!=null?a:this.document,u)}}_appendElement(u,t){let a=this.treeAdapter.createElement(u.tagName,t,u.attrs);this._attachElementToTree(a,u.location)}_insertElement(u,t){let a=this.treeAdapter.createElement(u.tagName,t,u.attrs);this._attachElementToTree(a,u.location),this.openElements.push(a,u.tagID)}_insertFakeElement(u,t){let a=this.treeAdapter.createElement(u,T.HTML,[]);this._attachElementToTree(a,null),this.openElements.push(a,t)}_insertTemplate(u){let t=this.treeAdapter.createElement(u.tagName,T.HTML,u.attrs),a=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,a),this._attachElementToTree(t,u.location),this.openElements.push(t,u.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(a,null)}_insertFakeRootElement(){let u=this.treeAdapter.createElement(p.HTML,T.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(u,null),this.treeAdapter.appendChild(this.openElements.current,u),this.openElements.push(u,i.HTML)}_appendCommentNode(u,t){let a=this.treeAdapter.createCommentNode(u.data);this.treeAdapter.appendChild(t,a),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(a,u.location)}_insertCharacters(u){let t,a;if(this._shouldFosterParentOnInsertion()?({parent:t,beforeElement:a}=this._findFosterParentingLocation(),a?this.treeAdapter.insertTextBefore(t,u.chars,a):this.treeAdapter.insertText(t,u.chars)):(t=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(t,u.chars)),!u.location)return;let r=this.treeAdapter.getChildNodes(t),n=a?r.lastIndexOf(a):r.length,s=r[n-1];if(this.treeAdapter.getNodeSourceCodeLocation(s)){let{endLine:o,endCol:f,endOffset:b}=u.location;this.treeAdapter.updateNodeSourceCodeLocation(s,{endLine:o,endCol:f,endOffset:b})}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(s,u.location)}_adoptNodes(u,t){for(let a=this.treeAdapter.getFirstChild(u);a;a=this.treeAdapter.getFirstChild(u))this.treeAdapter.detachNode(a),this.treeAdapter.appendChild(t,a)}_setEndLocation(u,t){if(this.treeAdapter.getNodeSourceCodeLocation(u)&&t.location){let a=t.location,r=this.treeAdapter.getTagName(u),n=t.type===B.END_TAG&&r===t.tagName?{endTag:{...a},endLine:a.endLine,endCol:a.endCol,endOffset:a.endOffset}:{endLine:a.startLine,endCol:a.startCol,endOffset:a.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(u,n)}}shouldProcessStartTagTokenInForeignContent(u){if(!this.currentNotInHTML)return!1;let t,a;return this.openElements.stackTop===0&&this.fragmentContext?(t=this.fragmentContext,a=this.fragmentContextID):{current:t,currentTagId:a}=this.openElements,u.tagID===i.SVG&&this.treeAdapter.getTagName(t)===p.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(t)===T.MATHML?!1:this.tokenizer.inForeignNode||(u.tagID===i.MGLYPH||u.tagID===i.MALIGNMARK)&&a!==void 0&&!this._isIntegrationPoint(a,t,T.HTML)}_processToken(u){switch(u.type){case B.CHARACTER:{this.onCharacter(u);break}case B.NULL_CHARACTER:{this.onNullCharacter(u);break}case B.COMMENT:{this.onComment(u);break}case B.DOCTYPE:{this.onDoctype(u);break}case B.START_TAG:{this._processStartTag(u);break}case B.END_TAG:{this.onEndTag(u);break}case B.EOF:{this.onEof(u);break}case B.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(u);break}}}_isIntegrationPoint(u,t,a){let r=this.treeAdapter.getNamespaceURI(t),n=this.treeAdapter.getAttrList(t);return Sa(u,r,n,a)}_reconstructActiveFormattingElements(){let u=this.activeFormattingElements.entries.length;if(u){let t=this.activeFormattingElements.entries.findIndex(r=>r.type===Ae.Marker||this.openElements.contains(r.element)),a=t===-1?u-1:t-1;for(let r=a;r>=0;r--){let n=this.activeFormattingElements.entries[r];this._insertElement(n.token,this.treeAdapter.getNamespaceURI(n.element)),n.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=h.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(i.P),this.openElements.popUntilTagNamePopped(i.P)}_resetInsertionMode(){for(let u=this.openElements.stackTop;u>=0;u--)switch(u===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[u]){case i.TR:{this.insertionMode=h.IN_ROW;return}case i.TBODY:case i.THEAD:case i.TFOOT:{this.insertionMode=h.IN_TABLE_BODY;return}case i.CAPTION:{this.insertionMode=h.IN_CAPTION;return}case i.COLGROUP:{this.insertionMode=h.IN_COLUMN_GROUP;return}case i.TABLE:{this.insertionMode=h.IN_TABLE;return}case i.BODY:{this.insertionMode=h.IN_BODY;return}case i.FRAMESET:{this.insertionMode=h.IN_FRAMESET;return}case i.SELECT:{this._resetInsertionModeForSelect(u);return}case i.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case i.HTML:{this.insertionMode=this.headElement?h.AFTER_HEAD:h.BEFORE_HEAD;return}case i.TD:case i.TH:{if(u>0){this.insertionMode=h.IN_CELL;return}break}case i.HEAD:{if(u>0){this.insertionMode=h.IN_HEAD;return}break}}this.insertionMode=h.IN_BODY}_resetInsertionModeForSelect(u){if(u>0)for(let t=u-1;t>0;t--){let a=this.openElements.tagIDs[t];if(a===i.TEMPLATE)break;if(a===i.TABLE){this.insertionMode=h.IN_SELECT_IN_TABLE;return}}this.insertionMode=h.IN_SELECT}_isElementCausesFosterParenting(u){return Si.has(u)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let u=this.openElements.stackTop;u>=0;u--){let t=this.openElements.items[u];switch(this.openElements.tagIDs[u]){case i.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(t)===T.HTML)return{parent:this.treeAdapter.getTemplateContent(t),beforeElement:null};break}case i.TABLE:{let a=this.treeAdapter.getParentNode(t);return a?{parent:a,beforeElement:t}:{parent:this.openElements.items[u-1],beforeElement:null}}default:}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(u){let t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,u,t.beforeElement):this.treeAdapter.appendChild(t.parent,u)}_isSpecialElement(u,t){let a=this.treeAdapter.getNamespaceURI(u);return _a[a].has(t)}onCharacter(u){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){Ad(this,u);return}switch(this.insertionMode){case h.INITIAL:{Xu(this,u);break}case h.BEFORE_HTML:{Ku(this,u);break}case h.BEFORE_HEAD:{zu(this,u);break}case h.IN_HEAD:{Ju(this,u);break}case h.IN_HEAD_NO_SCRIPT:{Zu(this,u);break}case h.AFTER_HEAD:{et(this,u);break}case h.IN_BODY:case h.IN_CAPTION:case h.IN_CELL:case h.IN_TEMPLATE:{Di(this,u);break}case h.TEXT:case h.IN_SELECT:case h.IN_SELECT_IN_TABLE:{this._insertCharacters(u);break}case h.IN_TABLE:case h.IN_TABLE_BODY:case h.IN_ROW:{ya(this,u);break}case h.IN_TABLE_TEXT:{ki(this,u);break}case h.IN_COLUMN_GROUP:{u0(this,u);break}case h.AFTER_BODY:{t0(this,u);break}case h.AFTER_AFTER_BODY:{e0(this,u);break}default:}}onNullCharacter(u){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){xd(this,u);return}switch(this.insertionMode){case h.INITIAL:{Xu(this,u);break}case h.BEFORE_HTML:{Ku(this,u);break}case h.BEFORE_HEAD:{zu(this,u);break}case h.IN_HEAD:{Ju(this,u);break}case h.IN_HEAD_NO_SCRIPT:{Zu(this,u);break}case h.AFTER_HEAD:{et(this,u);break}case h.TEXT:{this._insertCharacters(u);break}case h.IN_TABLE:case h.IN_TABLE_BODY:case h.IN_ROW:{ya(this,u);break}case h.IN_COLUMN_GROUP:{u0(this,u);break}case h.AFTER_BODY:{t0(this,u);break}case h.AFTER_AFTER_BODY:{e0(this,u);break}default:}}onComment(u){if(this.skipNextNewLine=!1,this.currentNotInHTML){Da(this,u);return}switch(this.insertionMode){case h.INITIAL:case h.BEFORE_HTML:case h.BEFORE_HEAD:case h.IN_HEAD:case h.IN_HEAD_NO_SCRIPT:case h.AFTER_HEAD:case h.IN_BODY:case h.IN_TABLE:case h.IN_CAPTION:case h.IN_COLUMN_GROUP:case h.IN_TABLE_BODY:case h.IN_ROW:case h.IN_CELL:case h.IN_SELECT:case h.IN_SELECT_IN_TABLE:case h.IN_TEMPLATE:case h.IN_FRAMESET:case h.AFTER_FRAMESET:{Da(this,u);break}case h.IN_TABLE_TEXT:{ju(this,u);break}case h.AFTER_BODY:{Jo(this,u);break}case h.AFTER_AFTER_BODY:case h.AFTER_AFTER_FRAMESET:{Zo(this,u);break}default:}}onDoctype(u){switch(this.skipNextNewLine=!1,this.insertionMode){case h.INITIAL:{e1(this,u);break}case h.BEFORE_HEAD:case h.IN_HEAD:case h.IN_HEAD_NO_SCRIPT:case h.AFTER_HEAD:{this._err(u,m.misplacedDoctype);break}case h.IN_TABLE_TEXT:{ju(this,u);break}default:}}onStartTag(u){this.skipNextNewLine=!1,this.currentToken=u,this._processStartTag(u),u.selfClosing&&!u.ackSelfClosing&&this._err(u,m.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(u){this.shouldProcessStartTagTokenInForeignContent(u)?_d(this,u):this._startTagOutsideForeignContent(u)}_startTagOutsideForeignContent(u){switch(this.insertionMode){case h.INITIAL:{Xu(this,u);break}case h.BEFORE_HTML:{u1(this,u);break}case h.BEFORE_HEAD:{a1(this,u);break}case h.IN_HEAD:{_e(this,u);break}case h.IN_HEAD_NO_SCRIPT:{n1(this,u);break}case h.AFTER_HEAD:{c1(this,u);break}case h.IN_BODY:{ae(this,u);break}case h.IN_TABLE:{Iu(this,u);break}case h.IN_TABLE_TEXT:{ju(this,u);break}case h.IN_CAPTION:{rd(this,u);break}case h.IN_COLUMN_GROUP:{Pa(this,u);break}case h.IN_TABLE_BODY:{i0(this,u);break}case h.IN_ROW:{n0(this,u);break}case h.IN_CELL:{sd(this,u);break}case h.IN_SELECT:{Bi(this,u);break}case h.IN_SELECT_IN_TABLE:{od(this,u);break}case h.IN_TEMPLATE:{ld(this,u);break}case h.AFTER_BODY:{hd(this,u);break}case h.IN_FRAMESET:{bd(this,u);break}case h.AFTER_FRAMESET:{md(this,u);break}case h.AFTER_AFTER_BODY:{Td(this,u);break}case h.AFTER_AFTER_FRAMESET:{gd(this,u);break}default:}}onEndTag(u){this.skipNextNewLine=!1,this.currentToken=u,this.currentNotInHTML?Nd(this,u):this._endTagOutsideForeignContent(u)}_endTagOutsideForeignContent(u){switch(this.insertionMode){case h.INITIAL:{Xu(this,u);break}case h.BEFORE_HTML:{t1(this,u);break}case h.BEFORE_HEAD:{r1(this,u);break}case h.IN_HEAD:{i1(this,u);break}case h.IN_HEAD_NO_SCRIPT:{s1(this,u);break}case h.AFTER_HEAD:{o1(this,u);break}case h.IN_BODY:{r0(this,u);break}case h.TEXT:{X1(this,u);break}case h.IN_TABLE:{ut(this,u);break}case h.IN_TABLE_TEXT:{ju(this,u);break}case h.IN_CAPTION:{id(this,u);break}case h.IN_COLUMN_GROUP:{nd(this,u);break}case h.IN_TABLE_BODY:{La(this,u);break}case h.IN_ROW:{vi(this,u);break}case h.IN_CELL:{cd(this,u);break}case h.IN_SELECT:{Ui(this,u);break}case h.IN_SELECT_IN_TABLE:{dd(this,u);break}case h.IN_TEMPLATE:{fd(this,u);break}case h.AFTER_BODY:{Hi(this,u);break}case h.IN_FRAMESET:{pd(this,u);break}case h.AFTER_FRAMESET:{Ed(this,u);break}case h.AFTER_AFTER_BODY:{e0(this,u);break}default:}}onEof(u){switch(this.insertionMode){case h.INITIAL:{Xu(this,u);break}case h.BEFORE_HTML:{Ku(this,u);break}case h.BEFORE_HEAD:{zu(this,u);break}case h.IN_HEAD:{Ju(this,u);break}case h.IN_HEAD_NO_SCRIPT:{Zu(this,u);break}case h.AFTER_HEAD:{et(this,u);break}case h.IN_BODY:case h.IN_TABLE:case h.IN_CAPTION:case h.IN_COLUMN_GROUP:case h.IN_TABLE_BODY:case h.IN_ROW:case h.IN_CELL:case h.IN_SELECT:case h.IN_SELECT_IN_TABLE:{Pi(this,u);break}case h.TEXT:{j1(this,u);break}case h.IN_TABLE_TEXT:{ju(this,u);break}case h.IN_TEMPLATE:{Fi(this,u);break}case h.AFTER_BODY:case h.IN_FRAMESET:case h.AFTER_FRAMESET:case h.AFTER_AFTER_BODY:case h.AFTER_AFTER_FRAMESET:{Oa(this,u);break}default:}}onWhitespaceCharacter(u){if(this.skipNextNewLine&&(this.skipNextNewLine=!1,u.chars.charCodeAt(0)===d.LINE_FEED)){if(u.chars.length===1)return;u.chars=u.chars.substr(1)}if(this.tokenizer.inForeignNode){this._insertCharacters(u);return}switch(this.insertionMode){case h.IN_HEAD:case h.IN_HEAD_NO_SCRIPT:case h.AFTER_HEAD:case h.TEXT:case h.IN_COLUMN_GROUP:case h.IN_SELECT:case h.IN_SELECT_IN_TABLE:case h.IN_FRAMESET:case h.AFTER_FRAMESET:{this._insertCharacters(u);break}case h.IN_BODY:case h.IN_CAPTION:case h.IN_CELL:case h.IN_TEMPLATE:case h.AFTER_BODY:case h.AFTER_AFTER_BODY:case h.AFTER_AFTER_FRAMESET:{yi(this,u);break}case h.IN_TABLE:case h.IN_TABLE_BODY:case h.IN_ROW:{ya(this,u);break}case h.IN_TABLE_TEXT:{wi(this,u);break}default:}}};function Wo(e,u){let t=e.activeFormattingElements.getElementEntryInScopeWithTagName(u.tagName);return t?e.openElements.contains(t.element)?e.openElements.hasInScope(u.tagID)||(t=null):(e.activeFormattingElements.removeEntry(t),t=null):Oi(e,u),t}function Qo(e,u){let t=null,a=e.openElements.stackTop;for(;a>=0;a--){let r=e.openElements.items[a];if(r===u.element)break;e._isSpecialElement(r,e.openElements.tagIDs[a])&&(t=r)}return t||(e.openElements.shortenToLength(Math.max(a,0)),e.activeFormattingElements.removeEntry(u)),t}function Xo(e,u,t){let a=u,r=e.openElements.getCommonAncestor(u);for(let n=0,s=r;s!==t;n++,s=r){r=e.openElements.getCommonAncestor(s);let c=e.activeFormattingElements.getElementEntry(s),o=c&&n>=$o;!c||o?(o&&e.activeFormattingElements.removeEntry(c),e.openElements.remove(s)):(s=jo(e,c),a===u&&(e.activeFormattingElements.bookmark=c),e.treeAdapter.detachNode(a),e.treeAdapter.appendChild(s,a),a=s)}return a}function jo(e,u){let t=e.treeAdapter.getNamespaceURI(u.element),a=e.treeAdapter.createElement(u.token.tagName,t,u.token.attrs);return e.openElements.replace(u.element,a),u.element=a,a}function Ko(e,u,t){let a=e.treeAdapter.getTagName(u),r=We(a);if(e._isElementCausesFosterParenting(r))e._fosterParentElement(t);else{let n=e.treeAdapter.getNamespaceURI(u);r===i.TEMPLATE&&n===T.HTML&&(u=e.treeAdapter.getTemplateContent(u)),e.treeAdapter.appendChild(u,t)}}function zo(e,u,t){let a=e.treeAdapter.getNamespaceURI(t.element),{token:r}=t,n=e.treeAdapter.createElement(r.tagName,a,r.attrs);e._adoptNodes(u,n),e.treeAdapter.appendChild(u,n),e.activeFormattingElements.insertElementAfterBookmark(n,r),e.activeFormattingElements.removeEntry(t),e.openElements.remove(t.element),e.openElements.insertAfter(u,n,r.tagID)}function Ra(e,u){for(let t=0;t<Vo;t++){let a=Wo(e,u);if(!a)break;let r=Qo(e,a);if(!r)break;e.activeFormattingElements.bookmark=a;let n=Xo(e,r,a.element),s=e.openElements.getCommonAncestor(a.element);e.treeAdapter.detachNode(n),s&&Ko(e,s,n),zo(e,r,a)}}function Da(e,u){e._appendCommentNode(u,e.openElements.currentTmplContentOrNode)}function Jo(e,u){e._appendCommentNode(u,e.openElements.items[0])}function Zo(e,u){e._appendCommentNode(u,e.document)}function Oa(e,u){if(e.stopped=!0,u.location){let t=e.fragmentContext?0:2;for(let a=e.openElements.stackTop;a>=t;a--)e._setEndLocation(e.openElements.items[a],u);if(!e.fragmentContext&&e.openElements.stackTop>=0){let a=e.openElements.items[0],r=e.treeAdapter.getNodeSourceCodeLocation(a);if(r&&!r.endTag&&(e._setEndLocation(a,u),e.openElements.stackTop>=1)){let n=e.openElements.items[1],s=e.treeAdapter.getNodeSourceCodeLocation(n);s&&!s.endTag&&e._setEndLocation(n,u)}}}}function e1(e,u){e._setDocumentType(u);let t=u.forceQuirks?ue.QUIRKS:xi(u);gi(u)||e._err(u,m.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,t),e.insertionMode=h.BEFORE_HTML}function Xu(e,u){e._err(u,m.missingDoctype,!0),e.treeAdapter.setDocumentMode(e.document,ue.QUIRKS),e.insertionMode=h.BEFORE_HTML,e._processToken(u)}function u1(e,u){u.tagID===i.HTML?(e._insertElement(u,T.HTML),e.insertionMode=h.BEFORE_HEAD):Ku(e,u)}function t1(e,u){let t=u.tagID;(t===i.HTML||t===i.HEAD||t===i.BODY||t===i.BR)&&Ku(e,u)}function Ku(e,u){e._insertFakeRootElement(),e.insertionMode=h.BEFORE_HEAD,e._processToken(u)}function a1(e,u){switch(u.tagID){case i.HTML:{ae(e,u);break}case i.HEAD:{e._insertElement(u,T.HTML),e.headElement=e.openElements.current,e.insertionMode=h.IN_HEAD;break}default:zu(e,u)}}function r1(e,u){let t=u.tagID;t===i.HEAD||t===i.BODY||t===i.HTML||t===i.BR?zu(e,u):e._err(u,m.endTagWithoutMatchingOpenElement)}function zu(e,u){e._insertFakeElement(p.HEAD,i.HEAD),e.headElement=e.openElements.current,e.insertionMode=h.IN_HEAD,e._processToken(u)}function _e(e,u){switch(u.tagID){case i.HTML:{ae(e,u);break}case i.BASE:case i.BASEFONT:case i.BGSOUND:case i.LINK:case i.META:{e._appendElement(u,T.HTML),u.ackSelfClosing=!0;break}case i.TITLE:{e._switchToTextParsing(u,te.RCDATA);break}case i.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(u,te.RAWTEXT):(e._insertElement(u,T.HTML),e.insertionMode=h.IN_HEAD_NO_SCRIPT);break}case i.NOFRAMES:case i.STYLE:{e._switchToTextParsing(u,te.RAWTEXT);break}case i.SCRIPT:{e._switchToTextParsing(u,te.SCRIPT_DATA);break}case i.TEMPLATE:{e._insertTemplate(u),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=h.IN_TEMPLATE,e.tmplInsertionModeStack.unshift(h.IN_TEMPLATE);break}case i.HEAD:{e._err(u,m.misplacedStartTagForHeadElement);break}default:Ju(e,u)}}function i1(e,u){switch(u.tagID){case i.HEAD:{e.openElements.pop(),e.insertionMode=h.AFTER_HEAD;break}case i.BODY:case i.BR:case i.HTML:{Ju(e,u);break}case i.TEMPLATE:{nu(e,u);break}default:e._err(u,m.endTagWithoutMatchingOpenElement)}}function nu(e,u){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==i.TEMPLATE&&e._err(u,m.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(i.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(u,m.endTagWithoutMatchingOpenElement)}function Ju(e,u){e.openElements.pop(),e.insertionMode=h.AFTER_HEAD,e._processToken(u)}function n1(e,u){switch(u.tagID){case i.HTML:{ae(e,u);break}case i.BASEFONT:case i.BGSOUND:case i.HEAD:case i.LINK:case i.META:case i.NOFRAMES:case i.STYLE:{_e(e,u);break}case i.NOSCRIPT:{e._err(u,m.nestedNoscriptInHead);break}default:Zu(e,u)}}function s1(e,u){switch(u.tagID){case i.NOSCRIPT:{e.openElements.pop(),e.insertionMode=h.IN_HEAD;break}case i.BR:{Zu(e,u);break}default:e._err(u,m.endTagWithoutMatchingOpenElement)}}function Zu(e,u){let t=u.type===B.EOF?m.openElementsLeftAfterEof:m.disallowedContentInNoscriptInHead;e._err(u,t),e.openElements.pop(),e.insertionMode=h.IN_HEAD,e._processToken(u)}function c1(e,u){switch(u.tagID){case i.HTML:{ae(e,u);break}case i.BODY:{e._insertElement(u,T.HTML),e.framesetOk=!1,e.insertionMode=h.IN_BODY;break}case i.FRAMESET:{e._insertElement(u,T.HTML),e.insertionMode=h.IN_FRAMESET;break}case i.BASE:case i.BASEFONT:case i.BGSOUND:case i.LINK:case i.META:case i.NOFRAMES:case i.SCRIPT:case i.STYLE:case i.TEMPLATE:case i.TITLE:{e._err(u,m.abandonedHeadElementChild),e.openElements.push(e.headElement,i.HEAD),_e(e,u),e.openElements.remove(e.headElement);break}case i.HEAD:{e._err(u,m.misplacedStartTagForHeadElement);break}default:et(e,u)}}function o1(e,u){switch(u.tagID){case i.BODY:case i.HTML:case i.BR:{et(e,u);break}case i.TEMPLATE:{nu(e,u);break}default:e._err(u,m.endTagWithoutMatchingOpenElement)}}function et(e,u){e._insertFakeElement(p.BODY,i.BODY),e.insertionMode=h.IN_BODY,a0(e,u)}function a0(e,u){switch(u.type){case B.CHARACTER:{Di(e,u);break}case B.WHITESPACE_CHARACTER:{yi(e,u);break}case B.COMMENT:{Da(e,u);break}case B.START_TAG:{ae(e,u);break}case B.END_TAG:{r0(e,u);break}case B.EOF:{Pi(e,u);break}default:}}function yi(e,u){e._reconstructActiveFormattingElements(),e._insertCharacters(u)}function Di(e,u){e._reconstructActiveFormattingElements(),e._insertCharacters(u),e.framesetOk=!1}function d1(e,u){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],u.attrs)}function l1(e,u){let t=e.openElements.tryPeekProperlyNestedBodyElement();t&&e.openElements.tmplCount===0&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(t,u.attrs))}function f1(e,u){let t=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&t&&(e.treeAdapter.detachNode(t),e.openElements.popAllUpToHtmlElement(),e._insertElement(u,T.HTML),e.insertionMode=h.IN_FRAMESET)}function h1(e,u){e.openElements.hasInButtonScope(i.P)&&e._closePElement(),e._insertElement(u,T.HTML)}function b1(e,u){e.openElements.hasInButtonScope(i.P)&&e._closePElement(),e.openElements.currentTagId!==void 0&&_u.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(u,T.HTML)}function p1(e,u){e.openElements.hasInButtonScope(i.P)&&e._closePElement(),e._insertElement(u,T.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function m1(e,u){let t=e.openElements.tmplCount>0;(!e.formElement||t)&&(e.openElements.hasInButtonScope(i.P)&&e._closePElement(),e._insertElement(u,T.HTML),t||(e.formElement=e.openElements.current))}function E1(e,u){e.framesetOk=!1;let t=u.tagID;for(let a=e.openElements.stackTop;a>=0;a--){let r=e.openElements.tagIDs[a];if(t===i.LI&&r===i.LI||(t===i.DD||t===i.DT)&&(r===i.DD||r===i.DT)){e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r);break}if(r!==i.ADDRESS&&r!==i.DIV&&r!==i.P&&e._isSpecialElement(e.openElements.items[a],r))break}e.openElements.hasInButtonScope(i.P)&&e._closePElement(),e._insertElement(u,T.HTML)}function T1(e,u){e.openElements.hasInButtonScope(i.P)&&e._closePElement(),e._insertElement(u,T.HTML),e.tokenizer.state=te.PLAINTEXT}function g1(e,u){e.openElements.hasInScope(i.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(i.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(u,T.HTML),e.framesetOk=!1}function x1(e,u){let t=e.activeFormattingElements.getElementEntryInScopeWithTagName(p.A);t&&(Ra(e,u),e.openElements.remove(t.element),e.activeFormattingElements.removeEntry(t)),e._reconstructActiveFormattingElements(),e._insertElement(u,T.HTML),e.activeFormattingElements.pushElement(e.openElements.current,u)}function A1(e,u){e._reconstructActiveFormattingElements(),e._insertElement(u,T.HTML),e.activeFormattingElements.pushElement(e.openElements.current,u)}function _1(e,u){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(i.NOBR)&&(Ra(e,u),e._reconstructActiveFormattingElements()),e._insertElement(u,T.HTML),e.activeFormattingElements.pushElement(e.openElements.current,u)}function N1(e,u){e._reconstructActiveFormattingElements(),e._insertElement(u,T.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function I1(e,u){e.treeAdapter.getDocumentMode(e.document)!==ue.QUIRKS&&e.openElements.hasInButtonScope(i.P)&&e._closePElement(),e._insertElement(u,T.HTML),e.framesetOk=!1,e.insertionMode=h.IN_TABLE}function Li(e,u){e._reconstructActiveFormattingElements(),e._appendElement(u,T.HTML),e.framesetOk=!1,u.ackSelfClosing=!0}function Ri(e){let u=Vu(e,Se.TYPE);return u!=null&&u.toLowerCase()===Yo}function C1(e,u){e._reconstructActiveFormattingElements(),e._appendElement(u,T.HTML),Ri(u)||(e.framesetOk=!1),u.ackSelfClosing=!0}function S1(e,u){e._appendElement(u,T.HTML),u.ackSelfClosing=!0}function y1(e,u){e.openElements.hasInButtonScope(i.P)&&e._closePElement(),e._appendElement(u,T.HTML),e.framesetOk=!1,u.ackSelfClosing=!0}function D1(e,u){u.tagName=p.IMG,u.tagID=i.IMG,Li(e,u)}function L1(e,u){e._insertElement(u,T.HTML),e.skipNextNewLine=!0,e.tokenizer.state=te.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=h.TEXT}function R1(e,u){e.openElements.hasInButtonScope(i.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(u,te.RAWTEXT)}function O1(e,u){e.framesetOk=!1,e._switchToTextParsing(u,te.RAWTEXT)}function Ii(e,u){e._switchToTextParsing(u,te.RAWTEXT)}function P1(e,u){e._reconstructActiveFormattingElements(),e._insertElement(u,T.HTML),e.framesetOk=!1,e.insertionMode=e.insertionMode===h.IN_TABLE||e.insertionMode===h.IN_CAPTION||e.insertionMode===h.IN_TABLE_BODY||e.insertionMode===h.IN_ROW||e.insertionMode===h.IN_CELL?h.IN_SELECT_IN_TABLE:h.IN_SELECT}function w1(e,u){e.openElements.currentTagId===i.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(u,T.HTML)}function k1(e,u){e.openElements.hasInScope(i.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(u,T.HTML)}function M1(e,u){e.openElements.hasInScope(i.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(i.RTC),e._insertElement(u,T.HTML)}function v1(e,u){e._reconstructActiveFormattingElements(),zt(u),Qu(u),u.selfClosing?e._appendElement(u,T.MATHML):e._insertElement(u,T.MATHML),u.ackSelfClosing=!0}function B1(e,u){e._reconstructActiveFormattingElements(),Jt(u),Qu(u),u.selfClosing?e._appendElement(u,T.SVG):e._insertElement(u,T.SVG),u.ackSelfClosing=!0}function Ci(e,u){e._reconstructActiveFormattingElements(),e._insertElement(u,T.HTML)}function ae(e,u){switch(u.tagID){case i.I:case i.S:case i.B:case i.U:case i.EM:case i.TT:case i.BIG:case i.CODE:case i.FONT:case i.SMALL:case i.STRIKE:case i.STRONG:{A1(e,u);break}case i.A:{x1(e,u);break}case i.H1:case i.H2:case i.H3:case i.H4:case i.H5:case i.H6:{b1(e,u);break}case i.P:case i.DL:case i.OL:case i.UL:case i.DIV:case i.DIR:case i.NAV:case i.MAIN:case i.MENU:case i.ASIDE:case i.CENTER:case i.FIGURE:case i.FOOTER:case i.HEADER:case i.HGROUP:case i.DIALOG:case i.DETAILS:case i.ADDRESS:case i.ARTICLE:case i.SEARCH:case i.SECTION:case i.SUMMARY:case i.FIELDSET:case i.BLOCKQUOTE:case i.FIGCAPTION:{h1(e,u);break}case i.LI:case i.DD:case i.DT:{E1(e,u);break}case i.BR:case i.IMG:case i.WBR:case i.AREA:case i.EMBED:case i.KEYGEN:{Li(e,u);break}case i.HR:{y1(e,u);break}case i.RB:case i.RTC:{k1(e,u);break}case i.RT:case i.RP:{M1(e,u);break}case i.PRE:case i.LISTING:{p1(e,u);break}case i.XMP:{R1(e,u);break}case i.SVG:{B1(e,u);break}case i.HTML:{d1(e,u);break}case i.BASE:case i.LINK:case i.META:case i.STYLE:case i.TITLE:case i.SCRIPT:case i.BGSOUND:case i.BASEFONT:case i.TEMPLATE:{_e(e,u);break}case i.BODY:{l1(e,u);break}case i.FORM:{m1(e,u);break}case i.NOBR:{_1(e,u);break}case i.MATH:{v1(e,u);break}case i.TABLE:{I1(e,u);break}case i.INPUT:{C1(e,u);break}case i.PARAM:case i.TRACK:case i.SOURCE:{S1(e,u);break}case i.IMAGE:{D1(e,u);break}case i.BUTTON:{g1(e,u);break}case i.APPLET:case i.OBJECT:case i.MARQUEE:{N1(e,u);break}case i.IFRAME:{O1(e,u);break}case i.SELECT:{P1(e,u);break}case i.OPTION:case i.OPTGROUP:{w1(e,u);break}case i.NOEMBED:case i.NOFRAMES:{Ii(e,u);break}case i.FRAMESET:{f1(e,u);break}case i.TEXTAREA:{L1(e,u);break}case i.NOSCRIPT:{e.options.scriptingEnabled?Ii(e,u):Ci(e,u);break}case i.PLAINTEXT:{T1(e,u);break}case i.COL:case i.TH:case i.TD:case i.TR:case i.HEAD:case i.FRAME:case i.TBODY:case i.TFOOT:case i.THEAD:case i.CAPTION:case i.COLGROUP:break;default:Ci(e,u)}}function U1(e,u){if(e.openElements.hasInScope(i.BODY)&&(e.insertionMode=h.AFTER_BODY,e.options.sourceCodeLocationInfo)){let t=e.openElements.tryPeekProperlyNestedBodyElement();t&&e._setEndLocation(t,u)}}function F1(e,u){e.openElements.hasInScope(i.BODY)&&(e.insertionMode=h.AFTER_BODY,Hi(e,u))}function H1(e,u){let t=u.tagID;e.openElements.hasInScope(t)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(t))}function q1(e){let u=e.openElements.tmplCount>0,{formElement:t}=e;u||(e.formElement=null),(t||u)&&e.openElements.hasInScope(i.FORM)&&(e.openElements.generateImpliedEndTags(),u?e.openElements.popUntilTagNamePopped(i.FORM):t&&e.openElements.remove(t))}function Y1(e){e.openElements.hasInButtonScope(i.P)||e._insertFakeElement(p.P,i.P),e._closePElement()}function V1(e){e.openElements.hasInListItemScope(i.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(i.LI),e.openElements.popUntilTagNamePopped(i.LI))}function $1(e,u){let t=u.tagID;e.openElements.hasInScope(t)&&(e.openElements.generateImpliedEndTagsWithExclusion(t),e.openElements.popUntilTagNamePopped(t))}function G1(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}function W1(e,u){let t=u.tagID;e.openElements.hasInScope(t)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(t),e.activeFormattingElements.clearToLastMarker())}function Q1(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(p.BR,i.BR),e.openElements.pop(),e.framesetOk=!1}function Oi(e,u){let t=u.tagName,a=u.tagID;for(let r=e.openElements.stackTop;r>0;r--){let n=e.openElements.items[r],s=e.openElements.tagIDs[r];if(a===s&&(a!==i.UNKNOWN||e.treeAdapter.getTagName(n)===t)){e.openElements.generateImpliedEndTagsWithExclusion(a),e.openElements.stackTop>=r&&e.openElements.shortenToLength(r);break}if(e._isSpecialElement(n,s))break}}function r0(e,u){switch(u.tagID){case i.A:case i.B:case i.I:case i.S:case i.U:case i.EM:case i.TT:case i.BIG:case i.CODE:case i.FONT:case i.NOBR:case i.SMALL:case i.STRIKE:case i.STRONG:{Ra(e,u);break}case i.P:{Y1(e);break}case i.DL:case i.UL:case i.OL:case i.DIR:case i.DIV:case i.NAV:case i.PRE:case i.MAIN:case i.MENU:case i.ASIDE:case i.BUTTON:case i.CENTER:case i.FIGURE:case i.FOOTER:case i.HEADER:case i.HGROUP:case i.DIALOG:case i.ADDRESS:case i.ARTICLE:case i.DETAILS:case i.SEARCH:case i.SECTION:case i.SUMMARY:case i.LISTING:case i.FIELDSET:case i.BLOCKQUOTE:case i.FIGCAPTION:{H1(e,u);break}case i.LI:{V1(e);break}case i.DD:case i.DT:{$1(e,u);break}case i.H1:case i.H2:case i.H3:case i.H4:case i.H5:case i.H6:{G1(e);break}case i.BR:{Q1(e);break}case i.BODY:{U1(e,u);break}case i.HTML:{F1(e,u);break}case i.FORM:{q1(e);break}case i.APPLET:case i.OBJECT:case i.MARQUEE:{W1(e,u);break}case i.TEMPLATE:{nu(e,u);break}default:Oi(e,u)}}function Pi(e,u){e.tmplInsertionModeStack.length>0?Fi(e,u):Oa(e,u)}function X1(e,u){var t;u.tagID===i.SCRIPT&&((t=e.scriptHandler)===null||t===void 0||t.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode}function j1(e,u){e._err(u,m.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(u)}function ya(e,u){if(e.openElements.currentTagId!==void 0&&Si.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=h.IN_TABLE_TEXT,u.type){case B.CHARACTER:{ki(e,u);break}case B.WHITESPACE_CHARACTER:{wi(e,u);break}}else tt(e,u)}function K1(e,u){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(u,T.HTML),e.insertionMode=h.IN_CAPTION}function z1(e,u){e.openElements.clearBackToTableContext(),e._insertElement(u,T.HTML),e.insertionMode=h.IN_COLUMN_GROUP}function J1(e,u){e.openElements.clearBackToTableContext(),e._insertFakeElement(p.COLGROUP,i.COLGROUP),e.insertionMode=h.IN_COLUMN_GROUP,Pa(e,u)}function Z1(e,u){e.openElements.clearBackToTableContext(),e._insertElement(u,T.HTML),e.insertionMode=h.IN_TABLE_BODY}function ed(e,u){e.openElements.clearBackToTableContext(),e._insertFakeElement(p.TBODY,i.TBODY),e.insertionMode=h.IN_TABLE_BODY,i0(e,u)}function ud(e,u){e.openElements.hasInTableScope(i.TABLE)&&(e.openElements.popUntilTagNamePopped(i.TABLE),e._resetInsertionMode(),e._processStartTag(u))}function td(e,u){Ri(u)?e._appendElement(u,T.HTML):tt(e,u),u.ackSelfClosing=!0}function ad(e,u){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(u,T.HTML),e.formElement=e.openElements.current,e.openElements.pop())}function Iu(e,u){switch(u.tagID){case i.TD:case i.TH:case i.TR:{ed(e,u);break}case i.STYLE:case i.SCRIPT:case i.TEMPLATE:{_e(e,u);break}case i.COL:{J1(e,u);break}case i.FORM:{ad(e,u);break}case i.TABLE:{ud(e,u);break}case i.TBODY:case i.TFOOT:case i.THEAD:{Z1(e,u);break}case i.INPUT:{td(e,u);break}case i.CAPTION:{K1(e,u);break}case i.COLGROUP:{z1(e,u);break}default:tt(e,u)}}function ut(e,u){switch(u.tagID){case i.TABLE:{e.openElements.hasInTableScope(i.TABLE)&&(e.openElements.popUntilTagNamePopped(i.TABLE),e._resetInsertionMode());break}case i.TEMPLATE:{nu(e,u);break}case i.BODY:case i.CAPTION:case i.COL:case i.COLGROUP:case i.HTML:case i.TBODY:case i.TD:case i.TFOOT:case i.TH:case i.THEAD:case i.TR:break;default:tt(e,u)}}function tt(e,u){let t=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,a0(e,u),e.fosterParentingEnabled=t}function wi(e,u){e.pendingCharacterTokens.push(u)}function ki(e,u){e.pendingCharacterTokens.push(u),e.hasNonWhitespacePendingCharacterToken=!0}function ju(e,u){let t=0;if(e.hasNonWhitespacePendingCharacterToken)for(;t<e.pendingCharacterTokens.length;t++)tt(e,e.pendingCharacterTokens[t]);else for(;t<e.pendingCharacterTokens.length;t++)e._insertCharacters(e.pendingCharacterTokens[t]);e.insertionMode=e.originalInsertionMode,e._processToken(u)}var Mi=new Set([i.CAPTION,i.COL,i.COLGROUP,i.TBODY,i.TD,i.TFOOT,i.TH,i.THEAD,i.TR]);function rd(e,u){let t=u.tagID;Mi.has(t)?e.openElements.hasInTableScope(i.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(i.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=h.IN_TABLE,Iu(e,u)):ae(e,u)}function id(e,u){let t=u.tagID;switch(t){case i.CAPTION:case i.TABLE:{e.openElements.hasInTableScope(i.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(i.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=h.IN_TABLE,t===i.TABLE&&ut(e,u));break}case i.BODY:case i.COL:case i.COLGROUP:case i.HTML:case i.TBODY:case i.TD:case i.TFOOT:case i.TH:case i.THEAD:case i.TR:break;default:r0(e,u)}}function Pa(e,u){switch(u.tagID){case i.HTML:{ae(e,u);break}case i.COL:{e._appendElement(u,T.HTML),u.ackSelfClosing=!0;break}case i.TEMPLATE:{_e(e,u);break}default:u0(e,u)}}function nd(e,u){switch(u.tagID){case i.COLGROUP:{e.openElements.currentTagId===i.COLGROUP&&(e.openElements.pop(),e.insertionMode=h.IN_TABLE);break}case i.TEMPLATE:{nu(e,u);break}case i.COL:break;default:u0(e,u)}}function u0(e,u){e.openElements.currentTagId===i.COLGROUP&&(e.openElements.pop(),e.insertionMode=h.IN_TABLE,e._processToken(u))}function i0(e,u){switch(u.tagID){case i.TR:{e.openElements.clearBackToTableBodyContext(),e._insertElement(u,T.HTML),e.insertionMode=h.IN_ROW;break}case i.TH:case i.TD:{e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(p.TR,i.TR),e.insertionMode=h.IN_ROW,n0(e,u);break}case i.CAPTION:case i.COL:case i.COLGROUP:case i.TBODY:case i.TFOOT:case i.THEAD:{e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=h.IN_TABLE,Iu(e,u));break}default:Iu(e,u)}}function La(e,u){let t=u.tagID;switch(u.tagID){case i.TBODY:case i.TFOOT:case i.THEAD:{e.openElements.hasInTableScope(t)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=h.IN_TABLE);break}case i.TABLE:{e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=h.IN_TABLE,ut(e,u));break}case i.BODY:case i.CAPTION:case i.COL:case i.COLGROUP:case i.HTML:case i.TD:case i.TH:case i.TR:break;default:ut(e,u)}}function n0(e,u){switch(u.tagID){case i.TH:case i.TD:{e.openElements.clearBackToTableRowContext(),e._insertElement(u,T.HTML),e.insertionMode=h.IN_CELL,e.activeFormattingElements.insertMarker();break}case i.CAPTION:case i.COL:case i.COLGROUP:case i.TBODY:case i.TFOOT:case i.THEAD:case i.TR:{e.openElements.hasInTableScope(i.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=h.IN_TABLE_BODY,i0(e,u));break}default:Iu(e,u)}}function vi(e,u){switch(u.tagID){case i.TR:{e.openElements.hasInTableScope(i.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=h.IN_TABLE_BODY);break}case i.TABLE:{e.openElements.hasInTableScope(i.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=h.IN_TABLE_BODY,La(e,u));break}case i.TBODY:case i.TFOOT:case i.THEAD:{(e.openElements.hasInTableScope(u.tagID)||e.openElements.hasInTableScope(i.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=h.IN_TABLE_BODY,La(e,u));break}case i.BODY:case i.CAPTION:case i.COL:case i.COLGROUP:case i.HTML:case i.TD:case i.TH:break;default:ut(e,u)}}function sd(e,u){let t=u.tagID;Mi.has(t)?(e.openElements.hasInTableScope(i.TD)||e.openElements.hasInTableScope(i.TH))&&(e._closeTableCell(),n0(e,u)):ae(e,u)}function cd(e,u){let t=u.tagID;switch(t){case i.TD:case i.TH:{e.openElements.hasInTableScope(t)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(t),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=h.IN_ROW);break}case i.TABLE:case i.TBODY:case i.TFOOT:case i.THEAD:case i.TR:{e.openElements.hasInTableScope(t)&&(e._closeTableCell(),vi(e,u));break}case i.BODY:case i.CAPTION:case i.COL:case i.COLGROUP:case i.HTML:break;default:r0(e,u)}}function Bi(e,u){switch(u.tagID){case i.HTML:{ae(e,u);break}case i.OPTION:{e.openElements.currentTagId===i.OPTION&&e.openElements.pop(),e._insertElement(u,T.HTML);break}case i.OPTGROUP:{e.openElements.currentTagId===i.OPTION&&e.openElements.pop(),e.openElements.currentTagId===i.OPTGROUP&&e.openElements.pop(),e._insertElement(u,T.HTML);break}case i.HR:{e.openElements.currentTagId===i.OPTION&&e.openElements.pop(),e.openElements.currentTagId===i.OPTGROUP&&e.openElements.pop(),e._appendElement(u,T.HTML),u.ackSelfClosing=!0;break}case i.INPUT:case i.KEYGEN:case i.TEXTAREA:case i.SELECT:{e.openElements.hasInSelectScope(i.SELECT)&&(e.openElements.popUntilTagNamePopped(i.SELECT),e._resetInsertionMode(),u.tagID!==i.SELECT&&e._processStartTag(u));break}case i.SCRIPT:case i.TEMPLATE:{_e(e,u);break}default:}}function Ui(e,u){switch(u.tagID){case i.OPTGROUP:{e.openElements.stackTop>0&&e.openElements.currentTagId===i.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===i.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===i.OPTGROUP&&e.openElements.pop();break}case i.OPTION:{e.openElements.currentTagId===i.OPTION&&e.openElements.pop();break}case i.SELECT:{e.openElements.hasInSelectScope(i.SELECT)&&(e.openElements.popUntilTagNamePopped(i.SELECT),e._resetInsertionMode());break}case i.TEMPLATE:{nu(e,u);break}default:}}function od(e,u){let t=u.tagID;t===i.CAPTION||t===i.TABLE||t===i.TBODY||t===i.TFOOT||t===i.THEAD||t===i.TR||t===i.TD||t===i.TH?(e.openElements.popUntilTagNamePopped(i.SELECT),e._resetInsertionMode(),e._processStartTag(u)):Bi(e,u)}function dd(e,u){let t=u.tagID;t===i.CAPTION||t===i.TABLE||t===i.TBODY||t===i.TFOOT||t===i.THEAD||t===i.TR||t===i.TD||t===i.TH?e.openElements.hasInTableScope(t)&&(e.openElements.popUntilTagNamePopped(i.SELECT),e._resetInsertionMode(),e.onEndTag(u)):Ui(e,u)}function ld(e,u){switch(u.tagID){case i.BASE:case i.BASEFONT:case i.BGSOUND:case i.LINK:case i.META:case i.NOFRAMES:case i.SCRIPT:case i.STYLE:case i.TEMPLATE:case i.TITLE:{_e(e,u);break}case i.CAPTION:case i.COLGROUP:case i.TBODY:case i.TFOOT:case i.THEAD:{e.tmplInsertionModeStack[0]=h.IN_TABLE,e.insertionMode=h.IN_TABLE,Iu(e,u);break}case i.COL:{e.tmplInsertionModeStack[0]=h.IN_COLUMN_GROUP,e.insertionMode=h.IN_COLUMN_GROUP,Pa(e,u);break}case i.TR:{e.tmplInsertionModeStack[0]=h.IN_TABLE_BODY,e.insertionMode=h.IN_TABLE_BODY,i0(e,u);break}case i.TD:case i.TH:{e.tmplInsertionModeStack[0]=h.IN_ROW,e.insertionMode=h.IN_ROW,n0(e,u);break}default:e.tmplInsertionModeStack[0]=h.IN_BODY,e.insertionMode=h.IN_BODY,ae(e,u)}}function fd(e,u){u.tagID===i.TEMPLATE&&nu(e,u)}function Fi(e,u){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(i.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(u)):Oa(e,u)}function hd(e,u){u.tagID===i.HTML?ae(e,u):t0(e,u)}function Hi(e,u){var t;if(u.tagID===i.HTML){if(e.fragmentContext||(e.insertionMode=h.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===i.HTML){e._setEndLocation(e.openElements.items[0],u);let a=e.openElements.items[1];a&&!(!((t=e.treeAdapter.getNodeSourceCodeLocation(a))===null||t===void 0)&&t.endTag)&&e._setEndLocation(a,u)}}else t0(e,u)}function t0(e,u){e.insertionMode=h.IN_BODY,a0(e,u)}function bd(e,u){switch(u.tagID){case i.HTML:{ae(e,u);break}case i.FRAMESET:{e._insertElement(u,T.HTML);break}case i.FRAME:{e._appendElement(u,T.HTML),u.ackSelfClosing=!0;break}case i.NOFRAMES:{_e(e,u);break}default:}}function pd(e,u){u.tagID===i.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==i.FRAMESET&&(e.insertionMode=h.AFTER_FRAMESET))}function md(e,u){switch(u.tagID){case i.HTML:{ae(e,u);break}case i.NOFRAMES:{_e(e,u);break}default:}}function Ed(e,u){u.tagID===i.HTML&&(e.insertionMode=h.AFTER_AFTER_FRAMESET)}function Td(e,u){u.tagID===i.HTML?ae(e,u):e0(e,u)}function e0(e,u){e.insertionMode=h.IN_BODY,a0(e,u)}function gd(e,u){switch(u.tagID){case i.HTML:{ae(e,u);break}case i.NOFRAMES:{_e(e,u);break}default:}}function xd(e,u){u.chars=$,e._insertCharacters(u)}function Ad(e,u){e._insertCharacters(u),e.framesetOk=!1}function qi(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==T.HTML&&e.openElements.currentTagId!==void 0&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop()}function _d(e,u){if(Ia(u))qi(e),e._startTagOutsideForeignContent(u);else{let t=e._getAdjustedCurrentElement(),a=e.treeAdapter.getNamespaceURI(t);a===T.MATHML?zt(u):a===T.SVG&&(Ca(u),Jt(u)),Qu(u),u.selfClosing?e._appendElement(u,a):e._insertElement(u,a),u.ackSelfClosing=!0}}function Nd(e,u){if(u.tagID===i.P||u.tagID===i.BR){qi(e),e._endTagOutsideForeignContent(u);return}for(let t=e.openElements.stackTop;t>0;t--){let a=e.openElements.items[t];if(e.treeAdapter.getNamespaceURI(a)===T.HTML){e._endTagOutsideForeignContent(u);break}let r=e.treeAdapter.getTagName(a);if(r.toLowerCase()===u.tagName){u.tagName=r,e.openElements.shortenToLength(t);break}}}var $3=String.prototype.codePointAt==null?(e,u)=>(e.charCodeAt(u)&64512)===55296?(e.charCodeAt(u)-55296)*1024+e.charCodeAt(u+1)-56320+65536:e.charCodeAt(u):(e,u)=>e.codePointAt(u);function Yi(e,u){return function(a){let r,n=0,s="";for(;r=e.exec(a);)n!==r.index&&(s+=a.substring(n,r.index)),s+=u.get(r[0].charCodeAt(0)),n=r.index+1;return s+a.substring(n)}}var Vi=Yi(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),$i=Yi(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]));var Id=new Set([p.AREA,p.BASE,p.BASEFONT,p.BGSOUND,p.BR,p.COL,p.EMBED,p.FRAME,p.HR,p.IMG,p.INPUT,p.KEYGEN,p.LINK,p.META,p.PARAM,p.SOURCE,p.TRACK,p.WBR]);function Cd(e,u){return u.treeAdapter.isElementNode(e)&&u.treeAdapter.getNamespaceURI(e)===T.HTML&&Id.has(u.treeAdapter.getTagName(e))}var Sd={treeAdapter:ge,scriptingEnabled:!0};function wa(e,u){let t={...Sd,...u};return Gi(e,t)}function yd(e,u){let t="",a=u.treeAdapter.isElementNode(e)&&u.treeAdapter.getTagName(e)===p.TEMPLATE&&u.treeAdapter.getNamespaceURI(e)===T.HTML?u.treeAdapter.getTemplateContent(e):e,r=u.treeAdapter.getChildNodes(a);if(r)for(let n of r)t+=Gi(n,u);return t}function Gi(e,u){return u.treeAdapter.isElementNode(e)?Dd(e,u):u.treeAdapter.isTextNode(e)?Rd(e,u):u.treeAdapter.isCommentNode(e)?Od(e,u):u.treeAdapter.isDocumentTypeNode(e)?Pd(e,u):""}function Dd(e,u){let t=u.treeAdapter.getTagName(e);return`<${t}${Ld(e,u)}>${Cd(e,u)?"":`${yd(e,u)}</${t}>`}`}function Ld(e,{treeAdapter:u}){let t="";for(let a of u.getAttrList(e)){if(t+=" ",a.namespace)switch(a.namespace){case T.XML:{t+=`xml:${a.name}`;break}case T.XMLNS:{a.name!=="xmlns"&&(t+="xmlns:"),t+=a.name;break}case T.XLINK:{t+=`xlink:${a.name}`;break}default:t+=`${a.prefix}:${a.name}`}else t+=a.name;t+=`="${Vi(a.value)}"`}return t}function Rd(e,u){let{treeAdapter:t}=u,a=t.getTextNodeContent(e),r=t.getParentNode(e),n=r&&t.isElementNode(r)&&t.getTagName(r);return n&&t.getNamespaceURI(r)===T.HTML&&Na(n,u.scriptingEnabled)?a:$i(a)}function Od(e,{treeAdapter:u}){return`<!--${u.getCommentNodeContent(e)}-->`}function Pd(e,{treeAdapter:u}){return`<!DOCTYPE ${u.getDocumentTypeNodeName(e)}>`}function Wi(e,u){return Nu.parse(e,u)}function Qi(e,u,t){typeof e=="string"&&(t=u,u=e,e=null);let a=Nu.getFragmentParser(e,t);return a.tokenizer.write(u,!0),a.getFragment()}function Xi(e){let u=e.includes('"')?"'":'"';return u+e+u}function wd(e,u,t){let a="!DOCTYPE ";return e&&(a+=e),u?a+=` PUBLIC ${Xi(u)}`:t&&(a+=" SYSTEM"),t&&(a+=` ${Xi(t)}`),a}var Me={isCommentNode:eu,isElementNode:C,isTextNode:se,createDocument(){let e=new he([]);return e["x-mode"]=$u.DOCUMENT_MODE.NO_QUIRKS,e},createDocumentFragment(){return new he([])},createElement(e,u,t){let a=Object.create(null),r=Object.create(null),n=Object.create(null);for(let c=0;c<t.length;c++){let o=t[c].name;a[o]=t[c].value,r[o]=t[c].namespace,n[o]=t[c].prefix}let s=new Ze(e,a,[]);return s.namespace=u,s["x-attribsNamespace"]=r,s["x-attribsPrefix"]=n,s},createCommentNode(e){return new ze(e)},createTextNode(e){return new Ie(e)},appendChild(e,u){let t=e.children[e.children.length-1];t&&(t.next=u,u.prev=t),e.children.push(u),u.parent=e},insertBefore(e,u,t){let a=e.children.indexOf(t),{prev:r}=t;r&&(r.next=u,u.prev=r),t.prev=u,u.next=t,e.children.splice(a,0,u),u.parent=e},setTemplateContent(e,u){Me.appendChild(e,u)},getTemplateContent(e){return e.children[0]},setDocumentType(e,u,t,a){let r=wd(u,t,a),n=e.children.find(s=>lt(s)&&s.name==="!doctype");n?n.data=r!=null?r:null:(n=new Je("!doctype",r),Me.appendChild(e,n)),n["x-name"]=u,n["x-publicId"]=t,n["x-systemId"]=a},setDocumentMode(e,u){e["x-mode"]=u},getDocumentMode(e){return e["x-mode"]},detachNode(e){if(e.parent){let u=e.parent.children.indexOf(e),{prev:t,next:a}=e;e.prev=null,e.next=null,t&&(t.next=a),a&&(a.prev=t),e.parent.children.splice(u,1),e.parent=null}},insertText(e,u){let t=e.children[e.children.length-1];t&&se(t)?t.data+=u:Me.appendChild(e,Me.createTextNode(u))},insertTextBefore(e,u,t){let a=e.children[e.children.indexOf(t)-1];a&&se(a)?a.data+=u:Me.insertBefore(e,Me.createTextNode(u),t)},adoptAttributes(e,u){for(let t=0;t<u.length;t++){let a=u[t].name;e.attribs[a]===void 0&&(e.attribs[a]=u[t].value,e["x-attribsNamespace"][a]=u[t].namespace,e["x-attribsPrefix"][a]=u[t].prefix)}},getFirstChild(e){return e.children[0]},getChildNodes(e){return e.children},getParentNode(e){return e.parent},getAttrList(e){return e.attributes},getTagName(e){return e.name},getNamespaceURI(e){return e.namespace},getTextNodeContent(e){return e.data},getCommentNodeContent(e){return e.data},getDocumentTypeNodeName(e){var u;return(u=e["x-name"])!==null&&u!==void 0?u:""},getDocumentTypeNodePublicId(e){var u;return(u=e["x-publicId"])!==null&&u!==void 0?u:""},getDocumentTypeNodeSystemId(e){var u;return(u=e["x-systemId"])!==null&&u!==void 0?u:""},isDocumentTypeNode(e){return lt(e)&&e.name==="!doctype"},setNodeSourceCodeLocation(e,u){u&&(e.startIndex=u.startOffset,e.endIndex=u.endOffset),e.sourceCodeLocation=u},getNodeSourceCodeLocation(e){return e.sourceCodeLocation},updateNodeSourceCodeLocation(e,u){u.endOffset!=null&&(e.endIndex=u.endOffset),e.sourceCodeLocation={...e.sourceCodeLocation,...u}}};function ji(e,u,t,a){var r;return(r=u.treeAdapter)!==null&&r!==void 0||(u.treeAdapter=Me),u.scriptingEnabled!==!1&&(u.scriptingEnabled=!0),t?Wi(e,u):Qi(a,e,u)}var kd={treeAdapter:Me};function Ki(e){let u="length"in e?e:[e];for(let a=0;a<u.length;a+=1){let r=u[a];be(r)&&Array.prototype.splice.call(u,a,1,...r.children)}let t="";for(let a=0;a<u.length;a+=1){let r=u[a];t+=wa(r,kd)}return t}var Md=Kr((e,u,t,a)=>u._useHtmlParser2?Tr(e,u):ji(e,u,t,a)),zi=ai(Md,(e,u)=>u._useHtmlParser2?mt(e,u):Ki(e));async function ka(e){let u={title:"",description:"",cover:""};if(!e||!e.startsWith("http"))return u;try{let t=await(0,Ji.request)({url:e}),a=zi(t),r=a("title").text()||"",n=a('meta[name="description"]').attr("content")||a('meta[property="og:description"]').attr("content")||"",s=a('meta[property="og:image"]').attr("content")||a('meta[name="twitter:image"]').attr("content")||"";return r||(r=a('meta[property="og:title"]').attr("content")||""),r=r.trim(),n=n.trim(),s&&!s.startsWith("http")&&(s=""),{title:r,description:n,cover:s}}catch(t){return console.error("Error fetching metadata from URL:",e,t),u}}var Bd=require("obsidian");var en={LINK:"link",ARTICLE:"article",IMAGE:"image",VIDEO:"video",DOCUMENT:"document",AUDIO:"audio"},Ma={ALL:"all",ANY:"any"},s0={UNSORTED:-1,TRASH:-99},zh={...en,ALL:"all"};var at={apiToken:"",defaultFolder:"",fileNameTemplate:"{{title}}",showRibbonIcon:!0,bannerFieldName:"banner",isTemplateSystemEnabled:!0,enableMdxSupport:!0,enableModernUI:!0,useCardLayout:!0,enableAnimations:!0,colorTheme:"auto",compactMode:!1,defaultTemplate:`--- title: "{{title}}" source: {{link}} type: {{type}} @@ -15332,9 +61,7 @@ tags: - **Created**: {{formattedCreatedDate}} - **Updated**: {{formattedUpdatedDate}} - **Tags**: {{formattedTags}} -`, - contentTypeTemplates: { - link: `--- +`,contentTypeTemplates:{link:`--- title: "{{title}}" source: {{link}} type: {{type}} @@ -15386,8 +113,7 @@ tags: - **Updated**: {{formattedUpdatedDate}} - **Tags**: {{formattedTags}} -[Source]({{link}})`, - article: `--- +[Source]({{link}})`,article:`--- title: "{{title}}" source: {{link}} type: {{type}} @@ -15439,8 +165,7 @@ tags: - **Updated**: {{formattedUpdatedDate}} - **Tags**: {{formattedTags}} -[Read Article]({{link}})`, - image: `--- +[Read Article]({{link}})`,image:`--- title: "{{title}}" source: {{link}} type: {{type}} @@ -15477,8 +202,7 @@ tags: - **Updated**: {{formattedUpdatedDate}} - **Tags**: {{formattedTags}} -[View Original]({{link}})`, - video: `--- +[View Original]({{link}})`,video:`--- title: "{{title}}" source: {{link}} type: {{type}} @@ -15530,8 +254,7 @@ tags: - **Updated**: {{formattedUpdatedDate}} - **Tags**: {{formattedTags}} -[Watch Video]({{link}})`, - document: `--- +[Watch Video]({{link}})`,document:`--- title: "{{title}}" source: {{link}} type: {{type}} @@ -15579,8 +302,7 @@ tags: - **Updated**: {{formattedUpdatedDate}} - **Tags**: {{formattedTags}} -[Open Document]({{link}})`, - audio: `--- +[Open Document]({{link}})`,audio:`--- title: "{{title}}" source: {{link}} type: {{type}} @@ -15632,1559 +354,51 @@ tags: - **Updated**: {{formattedUpdatedDate}} - **Tags**: {{formattedTags}} -[Listen to Audio]({{link}})` - }, - contentTypeTemplateToggles: { - link: true, - article: true, - image: true, - video: true, - document: true, - audio: true - } -}; -var AddNewBookmarkModal = class extends import_obsidian6.Modal { - constructor(app, plugin) { - super(app); - this.url = ""; - this.title = ""; - this.description = ""; - this.cover = ""; - this.tags = ""; - this.note = ""; - this.collectionId = 0; - this.collectionName = "Unsorted"; - this.collections = []; - this.collectionMap = /* @__PURE__ */ new Map(); - this.collectionHierarchy = /* @__PURE__ */ new Map(); - this.plugin = plugin; - this.vaultPath = this.plugin.settings.defaultFolder; - } - async onOpen() { - const { contentEl } = this; - contentEl.addClass("add-new-bookmark-modal"); - contentEl.createEl("h2", { text: "Add New Bookmark" }); - let urlTextComponent; - new import_obsidian6.Setting(contentEl).setName("URL").setDesc("Enter the URL of the bookmark to add.").setClass("setting-item-stacked").addText((text3) => { - urlTextComponent = text3; - text3.setPlaceholder("https://example.com").setValue(this.url).onChange((value) => { - this.url = value.trim(); - this.fetchButton.setDisabled(!this.url); - }); - text3.inputEl.style.width = "100%"; - }).addButton((button) => { - this.fetchButton = button; - button.setButtonText("Fetch Metadata").setCta().setDisabled(!this.url).onClick(async () => { - if (!this.url) { - new import_obsidian6.Notice("Please enter a URL first.", 3e3); - return; - } - this.fetchButton.setDisabled(true).setButtonText("Fetching..."); - try { - const metadata = await fetchMetadataFromUrl(this.url); - this.title = metadata.title || "Untitled Bookmark"; - this.description = metadata.description || ""; - this.cover = metadata.cover || ""; - this.titleTextComponent.setValue(this.title); - this.descriptionTextComponent.setValue(this.description); - new import_obsidian6.Notice("Metadata fetched successfully!", 3e3); - } catch (error) { - new import_obsidian6.Notice("Failed to fetch metadata. Please check the URL.", 5e3); - console.error("Metadata fetch error:", error); - } finally { - this.fetchButton.setDisabled(false).setButtonText("Fetch Metadata"); - } - }); - }); - contentEl.createEl("h3", { text: "Bookmark Details" }); - new import_obsidian6.Setting(contentEl).setName("Title").setClass("setting-item-stacked").addText((text3) => { - this.titleTextComponent = text3; - text3.setPlaceholder("Title").setValue(this.title).onChange((value) => { - this.title = value.trim(); - }); - text3.inputEl.style.width = "100%"; - }); - new import_obsidian6.Setting(contentEl).setName("Excerpt/Description").setClass("setting-item-stacked").addTextArea((text3) => { - this.descriptionTextComponent = text3; - text3.setPlaceholder("Short description or excerpt").setValue(this.description).onChange((value) => { - this.description = value.trim(); - }); - text3.inputEl.style.width = "100%"; - }); - new import_obsidian6.Setting(contentEl).setName("Cover Image URL").setClass("setting-item-stacked").addText((text3) => { - text3.setPlaceholder("Optional image URL").setValue(this.cover).onChange((value) => { - this.cover = value.trim(); - }); - text3.inputEl.style.width = "100%"; - }); - new import_obsidian6.Setting(contentEl).setName("Note").setDesc("Your personal note for this bookmark.").setClass("setting-item-stacked").addTextArea((text3) => { - text3.setPlaceholder("Your personal note").setValue(this.note).onChange((value) => { - this.note = value.trim(); - }); - text3.inputEl.style.width = "100%"; - }); - new import_obsidian6.Setting(contentEl).setName("Tags").setDesc("Comma-separated tags (e.g., tag1, tag2)").setClass("setting-item-stacked").addText((text3) => { - text3.setPlaceholder("e.g., web, read-later").setValue(this.tags).onChange((value) => { - this.tags = value.trim(); - }); - text3.inputEl.style.width = "100%"; - }); - new import_obsidian6.Setting(contentEl).setName("Collection").setDesc("Select the Raindrop collection to save this bookmark to.").addDropdown((dropdown) => { - this.collectionSelect = dropdown; - dropdown.addOption("0", "Unsorted"); - this.plugin.fetchAllUserCollections().then((collections) => { - this.collections = collections; - this.buildHierarchy(); - this.collections.forEach((col) => { - const path = this.getFullPath(col._id); - dropdown.addOption(col._id.toString(), path); - }); - const initialCollection = this.collections.find((col) => col._id === this.collectionId); - if (initialCollection) { - dropdown.setValue(this.collectionId.toString()); - } else { - dropdown.setValue("0"); - } - dropdown.onChange((value) => { - this.collectionId = parseInt(value); - const selectedCollection = this.collectionMap.get(this.collectionId); - this.collectionName = selectedCollection ? selectedCollection.title : "Unsorted"; - }); - }).catch((error) => { - new import_obsidian6.Notice("Failed to load collections.", 7e3); - console.error("Error loading collections in modal:", error); - }); - }); - const buttonsEl = contentEl.createDiv({ cls: "modal-button-container" }); - new import_obsidian6.ButtonComponent(buttonsEl).setButtonText("Add Bookmark").setCta().onClick(async () => { - if (!this.url || !this.title) { - new import_obsidian6.Notice("URL and Title are required.", 3e3); - return; - } - this.close(); - const tagsArray = this.tags.split(",").map((tag) => tag.trim()).filter((tag) => tag.length > 0); - await this.plugin.createRaindropNote({ - title: this.title, - url: this.url, - excerpt: this.description, - cover: this.cover, - tags: tagsArray, - vaultPath: this.vaultPath || void 0, - note: this.note, - collectionId: this.collectionId, - collectionName: this.collectionName - }); - }); - new import_obsidian6.ButtonComponent(buttonsEl).setButtonText("Cancel").onClick(() => { - this.close(); - }); - } - buildHierarchy() { - this.collectionMap.clear(); - this.collectionHierarchy.clear(); - this.collections.forEach((col) => { - this.collectionMap.set(col._id, col); - }); - this.collections.forEach((col) => { - var _a5, _b; - const parentId = ((_a5 = col.parent) == null ? void 0 : _a5.$id) || 0; - if (!this.collectionHierarchy.has(parentId)) { - this.collectionHierarchy.set(parentId, []); - } - (_b = this.collectionHierarchy.get(parentId)) == null ? void 0 : _b.push(col._id); - }); - } - getFullPath(collectionId) { - var _a5; - const segments = []; - let currentId = collectionId; - while (currentId !== void 0 && currentId !== 0) { - const collection = this.collectionMap.get(currentId); - if (!collection) break; - segments.push(collection.title); - currentId = (_a5 = collection.parent) == null ? void 0 : _a5.$id; - } - return segments.reverse().join(" > "); - } -}; -var RaindropToObsidian = class extends import_obsidian6.Plugin { - constructor(app, manifest) { - super(app, manifest); - this.isRibbonShown = false; - this.settings = { ...DEFAULT_SETTINGS }; - this.rateLimiter = createRateLimiter(); - } - async onload() { - await this.loadSettings(); - this.registerView( - RAINDROP_VIEW_TYPE, - (leaf) => new RaindropView(leaf, this) - ); - this.addCommand({ - id: "open-raindrop-dashboard", - name: "Open Raindrop Dashboard", - callback: () => this.activateView() - }); - this.addCommand({ - id: "add-new-bookmark-modal", - name: "Add New Bookmark (Modal)", - callback: () => { - new AddNewBookmarkModal(this.app, this).open(); - } - }); - this.addCommand({ - // New command for Quick Import - id: "add-new-bookmark", - name: "Add New Bookmark from URL", - callback: async () => { - new AddNewBookmarkModal(this.app, this).open(); - } - }); - this.updateRibbonIcon(); - this.addSettingTab(new RaindropToObsidianSettingTab(this.app, this)); - console.log("Make It Rain plugin loaded!"); - } - onunload() { - var _a5; - this.app.workspace.detachLeavesOfType(RAINDROP_VIEW_TYPE); - (_a5 = this.ribbonIconEl) == null ? void 0 : _a5.remove(); - console.log("Make It Rain plugin unloaded."); - } - async loadSettings() { - const savedData = await this.loadData(); - this.settings = { ...DEFAULT_SETTINGS }; - if (savedData) { - const mergedSettings = { - ...this.settings, - ...savedData, - contentTypeTemplates: { - ...this.settings.contentTypeTemplates, - ...Object.fromEntries( - Object.entries(savedData.contentTypeTemplates || {}).map(([key, value]) => [ - key, - value.trim() === "" ? this.settings.contentTypeTemplates[key] : value - ]) - ) - }, - contentTypeTemplateToggles: { - ...this.settings.contentTypeTemplateToggles, - ...savedData.contentTypeTemplateToggles || {} - } - }; - this.settings = mergedSettings; - } - await this.saveSettings(); - } - getTemplateForType(type, options) { - var _a5; - if (options.useDefaultTemplate) { - return this.settings.defaultTemplate; - } - const shouldUseTypeTemplate = options.overrideTemplates || this.settings.contentTypeTemplateToggles[type] && ((_a5 = this.settings.contentTypeTemplates[type]) == null ? void 0 : _a5.trim()) !== ""; - return shouldUseTypeTemplate ? this.settings.contentTypeTemplates[type] : this.settings.defaultTemplate; - } - /** - * Generates a file name based on the provided raindrop data and settings - * @param raindrop - The raindrop data to use for file name generation - * @param useRaindropTitleForFileName - Whether to use the raindrop title for the file name - * @returns The generated file name - */ - generateFileName(raindrop, useRaindropTitleForFileName) { - var _a5; - const fileNameTemplate = useRaindropTitleForFileName ? this.settings.fileNameTemplate : "{{id}}"; - let fileName = fileNameTemplate; - const replacePlaceholder = (placeholder, value) => { - const safeValue = sanitizeFileName(value); - const regex = new RegExp(`{{${placeholder}}}`, "gi"); - fileName = fileName.replace(regex, safeValue); - }; - try { - replacePlaceholder("title", raindrop.title || "Untitled"); - replacePlaceholder("id", (raindrop._id || "unknown_id").toString()); - replacePlaceholder("collectionTitle", ((_a5 = raindrop.collection) == null ? void 0 : _a5.title) || "No Collection"); - const createdDate = raindrop.created ? new Date(raindrop.created) : null; - let formattedDate = "no_date"; - if (createdDate && !isNaN(createdDate.getTime())) { - formattedDate = createdDate.toISOString().split("T")[0]; - } - replacePlaceholder("date", formattedDate); - } catch (error) { - let errorMsg = "template processing error"; - if (error instanceof Error) errorMsg = error.message; - console.error("Error processing file name template:", errorMsg, error); - new import_obsidian6.Notice("Error generating file name. Check console or template."); - return "Error_Filename_" + Date.now(); - } - let finalFileName = sanitizeFileName(fileName); - if (!finalFileName.trim()) { - return "Unnamed_Raindrop_" + (raindrop._id || Date.now()); - } - return finalFileName; - } - async saveSettings() { - await this.saveData(this.settings); - } - sanitizeFileName(name) { - return sanitizeFileName(name); - } - /** - * Update the ribbon icon based on settings - */ - updateRibbonIcon() { - var _a5; - (_a5 = this.ribbonIconEl) == null ? void 0 : _a5.remove(); - this.ribbonIconEl = void 0; - if (this.settings.showRibbonIcon) { - this.ribbonIconEl = this.addRibbonIcon( - "cloud-download", - // Obsidian icon ID for cloud download - "Open Raindrop Dashboard", - // Tooltip text - () => { - this.activateView(); - } - ); - } - } - async fetchRaindrops(options) { - var _a5; - const baseApiUrl = "https://api.raindrop.io/rest/v1"; - const fetchOptions = { - method: "GET", - headers: { - "Authorization": `Bearer ${this.settings.apiToken}` - } - }; - const loadingNotice = new import_obsidian6.Notice("Starting Raindrop fetch...", 0); - try { - let allData = []; - const perPage = 50; - if (!this.settings.apiToken) { - loadingNotice.hide(); - new import_obsidian6.Notice("Please configure your Raindrop.io API token in the plugin settings.", 1e4); - return; - } - let resolvedCollectionIds = []; - const collectionNameToIdMap = /* @__PURE__ */ new Map(); - const collectionIdToNameMap = /* @__PURE__ */ new Map(); - const collectionHierarchy = /* @__PURE__ */ new Map(); - let collectionsData = void 0; - if (options.collections) { - const collectionInputs = options.collections.split(",").map((input) => input.trim()).filter((input) => input !== ""); - loadingNotice.setMessage("Fetching user collections..."); - const rootCollectionsResponse = await fetchWithRetry( - `${baseApiUrl}/collections`, - fetchOptions, - this.rateLimiter - ); - const rootCollectionsData = rootCollectionsResponse; - const nestedCollectionsResponse = await fetchWithRetry( - `${baseApiUrl}/collections/childrens`, - fetchOptions, - this.rateLimiter - ); - const nestedCollectionsData = nestedCollectionsResponse; - let allCollections = []; - if ((rootCollectionsData == null ? void 0 : rootCollectionsData.result) && (rootCollectionsData == null ? void 0 : rootCollectionsData.items)) { - allCollections = allCollections.concat(rootCollectionsData.items); - } - if ((nestedCollectionsData == null ? void 0 : nestedCollectionsData.result) && (nestedCollectionsData == null ? void 0 : nestedCollectionsData.items)) { - allCollections = allCollections.concat(nestedCollectionsData.items); - } - if (allCollections.length === 0) { - console.error("API Error fetching collections: No collections returned from both endpoints."); - loadingNotice.hide(); - new import_obsidian6.Notice("Error fetching user collections. Please check your API token and connection.", 1e4); - return; - } - allCollections.forEach((col) => { - var _a6; - collectionNameToIdMap.set(col.title.toLowerCase(), col._id); - collectionIdToNameMap.set(col._id, col.title); - collectionHierarchy.set(col._id, { title: col.title, parentId: (_a6 = col.parent) == null ? void 0 : _a6.$id }); - }); - collectionsData = { result: true, items: allCollections }; - const unresolvedInputs = []; - for (const input of collectionInputs) { - const inputAsNumber = parseInt(input, 10); - if (!isNaN(inputAsNumber)) { - if (collectionIdToNameMap.has(inputAsNumber)) { - resolvedCollectionIds.push(inputAsNumber); - } else { - unresolvedInputs.push(input); - console.warn(`Could not find collection with ID: ${input}`); - } - } else { - const resolvedId = collectionNameToIdMap.get(input.toLowerCase()); - if (resolvedId !== void 0) { - resolvedCollectionIds.push(resolvedId); - } else { - unresolvedInputs.push(input); - console.warn(`Could not resolve collection name: ${input}`); - } - } - } - if (unresolvedInputs.length > 0) { - new import_obsidian6.Notice(`Could not find collections: ${unresolvedInputs.join(", ")}. Please check names or use IDs.`, 15e3); - } - if (resolvedCollectionIds.length === 0 && collectionInputs.length > 0) { - loadingNotice.hide(); - new import_obsidian6.Notice("No valid collection IDs or names provided.", 5e3); - return; - } - resolvedCollectionIds = Array.from(new Set(resolvedCollectionIds)); - } else { - loadingNotice.setMessage("Fetching all collections..."); - const rootCollectionsResponse = await fetchWithRetry( - `${baseApiUrl}/collections`, - fetchOptions, - this.rateLimiter - ); - const rootCollectionsData = rootCollectionsResponse; - const nestedCollectionsResponse = await fetchWithRetry( - `${baseApiUrl}/collections/childrens`, - fetchOptions, - this.rateLimiter - ); - const nestedCollectionsData = nestedCollectionsResponse; - let allCollections = []; - if ((rootCollectionsData == null ? void 0 : rootCollectionsData.result) && (rootCollectionsData == null ? void 0 : rootCollectionsData.items)) { - allCollections = allCollections.concat(rootCollectionsData.items); - } - if ((nestedCollectionsData == null ? void 0 : nestedCollectionsData.result) && (nestedCollectionsData == null ? void 0 : nestedCollectionsData.items)) { - allCollections = allCollections.concat(nestedCollectionsData.items); - } - if (allCollections.length === 0) { - console.error("API Error fetching collections: No collections returned from both endpoints."); - loadingNotice.hide(); - new import_obsidian6.Notice("Error fetching user collections. Please check your API token and connection.", 1e4); - return; - } - allCollections.forEach((col) => { - var _a6; - collectionNameToIdMap.set(col.title.toLowerCase(), col._id); - collectionIdToNameMap.set(col._id, col.title); - collectionHierarchy.set(col._id, { title: col.title, parentId: (_a6 = col.parent) == null ? void 0 : _a6.$id }); - }); - collectionsData = { result: true, items: allCollections }; - } - const searchParameterString = options.apiFilterTags.split(",").map((tag) => tag.trim()).filter((tag) => tag !== "").join(" "); - let fetchMode = "all"; - if (resolvedCollectionIds.length > 0) { - fetchMode = "collections"; - } else if (searchParameterString || options.tagMatchType === TagMatchTypes.ANY && options.apiFilterTags.length > 0) { - fetchMode = "tags"; - } - if (fetchMode === "collections") { - for (const collectionId of resolvedCollectionIds) { - let hasMore = true; - let page = 0; - const collectionApiBaseUrl = `${baseApiUrl}/raindrops/${collectionId}`; - while (hasMore) { - const params = new URLSearchParams({ - perpage: perPage.toString(), - page: page.toString() - }); - if (options.filterType && options.filterType !== "all") { - params.append("type", options.filterType); - } - if (searchParameterString) { - params.append("search", searchParameterString); - } - if (options.includeSubcollections) { - params.append("nested", "true"); - } - const currentApiUrl = `${collectionApiBaseUrl}?${params.toString()}`; - console.log(`Requesting items from collection ID: ${collectionId}`, currentApiUrl); - const collectionNameForNotice = collectionIdToNameMap.get(collectionId) || collectionId.toString(); - loadingNotice.setMessage(`Fetching from collection: ${collectionNameForNotice}, page ${page + 1}...`); - const response = await fetchWithRetry( - currentApiUrl, - fetchOptions, - this.rateLimiter - ); - const data2 = response; - if (!data2.result) { - console.error(`API Error for collection ${collectionId}:`, data2); - new import_obsidian6.Notice(`Error fetching collection: ${collectionNameForNotice}. Skipping.`, 7e3); - hasMore = false; - continue; - } - if (data2 == null ? void 0 : data2.items) { - allData = allData.concat(data2.items); - page++; - hasMore = data2.items.length === perPage; - console.log(`Fetched ${data2.items.length} items from collection ${collectionId}, page ${page}`); - if (hasMore) { - loadingNotice.setMessage(`Fetching from collection: ${collectionNameForNotice}, page ${page + 1}...`); - } - } else { - console.warn(`Unexpected response for collection ${collectionId}. Stopping.`); - hasMore = false; - } - } - } - } else if (fetchMode === "tags") { - if (options.tagMatchType === TagMatchTypes.ANY && options.apiFilterTags.length > 0) { - const uniqueItems = /* @__PURE__ */ new Map(); - const tagsArray = options.apiFilterTags.split(",").map((tag) => tag.trim()).filter((tag) => tag !== ""); - for (const tag of tagsArray) { - let hasMore = true; - let page = 0; - while (hasMore) { - const params = new URLSearchParams({ - perpage: perPage.toString(), - page: page.toString(), - search: `#${tag}` - // Simple, reliable single-tag search - }); - if (options.filterType && options.filterType !== "all") { - params.append("type", options.filterType); - } - const currentApiUrl = `${baseApiUrl}/raindrops/0?${params.toString()}`; - console.log(`Requesting items with tag: ${tag}`, currentApiUrl); - loadingNotice.setMessage(`Fetching items with tag: ${tag}, page ${page + 1}...`); - const response = await fetchWithRetry( - currentApiUrl, - fetchOptions, - this.rateLimiter - ); - const data2 = response; - if (!data2.result) { - console.error(`API Error for tag ${tag}:`, data2); - continue; - } - console.log(`API Response for tag ${tag}:`, { - result: data2.result, - itemCount: ((_a5 = data2 == null ? void 0 : data2.items) == null ? void 0 : _a5.length) || 0, - totalCount: (data2 == null ? void 0 : data2.count) || 0 - }); - if (data2 == null ? void 0 : data2.items) { - data2.items.forEach((item) => { - if (!uniqueItems.has(item._id)) { - uniqueItems.set(item._id, item); - } - }); - page++; - hasMore = data2.items.length === perPage; - console.log(`Fetched ${data2.items.length} items for tag ${tag}, page ${page}`); - if (hasMore) { - loadingNotice.setMessage(`Fetching items with tag: ${tag}, page ${page + 1}...`); - } - } else { - hasMore = false; - } - } - } - allData = Array.from(uniqueItems.values()); - console.log(`Total unique items found across all tags: ${allData.length}`); - } else if (searchParameterString) { - let hasMore = true; - let page = 0; - while (hasMore) { - const params = new URLSearchParams({ - perpage: perPage.toString(), - page: page.toString(), - search: searchParameterString - // This handles space-separated tags for AND logic - }); - if (options.filterType && options.filterType !== "all") { - params.append("type", options.filterType); - } - const currentApiUrl = `${baseApiUrl}/raindrops/0?${params.toString()}`; - console.log(`Requesting items with tags: ${searchParameterString}`, currentApiUrl); - loadingNotice.setMessage(`Fetching items with tags: ${searchParameterString}, page ${page + 1}...`); - const response = await fetchWithRetry( - currentApiUrl, - fetchOptions, - this.rateLimiter - ); - const data2 = response; - if (!data2.result) { - console.error("API Error for tag search:", data2); - throw new Error(`API Error: ${JSON.stringify(data2)}`); - } - if (data2 == null ? void 0 : data2.items) { - allData = allData.concat(data2.items); - page++; - hasMore = data2.items.length === perPage; - console.log(`Fetched ${data2.items.length} items with tags, page ${page}`); - if (hasMore) { - loadingNotice.setMessage(`Fetching items with tags: ${searchParameterString}, page ${page + 1}...`); - } - } else { - hasMore = false; - } - } - } - } else { - let hasMore = true; - let page = 0; - while (hasMore) { - const params = new URLSearchParams({ perpage: perPage.toString(), page: page.toString() }); - if (options.filterType && options.filterType !== "all") { - params.append("type", options.filterType); - } - const currentApiUrl = `${baseApiUrl}/raindrops/0?${params.toString()}`; - console.log("Requesting all items:", currentApiUrl); - loadingNotice.setMessage(`Fetching all items, page ${page + 1}...`); - const response = await fetchWithRetry( - currentApiUrl, - fetchOptions, - this.rateLimiter - ); - const data2 = response; - if (!data2.result) { - console.error("API Error for all items fetch:", data2); - throw new Error(`API Error: ${JSON.stringify(data2)}`); - } - if (data2 == null ? void 0 : data2.items) { - allData = allData.concat(data2.items); - page++; - hasMore = data2.items.length === perPage; - console.log(`Fetched ${data2.items.length} items, page ${page}`); - if (hasMore) { - loadingNotice.setMessage(`Fetching all items, page ${page + 1}...`); - } - } else { - console.warn("Unexpected response for all items fetch. Stopping."); - hasMore = false; - } - } - } - if (allData.length === 0) { - if (resolvedCollectionIds.length > 0 || searchParameterString || options.tagMatchType === TagMatchTypes.ANY && options.apiFilterTags.length > 0) { - loadingNotice.hide(); - new import_obsidian6.Notice("No raindrops found matching your criteria.", 5e3); - } else { - loadingNotice.hide(); - new import_obsidian6.Notice("No raindrops found in your account.", 5e3); - } - } else { - loadingNotice.setMessage(`Found ${allData.length} raindrops. Applying type filter...`); - let filteredData = allData; - if (options.filterType && options.filterType !== "all") { - filteredData = allData.filter((item) => item.type === options.filterType); - loadingNotice.setMessage(`Found ${filteredData.length} raindrops of type '${options.filterType}'. Processing...`); - if (filteredData.length === 0) { - new import_obsidian6.Notice(`No raindrops found matching type '${options.filterType}'.`, 5e3); - loadingNotice.hide(); - return; - } - } else { - loadingNotice.setMessage(`Found ${allData.length} raindrops. Processing...`); - } - await this.processRaindrops(filteredData, options.vaultPath, options.appendTagsToNotes, options.useRaindropTitleForFileName, loadingNotice, options, collectionsData, resolvedCollectionIds, collectionIdToNameMap); - } - } catch (error) { - loadingNotice.hide(); - let errorMessage = "An unknown error occurred during fetch"; - if (error instanceof Error) errorMessage = error.message; - else if (typeof error === "string") errorMessage = error; - new import_obsidian6.Notice(`Error fetching raindrops: ${errorMessage}`, 1e4); - console.error("Error fetching Raindrop API:", error); - } - } - async processRaindrops(raindrops, vaultPath, appendTagsToNotes, useRaindropTitleForFileName, loadingNotice, options, collectionsData, resolvedCollectionIds = [], collectionIdToNameMap = /* @__PURE__ */ new Map()) { - var _a5, _b; - const { app } = this; - const settingsFMTags = appendTagsToNotes.split(",").map((tag) => tag.trim()).filter((tag) => tag !== ""); - if (vaultPath === void 0) vaultPath = this.settings.defaultFolder; - const baseTargetFolderPath = (vaultPath == null ? void 0 : vaultPath.trim()) ? (0, import_obsidian6.normalizePath)(vaultPath.trim()) : (0, import_obsidian6.normalizePath)(""); - const collectionHierarchy = /* @__PURE__ */ new Map(); - if (collectionsData == null ? void 0 : collectionsData.result) { - collectionsData.items.forEach((col) => { - var _a6; - collectionHierarchy.set(col._id, { title: col.title, parentId: (_a6 = col.parent) == null ? void 0 : _a6.$id }); - }); - } - let createdCount = 0; - let skippedCount = 0; - let errorCount = 0; - let updatedCount = 0; - let processed = 0; - const total = raindrops.length; - try { - const raindropsByCollection = {}; - for (const raindrop of raindrops) { - const collectionId = ((_b = (_a5 = raindrop.collection) == null ? void 0 : _a5.$id) == null ? void 0 : _b.toString()) || "uncategorized"; - if (!raindropsByCollection[collectionId]) { - raindropsByCollection[collectionId] = []; - } - raindropsByCollection[collectionId].push(raindrop); - } - for (const [collectionId, collectionRaindrops] of Object.entries(raindropsByCollection)) { - try { - for (const raindrop of collectionRaindrops) { - try { - const result = await this.processRaindrop( - raindrop, - baseTargetFolderPath, - settingsFMTags, - options, - loadingNotice, - processed, - total, - collectionHierarchy, - collectionIdToNameMap - ); - if (result.success) { - if (result.type === "created") createdCount++; - else if (result.type === "updated") updatedCount++; - else if (result.type === "skipped") skippedCount++; - } else { - errorCount++; - } - processed++; - } catch (error) { - errorCount++; - processed++; - console.error("Error processing raindrop:", error); - } - } - } catch (error) { - console.error(`Error processing collection ${collectionId}:`, error); - } - } - loadingNotice.hide(); - let summary = `${createdCount} notes created.`; - if (updatedCount > 0) summary += ` ${updatedCount} updated.`; - if (skippedCount > 0) summary += ` ${skippedCount} skipped (already exist).`; - if (errorCount > 0) summary += ` ${errorCount} errors.`; - new import_obsidian6.Notice(summary, 7e3); - } catch (error) { - loadingNotice.hide(); - let errorMsg = "An unknown error occurred"; - if (error instanceof Error) errorMsg = error.message; - else if (typeof error === "string") errorMsg = error; - new import_obsidian6.Notice(`Error processing raindrops: ${errorMsg}`, 1e4); - console.error("Error processing raindrops:", error); - } - } - async processRaindrop(raindrop, baseTargetFolderPath, settingsFMTags, options, loadingNotice, processed, total, collectionHierarchy, collectionIdToNameMap) { - var _a5, _b, _c, _d, _e, _f, _g, _h, _i; - try { - const { app } = this; - const escapeYamlStringValue = (str) => { - if (str === void 0 || str === null) return ""; - return str.replace(/"/g, '\\"'); - }; - const generatedFilename = this.generateFileName(raindrop, options.useRaindropTitleForFileName); - let individualNoteTargetFolderPath = baseTargetFolderPath; - if ((_a5 = raindrop.collection) == null ? void 0 : _a5.$id) { - const pathSegments = this.getFullPathSegments(raindrop.collection.$id, collectionHierarchy, collectionIdToNameMap); - if (pathSegments.length > 0) { - const collectionSubPath = pathSegments.join("/"); - individualNoteTargetFolderPath = (0, import_obsidian6.normalizePath)(`${baseTargetFolderPath}/${collectionSubPath}`); - } - } - if (individualNoteTargetFolderPath && !await app.vault.adapter.exists(individualNoteTargetFolderPath)) { - await createFolderStructure(app, individualNoteTargetFolderPath); - } - const filePath = (0, import_obsidian6.normalizePath)(`${individualNoteTargetFolderPath}/${generatedFilename}.md`); - const raindropTitle = raindrop.title || "Untitled"; - loadingNotice.setMessage(`Processing '${raindropTitle}'... (${processed}/${total})`); - let processOutcome = "created"; - const templateData = { - id: raindrop._id, - title: escapeYamlStringValue(raindrop.title), - excerpt: escapeYamlStringValue(raindrop.excerpt || ""), - note: escapeYamlStringValue(raindrop.note || ""), - link: raindrop.link, - // URLs generally don't need YAML escaping unless they have special chars - cover: raindrop.cover || "", - // URLs generally don't need YAML escaping - created: raindrop.created, - lastupdate: raindrop.lastUpdate, - // Changed from lastUpdate - type: raindrop.type, - // Flattened collection data - collectionId: ((_b = raindrop.collection) == null ? void 0 : _b.$id) || 0, - collectionTitle: escapeYamlStringValue(collectionIdToNameMap.get(((_c = raindrop.collection) == null ? void 0 : _c.$id) || 0) || "Unknown"), - collectionPath: escapeYamlStringValue(this.getFullPathSegments(((_d = raindrop.collection) == null ? void 0 : _d.$id) || 0, collectionHierarchy, collectionIdToNameMap).join("/")), - // Add collectionParentId if it exists - ...collectionHierarchy.has(((_e = raindrop.collection) == null ? void 0 : _e.$id) || 0) && ((_g = collectionHierarchy.get(((_f = raindrop.collection) == null ? void 0 : _f.$id) || 0)) == null ? void 0 : _g.parentId) !== void 0 && { - collectionParentId: (_i = collectionHierarchy.get(((_h = raindrop.collection) == null ? void 0 : _h.$id) || 0)) == null ? void 0 : _i.parentId - }, - tags: (raindrop.tags || []).map((tag) => escapeYamlStringValue(tag)), - highlights: (raindrop.highlights || []).map((h) => ({ - ...h, - text: escapeYamlStringValue(h.text), - note: escapeYamlStringValue(h.note) - })), - bannerFieldName: this.settings.bannerFieldName, - // Pre-calculated fields for helpers - url: raindrop.link || "" - }; - try { - const enhancedDataForRender = { - ...templateData, - // Spread the original templateData - url: templateData.link || "", - // Ensure url is available, aliasing link - domain: this.getDomain(templateData.link || ""), - // Pre-calculate values that used helpers in the template: - renderedType: this.raindropType(templateData.type), - // Cast type to RaindropType - formattedCreatedDate: this.formatDate(templateData.created), - formattedUpdatedDate: this.formatDate(templateData.lastupdate), - // Changed from lastUpdate - formattedTags: this.formatTags(templateData.tags || []) - }; - if (this.settings.isTemplateSystemEnabled) { - const template = this.getTemplateForType(raindrop.type, options); - const fileContent = this.renderTemplate(template, enhancedDataForRender); - await app.vault.create(filePath, fileContent); - return { success: true, type: processOutcome }; - } else { - const { - id, - title, - excerpt, - note, - link, - cover, - created, - lastUpdate: rdLastUpdate, - type, - tags - // Keep raindrop.lastUpdate as rdLastUpdate for source - } = raindrop; - let descriptionYaml = ""; - if (excerpt) { - if (excerpt.includes("\n")) { - descriptionYaml = `description: | -${excerpt.split("\n").map((line) => ` ${line}`).join("\n")}`; - } else { - descriptionYaml = `description: "${excerpt.replace(/"/g, '"')}"`; - } - } else { - descriptionYaml = `description: ""`; - } - let frontmatter = `--- -`; - frontmatter += `id: ${id} -`; - frontmatter += `title: "${title.replace(/"/g, '"')}" -`; - frontmatter += `${descriptionYaml} -`; - frontmatter += `source: ${link} -`; - frontmatter += `type: ${type} -`; - frontmatter += `created: ${created} -`; - frontmatter += `lastupdate: ${rdLastUpdate} -`; - if (templateData.collectionId) { - frontmatter += `collectionId: ${templateData.collectionId} -`; - frontmatter += `collectionTitle: "${escapeYamlStringValue(templateData.collectionTitle)}" -`; - frontmatter += `collectionPath: "${escapeYamlStringValue(templateData.collectionPath)}" -`; - if (templateData.collectionParentId) { - frontmatter += `collectionParentId: ${templateData.collectionParentId} -`; - } - } - frontmatter += `tags: -`; - const finalTags = (tags || []).map((tag) => ` - ${tag.trim().replace(/ /g, "_").replace(/[#?"*<>:|]/g, "")}`).join("\n"); - frontmatter += `${finalTags} -`; - if (cover) { - frontmatter += `${this.settings.bannerFieldName}: ${cover} -`; - } - frontmatter += `--- - -`; - let noteBody = ""; - const altText = sanitizeFileName(title) || "Cover Image"; - if (cover) { - noteBody += `![${altText}](${cover}) - -`; - } - noteBody += `# ${title} - -`; - if (excerpt) { - noteBody += `## Description -${excerpt} - -`; - } - if (templateData.note) { - noteBody += `## Notes -${templateData.note} - -`; - } - if (templateData.highlights && templateData.highlights.length > 0) { - noteBody += "## Highlights\n"; - templateData.highlights.forEach((highlight) => { - noteBody += `- ${highlight.text.replace(/\r\n|\r|\n/g, " ")} -`; - if (highlight.note) { - noteBody += ` *Note:* ${highlight.note.replace(/\r\n|\r|\n/g, " ")} -`; - } - }); - noteBody += "\n"; - } - const basicContent = frontmatter + noteBody; - await app.vault.create(filePath, basicContent); - return { success: true, type: processOutcome }; - } - } catch (error) { - const isFileExistsError = error instanceof Error && error.message && error.message.toLowerCase().includes("file already exists"); - if (isFileExistsError) { - console.warn(`Attempted to create file ${filePath} but it already exists. This was not handled by update/skip logic (e.g., neither 'update existing' nor 'fetch only new' was applicable or led to a skip). File will be skipped. Options: updateExisting=${options.updateExisting}, fetchOnlyNew=${options.fetchOnlyNew}`); - return { success: true, type: "skipped" }; - } - console.error(`Error during file operation for ${generatedFilename} at path ${filePath}:`, error); - return { success: false, type: "skipped" }; - } - } catch (error) { - console.error("Unexpected error in processRaindrop for item ID " + raindrop._id + ":", error); - return { success: false, type: "skipped" }; - } - } - getFullPathSegments(collectionId, collectionHierarchy, collectionIdToNameMap) { - const segments = []; - let currentId = collectionId; - while (currentId !== void 0 && currentId !== 0 && currentId !== SystemCollections.UNSORTED && currentId !== SystemCollections.TRASH) { - const collection = collectionHierarchy.get(currentId); - if (!collection) break; - const name = collectionIdToNameMap.get(currentId); - if (name) { - segments.unshift(sanitizeFileName(name)); - } - currentId = collection.parentId; - } - return segments; - } - // The updateRibbonIcon method is already defined at line ~360 - formatDate(date) { - try { - return new Date(date).toLocaleDateString(); - } catch (e) { - return ""; - } - } - formatDateISO(date) { - try { - return new Date(date).toISOString(); - } catch (e) { - return ""; - } - } - formatTags(tags) { - return tags.map((tag) => `#${tag.trim()}`).join(" "); - } - getDomain(url) { - try { - return new URL(url).hostname; - } catch (e) { - return ""; - } - } - raindropType(type) { - const types = { - link: "Web Link", - article: "Article", - image: "Image", - video: "Video", - document: "Document", - audio: "Audio" - }; - return types[type] || type; - } - renderTemplate(template, data2) { - const enhancedData = { - ...data2, - url: data2.link || "", - domain: this.getDomain(data2.link || ""), - formatDate: (date) => this.formatDate(date), - formatDateISO: (date) => this.formatDateISO(date), - formatTags: (tags) => this.formatTags(tags), - raindropType: (type) => this.raindropType(type), - updated: data2.lastupdate || "" - // Changed from lastUpdate - }; - return template.replace(/{{#if ([^}]+)}}([\s\S]*?)(?:{{else}}([\s\S]*?))?{{\/if}}/g, (match, conditionVar, content, elseContent) => { - const value = this.getNestedProperty(enhancedData, conditionVar.trim()); - if (value && (Array.isArray(value) ? value.length > 0 : !!value)) { - return content; - } - return elseContent || ""; - }).replace(/{{#each ([^}]+)}}([\s\S]*?){{\/each}}/g, (match, arrayVar, content) => { - const array = this.getNestedProperty(enhancedData, arrayVar.trim()); - if (!Array.isArray(array)) return ""; - return array.map((item) => { - let itemContent = content.replace(/{{this}}/g, String(item)); - return itemContent.replace(/{{([^}]+)}}/g, (m, key) => { - if (key.includes(".")) { - return String(this.getNestedProperty(item, key) || ""); - } - return String(item[key] || ""); - }); - }).join(""); - }).replace(/{{([^}]+)}}/g, (match, key) => { - const value = this.getNestedProperty(enhancedData, key.trim()); - if (typeof value === "object" && value !== null) { - return this.formatYamlValue(value); - } - return String(value || ""); - }); - } - formatYamlValue(value, indentLevel = 0) { - const indent = " ".repeat(indentLevel); - if (value === null || value === void 0) { - return "null"; - } - if (typeof value === "boolean") { - return value ? "true" : "false"; - } - if (typeof value === "number") { - return value.toString(); - } - if (typeof value === "string") { - if (value.includes("\n") || value.includes(":") || value.includes("{") || value.includes("}") || value.includes("[") || value.includes("]") || value.includes("#") || value.includes("*") || value.includes("&") || value.includes("!") || value.includes("|") || value.includes(">") || value.includes("`") || value.trim() === "" || /^[0-9]/.test(value) || /^true$|^false$|^yes$|^no$|^on$|^off$/i.test(value)) { - if (value.includes("\n")) { - return "|\n" + value.split("\n").map((line) => `${indent} ${line}`).join("\n"); - } - return `"${value.replace(/"/g, '\\"')}"`; - } - return value; - } - if (Array.isArray(value)) { - if (value.length === 0) { - return "[]"; - } - return value.map((item) => ` -${indent}- ${this.formatYamlValue(item, indentLevel + 1)}`).join(""); - } - if (typeof value === "object") { - const entries = Object.entries(value); - if (entries.length === 0) { - return "{}"; - } - const keysIndent = " ".repeat(indentLevel + 1); - return entries.map(([key, val2]) => { - const formattedValue = this.formatYamlValue(val2, indentLevel + 1); - if (formattedValue.startsWith("\\n")) { - return `\\n${keysIndent}${key}:${formattedValue}`; - } else { - return `\\n${keysIndent}${key}: ${formattedValue}`; - } - }).join(""); - } - return String(value); - } - escapeYamlString(str) { - return str.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\t/g, "\\t").replace(/\r/g, "\\r"); - } - getNestedProperty(obj, path) { - return path.split(".").reduce((current, prop2) => { - return current && current[prop2] !== void 0 ? current[prop2] : void 0; - }, obj); - } - // New method to fetch all user collections - async fetchAllUserCollections() { - var _a5, _b; - if (!this.settings.apiToken) { - console.warn("API token not set. Cannot fetch user collections."); - new import_obsidian6.Notice("API token not set. Cannot fetch collections for modal.", 5e3); - return []; - } - const baseApiUrl = "https://api.raindrop.io/rest/v1"; - const fetchOptions = { - method: "GET", - headers: { - "Authorization": `Bearer ${this.settings.apiToken}` - } - }; - let allCollections = []; - try { - const rootResponse = await fetchWithRetry( - this.app, - `${baseApiUrl}/collections`, - fetchOptions, - this.rateLimiter - ); - const rootData = rootResponse; - if ((rootData == null ? void 0 : rootData.result) && (rootData == null ? void 0 : rootData.items)) { - allCollections = allCollections.concat(rootData.items); - } else if (!(rootData == null ? void 0 : rootData.result)) { - console.warn("Failed to fetch root collections or result was false:", rootData); - } - const nestedResponse = await fetchWithRetry( - this.app, - `${baseApiUrl}/collections/childrens`, - fetchOptions, - this.rateLimiter - ); - const nestedData = nestedResponse; - if ((nestedData == null ? void 0 : nestedData.result) && (nestedData == null ? void 0 : nestedData.items)) { - allCollections = allCollections.concat(nestedData.items); - } else if (!(nestedData == null ? void 0 : nestedData.result)) { - console.warn("Failed to fetch nested collections or result was false:", nestedData); - } - const uniqueCollections = Array.from(new Map(allCollections.map((col) => [col._id, col])).values()).filter((col) => col._id !== SystemCollections.TRASH && col._id !== SystemCollections.UNSORTED); - if (allCollections.length > 0 && uniqueCollections.length === 0 && (((_a5 = rootData == null ? void 0 : rootData.items) == null ? void 0 : _a5.length) || ((_b = nestedData == null ? void 0 : nestedData.items) == null ? void 0 : _b.length))) { - console.log("Only system collections (Trash/Unsorted) were found."); - } else if (allCollections.length === 0) { - console.warn("No collections were fetched from either endpoint."); - } - return uniqueCollections; - } catch (error) { - console.error("Error fetching all user collections for modal:", error); - new import_obsidian6.Notice("Failed to load your Raindrop.io collections for selection.", 7e3); - return []; - } - } - /** - * Creates an Obsidian note from manually entered bookmark data - * This method is used by the "Add New Bookmark" modal - * @param data - The bookmark data entered by the user - */ - async createRaindropNote(data2) { - const loadingNotice = new import_obsidian6.Notice(`Creating note for: ${data2.title}...`, 0); - try { - const now = (/* @__PURE__ */ new Date()).toISOString(); - const simulatedRaindrop = { - _id: Date.now(), - // Use timestamp as unique ID for manually created bookmarks - title: data2.title, - excerpt: data2.excerpt, - note: data2.note, - link: data2.url, - cover: data2.cover, - created: now, - lastUpdate: now, - tags: data2.tags, - type: "link", - // Always 'link' for manually added bookmarks - collection: { - $id: data2.collectionId, - title: data2.collectionName - }, - // Required fields for processRaindrop - domain: new URL(data2.url).hostname, - media: [], - sort: 0, - hidden: false, - file: { size: 0, name: "", type: "" }, - html: "", - wordCount: 0, - target: "_blank", - highlights: [] - }; - const collectionHierarchy = /* @__PURE__ */ new Map(); - const collectionIdToNameMap = /* @__PURE__ */ new Map(); - if (data2.collectionId && data2.collectionId !== 0) { - try { - const allUserCollections = await this.fetchAllUserCollections(); - allUserCollections.forEach((col) => { - var _a5; - collectionIdToNameMap.set(col._id, col.title); - collectionHierarchy.set(col._id, { - title: col.title, - parentId: (_a5 = col.parent) == null ? void 0 : _a5.$id - }); - }); - } catch (error) { - console.warn("Could not fetch collection hierarchy for manual bookmark:", error); - } - } - if (data2.collectionId && !collectionIdToNameMap.has(data2.collectionId)) { - collectionIdToNameMap.set(data2.collectionId, data2.collectionName); - } - const options = { - vaultPath: data2.vaultPath, - collections: "", - apiFilterTags: "", - includeSubcollections: false, - appendTagsToNotes: "", - // Tags are already in the raindrop object - useRaindropTitleForFileName: true, - tagMatchType: "all", - filterType: "all", - fetchOnlyNew: false, - updateExisting: false, - useDefaultTemplate: false, - overrideTemplates: false - }; - const settingsFMTags = data2.tags || []; - const result = await this.processRaindrop( - simulatedRaindrop, - data2.vaultPath || this.settings.defaultFolder, - settingsFMTags, - options, - loadingNotice, - 1, - // processed - 1, - // total - collectionHierarchy, - collectionIdToNameMap - ); - loadingNotice.hide(); - if (result.success) { - new import_obsidian6.Notice(`\u2713 Successfully created note: ${data2.title}`, 5e3); - } else { - new import_obsidian6.Notice(`\u26A0 Note creation completed with warnings for: ${data2.title}`, 5e3); - } - } catch (error) { - loadingNotice.hide(); - const errorMessage = error instanceof Error ? error.message : "Unknown error"; - new import_obsidian6.Notice(`\u2717 Failed to create note: ${errorMessage}`, 7e3); - console.error("Error in createRaindropNote:", error); - throw error; - } - } - async activateView() { - this.app.workspace.detachLeavesOfType(RAINDROP_VIEW_TYPE); - await this.app.workspace.getLeaf(true).setViewState({ - type: RAINDROP_VIEW_TYPE, - active: true - }); - } - async fetchCollectionItems(collectionId) { - if (!this.settings.apiToken) { - new import_obsidian6.Notice("Please configure your Raindrop.io API token in the plugin settings.", 1e4); - return []; - } - const baseApiUrl = "https://api.raindrop.io/rest/v1"; - const fetchOptions = { - method: "GET", - headers: { - "Authorization": `Bearer ${this.settings.apiToken}` - } - }; - let allItems = []; - const perPage = 50; - let page = 0; - let hasMore = true; - const collectionApiBaseUrl = `${baseApiUrl}/raindrops/${collectionId}`; - while (hasMore) { - const params = new URLSearchParams({ - perpage: perPage.toString(), - page: page.toString() - }); - const currentApiUrl = `${collectionApiBaseUrl}?${params.toString()}`; - console.log(`Requesting items from collection ID: ${collectionId}, page ${page}`); - try { - const response = await fetchWithRetry( - currentApiUrl, - fetchOptions, - this.rateLimiter - ); - const data2 = response; - if (!data2.result) { - console.error(`API Error for collection ${collectionId}:`, data2); - new import_obsidian6.Notice(`Error fetching items for collection ID: ${collectionId}.`, 7e3); - hasMore = false; - continue; - } - if (data2 == null ? void 0 : data2.items) { - allItems = allItems.concat(data2.items); - page++; - hasMore = data2.items.length === perPage; - console.log(`Fetched ${data2.items.length} items from collection ${collectionId}, page ${page}`); - } else { - console.warn(`Unexpected response for collection ${collectionId}. Stopping.`); - hasMore = false; - } - } catch (error) { - console.error(`Error fetching items for collection ID: ${collectionId}:`, error); - new import_obsidian6.Notice(`Network error fetching items for collection ID: ${collectionId}.`, 7e3); - hasMore = false; - } - } - return allItems; - } - async fetchSingleRaindrop(itemId, vaultPath, appendTags) { - var _a5; - if (!this.settings.apiToken) { - new import_obsidian6.Notice("Please configure your Raindrop.io API token in the plugin settings.", 1e4); - return; - } - if (!itemId) { - new import_obsidian6.Notice("Invalid Item ID provided for Quick Import.", 5e3); - return; - } - const loadingNotice = new import_obsidian6.Notice(`Fetching Raindrop item ID: ${itemId}...`, 0); - const baseApiUrl = "https://api.raindrop.io/rest/v1"; - const fetchOptions = { - method: "GET", - headers: { "Authorization": `Bearer ${this.settings.apiToken}` } - }; - try { - const response = await fetchWithRetry( - this.app, - `${baseApiUrl}/raindrop/${itemId}`, - fetchOptions, - this.rateLimiter - ); - const data2 = response; - let raindropItem; - if (data2.result && data2.item) { - raindropItem = data2.item; - } else if (data2.result && data2.items && data2.items.length > 0) { - raindropItem = data2.items[0]; - console.warn(`Single raindrop fetch for ID ${itemId} returned an items array. Using the first item.`); - } - if (!raindropItem) { - loadingNotice.hide(); - const errorMsg = data2.result === false ? data2.errorMessage || "API indicated failure." : "Item not found or invalid response."; - new import_obsidian6.Notice(`Failed to fetch Raindrop item ${itemId}: ${errorMsg}`, 7e3); - console.error(`Failed to fetch Raindrop item ${itemId}:`, data2); - return; - } - const singleItemOptions = { - vaultPath, - // User-specified or plugin default - collections: "", - // Not applicable for single item by ID - apiFilterTags: "", - // Not applicable - includeSubcollections: false, - // Not applicable - appendTagsToNotes: appendTags || "", - // User-specified for quick import - useRaindropTitleForFileName: this.settings.fileNameTemplate !== "{{id}}", - // Infer from settings - tagMatchType: "all", - // Default, not critical here - filterType: "all", - // Default, not critical here - fetchOnlyNew: false, - // For quick import, typically we want to create or update - updateExisting: true, - // Default to true for quick import to allow updates - useDefaultTemplate: false, - // Respect template settings - overrideTemplates: false - // Respect template settings - }; - let collectionsData = void 0; - let collectionIdToNameMap = /* @__PURE__ */ new Map(); - if ((_a5 = raindropItem.collection) == null ? void 0 : _a5.$id) { - loadingNotice.setMessage(`Fetching collection info for item ${itemId}...`); - const allUserCollections = await this.fetchAllUserCollections(); - if (allUserCollections.length > 0) { - collectionsData = { result: true, items: allUserCollections }; - allUserCollections.forEach((col) => collectionIdToNameMap.set(col._id, col.title)); - } - } - await this.processRaindrops( - [raindropItem], - singleItemOptions.vaultPath, - singleItemOptions.appendTagsToNotes, - singleItemOptions.useRaindropTitleForFileName, - loadingNotice, - // Pass the notice - singleItemOptions, - collectionsData, - // Pass fetched collections data for path context - [], - // resolvedCollectionIds not directly applicable - collectionIdToNameMap - // Pass map for titles - ); - } catch (error) { - loadingNotice.hide(); - let errorMessage = "An unknown error occurred during quick import"; - if (error instanceof Error) errorMessage = error.message; - new import_obsidian6.Notice(`Error during Quick Import of item ${itemId}: ${errorMessage}`, 1e4); - console.error(`Error quick importing Raindrop ID ${itemId}:`, error); - } - } -}; -var RaindropToObsidianSettingTab = class extends import_obsidian6.PluginSettingTab { - constructor(app, plugin) { - super(app, plugin); - this.plugin = plugin; - } - display() { - const { containerEl } = this; - containerEl.empty(); - containerEl.createEl("h1", { text: "Make It Rain Settings" }); - containerEl.createEl("h2", { text: "\u{1F4A7} Raindrop.io API Configuration" }); - const apiTokenSetting = new import_obsidian6.Setting(containerEl).setName("Raindrop.io API Token").setDesc('Create a "Test Token" from your Raindrop.io Apps settings.').addText((text3) => { - text3.setPlaceholder("Enter your API token").setValue(this.plugin.settings.apiToken).onChange(async (value) => { - this.plugin.settings.apiToken = value; - await this.plugin.saveSettings(); - }); - text3.inputEl.type = "password"; - text3.inputEl.style.width = "100%"; - }).addButton((button) => { - button.setButtonText("Verify Token").setIcon("checkmark").setCta().onClick(async () => { - await this.verifyApiToken(); - }); - }); - const apiTokenHelpLink = apiTokenSetting.nameEl.createEl("a", { - href: "https://frostmute.github.io/make-it-rain/configuration#api-token", - text: " (?)", - cls: "make-it-rain-help-link", - title: "How to get your API Token" - }); - apiTokenHelpLink.setAttr("target", "_blank"); - containerEl.createEl("h2", { text: "\u2699\uFE0F General Import Settings" }); - new import_obsidian6.Setting(containerEl).setName("Default Vault Save Location").setDesc("Specify the default folder for imported notes (e.g., Imports/Raindrops). Leave blank for vault root.").addText((text3) => { - text3.setPlaceholder("e.g., Raindrops/").setValue(this.plugin.settings.defaultFolder).onChange(async (value) => { - this.plugin.settings.defaultFolder = value; - await this.plugin.saveSettings(); - }); - text3.inputEl.style.width = "100%"; - }); - const fileNameTemplateSetting = new import_obsidian6.Setting(containerEl).setName("Filename Template").setDesc('Define the filename for notes when "Use Raindrop Title" is enabled. Placeholders: {{title}}, {{id}}, {{collectionTitle}}, {{date}} (YYYY-MM-DD).').addText((text3) => { - text3.setPlaceholder("{{title}}").setValue(this.plugin.settings.fileNameTemplate).onChange(async (value) => { - this.plugin.settings.fileNameTemplate = value; - await this.plugin.saveSettings(); - }); - text3.inputEl.style.width = "100%"; - }); - const fileNameTemplateHelpLink = fileNameTemplateSetting.nameEl.createEl("a", { - href: "https://frostmute.github.io/make-it-rain/configuration#filename-template", - text: " (?)", - cls: "make-it-rain-help-link", - title: "Documentation for Filename Template" - }); - fileNameTemplateHelpLink.setAttr("target", "_blank"); - new import_obsidian6.Setting(containerEl).setName("Banner Frontmatter Field Name").setDesc("Customize the frontmatter field name for the banner/cover image (default: banner).").addText((text3) => { - text3.setPlaceholder("banner").setValue(this.plugin.settings.bannerFieldName).onChange(async (value) => { - this.plugin.settings.bannerFieldName = value; - await this.plugin.saveSettings(); - }); - }); - containerEl.createEl("h2", { text: "\u{1F3A8} User Interface" }); - new import_obsidian6.Setting(containerEl).setName("Show Ribbon Icon").setDesc("Toggle the Make It Rain ribbon icon in the Obsidian sidebar.").addToggle((toggle) => { - toggle.setValue(this.plugin.settings.showRibbonIcon).onChange(async (value) => { - this.plugin.settings.showRibbonIcon = value; - await this.plugin.saveSettings(); - this.plugin.updateRibbonIcon(); - }); - }); - containerEl.createEl("hr"); - containerEl.createEl("h2", { text: "\u{1F4C4} Template System" }); - new import_obsidian6.Setting(containerEl).setName("Enable Template System").setDesc("Use custom templates for formatting imported notes. If disabled, a basic note structure will be used.").addToggle((toggle) => { - toggle.setValue(this.plugin.settings.isTemplateSystemEnabled).onChange(async (value) => { - this.plugin.settings.isTemplateSystemEnabled = value; - await this.plugin.saveSettings(); - this.display(); - }); - }); - if (this.plugin.settings.isTemplateSystemEnabled) { - containerEl.createEl("h3", { text: "Default Template" }); - new import_obsidian6.Setting(containerEl).setDesc("This template is used if no content-type specific template is active or defined below.").setClass("setting-item-stacked").addTextArea((text3) => { - text3.setPlaceholder("Enter your default Handlebars template here...").setValue(this.plugin.settings.defaultTemplate).onChange(async (value) => { - this.plugin.settings.defaultTemplate = value; - await this.plugin.saveSettings(); - }); - text3.inputEl.rows = 15; - text3.inputEl.style.width = "100%"; - text3.inputEl.style.fontFamily = "monospace"; - }).addButton((button) => { - button.setButtonText("Reset to Default").setIcon("undo").setTooltip("Reset this template to its original default value").onClick(async () => { - this.plugin.settings.defaultTemplate = DEFAULT_SETTINGS.defaultTemplate; - await this.plugin.saveSettings(); - this.display(); - new import_obsidian6.Notice("Default template has been reset."); - }); - }); - containerEl.createEl("h3", { text: "Content-Type Specific Templates" }); - const contentTypeDesc = containerEl.createEl("p", { cls: "setting-item-description" }); - contentTypeDesc.innerHTML = 'Define specific templates for different Raindrop types. If a type-specific template is enabled and filled, it will be used instead of the default template. If disabled or empty, the default template is used for that type. Visit the <a href="https://frostmute.github.io/make-it-rain/template-system/">documentation</a> for available variables.'; - const contentTypes = Object.values(RaindropTypes); - for (const type of contentTypes) { - const typeKey = type; - containerEl.createEl("h4", { text: `${type.charAt(0).toUpperCase() + type.slice(1)} Template` }); - new import_obsidian6.Setting(containerEl).setName(`Enable ${type} Template`).setDesc(`Use a custom template for "${type}" items.`).addToggle((toggle) => { - toggle.setValue(this.plugin.settings.contentTypeTemplateToggles[typeKey]).onChange(async (value) => { - this.plugin.settings.contentTypeTemplateToggles[typeKey] = value; - await this.plugin.saveSettings(); - this.display(); - }); - }); - if (this.plugin.settings.contentTypeTemplateToggles[typeKey]) { - new import_obsidian6.Setting(containerEl).setDesc(`Template for "${type}" content. Leave empty to use the default template.`).setClass("setting-item-stacked").addTextArea((text3) => { - text3.setPlaceholder(`Enter template for ${type} items...`).setValue(this.plugin.settings.contentTypeTemplates[typeKey]).onChange(async (value) => { - this.plugin.settings.contentTypeTemplates[typeKey] = value; - await this.plugin.saveSettings(); - }); - text3.inputEl.rows = 10; - text3.inputEl.style.width = "100%"; - text3.inputEl.style.fontFamily = "monospace"; - }).addButton((button) => { - button.setButtonText("Reset").setIcon("undo").setTooltip(`Reset ${type} template to its original default`).onClick(async () => { - if (DEFAULT_SETTINGS.contentTypeTemplates[typeKey]) { - this.plugin.settings.contentTypeTemplates[typeKey] = DEFAULT_SETTINGS.contentTypeTemplates[typeKey]; - await this.plugin.saveSettings(); - this.display(); - new import_obsidian6.Notice(`${type.charAt(0).toUpperCase() + type.slice(1)} template has been reset.`); - } else { - new import_obsidian6.Notice(`Error: Default template for ${type} not found.`, 7e3); - } - }); - }); - } - containerEl.createEl("hr"); - } - } - containerEl.createEl("hr"); - const footer = containerEl.createDiv({ cls: "setting-footer" }); - footer.innerHTML = ` +[Listen to Audio]({{link}})`},contentTypeTemplateToggles:{link:!0,article:!0,image:!0,video:!0,document:!0,audio:!0}};var c0=class extends I.Modal{constructor(t,a){super(t);this.url="";this.title="";this.description="";this.cover="";this.tags="";this.note="";this.collectionId=0;this.collectionName="Unsorted";this.collections=[];this.collectionMap=new Map;this.collectionHierarchy=new Map;this.plugin=a,this.vaultPath=this.plugin.settings.defaultFolder}async onOpen(){let{contentEl:t}=this;t.addClass("add-new-bookmark-modal"),t.createEl("h2",{text:"Add New Bookmark"});let a;new I.Setting(t).setName("URL").setDesc("Enter the URL of the bookmark to add.").setClass("setting-item-stacked").addText(n=>{a=n,n.setPlaceholder("https://example.com").setValue(this.url).onChange(s=>{this.url=s.trim(),this.fetchButton.setDisabled(!this.url)}),n.inputEl.style.width="100%"}).addButton(n=>{this.fetchButton=n,n.setButtonText("Fetch Metadata").setCta().setDisabled(!this.url).onClick(async()=>{if(!this.url){new I.Notice("Please enter a URL first.",3e3);return}this.fetchButton.setDisabled(!0).setButtonText("Fetching...");try{let s=await ka(this.url);this.title=s.title||"Untitled Bookmark",this.description=s.description||"",this.cover=s.cover||"",this.titleTextComponent.setValue(this.title),this.descriptionTextComponent.setValue(this.description),new I.Notice("Metadata fetched successfully!",3e3)}catch(s){new I.Notice("Failed to fetch metadata. Please check the URL.",5e3),console.error("Metadata fetch error:",s)}finally{this.fetchButton.setDisabled(!1).setButtonText("Fetch Metadata")}})}),t.createEl("h3",{text:"Bookmark Details"}),new I.Setting(t).setName("Title").setClass("setting-item-stacked").addText(n=>{this.titleTextComponent=n,n.setPlaceholder("Title").setValue(this.title).onChange(s=>{this.title=s.trim()}),n.inputEl.style.width="100%"}),new I.Setting(t).setName("Excerpt/Description").setClass("setting-item-stacked").addTextArea(n=>{this.descriptionTextComponent=n,n.setPlaceholder("Short description or excerpt").setValue(this.description).onChange(s=>{this.description=s.trim()}),n.inputEl.style.width="100%"}),new I.Setting(t).setName("Cover Image URL").setClass("setting-item-stacked").addText(n=>{n.setPlaceholder("Optional image URL").setValue(this.cover).onChange(s=>{this.cover=s.trim()}),n.inputEl.style.width="100%"}),new I.Setting(t).setName("Note").setDesc("Your personal note for this bookmark.").setClass("setting-item-stacked").addTextArea(n=>{n.setPlaceholder("Your personal note").setValue(this.note).onChange(s=>{this.note=s.trim()}),n.inputEl.style.width="100%"}),new I.Setting(t).setName("Tags").setDesc("Comma-separated tags (e.g., tag1, tag2)").setClass("setting-item-stacked").addText(n=>{n.setPlaceholder("e.g., web, read-later").setValue(this.tags).onChange(s=>{this.tags=s.trim()}),n.inputEl.style.width="100%"}),new I.Setting(t).setName("Collection").setDesc("Select the Raindrop collection to save this bookmark to.").addDropdown(n=>{this.collectionSelect=n,n.addOption("0","Unsorted"),this.plugin.fetchAllUserCollections().then(s=>{this.collections=s,this.buildHierarchy(),this.collections.forEach(o=>{let f=this.getFullPath(o._id);n.addOption(o._id.toString(),f)}),this.collections.find(o=>o._id===this.collectionId)?n.setValue(this.collectionId.toString()):n.setValue("0"),n.onChange(o=>{this.collectionId=parseInt(o);let f=this.collectionMap.get(this.collectionId);this.collectionName=f?f.title:"Unsorted"})}).catch(s=>{new I.Notice("Failed to load collections.",7e3),console.error("Error loading collections in modal:",s)})});let r=t.createDiv({cls:"modal-button-container"});new I.ButtonComponent(r).setButtonText("Add Bookmark").setCta().onClick(async()=>{if(!this.url||!this.title){new I.Notice("URL and Title are required.",3e3);return}this.close();let n=this.tags.split(",").map(s=>s.trim()).filter(s=>s.length>0);await this.plugin.createRaindropNote({title:this.title,url:this.url,excerpt:this.description,cover:this.cover,tags:n,vaultPath:this.vaultPath||void 0,note:this.note,collectionId:this.collectionId,collectionName:this.collectionName})}),new I.ButtonComponent(r).setButtonText("Cancel").onClick(()=>{this.close()})}buildHierarchy(){this.collectionMap.clear(),this.collectionHierarchy.clear(),this.collections.forEach(t=>{this.collectionMap.set(t._id,t)}),this.collections.forEach(t=>{var r,n;let a=((r=t.parent)==null?void 0:r.$id)||0;this.collectionHierarchy.has(a)||this.collectionHierarchy.set(a,[]),(n=this.collectionHierarchy.get(a))==null||n.push(t._id)})}getFullPath(t){var n;let a=[],r=t;for(;r!==void 0&&r!==0;){let s=this.collectionMap.get(r);if(!s)break;a.push(s.title),r=(n=s.parent)==null?void 0:n.$id}return a.reverse().join(" > ")}},o0=class extends I.Plugin{constructor(t,a){super(t,a);this.isRibbonShown=!1;this.settings={...at},this.rateLimiter=f0()}async onload(){await this.loadSettings(),this.registerView(ou,t=>new ct(t,this)),this.addCommand({id:"open-raindrop-dashboard",name:"Open Raindrop Dashboard",callback:()=>this.activateView()}),this.addCommand({id:"add-new-bookmark-modal",name:"Add New Bookmark (Modal)",callback:()=>{new c0(this.app,this).open()}}),this.addCommand({id:"add-new-bookmark",name:"Add New Bookmark from URL",callback:async()=>{new c0(this.app,this).open()}}),this.updateRibbonIcon(),this.addSettingTab(new va(this.app,this)),console.log("Make It Rain plugin loaded!")}onunload(){var t;this.app.workspace.detachLeavesOfType(ou),(t=this.ribbonIconEl)==null||t.remove(),console.log("Make It Rain plugin unloaded.")}async loadSettings(){let t=await this.loadData();if(this.settings={...at},t){let a={...this.settings,...t,contentTypeTemplates:{...this.settings.contentTypeTemplates,...Object.fromEntries(Object.entries(t.contentTypeTemplates||{}).map(([r,n])=>[r,n.trim()===""?this.settings.contentTypeTemplates[r]:n]))},contentTypeTemplateToggles:{...this.settings.contentTypeTemplateToggles,...t.contentTypeTemplateToggles||{}}};this.settings=a}await this.saveSettings()}getTemplateForType(t,a){var n;return a.useDefaultTemplate?this.settings.defaultTemplate:a.overrideTemplates||this.settings.contentTypeTemplateToggles[t]&&((n=this.settings.contentTypeTemplates[t])==null?void 0:n.trim())!==""?this.settings.contentTypeTemplates[t]:this.settings.defaultTemplate}generateFileName(t,a){var o;let n=a?this.settings.fileNameTemplate:"{{id}}",s=(f,b)=>{let E=Ke(b),g=new RegExp(`{{${f}}}`,"gi");n=n.replace(g,E)};try{s("title",t.title||"Untitled"),s("id",(t._id||"unknown_id").toString()),s("collectionTitle",((o=t.collection)==null?void 0:o.title)||"No Collection");let f=t.created?new Date(t.created):null,b="no_date";f&&!isNaN(f.getTime())&&(b=f.toISOString().split("T")[0]),s("date",b)}catch(f){let b="template processing error";return f instanceof Error&&(b=f.message),console.error("Error processing file name template:",b,f),new I.Notice("Error generating file name. Check console or template."),"Error_Filename_"+Date.now()}let c=Ke(n);return c.trim()?c:"Unnamed_Raindrop_"+(t._id||Date.now())}async saveSettings(){await this.saveData(this.settings)}sanitizeFileName(t){return Ke(t)}updateRibbonIcon(){var t;(t=this.ribbonIconEl)==null||t.remove(),this.ribbonIconEl=void 0,this.settings.showRibbonIcon&&(this.ribbonIconEl=this.addRibbonIcon("cloud-download","Open Raindrop Dashboard",()=>{this.activateView()}))}async fetchRaindrops(t){var s;let a="https://api.raindrop.io/rest/v1",r={method:"GET",headers:{Authorization:`Bearer ${this.settings.apiToken}`}},n=new I.Notice("Starting Raindrop fetch...",0);try{let c=[];if(!this.settings.apiToken){n.hide(),new I.Notice("Please configure your Raindrop.io API token in the plugin settings.",1e4);return}let f=[],b=new Map,E=new Map,g=new Map,_;if(t.collections){let S=t.collections.split(",").map(k=>k.trim()).filter(k=>k!=="");n.setMessage("Fetching user collections...");let L=await ne(`${a}/collections`,r,this.rateLimiter),R=await ne(`${a}/collections/childrens`,r,this.rateLimiter),y=[];if(L!=null&&L.result&&(L!=null&&L.items)&&(y=y.concat(L.items)),R!=null&&R.result&&(R!=null&&R.items)&&(y=y.concat(R.items)),y.length===0){console.error("API Error fetching collections: No collections returned from both endpoints."),n.hide(),new I.Notice("Error fetching user collections. Please check your API token and connection.",1e4);return}y.forEach(k=>{var w;b.set(k.title.toLowerCase(),k._id),E.set(k._id,k.title),g.set(k._id,{title:k.title,parentId:(w=k.parent)==null?void 0:w.$id})}),_={result:!0,items:y};let F=[];for(let k of S){let w=parseInt(k,10);if(!isNaN(w))E.has(w)?f.push(w):(F.push(k),console.warn(`Could not find collection with ID: ${k}`));else{let de=b.get(k.toLowerCase());de!==void 0?f.push(de):(F.push(k),console.warn(`Could not resolve collection name: ${k}`))}}if(F.length>0&&new I.Notice(`Could not find collections: ${F.join(", ")}. Please check names or use IDs.`,15e3),f.length===0&&S.length>0){n.hide(),new I.Notice("No valid collection IDs or names provided.",5e3);return}f=Array.from(new Set(f))}else{n.setMessage("Fetching all collections...");let P=await ne(`${a}/collections`,r,this.rateLimiter),M=await ne(`${a}/collections/childrens`,r,this.rateLimiter),R=[];if(P!=null&&P.result&&(P!=null&&P.items)&&(R=R.concat(P.items)),M!=null&&M.result&&(M!=null&&M.items)&&(R=R.concat(M.items)),R.length===0){console.error("API Error fetching collections: No collections returned from both endpoints."),n.hide(),new I.Notice("Error fetching user collections. Please check your API token and connection.",1e4);return}R.forEach(y=>{var F;b.set(y.title.toLowerCase(),y._id),E.set(y._id,y.title),g.set(y._id,{title:y.title,parentId:(F=y.parent)==null?void 0:F.$id})}),_={result:!0,items:R}}let N=t.apiFilterTags.split(",").map(S=>S.trim()).filter(S=>S!=="").join(" "),v="all";if(f.length>0?v="collections":(N||t.tagMatchType===Ma.ANY&&t.apiFilterTags.length>0)&&(v="tags"),v==="collections")for(let S of f){let P=!0,L=0,M=`${a}/raindrops/${S}`;for(;P;){let R=new URLSearchParams({perpage:"50",page:L.toString()});t.filterType&&t.filterType!=="all"&&R.append("type",t.filterType),N&&R.append("search",N),t.includeSubcollections&&R.append("nested","true");let y=`${M}?${R.toString()}`;console.log(`Requesting items from collection ID: ${S}`,y);let F=E.get(S)||S.toString();n.setMessage(`Fetching from collection: ${F}, page ${L+1}...`);let w=await ne(y,r,this.rateLimiter);if(!w.result){console.error(`API Error for collection ${S}:`,w),new I.Notice(`Error fetching collection: ${F}. Skipping.`,7e3),P=!1;continue}w!=null&&w.items?(c=c.concat(w.items),L++,P=w.items.length===50,console.log(`Fetched ${w.items.length} items from collection ${S}, page ${L}`),P&&n.setMessage(`Fetching from collection: ${F}, page ${L+1}...`)):(console.warn(`Unexpected response for collection ${S}. Stopping.`),P=!1)}}else if(v==="tags"){if(t.tagMatchType===Ma.ANY&&t.apiFilterTags.length>0){let S=new Map,P=t.apiFilterTags.split(",").map(L=>L.trim()).filter(L=>L!=="");for(let L of P){let M=!0,R=0;for(;M;){let y=new URLSearchParams({perpage:"50",page:R.toString(),search:`#${L}`});t.filterType&&t.filterType!=="all"&&y.append("type",t.filterType);let F=`${a}/raindrops/0?${y.toString()}`;console.log(`Requesting items with tag: ${L}`,F),n.setMessage(`Fetching items with tag: ${L}, page ${R+1}...`);let w=await ne(F,r,this.rateLimiter);if(!w.result){console.error(`API Error for tag ${L}:`,w);continue}console.log(`API Response for tag ${L}:`,{result:w.result,itemCount:((s=w==null?void 0:w.items)==null?void 0:s.length)||0,totalCount:(w==null?void 0:w.count)||0}),w!=null&&w.items?(w.items.forEach(de=>{S.has(de._id)||S.set(de._id,de)}),R++,M=w.items.length===50,console.log(`Fetched ${w.items.length} items for tag ${L}, page ${R}`),M&&n.setMessage(`Fetching items with tag: ${L}, page ${R+1}...`)):M=!1}}c=Array.from(S.values()),console.log(`Total unique items found across all tags: ${c.length}`)}else if(N){let S=!0,P=0;for(;S;){let L=new URLSearchParams({perpage:"50",page:P.toString(),search:N});t.filterType&&t.filterType!=="all"&&L.append("type",t.filterType);let M=`${a}/raindrops/0?${L.toString()}`;console.log(`Requesting items with tags: ${N}`,M),n.setMessage(`Fetching items with tags: ${N}, page ${P+1}...`);let y=await ne(M,r,this.rateLimiter);if(!y.result)throw console.error("API Error for tag search:",y),new Error(`API Error: ${JSON.stringify(y)}`);y!=null&&y.items?(c=c.concat(y.items),P++,S=y.items.length===50,console.log(`Fetched ${y.items.length} items with tags, page ${P}`),S&&n.setMessage(`Fetching items with tags: ${N}, page ${P+1}...`)):S=!1}}}else{let S=!0,P=0;for(;S;){let L=new URLSearchParams({perpage:"50",page:P.toString()});t.filterType&&t.filterType!=="all"&&L.append("type",t.filterType);let M=`${a}/raindrops/0?${L.toString()}`;console.log("Requesting all items:",M),n.setMessage(`Fetching all items, page ${P+1}...`);let y=await ne(M,r,this.rateLimiter);if(!y.result)throw console.error("API Error for all items fetch:",y),new Error(`API Error: ${JSON.stringify(y)}`);y!=null&&y.items?(c=c.concat(y.items),P++,S=y.items.length===50,console.log(`Fetched ${y.items.length} items, page ${P}`),S&&n.setMessage(`Fetching all items, page ${P+1}...`)):(console.warn("Unexpected response for all items fetch. Stopping."),S=!1)}}if(c.length===0)f.length>0||N||t.tagMatchType===Ma.ANY&&t.apiFilterTags.length>0?(n.hide(),new I.Notice("No raindrops found matching your criteria.",5e3)):(n.hide(),new I.Notice("No raindrops found in your account.",5e3));else{n.setMessage(`Found ${c.length} raindrops. Applying type filter...`);let S=c;if(t.filterType&&t.filterType!=="all"){if(S=c.filter(P=>P.type===t.filterType),n.setMessage(`Found ${S.length} raindrops of type '${t.filterType}'. Processing...`),S.length===0){new I.Notice(`No raindrops found matching type '${t.filterType}'.`,5e3),n.hide();return}}else n.setMessage(`Found ${c.length} raindrops. Processing...`);await this.processRaindrops(S,t.vaultPath,t.appendTagsToNotes,t.useRaindropTitleForFileName,n,t,_,f,E)}}catch(c){n.hide();let o="An unknown error occurred during fetch";c instanceof Error?o=c.message:typeof c=="string"&&(o=c),new I.Notice(`Error fetching raindrops: ${o}`,1e4),console.error("Error fetching Raindrop API:",c)}}async processRaindrops(t,a,r,n,s,c,o,f=[],b=new Map){var y,F;let{app:E}=this,g=r.split(",").map(k=>k.trim()).filter(k=>k!=="");a===void 0&&(a=this.settings.defaultFolder);let _=a!=null&&a.trim()?(0,I.normalizePath)(a.trim()):(0,I.normalizePath)(""),N=new Map;o!=null&&o.result&&o.items.forEach(k=>{var w;N.set(k._id,{title:k.title,parentId:(w=k.parent)==null?void 0:w.$id})});let v=0,S=0,P=0,L=0,M=0,R=t.length;try{let k={};for(let de of t){let ve=((F=(y=de.collection)==null?void 0:y.$id)==null?void 0:F.toString())||"uncategorized";k[ve]||(k[ve]=[]),k[ve].push(de)}for(let[de,ve]of Object.entries(k))try{for(let G of ve)try{let V=await this.processRaindrop(G,_,g,c,s,M,R,N,b);V.success?V.type==="created"?v++:V.type==="updated"?L++:V.type==="skipped"&&S++:P++,M++}catch(V){P++,M++,console.error("Error processing raindrop:",V)}}catch(G){console.error(`Error processing collection ${de}:`,G)}s.hide();let w=`${v} notes created.`;L>0&&(w+=` ${L} updated.`),S>0&&(w+=` ${S} skipped (already exist).`),P>0&&(w+=` ${P} errors.`),new I.Notice(w,7e3)}catch(k){s.hide();let w="An unknown error occurred";k instanceof Error?w=k.message:typeof k=="string"&&(w=k),new I.Notice(`Error processing raindrops: ${w}`,1e4),console.error("Error processing raindrops:",k)}}async processRaindrop(t,a,r,n,s,c,o,f,b){var E,g,_,N,v,S,P,L,M;try{let{app:R}=this,y=V=>V==null?"":V.replace(/"/g,'\\"'),F=this.generateFileName(t,n.useRaindropTitleForFileName),k=a;if((E=t.collection)!=null&&E.$id){let V=this.getFullPathSegments(t.collection.$id,f,b);if(V.length>0){let su=V.join("/");k=(0,I.normalizePath)(`${a}/${su}`)}}k&&!await R.vault.adapter.exists(k)&&await ot(R,k);let w=(0,I.normalizePath)(`${k}/${F}.md`),de=t.title||"Untitled";s.setMessage(`Processing '${de}'... (${c}/${o})`);let ve="created",G={id:t._id,title:y(t.title),excerpt:y(t.excerpt||""),note:y(t.note||""),link:t.link,cover:t.cover||"",created:t.created,lastupdate:t.lastUpdate,type:t.type,collectionId:((g=t.collection)==null?void 0:g.$id)||0,collectionTitle:y(b.get(((_=t.collection)==null?void 0:_.$id)||0)||"Unknown"),collectionPath:y(this.getFullPathSegments(((N=t.collection)==null?void 0:N.$id)||0,f,b).join("/")),...f.has(((v=t.collection)==null?void 0:v.$id)||0)&&((P=f.get(((S=t.collection)==null?void 0:S.$id)||0))==null?void 0:P.parentId)!==void 0&&{collectionParentId:(M=f.get(((L=t.collection)==null?void 0:L.$id)||0))==null?void 0:M.parentId},tags:(t.tags||[]).map(V=>y(V)),highlights:(t.highlights||[]).map(V=>({...V,text:y(V.text),note:y(V.note)})),bannerFieldName:this.settings.bannerFieldName,url:t.link||""};try{let V={...G,url:G.link||"",domain:this.getDomain(G.link||""),renderedType:this.raindropType(G.type),formattedCreatedDate:this.formatDate(G.created),formattedUpdatedDate:this.formatDate(G.lastupdate),formattedTags:this.formatTags(G.tags||[])};if(this.settings.isTemplateSystemEnabled){let su=this.getTemplateForType(t.type,n),Cu=this.renderTemplate(su,V);return await R.vault.create(w,Cu),{success:!0,type:ve}}else{let{id:su,title:Cu,excerpt:cu,note:Yd,link:un,cover:rt,created:tn,lastUpdate:an,type:rn,tags:nn}=t,it="";cu?cu.includes(` +`)?it=`description: | +${cu.split(` +`).map(Xe=>` ${Xe}`).join(` +`)}`:it=`description: "${cu.replace(/"/g,'"')}"`:it='description: ""';let ee=`--- +`;ee+=`id: ${su} +`,ee+=`title: "${Cu.replace(/"/g,'"')}" +`,ee+=`${it} +`,ee+=`source: ${un} +`,ee+=`type: ${rn} +`,ee+=`created: ${tn} +`,ee+=`lastupdate: ${an} +`,G.collectionId&&(ee+=`collectionId: ${G.collectionId} +`,ee+=`collectionTitle: "${y(G.collectionTitle)}" +`,ee+=`collectionPath: "${y(G.collectionPath)}" +`,G.collectionParentId&&(ee+=`collectionParentId: ${G.collectionParentId} +`)),ee+=`tags: +`;let sn=(nn||[]).map(Xe=>` - ${Xe.trim().replace(/ /g,"_").replace(/[#?"*<>:|]/g,"")}`).join(` +`);ee+=`${sn} +`,rt&&(ee+=`${this.settings.bannerFieldName}: ${rt} +`),ee+=`--- + +`;let ye="",cn=Ke(Cu)||"Cover Image";rt&&(ye+=`![${cn}](${rt}) + +`),ye+=`# ${Cu} + +`,cu&&(ye+=`## Description +${cu} + +`),G.note&&(ye+=`## Notes +${G.note} + +`),G.highlights&&G.highlights.length>0&&(ye+=`## Highlights +`,G.highlights.forEach(Xe=>{ye+=`- ${Xe.text.replace(/\r\n|\r|\n/g," ")} +`,Xe.note&&(ye+=` *Note:* ${Xe.note.replace(/\r\n|\r|\n/g," ")} +`)}),ye+=` +`);let on=ee+ye;return await R.vault.create(w,on),{success:!0,type:ve}}}catch(V){return V instanceof Error&&V.message&&V.message.toLowerCase().includes("file already exists")?(console.warn(`Attempted to create file ${w} but it already exists. This was not handled by update/skip logic (e.g., neither 'update existing' nor 'fetch only new' was applicable or led to a skip). File will be skipped. Options: updateExisting=${n.updateExisting}, fetchOnlyNew=${n.fetchOnlyNew}`),{success:!0,type:"skipped"}):(console.error(`Error during file operation for ${F} at path ${w}:`,V),{success:!1,type:"skipped"})}}catch(R){return console.error("Unexpected error in processRaindrop for item ID "+t._id+":",R),{success:!1,type:"skipped"}}}getFullPathSegments(t,a,r){let n=[],s=t;for(;s!==void 0&&s!==0&&s!==s0.UNSORTED&&s!==s0.TRASH;){let c=a.get(s);if(!c)break;let o=r.get(s);o&&n.unshift(Ke(o)),s=c.parentId}return n}formatDate(t){try{return new Date(t).toLocaleDateString()}catch(a){return""}}formatDateISO(t){try{return new Date(t).toISOString()}catch(a){return""}}formatTags(t){return t.map(a=>`#${a.trim()}`).join(" ")}getDomain(t){try{return new URL(t).hostname}catch(a){return""}}raindropType(t){return{link:"Web Link",article:"Article",image:"Image",video:"Video",document:"Document",audio:"Audio"}[t]||t}renderTemplate(t,a){let r={...a,url:a.link||"",domain:this.getDomain(a.link||""),formatDate:n=>this.formatDate(n),formatDateISO:n=>this.formatDateISO(n),formatTags:n=>this.formatTags(n),raindropType:n=>this.raindropType(n),updated:a.lastupdate||""};return t.replace(/{{#if ([^}]+)}}([\s\S]*?)(?:{{else}}([\s\S]*?))?{{\/if}}/g,(n,s,c,o)=>{let f=this.getNestedProperty(r,s.trim());return f&&(Array.isArray(f)?f.length>0:f)?c:o||""}).replace(/{{#each ([^}]+)}}([\s\S]*?){{\/each}}/g,(n,s,c)=>{let o=this.getNestedProperty(r,s.trim());return Array.isArray(o)?o.map(f=>c.replace(/{{this}}/g,String(f)).replace(/{{([^}]+)}}/g,(E,g)=>g.includes(".")?String(this.getNestedProperty(f,g)||""):String(f[g]||""))).join(""):""}).replace(/{{([^}]+)}}/g,(n,s)=>{let c=this.getNestedProperty(r,s.trim());return typeof c=="object"&&c!==null?this.formatYamlValue(c):String(c||"")})}formatYamlValue(t,a=0){let r=" ".repeat(a);if(t==null)return"null";if(typeof t=="boolean")return t?"true":"false";if(typeof t=="number")return t.toString();if(typeof t=="string")return t.includes(` +`)||t.includes(":")||t.includes("{")||t.includes("}")||t.includes("[")||t.includes("]")||t.includes("#")||t.includes("*")||t.includes("&")||t.includes("!")||t.includes("|")||t.includes(">")||t.includes("`")||t.trim()===""||/^[0-9]/.test(t)||/^true$|^false$|^yes$|^no$|^on$|^off$/i.test(t)?t.includes(` +`)?`| +`+t.split(` +`).map(n=>`${r} ${n}`).join(` +`):`"${t.replace(/"/g,'\\"')}"`:t;if(Array.isArray(t))return t.length===0?"[]":t.map(n=>` +${r}- ${this.formatYamlValue(n,a+1)}`).join("");if(typeof t=="object"){let n=Object.entries(t);if(n.length===0)return"{}";let s=" ".repeat(a+1);return n.map(([c,o])=>{let f=this.formatYamlValue(o,a+1);return f.startsWith("\\n")?`\\n${s}${c}:${f}`:`\\n${s}${c}: ${f}`}).join("")}return String(t)}escapeYamlString(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\t/g,"\\t").replace(/\r/g,"\\r")}getNestedProperty(t,a){return a.split(".").reduce((r,n)=>r&&r[n]!==void 0?r[n]:void 0,t)}async fetchAllUserCollections(){var n,s;if(!this.settings.apiToken)return console.warn("API token not set. Cannot fetch user collections."),new I.Notice("API token not set. Cannot fetch collections for modal.",5e3),[];let t="https://api.raindrop.io/rest/v1",a={method:"GET",headers:{Authorization:`Bearer ${this.settings.apiToken}`}},r=[];try{let o=await ne(this.app,`${t}/collections`,a,this.rateLimiter);o!=null&&o.result&&(o!=null&&o.items)?r=r.concat(o.items):o!=null&&o.result||console.warn("Failed to fetch root collections or result was false:",o);let b=await ne(this.app,`${t}/collections/childrens`,a,this.rateLimiter);b!=null&&b.result&&(b!=null&&b.items)?r=r.concat(b.items):b!=null&&b.result||console.warn("Failed to fetch nested collections or result was false:",b);let E=Array.from(new Map(r.map(g=>[g._id,g])).values()).filter(g=>g._id!==s0.TRASH&&g._id!==s0.UNSORTED);return r.length>0&&E.length===0&&((n=o==null?void 0:o.items)!=null&&n.length||(s=b==null?void 0:b.items)!=null&&s.length)?console.log("Only system collections (Trash/Unsorted) were found."):r.length===0&&console.warn("No collections were fetched from either endpoint."),E}catch(c){return console.error("Error fetching all user collections for modal:",c),new I.Notice("Failed to load your Raindrop.io collections for selection.",7e3),[]}}async createRaindropNote(t){let a=new I.Notice(`Creating note for: ${t.title}...`,0);try{let r=new Date().toISOString(),n={_id:Date.now(),title:t.title,excerpt:t.excerpt,note:t.note,link:t.url,cover:t.cover,created:r,lastUpdate:r,tags:t.tags,type:"link",collection:{$id:t.collectionId,title:t.collectionName},domain:new URL(t.url).hostname,media:[],sort:0,hidden:!1,file:{size:0,name:"",type:""},html:"",wordCount:0,target:"_blank",highlights:[]},s=new Map,c=new Map;if(t.collectionId&&t.collectionId!==0)try{(await this.fetchAllUserCollections()).forEach(g=>{var _;c.set(g._id,g.title),s.set(g._id,{title:g.title,parentId:(_=g.parent)==null?void 0:_.$id})})}catch(E){console.warn("Could not fetch collection hierarchy for manual bookmark:",E)}t.collectionId&&!c.has(t.collectionId)&&c.set(t.collectionId,t.collectionName);let o={vaultPath:t.vaultPath,collections:"",apiFilterTags:"",includeSubcollections:!1,appendTagsToNotes:"",useRaindropTitleForFileName:!0,tagMatchType:"all",filterType:"all",fetchOnlyNew:!1,updateExisting:!1,useDefaultTemplate:!1,overrideTemplates:!1},f=t.tags||[],b=await this.processRaindrop(n,t.vaultPath||this.settings.defaultFolder,f,o,a,1,1,s,c);a.hide(),b.success?new I.Notice(`\u2713 Successfully created note: ${t.title}`,5e3):new I.Notice(`\u26A0 Note creation completed with warnings for: ${t.title}`,5e3)}catch(r){a.hide();let n=r instanceof Error?r.message:"Unknown error";throw new I.Notice(`\u2717 Failed to create note: ${n}`,7e3),console.error("Error in createRaindropNote:",r),r}}async activateView(){this.app.workspace.detachLeavesOfType(ou),await this.app.workspace.getLeaf(!0).setViewState({type:ou,active:!0})}async fetchCollectionItems(t){if(!this.settings.apiToken)return new I.Notice("Please configure your Raindrop.io API token in the plugin settings.",1e4),[];let a="https://api.raindrop.io/rest/v1",r={method:"GET",headers:{Authorization:`Bearer ${this.settings.apiToken}`}},n=[],s=50,c=0,o=!0,f=`${a}/raindrops/${t}`;for(;o;){let b=new URLSearchParams({perpage:s.toString(),page:c.toString()}),E=`${f}?${b.toString()}`;console.log(`Requesting items from collection ID: ${t}, page ${c}`);try{let _=await ne(E,r,this.rateLimiter);if(!_.result){console.error(`API Error for collection ${t}:`,_),new I.Notice(`Error fetching items for collection ID: ${t}.`,7e3),o=!1;continue}_!=null&&_.items?(n=n.concat(_.items),c++,o=_.items.length===s,console.log(`Fetched ${_.items.length} items from collection ${t}, page ${c}`)):(console.warn(`Unexpected response for collection ${t}. Stopping.`),o=!1)}catch(g){console.error(`Error fetching items for collection ID: ${t}:`,g),new I.Notice(`Network error fetching items for collection ID: ${t}.`,7e3),o=!1}}return n}async fetchSingleRaindrop(t,a,r){var o;if(!this.settings.apiToken){new I.Notice("Please configure your Raindrop.io API token in the plugin settings.",1e4);return}if(!t){new I.Notice("Invalid Item ID provided for Quick Import.",5e3);return}let n=new I.Notice(`Fetching Raindrop item ID: ${t}...`,0),s="https://api.raindrop.io/rest/v1",c={method:"GET",headers:{Authorization:`Bearer ${this.settings.apiToken}`}};try{let b=await ne(this.app,`${s}/raindrop/${t}`,c,this.rateLimiter),E;if(b.result&&b.item?E=b.item:b.result&&b.items&&b.items.length>0&&(E=b.items[0],console.warn(`Single raindrop fetch for ID ${t} returned an items array. Using the first item.`)),!E){n.hide();let v=b.result===!1?b.errorMessage||"API indicated failure.":"Item not found or invalid response.";new I.Notice(`Failed to fetch Raindrop item ${t}: ${v}`,7e3),console.error(`Failed to fetch Raindrop item ${t}:`,b);return}let g={vaultPath:a,collections:"",apiFilterTags:"",includeSubcollections:!1,appendTagsToNotes:r||"",useRaindropTitleForFileName:this.settings.fileNameTemplate!=="{{id}}",tagMatchType:"all",filterType:"all",fetchOnlyNew:!1,updateExisting:!0,useDefaultTemplate:!1,overrideTemplates:!1},_,N=new Map;if((o=E.collection)!=null&&o.$id){n.setMessage(`Fetching collection info for item ${t}...`);let v=await this.fetchAllUserCollections();v.length>0&&(_={result:!0,items:v},v.forEach(S=>N.set(S._id,S.title)))}await this.processRaindrops([E],g.vaultPath,g.appendTagsToNotes,g.useRaindropTitleForFileName,n,g,_,[],N)}catch(f){n.hide();let b="An unknown error occurred during quick import";f instanceof Error&&(b=f.message),new I.Notice(`Error during Quick Import of item ${t}: ${b}`,1e4),console.error(`Error quick importing Raindrop ID ${t}:`,f)}}},va=class extends I.PluginSettingTab{constructor(u,t){super(u,t),this.plugin=t}display(){let{containerEl:u}=this;if(u.empty(),u.createEl("h1",{text:"Make It Rain Settings"}),u.createEl("h2",{text:"\u{1F4A7} Raindrop.io API Configuration"}),new I.Setting(u).setName("Raindrop.io API Token").setDesc('Create a "Test Token" from your Raindrop.io Apps settings.').addText(c=>{c.setPlaceholder("Enter your API token").setValue(this.plugin.settings.apiToken).onChange(async o=>{this.plugin.settings.apiToken=o,await this.plugin.saveSettings()}),c.inputEl.type="password",c.inputEl.style.width="100%"}).addButton(c=>{c.setButtonText("Verify Token").setIcon("checkmark").setCta().onClick(async()=>{await this.verifyApiToken()})}).nameEl.createEl("a",{href:"https://frostmute.github.io/make-it-rain/configuration#api-token",text:" (?)",cls:"make-it-rain-help-link",title:"How to get your API Token"}).setAttr("target","_blank"),u.createEl("h2",{text:"\u2699\uFE0F General Import Settings"}),new I.Setting(u).setName("Default Vault Save Location").setDesc("Specify the default folder for imported notes (e.g., Imports/Raindrops). Leave blank for vault root.").addText(c=>{c.setPlaceholder("e.g., Raindrops/").setValue(this.plugin.settings.defaultFolder).onChange(async o=>{this.plugin.settings.defaultFolder=o,await this.plugin.saveSettings()}),c.inputEl.style.width="100%"}),new I.Setting(u).setName("Filename Template").setDesc('Define the filename for notes when "Use Raindrop Title" is enabled. Placeholders: {{title}}, {{id}}, {{collectionTitle}}, {{date}} (YYYY-MM-DD).').addText(c=>{c.setPlaceholder("{{title}}").setValue(this.plugin.settings.fileNameTemplate).onChange(async o=>{this.plugin.settings.fileNameTemplate=o,await this.plugin.saveSettings()}),c.inputEl.style.width="100%"}).nameEl.createEl("a",{href:"https://frostmute.github.io/make-it-rain/configuration#filename-template",text:" (?)",cls:"make-it-rain-help-link",title:"Documentation for Filename Template"}).setAttr("target","_blank"),new I.Setting(u).setName("Banner Frontmatter Field Name").setDesc("Customize the frontmatter field name for the banner/cover image (default: banner).").addText(c=>{c.setPlaceholder("banner").setValue(this.plugin.settings.bannerFieldName).onChange(async o=>{this.plugin.settings.bannerFieldName=o,await this.plugin.saveSettings()})}),u.createEl("h2",{text:"\u{1F3A8} User Interface"}),new I.Setting(u).setName("Show Ribbon Icon").setDesc("Toggle the Make It Rain ribbon icon in the Obsidian sidebar.").addToggle(c=>{c.setValue(this.plugin.settings.showRibbonIcon).onChange(async o=>{this.plugin.settings.showRibbonIcon=o,await this.plugin.saveSettings(),this.plugin.updateRibbonIcon()})}),u.createEl("hr"),u.createEl("h2",{text:"\u{1F4C4} Template System"}),new I.Setting(u).setName("Enable Template System").setDesc("Use custom templates for formatting imported notes. If disabled, a basic note structure will be used.").addToggle(c=>{c.setValue(this.plugin.settings.isTemplateSystemEnabled).onChange(async o=>{this.plugin.settings.isTemplateSystemEnabled=o,await this.plugin.saveSettings(),this.display()})}),this.plugin.settings.isTemplateSystemEnabled){u.createEl("h3",{text:"Default Template"}),new I.Setting(u).setDesc("This template is used if no content-type specific template is active or defined below.").setClass("setting-item-stacked").addTextArea(f=>{f.setPlaceholder("Enter your default Handlebars template here...").setValue(this.plugin.settings.defaultTemplate).onChange(async b=>{this.plugin.settings.defaultTemplate=b,await this.plugin.saveSettings()}),f.inputEl.rows=15,f.inputEl.style.width="100%",f.inputEl.style.fontFamily="monospace"}).addButton(f=>{f.setButtonText("Reset to Default").setIcon("undo").setTooltip("Reset this template to its original default value").onClick(async()=>{this.plugin.settings.defaultTemplate=at.defaultTemplate,await this.plugin.saveSettings(),this.display(),new I.Notice("Default template has been reset.")})}),u.createEl("h3",{text:"Content-Type Specific Templates"});let c=u.createEl("p",{cls:"setting-item-description"});c.innerHTML='Define specific templates for different Raindrop types. If a type-specific template is enabled and filled, it will be used instead of the default template. If disabled or empty, the default template is used for that type. Visit the <a href="https://frostmute.github.io/make-it-rain/template-system/">documentation</a> for available variables.';let o=Object.values(en);for(let f of o){let b=f;u.createEl("h4",{text:`${f.charAt(0).toUpperCase()+f.slice(1)} Template`}),new I.Setting(u).setName(`Enable ${f} Template`).setDesc(`Use a custom template for "${f}" items.`).addToggle(E=>{E.setValue(this.plugin.settings.contentTypeTemplateToggles[b]).onChange(async g=>{this.plugin.settings.contentTypeTemplateToggles[b]=g,await this.plugin.saveSettings(),this.display()})}),this.plugin.settings.contentTypeTemplateToggles[b]&&new I.Setting(u).setDesc(`Template for "${f}" content. Leave empty to use the default template.`).setClass("setting-item-stacked").addTextArea(E=>{E.setPlaceholder(`Enter template for ${f} items...`).setValue(this.plugin.settings.contentTypeTemplates[b]).onChange(async g=>{this.plugin.settings.contentTypeTemplates[b]=g,await this.plugin.saveSettings()}),E.inputEl.rows=10,E.inputEl.style.width="100%",E.inputEl.style.fontFamily="monospace"}).addButton(E=>{E.setButtonText("Reset").setIcon("undo").setTooltip(`Reset ${f} template to its original default`).onClick(async()=>{at.contentTypeTemplates[b]?(this.plugin.settings.contentTypeTemplates[b]=at.contentTypeTemplates[b],await this.plugin.saveSettings(),this.display(),new I.Notice(`${f.charAt(0).toUpperCase()+f.slice(1)} template has been reset.`)):new I.Notice(`Error: Default template for ${f} not found.`,7e3)})}),u.createEl("hr")}}u.createEl("hr");let s=u.createDiv({cls:"setting-footer"});s.innerHTML=` <p><strong>Make It Rain v${this.plugin.manifest.version}</strong></p> <p>Developed by <a href="https://github.com/frostmute" target="_blank">frostmute (Jonathan Wagner)</a>.</p> <p>Found this plugin helpful? Consider <a href="https://ko-fi.com/frostmute" target="_blank">supporting its development</a>.</p> <p>For help, feature requests, or to report issues, please visit the <a href="https://github.com/frostmute/make-it-rain/issues" target="_blank">GitHub repository</a>.</p> - `; - } - async verifyApiToken() { - const { apiToken } = this.plugin.settings; - if (!apiToken) { - new import_obsidian6.Notice("Please enter an API token first.", 5e3); - return; - } - new import_obsidian6.Notice("Verifying API token...", 3e3); - const baseApiUrl = "https://api.raindrop.io/rest/v1"; - const fetchOptions = { - headers: { - "Authorization": `Bearer ${apiToken}`, - "Content-Type": "application/json" - } - }; - try { - const response = await (0, import_obsidian7.request)({ - url: `${baseApiUrl}/user`, - method: "GET", - headers: fetchOptions.headers - }); - let data2; - if (typeof response === "string") { - data2 = JSON.parse(response); - } else { - data2 = response; - } - if (data2.result) { - new import_obsidian6.Notice("API Token is valid!", 5e3); - } else { - const errorMessage = data2.message || data2.error || "Invalid API token or connection issue."; - new import_obsidian6.Notice(`API Token verification failed: ${errorMessage}`, 1e4); - console.error("API Token verification failed:", data2); - } - } catch (error) { - let errorMsg = "An error occurred during token verification."; - if (error instanceof Error) errorMsg = error.message; - else if (typeof error === "string") errorMsg = error; - new import_obsidian6.Notice(`API Token verification failed: ${errorMsg}`, 1e4); - console.error("Error verifying API token:", error); - } - } -}; + `}async verifyApiToken(){let{apiToken:u}=this.plugin.settings;if(!u){new I.Notice("Please enter an API token first.",5e3);return}new I.Notice("Verifying API token...",3e3);let t="https://api.raindrop.io/rest/v1",a={headers:{Authorization:`Bearer ${u}`,"Content-Type":"application/json"}};try{let r=await(0,Zi.request)({url:`${t}/user`,method:"GET",headers:a.headers}),n;if(typeof r=="string"?n=JSON.parse(r):n=r,n.result)new I.Notice("API Token is valid!",5e3);else{let s=n.message||n.error||"Invalid API token or connection issue.";new I.Notice(`API Token verification failed: ${s}`,1e4),console.error("API Token verification failed:",n)}}catch(r){let n="An error occurred during token verification.";r instanceof Error?n=r.message:typeof r=="string"&&(n=r),new I.Notice(`API Token verification failed: ${n}`,1e4),console.error("Error verifying API token:",r)}}}; diff --git a/build/manifest.json b/build/manifest.json index a7499c9..622723f 100644 --- a/build/manifest.json +++ b/build/manifest.json @@ -1,10 +1,11 @@ { "id": "make-it-rain", - "name": "RainSidian (Make It Rain)", - "version": "1.7.1", - "minAppVersion": "1.8.10", - "description": "Enhanced Raindrop.io integration with web scraping, interactive dashboard, and manual bookmark creation. Sync your bookmarks to Obsidian with powerful filtering and templates.", - "author": "yaeyintlin199", - "authorUrl": "https://github.com/yaeyintlin199", + "name": "Make It Rain - Enhanced", + "version": "2.2.0", + "minAppVersion": "0.15.0", + "description": "Enhanced Raindrop.io Integration with tab-based dashboard, mobile-first design, and real-time search", + "author": "frostmute", + "authorUrl": "https://github.com/frostmute/make-it-rain", + "fundingUrl": "https://www.buymeacoffee.com/frostmute", "isDesktopOnly": false -} \ No newline at end of file +} diff --git a/build/release-files.txt b/build/release-files.txt new file mode 100644 index 0000000..c8cceb7 --- /dev/null +++ b/build/release-files.txt @@ -0,0 +1,15 @@ +Plugin Release Files +Version: 2.2.0 +Date: 2025-11-24T18:00:25.495Z + +Files: +- main.js +- manifest.json +- styles.css +- versions.json +- styles_modern.css + +Installation: +1. Create a folder 'make-it-rain' in your Obsidian vault's .obsidian/plugins/ directory. +2. Copy all the files listed above into that folder. +3. Reload Obsidian and enable the plugin. diff --git a/build/styles.css b/build/styles.css index 332ce3e..3ba6351 100644 --- a/build/styles.css +++ b/build/styles.css @@ -1,1155 +1 @@ -/* styles.css */ -.setting-item-stacked .setting-item-info { - width: 100%; - margin-bottom: 8px; -} -.setting-item-stacked .setting-item-control { - width: 100%; -} -.setting-item-stacked { - display: flex; - flex-direction: column; - align-items: flex-start; -} -.theme-dark { - --raindrop-primary: #6366f1; - --raindrop-primary-hover: #818cf8; - --raindrop-secondary: #8b5cf6; - --raindrop-accent: #ec4899; - --raindrop-success: #10b981; - --raindrop-warning: #f59e0b; - --raindrop-bg-card: rgba(99, 102, 241, 0.05); - --raindrop-bg-hover: rgba(99, 102, 241, 0.1); - --raindrop-border: rgba(99, 102, 241, 0.2); - --raindrop-shadow: rgba(0, 0, 0, 0.3); -} -.theme-light { - --raindrop-primary: #4f46e5; - --raindrop-primary-hover: #6366f1; - --raindrop-secondary: #7c3aed; - --raindrop-accent: #db2777; - --raindrop-success: #059669; - --raindrop-warning: #d97706; - --raindrop-bg-card: rgba(79, 70, 229, 0.03); - --raindrop-bg-hover: rgba(79, 70, 229, 0.08); - --raindrop-border: rgba(79, 70, 229, 0.15); - --raindrop-shadow: rgba(0, 0, 0, 0.1); -} -.raindrop-dashboard { - padding: 0; - height: 100%; - width: 100%; - display: flex; - flex-direction: column; - background: var(--background-primary); - overflow: hidden; -} -.raindrop-dashboard h1 { - text-align: center; - margin: 0; - padding: 16px 20px; - color: var(--text-normal); - background: var(--background-primary-alt); - border-bottom: 2px solid var(--raindrop-primary); - font-size: 1.5em; - font-weight: 600; - display: flex; - align-items: center; - justify-content: center; - gap: 10px; -} -.raindrop-search-bar { - display: flex; - align-items: center; - margin-bottom: 20px; - border: 1px solid var(--background-modifier-border); - border-radius: var(--input-radius); - padding: 5px 10px; - background-color: var(--background-primary-alt); -} -.raindrop-search-bar .search-input { - flex-grow: 1; - border: none; - background: none; - padding: 5px; - font-size: var(--font-ui-small); - color: var(--text-normal); -} -.raindrop-search-bar .search-input:focus { - outline: none; -} -.raindrop-search-bar .search-icon { - color: var(--text-muted); - margin-right: 5px; -} -.raindrop-dashboard .mod-cta { - width: 100%; - margin-bottom: 20px; - padding: 10px; - font-size: var(--font-ui-medium); -} -.raindrop-tree-container h2 { - margin-top: 0; - margin-bottom: 10px; - border-bottom: 1px solid var(--background-modifier-border); - padding-bottom: 5px; - color: var(--text-normal); -} -.tree-view-root { - list-style: none; - padding-left: 0; - margin: 0; -} -.tree-item { - list-style: none; - margin: 0; - padding: 0; -} -.tree-item-self { - display: flex; - align-items: center; - padding: 5px 0; - cursor: pointer; - border-radius: var(--radius-s); - transition: background-color 0.1s; -} -.tree-item-self:hover { - background-color: var(--background-modifier-hover); -} -.tree-item-self.is-active { - background-color: var(--background-modifier-active); -} -.tree-item-icon { - display: flex; - align-items: center; - justify-content: center; - width: 20px; - height: 20px; - margin-right: 5px; - color: var(--text-accent); -} -.tree-item-inner { - flex-grow: 1; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - font-size: var(--font-ui-small); -} -.tree-item-extra { - color: var(--text-muted); - font-size: var(--font-ui-smallest); - margin-left: 5px; -} -.tree-view-children { - list-style: none; - padding-left: 20px; - margin: 0; - overflow: hidden; - transition: max-height 0.2s ease-out; -} -.tree-item.is-collapsed > .tree-view-children { - max-height: 0; -} -.tree-item:not(.is-collapsed) > .tree-view-children { - max-height: 10000px; -} -.tree-view-children .tree-item { - padding-left: 20px; - color: var(--text-muted); - font-style: italic; -} -.raindrop-dashboard .mod-warning, -.raindrop-dashboard .mod-error { - padding: 10px; - border-radius: var(--radius-s); - margin-top: 10px; - font-size: var(--font-ui-small); -} -.raindrop-dashboard .mod-warning { - background-color: var(--color-yellow-rgb); - color: var(--color-yellow); - border: 1px solid var(--color-yellow); -} -.raindrop-dashboard .mod-error { - background-color: var(--color-red-rgb); - color: var(--color-red); - border: 1px solid var(--color-red); -} -.raindrop-dashboard { - max-width: none !important; - margin: 0 !important; - padding: 0 !important; - display: flex; - flex-direction: column; - height: 100%; - background: var(--background-primary); -} -.raindrop-header { - display: flex; - justify-content: space-between; - align-items: center; - padding: 10px 20px; - border-bottom: 1px solid var(--background-modifier-border); -} -.raindrop-header h1 { - margin: 0; - text-align: left; - font-size: var(--font-title-large); -} -.raindrop-actions { - display: flex; - gap: 10px; - align-items: center; -} -.raindrop-actions .mod-cta { - width: auto; - margin: 0; - padding: 8px 12px; -} -.raindrop-main-content { - display: flex; - flex-direction: column; - flex-grow: 1; - overflow: hidden; -} -.raindrop-tab-nav { - display: flex; - gap: 0; - border-bottom: 2px solid var(--background-modifier-border); - background: var(--background-primary-alt); - padding: 0; - margin: 0; -} -.raindrop-tab-btn { - flex: 1; - padding: 12px 16px; - border: none; - background: transparent; - color: var(--text-muted); - font-size: var(--font-ui-medium); - font-weight: 500; - cursor: pointer; - transition: all 0.2s ease; - border-bottom: 3px solid transparent; - margin-bottom: -2px; -} -.raindrop-tab-btn:hover { - background: var(--raindrop-bg-hover); - color: var(--text-normal); -} -.raindrop-tab-btn.active { - color: var(--raindrop-primary); - border-bottom-color: var(--raindrop-primary); - background: var(--raindrop-bg-card); -} -.raindrop-tabs-container { - flex: 1; - display: flex; - overflow: hidden; -} -.raindrop-tab-content { - display: none; - flex: 1; - overflow: hidden; - flex-direction: column; -} -.raindrop-tab-content.active { - display: flex; -} -.raindrop-list-layout { - display: flex; - flex: 1; - overflow: hidden; - gap: 0; -} -.raindrop-collections-panel { - flex: 0 0 280px; - border-right: 1px solid var(--background-modifier-border); - background: var(--background-secondary); - overflow-y: auto; - overflow-x: hidden; - padding: 12px; - min-width: 200px; -} -.raindrop-collections-panel h2 { - margin-top: 0; - margin-bottom: 12px; - font-size: var(--font-title-small); - color: var(--text-normal); - border-bottom: 1px solid var(--background-modifier-border); - padding-bottom: 8px; -} -.raindrop-items-panel { - flex: 1; - display: flex; - flex-direction: column; - overflow: hidden; - padding: 12px; -} -.raindrop-items-panel h2 { - margin-top: 0; - margin-bottom: 12px; - font-size: var(--font-title-small); - color: var(--text-normal); -} -.raindrop-items-list-container { - flex: 1; - overflow-y: auto; - overflow-x: hidden; -} -.raindrop-main-content { - display: flex; - flex-grow: 1; - overflow: hidden; -} -.raindrop-left-panel { - flex: 0 0 300px; - border-right: 1px solid var(--background-modifier-border); - padding: 10px; - overflow-y: auto; -} -.raindrop-right-panel { - flex-grow: 1; - padding: 10px 20px; - overflow-y: auto; -} -.raindrop-right-panel h2 { - margin-top: 0; - margin-bottom: 15px; - font-size: var(--font-title-medium); - border-bottom: 1px solid var(--background-modifier-border); - padding-bottom: 5px; -} -.raindrop-item-list { - display: flex; - flex-direction: column; - gap: 10px; -} -.raindrop-item-card { - display: flex; - align-items: flex-start; - padding: 10px; - border: 1px solid var(--background-modifier-border); - border-radius: var(--radius-m); - cursor: pointer; - transition: background-color 0.1s; -} -.raindrop-item-card:hover { - background-color: var(--background-modifier-hover); -} -.raindrop-item-icon { - flex-shrink: 0; - margin-right: 10px; - width: 24px; - height: 24px; - color: var(--text-accent); -} -.raindrop-item-content-wrapper { - flex-grow: 1; - min-width: 0; -} -.raindrop-item-title { - font-weight: 600; - font-size: var(--font-ui-medium); - margin-bottom: 5px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.raindrop-item-title a { - color: var(--text-normal); - text-decoration: none; -} -.raindrop-item-title a:hover { - text-decoration: underline; -} -.raindrop-item-excerpt { - font-size: var(--font-ui-small); - color: var(--text-muted); - margin-bottom: 5px; - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 2; - line-clamp: 2; - -webkit-box-orient: vertical; -} -.raindrop-item-tags { - display: flex; - flex-wrap: wrap; - gap: 5px; -} -.raindrop-tag { - font-size: var(--font-ui-smallest); - color: var(--text-accent); - background-color: var(--background-modifier-accent); - padding: 2px 6px; - border-radius: var(--radius-s); -} -@media screen and (max-width: 768px) { - .raindrop-main-content { - flex-direction: column; - } - .raindrop-left-panel { - flex: none; - width: 100%; - border-right: none; - border-bottom: 1px solid var(--background-modifier-border); - max-height: 50vh; - } - .raindrop-right-panel { - padding: 10px; - } - .raindrop-header { - flex-direction: column; - align-items: flex-start; - gap: 10px; - } - .raindrop-actions { - width: 100%; - justify-content: space-between; - } - .raindrop-search-bar { - flex-grow: 1; - } - .raindrop-actions .mod-cta { - flex-shrink: 0; - } -} -.raindrop-item-detail-view { - padding: 10px 20px; -} -.raindrop-detail-header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 20px; - border-bottom: 1px solid var(--background-modifier-border); - padding-bottom: 10px; -} -.raindrop-detail-header h2 { - margin: 0; - font-size: var(--font-title-large); - color: var(--text-normal); -} -.raindrop-detail-actions { - display: flex; - gap: 10px; -} -.raindrop-detail-actions .clickable-icon { - color: var(--text-muted); - cursor: pointer; - padding: 5px; - border-radius: var(--radius-s); -} -.raindrop-detail-actions .clickable-icon:hover { - background-color: var(--background-modifier-hover); - color: var(--text-accent); -} -.raindrop-detail-content h3 { - margin-top: 20px; - margin-bottom: 10px; - font-size: var(--font-title-small); - color: var(--text-normal); -} -.raindrop-detail-metadata { - display: grid; - grid-template-columns: auto 1fr; - gap: 10px 20px; - margin-bottom: 20px; - font-size: var(--font-ui-small); -} -.raindrop-detail-field { - display: contents; -} -.raindrop-detail-label { - font-weight: 600; - color: var(--text-muted); -} -.raindrop-detail-value { - color: var(--text-normal); - word-break: break-all; -} -.raindrop-detail-value a { - color: var(--text-accent); - text-decoration: none; -} -.raindrop-detail-value a:hover { - text-decoration: underline; -} -.raindrop-detail-cover { - max-width: 100%; - height: auto; - border-radius: var(--radius-m); - margin-top: 10px; - border: 1px solid var(--background-modifier-border); -} -.raindrop-detail-highlights { - list-style: none; - padding-left: 0; -} -.raindrop-highlight-text { - background-color: var(--background-modifier-accent); - padding: 5px; - border-radius: var(--radius-s); - margin-bottom: 5px; - font-style: italic; -} -.raindrop-highlight-note { - margin-left: 10px; - font-size: var(--font-ui-smallest); - color: var(--text-muted); -} -.raindrop-item-card.is-active { - background-color: var(--background-modifier-active); - border-color: var(--interactive-accent); -} -@media screen and (max-width: 768px) { - .raindrop-detail-metadata { - grid-template-columns: 1fr; - gap: 5px 0; - } - .raindrop-detail-field { - display: block; - } - .raindrop-detail-label { - display: block; - margin-bottom: 2px; - } -} -.raindrop-split-view { - display: flex; - flex: 1; - overflow: hidden; - gap: 0; -} -.raindrop-collections-panel { - width: 280px; - min-width: 200px; - max-width: 400px; - border-right: 1px solid var(--background-modifier-border); - background: var(--background-secondary); - overflow-y: auto; - overflow-x: hidden; - transition: all 0.3s ease; -} -.raindrop-items-panel { - flex: 1; - min-width: 300px; - border-right: 1px solid var(--background-modifier-border); - background: var(--background-primary); - overflow-y: auto; - display: flex; - flex-direction: column; -} -.raindrop-detail-panel { - width: 400px; - min-width: 300px; - max-width: 600px; - background: var(--background-primary-alt); - overflow-y: auto; - transition: all 0.3s ease; -} -@media (max-width: 768px) { - .raindrop-split-view { - flex-direction: column; - height: 100%; - } - .raindrop-collections-panel { - width: 100%; - max-width: none; - max-height: 35vh; - min-height: 120px; - border-right: none; - border-bottom: 1px solid var(--background-modifier-border); - flex-shrink: 0; - } - .raindrop-items-panel { - min-width: 100%; - border-right: none; - flex: 1; - min-height: 0; - overflow-y: auto; - } - .raindrop-detail-panel { - display: none; - } - .raindrop-main-content { - flex-direction: column; - height: 100%; - } - .raindrop-left-panel { - flex: 0 0 auto; - max-height: 35vh; - min-height: 120px; - border-right: none; - border-bottom: 1px solid var(--background-modifier-border); - overflow-y: auto; - } - .raindrop-right-panel { - flex: 1; - min-height: 0; - overflow-y: auto; - padding: 10px; - } - .raindrop-tab-nav { - display: flex; - gap: 0; - border-bottom: 2px solid var(--background-modifier-border); - } - .raindrop-tab-btn { - flex: 1; - padding: 10px 12px; - font-size: var(--font-ui-small); - } - .raindrop-list-layout { - flex-direction: column; - } - .raindrop-collections-panel { - flex: 0 0 auto; - max-height: 30vh; - min-height: 100px; - width: 100%; - border-right: none; - border-bottom: 1px solid var(--background-modifier-border); - padding: 8px; - } - .raindrop-collections-panel h2 { - margin-top: 0; - margin-bottom: 8px; - font-size: var(--font-ui-medium); - } - .raindrop-items-panel { - flex: 1; - width: 100%; - border-right: none; - padding: 8px; - } - .raindrop-items-panel h2 { - margin-top: 0; - margin-bottom: 8px; - font-size: var(--font-ui-medium); - } - .raindrop-items-list-container { - flex: 1; - overflow-y: auto; - } - .raindrop-item-card { - padding: 12px; - margin-bottom: 8px; - } - .raindrop-header { - flex-direction: column; - align-items: flex-start; - gap: 8px; - padding: 8px 12px; - } - .raindrop-header h1 { - font-size: 1.3em; - margin: 0; - } - .raindrop-actions { - width: 100%; - gap: 8px; - } - .raindrop-search-bar { - flex: 1; - } - .raindrop-actions .mod-cta { - padding: 8px 12px; - font-size: var(--font-ui-small); - } -} -.raindrop-modal-overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(0, 0, 0, 0.75); - backdrop-filter: blur(4px); - z-index: 1000; - display: flex; - align-items: center; - justify-content: center; - padding: 20px; - animation: fadeIn 0.2s ease-out; -} -@keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -.raindrop-modal-container { - background: var(--background-primary); - border-radius: 12px; - box-shadow: 0 20px 60px var(--raindrop-shadow); - width: 100%; - max-width: 900px; - max-height: 90vh; - display: flex; - flex-direction: column; - animation: slideUp 0.3s ease-out; - border: 1px solid var(--raindrop-border); -} -@keyframes slideUp { - from { - opacity: 0; - transform: translateY(30px) scale(0.95); - } - to { - opacity: 1; - transform: translateY(0) scale(1); - } -} -.raindrop-modal-header { - padding: 20px 24px; - border-bottom: 1px solid var(--background-modifier-border); - display: flex; - align-items: center; - justify-content: space-between; - background: var(--background-primary-alt); - border-radius: 12px 12px 0 0; -} -.raindrop-modal-title { - font-size: 1.3em; - font-weight: 600; - color: var(--text-normal); - margin: 0; - flex: 1; - padding-right: 20px; -} -.raindrop-modal-close { - background: transparent; - border: none; - padding: 8px; - cursor: pointer; - border-radius: 6px; - color: var(--text-muted); - transition: all 0.2s ease; - display: flex; - align-items: center; - justify-content: center; -} -.raindrop-modal-close:hover { - background: var(--raindrop-bg-hover); - color: var(--text-normal); -} -.raindrop-modal-close svg { - width: 24px; - height: 24px; -} -.raindrop-modal-content { - flex: 1; - overflow-y: auto; - padding: 24px; -} -.raindrop-modal-actions { - padding: 16px 24px; - border-top: 1px solid var(--background-modifier-border); - display: flex; - gap: 12px; - justify-content: flex-end; - background: var(--background-primary-alt); - border-radius: 0 0 12px 12px; -} -.raindrop-item-card { - padding: 16px; - border-bottom: 1px solid var(--background-modifier-border); - cursor: pointer; - transition: all 0.2s ease; - position: relative; - background: var(--background-primary); -} -.raindrop-item-card:hover { - background: var(--raindrop-bg-hover); - border-left: 3px solid var(--raindrop-primary); - padding-left: 13px; -} -.raindrop-item-card.active { - background: var(--raindrop-bg-card); - border-left: 3px solid var(--raindrop-primary); - padding-left: 13px; -} -.raindrop-item-title { - font-size: 1.1em; - font-weight: 500; - color: var(--text-normal); - margin-bottom: 8px; - display: -webkit-box; - -webkit-line-clamp: 2; - line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; -} -.raindrop-item-excerpt { - font-size: 0.9em; - color: var(--text-muted); - margin-bottom: 8px; - display: -webkit-box; - -webkit-line-clamp: 2; - line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; -} -.raindrop-item-meta { - display: flex; - align-items: center; - gap: 12px; - flex-wrap: wrap; - font-size: 0.85em; - color: var(--text-faint); -} -.raindrop-item-type { - padding: 2px 8px; - border-radius: 4px; - background: var(--raindrop-bg-card); - color: var(--raindrop-primary); - font-weight: 500; - text-transform: capitalize; -} -.raindrop-item-date { - display: flex; - align-items: center; - gap: 4px; -} -.tree-item-self { - display: flex; - align-items: center; - padding: 6px 12px; - cursor: pointer; - border-radius: 6px; - margin: 2px 4px; - transition: all 0.2s ease; - color: var(--text-normal); -} -.tree-item-self:hover { - background: var(--raindrop-bg-hover); - color: var(--raindrop-primary); -} -.tree-item-self.active { - background: var(--raindrop-bg-card); - color: var(--raindrop-primary); - font-weight: 600; -} -.tree-item-icon { - margin-right: 8px; - color: var(--text-muted); - transition: transform 0.2s ease; -} -.tree-item.is-collapsed .tree-item-icon { - transform: rotate(-90deg); -} -.tree-item-title { - flex: 1; - font-size: 0.95em; -} -.tree-item-count { - font-size: 0.85em; - color: var(--text-faint); - background: var(--background-modifier-border-hover); - padding: 2px 6px; - border-radius: 10px; - min-width: 20px; - text-align: center; -} -.raindrop-action-btn { - padding: 10px 20px; - border: none; - border-radius: 8px; - font-weight: 500; - cursor: pointer; - transition: all 0.2s ease; - display: flex; - align-items: center; - gap: 8px; - font-size: 0.95em; -} -.raindrop-action-btn-primary { - background: var(--raindrop-primary); - color: white; -} -.raindrop-action-btn-primary:hover { - background: var(--raindrop-primary-hover); - transform: translateY(-1px); - box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3); -} -.raindrop-action-btn-secondary { - background: transparent; - color: var(--text-normal); - border: 1px solid var(--background-modifier-border); -} -.raindrop-action-btn-secondary:hover { - background: var(--raindrop-bg-hover); - border-color: var(--raindrop-primary); -} -.raindrop-action-btn-success { - background: var(--raindrop-success); - color: white; -} -.raindrop-action-btn-success:hover { - filter: brightness(1.1); - transform: translateY(-1px); - box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3); -} -.raindrop-action-btn svg { - width: 16px; - height: 16px; -} -.raindrop-item-detail-view { - padding: 24px; -} -.raindrop-detail-header { - margin-bottom: 24px; - padding-bottom: 16px; - border-bottom: 2px solid var(--raindrop-border); -} -.raindrop-detail-header h2 { - font-size: 1.6em; - color: var(--text-normal); - margin: 0 0 16px 0; - line-height: 1.4; -} -.raindrop-detail-actions { - display: flex; - gap: 8px; - flex-wrap: wrap; -} -.raindrop-detail-cover { - width: 100%; - max-height: 400px; - object-fit: cover; - border-radius: 8px; - margin-bottom: 20px; - box-shadow: 0 4px 12px var(--raindrop-shadow); -} -.raindrop-detail-metadata { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 16px; - margin-bottom: 24px; -} -.raindrop-detail-field { - padding: 12px; - background: var(--raindrop-bg-card); - border-radius: 8px; - border-left: 3px solid var(--raindrop-primary); -} -.raindrop-detail-label { - display: block; - font-size: 0.85em; - color: var(--text-faint); - margin-bottom: 4px; - text-transform: uppercase; - font-weight: 600; - letter-spacing: 0.5px; -} -.raindrop-detail-value { - display: block; - color: var(--text-normal); - font-size: 0.95em; -} -.raindrop-detail-value a { - color: var(--raindrop-primary); - text-decoration: none; -} -.raindrop-detail-value a:hover { - text-decoration: underline; -} -.raindrop-detail-content h3 { - color: var(--raindrop-primary); - font-size: 1.2em; - margin-top: 24px; - margin-bottom: 12px; - display: flex; - align-items: center; - gap: 8px; -} -.raindrop-detail-content p { - line-height: 1.6; - color: var(--text-normal); - margin-bottom: 16px; -} -.raindrop-tags-header { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 12px; -} -.raindrop-tags-header h3 { - margin: 0; -} -.raindrop-tag-edit-btn { - background: transparent; - border: none; - padding: 4px 8px; - cursor: pointer; - color: var(--text-muted); - border-radius: 4px; - transition: all 0.2s ease; -} -.raindrop-tag-edit-btn:hover { - background: var(--raindrop-bg-hover); - color: var(--raindrop-primary); -} -.raindrop-item-tags { - display: flex; - flex-wrap: wrap; - gap: 8px; - margin-top: 8px; -} -.raindrop-tag { - padding: 4px 12px; - background: var(--raindrop-bg-card); - color: var(--raindrop-primary); - border-radius: 16px; - font-size: 0.85em; - font-weight: 500; - border: 1px solid var(--raindrop-border); - transition: all 0.2s ease; - display: inline-block; -} -.raindrop-tag:hover { - background: var(--raindrop-primary); - color: white; - transform: translateY(-1px); -} -.raindrop-no-tags { - color: var(--text-muted); - font-style: italic; - font-size: 0.9em; -} -.raindrop-personal-note { - background: var(--raindrop-bg-card); - padding: 16px; - border-radius: 8px; - border-left: 4px solid var(--raindrop-accent); - font-style: italic; - color: var(--text-muted); - line-height: 1.6; -} -.raindrop-detail-highlights { - list-style: none; - padding: 0; - margin: 0; -} -.raindrop-detail-highlights li { - padding: 12px; - margin-bottom: 12px; - background: var(--raindrop-bg-card); - border-radius: 8px; - border-left: 3px solid var(--raindrop-warning); -} -.raindrop-highlight-text { - color: var(--text-normal); - margin-bottom: 8px; - line-height: 1.5; -} -.raindrop-highlight-note { - color: var(--text-muted); - font-size: 0.9em; - font-style: italic; -} -.raindrop-loading { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 40px; - color: var(--text-muted); -} -.raindrop-loading-spinner { - width: 40px; - height: 40px; - border: 3px solid var(--background-modifier-border); - border-top-color: var(--raindrop-primary); - border-radius: 50%; - animation: spin 0.8s linear infinite; - margin-bottom: 16px; -} -@keyframes spin { - to { - transform: rotate(360deg); - } -} -.raindrop-empty-state { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 60px 20px; - text-align: center; - color: var(--text-muted); -} -.raindrop-empty-state svg { - width: 80px; - height: 80px; - margin-bottom: 20px; - opacity: 0.5; -} -.raindrop-empty-state h3 { - color: var(--text-normal); - margin-bottom: 8px; -} -.raindrop-collections-panel::-webkit-scrollbar, -.raindrop-items-panel::-webkit-scrollbar, -.raindrop-detail-panel::-webkit-scrollbar, -.raindrop-modal-content::-webkit-scrollbar { - width: 8px; -} -.raindrop-collections-panel::-webkit-scrollbar-track, -.raindrop-items-panel::-webkit-scrollbar-track, -.raindrop-detail-panel::-webkit-scrollbar-track, -.raindrop-modal-content::-webkit-scrollbar-track { - background: transparent; -} -.raindrop-collections-panel::-webkit-scrollbar-thumb, -.raindrop-items-panel::-webkit-scrollbar-thumb, -.raindrop-detail-panel::-webkit-scrollbar-thumb, -.raindrop-modal-content::-webkit-scrollbar-thumb { - background: var(--background-modifier-border); - border-radius: 4px; -} -.raindrop-collections-panel::-webkit-scrollbar-thumb:hover, -.raindrop-items-panel::-webkit-scrollbar-thumb:hover, -.raindrop-detail-panel::-webkit-scrollbar-thumb:hover, -.raindrop-modal-content::-webkit-scrollbar-thumb:hover { - background: var(--raindrop-primary); -} -@media (min-width: 769px) and (max-width: 1024px) { - .raindrop-collections-panel { - width: 240px; - min-width: 180px; - } - .raindrop-detail-panel { - width: 350px; - min-width: 280px; - } -} -@media (min-width: 1400px) { - .raindrop-collections-panel { - width: 320px; - } - .raindrop-detail-panel { - width: 500px; - } -} -.raindrop-action-btn:focus, -.raindrop-modal-close:focus, -.tree-item-self:focus, -.raindrop-item-card:focus { - outline: 2px solid var(--raindrop-primary); - outline-offset: 2px; -} -@media print { - .raindrop-modal-overlay { - position: static; - background: transparent; - } - .raindrop-modal-header, - .raindrop-modal-actions { - display: none; - } -} +.setting-item-stacked .setting-item-info{width:100%;margin-bottom:8px}.setting-item-stacked .setting-item-control{width:100%}.setting-item-stacked{display:flex;flex-direction:column;align-items:flex-start}.theme-dark{--raindrop-primary: #6366f1;--raindrop-primary-hover: #818cf8;--raindrop-secondary: #8b5cf6;--raindrop-accent: #ec4899;--raindrop-success: #10b981;--raindrop-warning: #f59e0b;--raindrop-bg-card: rgba(99, 102, 241, .05);--raindrop-bg-hover: rgba(99, 102, 241, .1);--raindrop-border: rgba(99, 102, 241, .2);--raindrop-shadow: rgba(0, 0, 0, .3)}.theme-light{--raindrop-primary: #4f46e5;--raindrop-primary-hover: #6366f1;--raindrop-secondary: #7c3aed;--raindrop-accent: #db2777;--raindrop-success: #059669;--raindrop-warning: #d97706;--raindrop-bg-card: rgba(79, 70, 229, .03);--raindrop-bg-hover: rgba(79, 70, 229, .08);--raindrop-border: rgba(79, 70, 229, .15);--raindrop-shadow: rgba(0, 0, 0, .1)}.raindrop-dashboard{padding:0;height:100%;width:100%;display:flex;flex-direction:column;background:var(--background-primary);overflow:hidden}.raindrop-dashboard h1{text-align:center;margin:0;padding:16px 20px;color:var(--text-normal);background:var(--background-primary-alt);border-bottom:2px solid var(--raindrop-primary);font-size:1.5em;font-weight:600;display:flex;align-items:center;justify-content:center;gap:10px}.raindrop-search-bar{display:flex;align-items:center;margin-bottom:20px;border:1px solid var(--background-modifier-border);border-radius:var(--input-radius);padding:5px 10px;background-color:var(--background-primary-alt)}.raindrop-search-bar .search-input{flex-grow:1;border:none;background:none;padding:5px;font-size:var(--font-ui-small);color:var(--text-normal)}.raindrop-search-bar .search-input:focus{outline:none}.raindrop-search-bar .search-icon{color:var(--text-muted);margin-right:5px}.raindrop-dashboard .mod-cta{width:100%;margin-bottom:20px;padding:10px;font-size:var(--font-ui-medium)}.raindrop-tree-container h2{margin-top:0;margin-bottom:10px;border-bottom:1px solid var(--background-modifier-border);padding-bottom:5px;color:var(--text-normal)}.tree-view-root{list-style:none;padding-left:0;margin:0}.tree-item{list-style:none;margin:0;padding:0}.tree-item-self{display:flex;align-items:center;padding:5px 0;cursor:pointer;border-radius:var(--radius-s);transition:background-color .1s}.tree-item-self:hover{background-color:var(--background-modifier-hover)}.tree-item-self.is-active{background-color:var(--background-modifier-active)}.tree-item-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;margin-right:5px;color:var(--text-accent)}.tree-item-inner{flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--font-ui-small)}.tree-item-extra{color:var(--text-muted);font-size:var(--font-ui-smallest);margin-left:5px}.tree-view-children{list-style:none;padding-left:20px;margin:0;overflow:hidden;transition:max-height .2s ease-out}.tree-item.is-collapsed>.tree-view-children{max-height:0}.tree-item:not(.is-collapsed)>.tree-view-children{max-height:10000px}.tree-view-children .tree-item{padding-left:20px;color:var(--text-muted);font-style:italic}.raindrop-dashboard .mod-warning,.raindrop-dashboard .mod-error{padding:10px;border-radius:var(--radius-s);margin-top:10px;font-size:var(--font-ui-small)}.raindrop-dashboard .mod-warning{background-color:var(--color-yellow-rgb);color:var(--color-yellow);border:1px solid var(--color-yellow)}.raindrop-dashboard .mod-error{background-color:var(--color-red-rgb);color:var(--color-red);border:1px solid var(--color-red)}.raindrop-dashboard{max-width:none!important;margin:0!important;padding:0!important;display:flex;flex-direction:column;height:100%;background:var(--background-primary)}.raindrop-header{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;border-bottom:1px solid var(--background-modifier-border)}.raindrop-header h1{margin:0;text-align:left;font-size:var(--font-title-large)}.raindrop-actions{display:flex;gap:10px;align-items:center}.raindrop-actions .mod-cta{width:auto;margin:0;padding:8px 12px}.raindrop-main-content{display:flex;flex-direction:column;flex-grow:1;overflow:hidden}.raindrop-tab-nav{display:flex;gap:0;border-bottom:2px solid var(--background-modifier-border);background:var(--background-primary-alt);padding:0;margin:0}.raindrop-tab-btn{flex:1;padding:12px 16px;border:none;background:transparent;color:var(--text-muted);font-size:var(--font-ui-medium);font-weight:500;cursor:pointer;transition:all .2s ease;border-bottom:3px solid transparent;margin-bottom:-2px}.raindrop-tab-btn:hover{background:var(--raindrop-bg-hover);color:var(--text-normal)}.raindrop-tab-btn.active{color:var(--raindrop-primary);border-bottom-color:var(--raindrop-primary);background:var(--raindrop-bg-card)}.raindrop-tabs-container{flex:1;display:flex;overflow:hidden}.raindrop-tab-content{display:none;flex:1;overflow:hidden;flex-direction:column}.raindrop-tab-content.active{display:flex}.raindrop-list-layout{display:flex;flex:1;overflow:hidden;gap:0}.raindrop-collections-panel{flex:0 0 280px;border-right:1px solid var(--background-modifier-border);background:var(--background-secondary);overflow-y:auto;overflow-x:hidden;padding:12px;min-width:200px}.raindrop-collections-panel h2{margin-top:0;margin-bottom:12px;font-size:var(--font-title-small);color:var(--text-normal);border-bottom:1px solid var(--background-modifier-border);padding-bottom:8px}.raindrop-items-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;padding:12px}.raindrop-items-panel h2{margin-top:0;margin-bottom:12px;font-size:var(--font-title-small);color:var(--text-normal)}.raindrop-items-list-container{flex:1;overflow-y:auto;overflow-x:hidden}.raindrop-main-content{display:flex;flex-grow:1;overflow:hidden}.raindrop-left-panel{flex:0 0 300px;border-right:1px solid var(--background-modifier-border);padding:10px;overflow-y:auto}.raindrop-right-panel{flex-grow:1;padding:10px 20px;overflow-y:auto}.raindrop-right-panel h2{margin-top:0;margin-bottom:15px;font-size:var(--font-title-medium);border-bottom:1px solid var(--background-modifier-border);padding-bottom:5px}.raindrop-item-list{display:flex;flex-direction:column;gap:10px}.raindrop-item-card{display:flex;align-items:flex-start;padding:10px;border:1px solid var(--background-modifier-border);border-radius:var(--radius-m);cursor:pointer;transition:background-color .1s}.raindrop-item-card:hover{background-color:var(--background-modifier-hover)}.raindrop-item-icon{flex-shrink:0;margin-right:10px;width:24px;height:24px;color:var(--text-accent)}.raindrop-item-content-wrapper{flex-grow:1;min-width:0}.raindrop-item-title{font-weight:600;font-size:var(--font-ui-medium);margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.raindrop-item-title a{color:var(--text-normal);text-decoration:none}.raindrop-item-title a:hover{text-decoration:underline}.raindrop-item-excerpt{font-size:var(--font-ui-small);color:var(--text-muted);margin-bottom:5px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}.raindrop-item-tags{display:flex;flex-wrap:wrap;gap:5px}.raindrop-tag{font-size:var(--font-ui-smallest);color:var(--text-accent);background-color:var(--background-modifier-accent);padding:2px 6px;border-radius:var(--radius-s)}@media screen and (max-width: 768px){.raindrop-main-content{flex-direction:column}.raindrop-left-panel{flex:none;width:100%;border-right:none;border-bottom:1px solid var(--background-modifier-border);max-height:50vh}.raindrop-right-panel{padding:10px}.raindrop-header{flex-direction:column;align-items:flex-start;gap:10px}.raindrop-actions{width:100%;justify-content:space-between}.raindrop-search-bar{flex-grow:1}.raindrop-actions .mod-cta{flex-shrink:0}}.raindrop-item-detail-view{padding:10px 20px}.raindrop-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;border-bottom:1px solid var(--background-modifier-border);padding-bottom:10px}.raindrop-detail-header h2{margin:0;font-size:var(--font-title-large);color:var(--text-normal)}.raindrop-detail-actions{display:flex;gap:10px}.raindrop-detail-actions .clickable-icon{color:var(--text-muted);cursor:pointer;padding:5px;border-radius:var(--radius-s)}.raindrop-detail-actions .clickable-icon:hover{background-color:var(--background-modifier-hover);color:var(--text-accent)}.raindrop-detail-content h3{margin-top:20px;margin-bottom:10px;font-size:var(--font-title-small);color:var(--text-normal)}.raindrop-detail-metadata{display:grid;grid-template-columns:auto 1fr;gap:10px 20px;margin-bottom:20px;font-size:var(--font-ui-small)}.raindrop-detail-field{display:contents}.raindrop-detail-label{font-weight:600;color:var(--text-muted)}.raindrop-detail-value{color:var(--text-normal);word-break:break-all}.raindrop-detail-value a{color:var(--text-accent);text-decoration:none}.raindrop-detail-cover{max-width:100%;height:auto;border-radius:var(--radius-m);margin-top:10px;border:1px solid var(--background-modifier-border)}.raindrop-detail-highlights{list-style:none;padding-left:0}.raindrop-highlight-text{background-color:var(--background-modifier-accent);padding:5px;border-radius:var(--radius-s);margin-bottom:5px;font-style:italic}.raindrop-highlight-note{margin-left:10px;font-size:var(--font-ui-smallest);color:var(--text-muted)}.raindrop-item-card.is-active{background-color:var(--background-modifier-active);border-color:var(--interactive-accent)}@media screen and (max-width: 768px){.raindrop-detail-metadata{grid-template-columns:1fr;gap:5px 0}.raindrop-detail-field{display:block}.raindrop-detail-label{display:block;margin-bottom:2px}}.raindrop-split-view{display:flex;flex:1;overflow:hidden;gap:0}.raindrop-collections-panel{width:280px;min-width:200px;max-width:400px;border-right:1px solid var(--background-modifier-border);background:var(--background-secondary);overflow-y:auto;overflow-x:hidden;transition:all .3s ease}.raindrop-items-panel{flex:1;min-width:300px;border-right:1px solid var(--background-modifier-border);background:var(--background-primary);overflow-y:auto;display:flex;flex-direction:column}.raindrop-detail-panel{width:400px;min-width:300px;max-width:600px;background:var(--background-primary-alt);overflow-y:auto;transition:all .3s ease}@media (max-width: 768px){.raindrop-split-view{flex-direction:column;height:100%}.raindrop-collections-panel{width:100%;max-width:none;max-height:35vh;min-height:120px;border-right:none;border-bottom:1px solid var(--background-modifier-border);flex-shrink:0}.raindrop-items-panel{min-width:100%;border-right:none;flex:1;min-height:0;overflow-y:auto}.raindrop-detail-panel{display:none}.raindrop-main-content{flex-direction:column;height:100%}.raindrop-left-panel{flex:0 0 auto;max-height:35vh;min-height:120px;border-right:none;border-bottom:1px solid var(--background-modifier-border);overflow-y:auto}.raindrop-right-panel{flex:1;min-height:0;overflow-y:auto;padding:10px}.raindrop-tab-nav{display:flex;gap:0;border-bottom:2px solid var(--background-modifier-border)}.raindrop-tab-btn{flex:1;padding:10px 12px;font-size:var(--font-ui-small)}.raindrop-list-layout{flex-direction:column}.raindrop-collections-panel{flex:0 0 auto;max-height:30vh;min-height:100px;width:100%;border-right:none;border-bottom:1px solid var(--background-modifier-border);padding:8px}.raindrop-collections-panel h2{margin-top:0;margin-bottom:8px;font-size:var(--font-ui-medium)}.raindrop-items-panel{flex:1;width:100%;border-right:none;padding:8px}.raindrop-items-panel h2{margin-top:0;margin-bottom:8px;font-size:var(--font-ui-medium)}.raindrop-items-list-container{flex:1;overflow-y:auto}.raindrop-item-card{padding:12px;margin-bottom:8px}.raindrop-header{flex-direction:column;align-items:flex-start;gap:8px;padding:8px 12px}.raindrop-header h1{font-size:1.3em;margin:0}.raindrop-actions{width:100%;gap:8px}.raindrop-search-bar{flex:1}.raindrop-actions .mod-cta{padding:8px 12px;font-size:var(--font-ui-small)}}.raindrop-modal-overlay{position:fixed;inset:0;background:#000000bf;backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.raindrop-modal-container{background:var(--background-primary);border-radius:12px;box-shadow:0 20px 60px var(--raindrop-shadow);width:100%;max-width:900px;max-height:90vh;display:flex;flex-direction:column;animation:slideUp .3s ease-out;border:1px solid var(--raindrop-border)}@keyframes slideUp{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.raindrop-modal-header{padding:20px 24px;border-bottom:1px solid var(--background-modifier-border);display:flex;align-items:center;justify-content:space-between;background:var(--background-primary-alt);border-radius:12px 12px 0 0}.raindrop-modal-title{font-size:1.3em;font-weight:600;color:var(--text-normal);margin:0;flex:1;padding-right:20px}.raindrop-modal-close{background:transparent;border:none;padding:8px;cursor:pointer;border-radius:6px;color:var(--text-muted);transition:all .2s ease;display:flex;align-items:center;justify-content:center}.raindrop-modal-close:hover{background:var(--raindrop-bg-hover);color:var(--text-normal)}.raindrop-modal-close svg{width:24px;height:24px}.raindrop-modal-content{flex:1;overflow-y:auto;padding:24px}.raindrop-modal-actions{padding:16px 24px;border-top:1px solid var(--background-modifier-border);display:flex;gap:12px;justify-content:flex-end;background:var(--background-primary-alt);border-radius:0 0 12px 12px}.raindrop-item-card{padding:16px;border-bottom:1px solid var(--background-modifier-border);cursor:pointer;transition:all .2s ease;position:relative;background:var(--background-primary)}.raindrop-item-card:hover{background:var(--raindrop-bg-hover);border-left:3px solid var(--raindrop-primary);padding-left:13px}.raindrop-item-card.active{background:var(--raindrop-bg-card);border-left:3px solid var(--raindrop-primary);padding-left:13px}.raindrop-item-title{font-size:1.1em;font-weight:500;color:var(--text-normal);margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.raindrop-item-excerpt{font-size:.9em;color:var(--text-muted);margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.raindrop-item-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:.85em;color:var(--text-faint)}.raindrop-item-type{padding:2px 8px;border-radius:4px;background:var(--raindrop-bg-card);color:var(--raindrop-primary);font-weight:500;text-transform:capitalize}.raindrop-item-date{display:flex;align-items:center;gap:4px}.tree-item-self{display:flex;align-items:center;padding:6px 12px;cursor:pointer;border-radius:6px;margin:2px 4px;transition:all .2s ease;color:var(--text-normal)}.tree-item-self:hover{background:var(--raindrop-bg-hover);color:var(--raindrop-primary)}.tree-item-self.active{background:var(--raindrop-bg-card);color:var(--raindrop-primary);font-weight:600}.tree-item-icon{margin-right:8px;color:var(--text-muted);transition:transform .2s ease}.tree-item.is-collapsed .tree-item-icon{transform:rotate(-90deg)}.tree-item-title{flex:1;font-size:.95em}.tree-item-count{font-size:.85em;color:var(--text-faint);background:var(--background-modifier-border-hover);padding:2px 6px;border-radius:10px;min-width:20px;text-align:center}.raindrop-action-btn{padding:10px 20px;border:none;border-radius:8px;font-weight:500;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:8px;font-size:.95em}.raindrop-action-btn-primary{background:var(--raindrop-primary);color:#fff}.raindrop-action-btn-primary:hover{background:var(--raindrop-primary-hover);transform:translateY(-1px);box-shadow:0 4px 12px #6366f14d}.raindrop-action-btn-secondary{background:transparent;color:var(--text-normal);border:1px solid var(--background-modifier-border)}.raindrop-action-btn-secondary:hover{background:var(--raindrop-bg-hover);border-color:var(--raindrop-primary)}.raindrop-action-btn-success{background:var(--raindrop-success);color:#fff}.raindrop-action-btn-success:hover{filter:brightness(1.1);transform:translateY(-1px);box-shadow:0 4px 12px #10b9814d}.raindrop-action-btn svg{width:16px;height:16px}.raindrop-item-detail-view{padding:24px}.raindrop-detail-header{margin-bottom:24px;padding-bottom:16px;border-bottom:2px solid var(--raindrop-border)}.raindrop-detail-header h2{font-size:1.6em;color:var(--text-normal);margin:0 0 16px;line-height:1.4}.raindrop-detail-actions{display:flex;gap:8px;flex-wrap:wrap}.raindrop-detail-cover{width:100%;max-height:400px;object-fit:cover;border-radius:8px;margin-bottom:20px;box-shadow:0 4px 12px var(--raindrop-shadow)}.raindrop-detail-metadata{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.raindrop-detail-field{padding:12px;background:var(--raindrop-bg-card);border-radius:8px;border-left:3px solid var(--raindrop-primary)}.raindrop-detail-label{display:block;font-size:.85em;color:var(--text-faint);margin-bottom:4px;text-transform:uppercase;font-weight:600;letter-spacing:.5px}.raindrop-detail-value{display:block;color:var(--text-normal);font-size:.95em}.raindrop-detail-value a{color:var(--raindrop-primary);text-decoration:none}.raindrop-detail-value a:hover{text-decoration:underline}.raindrop-detail-content h3{color:var(--raindrop-primary);font-size:1.2em;margin-top:24px;margin-bottom:12px;display:flex;align-items:center;gap:8px}.raindrop-detail-content p{line-height:1.6;color:var(--text-normal);margin-bottom:16px}.raindrop-tags-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.raindrop-tags-header h3{margin:0}.raindrop-tag-edit-btn{background:transparent;border:none;padding:4px 8px;cursor:pointer;color:var(--text-muted);border-radius:4px;transition:all .2s ease}.raindrop-tag-edit-btn:hover{background:var(--raindrop-bg-hover);color:var(--raindrop-primary)}.raindrop-item-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.raindrop-tag{padding:4px 12px;background:var(--raindrop-bg-card);color:var(--raindrop-primary);border-radius:16px;font-size:.85em;font-weight:500;border:1px solid var(--raindrop-border);transition:all .2s ease;display:inline-block}.raindrop-tag:hover{background:var(--raindrop-primary);color:#fff;transform:translateY(-1px)}.raindrop-no-tags{color:var(--text-muted);font-style:italic;font-size:.9em}.raindrop-personal-note{background:var(--raindrop-bg-card);padding:16px;border-radius:8px;border-left:4px solid var(--raindrop-accent);font-style:italic;color:var(--text-muted);line-height:1.6}.raindrop-detail-highlights{list-style:none;padding:0;margin:0}.raindrop-detail-highlights li{padding:12px;margin-bottom:12px;background:var(--raindrop-bg-card);border-radius:8px;border-left:3px solid var(--raindrop-warning)}.raindrop-highlight-text{color:var(--text-normal);margin-bottom:8px;line-height:1.5}.raindrop-highlight-note{color:var(--text-muted);font-size:.9em;font-style:italic}.raindrop-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;color:var(--text-muted)}.raindrop-loading-spinner{width:40px;height:40px;border:3px solid var(--background-modifier-border);border-top-color:var(--raindrop-primary);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:16px}@keyframes spin{to{transform:rotate(360deg)}}.raindrop-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;color:var(--text-muted)}.raindrop-empty-state svg{width:80px;height:80px;margin-bottom:20px;opacity:.5}.raindrop-empty-state h3{color:var(--text-normal);margin-bottom:8px}.raindrop-collections-panel::-webkit-scrollbar,.raindrop-items-panel::-webkit-scrollbar,.raindrop-detail-panel::-webkit-scrollbar,.raindrop-modal-content::-webkit-scrollbar{width:8px}.raindrop-collections-panel::-webkit-scrollbar-track,.raindrop-items-panel::-webkit-scrollbar-track,.raindrop-detail-panel::-webkit-scrollbar-track,.raindrop-modal-content::-webkit-scrollbar-track{background:transparent}.raindrop-collections-panel::-webkit-scrollbar-thumb,.raindrop-items-panel::-webkit-scrollbar-thumb,.raindrop-detail-panel::-webkit-scrollbar-thumb,.raindrop-modal-content::-webkit-scrollbar-thumb{background:var(--background-modifier-border);border-radius:4px}.raindrop-collections-panel::-webkit-scrollbar-thumb:hover,.raindrop-items-panel::-webkit-scrollbar-thumb:hover,.raindrop-detail-panel::-webkit-scrollbar-thumb:hover,.raindrop-modal-content::-webkit-scrollbar-thumb:hover{background:var(--raindrop-primary)}@media (min-width: 769px) and (max-width: 1024px){.raindrop-collections-panel{width:240px;min-width:180px}.raindrop-detail-panel{width:350px;min-width:280px}}@media (min-width: 1400px){.raindrop-collections-panel{width:320px}.raindrop-detail-panel{width:500px}}.raindrop-action-btn:focus,.raindrop-modal-close:focus,.tree-item-self:focus,.raindrop-item-card:focus{outline:2px solid var(--raindrop-primary);outline-offset:2px}@media print{.raindrop-modal-overlay{position:static;background:transparent}.raindrop-modal-header,.raindrop-modal-actions{display:none}} diff --git a/build/styles_modern.css b/build/styles_modern.css new file mode 100644 index 0000000..a6a9621 --- /dev/null +++ b/build/styles_modern.css @@ -0,0 +1 @@ +:root{--radius-s: 4px;--radius-m: 8px;--radius-l: 12px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .25);--duration-150: .15s;--duration-200: .2s;--duration-300: .3s;--duration-500: .5s;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem}.raindrop-modern-dashboard{height:100%;display:flex;flex-direction:column;background:var(--background-primary);color:var(--text-normal);font-family:var(--font-interface)}.dashboard-header{background:var(--background-secondary);border-bottom:1px solid var(--background-modifier-border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.dashboard-title{font-size:var(--font-ui-large);font-weight:700;color:var(--text-normal);margin:0}.dashboard-subtitle{font-size:var(--font-ui-small);color:var(--text-muted);margin:0}.modern-search{position:relative;display:flex;align-items:center;background:var(--background-primary);border:1px solid var(--background-modifier-border);border-radius:var(--radius-m);transition:all var(--duration-200) ease}.modern-search:focus-within{border-color:var(--interactive-accent);box-shadow:0 0 0 2px var(--interactive-accent-hover)}.modern-search input{background:transparent;border:none;outline:none;padding:var(--space-2) var(--space-3);padding-left:var(--space-10);font-size:var(--font-ui-medium);color:var(--text-normal);width:100%}.modern-search .search-icon{position:absolute;left:var(--space-3);color:var(--text-muted);pointer-events:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-m);font-size:var(--font-ui-medium);font-weight:500;line-height:1.5;cursor:pointer;transition:all var(--duration-200) ease;border:1px solid transparent;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--interactive-accent);color:var(--text-on-accent)}.btn-primary:hover:not(:disabled){background:var(--interactive-accent-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--background-secondary);color:var(--text-normal);border-color:var(--background-modifier-border)}.btn-secondary:hover:not(:disabled){background:var(--background-modifier-hover);border-color:var(--background-modifier-border-hover)}.btn-ghost{background:transparent;color:var(--text-muted)}.btn-ghost:hover:not(:disabled){background:var(--background-modifier-hover);color:var(--text-normal)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-ui-small)}.btn-icon{padding:var(--space-2);aspect-ratio:1}.layout-controls{display:flex;background:var(--background-secondary);border:1px solid var(--background-modifier-border);border-radius:var(--radius-m);padding:var(--space-1);gap:var(--space-1)}.layout-button{padding:var(--space-1);border-radius:var(--radius-s);background:transparent;color:var(--text-muted);transition:all var(--duration-150) ease;cursor:pointer;border:none}.layout-button:hover{background:var(--background-modifier-hover);color:var(--text-normal)}.layout-button.active{background:var(--interactive-accent);color:var(--text-on-accent)}.collection-tree{background:var(--background-secondary);border:1px solid var(--background-modifier-border);border-radius:var(--radius-m);height:100%;display:flex;flex-direction:column}.collection-tree-header{padding:var(--space-4);border-bottom:1px solid var(--background-modifier-border)}.collection-tree-content{flex:1;overflow-y:auto;padding:var(--space-2)}.tree-node{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-s);cursor:pointer;transition:all var(--duration-150) ease;user-select:none}.tree-node:hover{background:var(--background-modifier-hover)}.tree-node.active{background:var(--interactive-accent);color:var(--text-on-accent)}.tree-node-toggle{padding:var(--space-1);border-radius:var(--radius-s);background:transparent;border:none;cursor:pointer;color:inherit;transition:background var(--duration-150) ease}.tree-node-toggle:hover{background:var(--background-modifier-hover)}.tree-node-icon{flex-shrink:0;color:var(--text-accent)}.tree-node-content{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.tree-node-title{font-size:var(--font-ui-medium);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-node-count{flex-shrink:0;padding:var(--space-1) var(--space-2);font-size:var(--font-ui-smaller);background:var(--background-modifier-form-field);color:var(--text-muted);border-radius:var(--radius-s)}.item-card{background:var(--background-primary);border:1px solid var(--background-modifier-border);border-radius:var(--radius-m);overflow:hidden;cursor:pointer;transition:all var(--duration-200) ease;position:relative}.item-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--interactive-accent)}.item-card.selected{border-color:var(--interactive-accent);box-shadow:0 0 0 2px var(--interactive-accent-hover)}.item-card-cover{height:6rem;background:var(--background-modifier-form-field);overflow:hidden;position:relative}.item-card-cover img{width:100%;height:100%;object-fit:cover}.item-card-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.2),transparent)}.item-card-content{padding:var(--space-3)}.item-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-2)}.item-card-type{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-ui-smaller);font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.item-card-title{font-size:var(--font-ui-medium);font-weight:600;line-height:1.4;color:var(--text-normal);margin-bottom:var(--space-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.item-card-excerpt{font-size:var(--font-ui-small);line-height:1.5;color:var(--text-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:var(--space-3)}.item-card-tags{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-bottom:var(--space-3)}.item-tag{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);font-size:var(--font-ui-smaller);background:var(--interactive-accent);color:var(--text-on-accent);border-radius:var(--radius-s)}.item-card-footer{display:flex;align-items:center;justify-content:space-between;font-size:var(--font-ui-smaller);color:var(--text-muted);padding-top:var(--space-2);border-top:1px solid var(--background-modifier-border)}.item-card-date{display:flex;align-items:center;gap:var(--space-1)}.item-card-collection{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100px}.item-actions{position:absolute;top:var(--space-2);right:var(--space-2);display:flex;gap:var(--space-1);background:var(--background-primary);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:var(--radius-s);padding:var(--space-1);box-shadow:var(--shadow-sm);opacity:0;transition:opacity var(--duration-200) ease}.item-card:hover .item-actions{opacity:1}.item-action-btn{padding:var(--space-1);border-radius:var(--radius-s);background:transparent;border:none;color:var(--text-muted);cursor:pointer;transition:all var(--duration-150) ease}.item-action-btn:hover{background:var(--background-modifier-hover);color:var(--text-normal)}.modal-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.modal-content{position:relative;width:100%;max-width:64rem;max-height:90vh;background:var(--background-primary);border:1px solid var(--background-modifier-border);border-radius:var(--radius-l);box-shadow:var(--shadow-2xl);overflow:hidden}.modal-header{position:relative;padding:var(--space-6);border-bottom:1px solid var(--background-modifier-border);background:var(--background-secondary)}.modal-close{position:absolute;top:var(--space-4);right:var(--space-4);padding:var(--space-2);border-radius:var(--radius-s);background:transparent;border:none;color:var(--text-muted);cursor:pointer;transition:all var(--duration-150) ease}.modal-close:hover{background:var(--background-modifier-hover);color:var(--text-normal)}.modal-title{font-size:var(--font-ui-large);font-weight:700;line-height:1.3;color:var(--text-normal);margin:0 var(--space-12) var(--space-2) 0}.modal-meta{display:flex;flex-wrap:wrap;gap:var(--space-4);font-size:var(--font-ui-small);color:var(--text-muted);margin-bottom:var(--space-4)}.modal-meta-item{display:flex;align-items:center;gap:var(--space-1)}.modal-actions{display:flex;gap:var(--space-2)}.modal-body{overflow-y:auto;max-height:calc(90vh - 12rem);padding:var(--space-6)}.modal-section{margin-bottom:var(--space-6)}.modal-section:last-child{margin-bottom:0}.modal-section-title{font-size:var(--font-ui-medium);font-weight:600;color:var(--text-normal);margin-bottom:var(--space-2)}.modal-image{width:100%;height:16rem;object-fit:cover;border-radius:var(--radius-m);background:var(--background-modifier-form-field)}.modal-url{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--interactive-accent);text-decoration:none;word-break:break-all;transition:color var(--duration-150) ease}.modal-url:hover{color:var(--interactive-accent-hover)}.modal-note{padding:var(--space-4);background:var(--background-modifier-form-field);border:1px solid var(--background-modifier-border);border-radius:var(--radius-m);line-height:1.6;white-space:pre-wrap}.modal-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.modal-tag{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);background:var(--interactive-accent);color:var(--text-on-accent);border-radius:var(--radius-s);font-size:var(--font-ui-small);font-weight:500}.modal-highlights{display:flex;flex-direction:column;gap:var(--space-3)}.modal-highlight{padding:var(--space-4);border-left:4px solid var(--interactive-accent);background:var(--interactive-accent);background-opacity:.05;border-radius:0 var(--radius-m) var(--radius-m) 0}.modal-highlight-text{font-style:italic;color:var(--text-normal);margin-bottom:var(--space-2)}.modal-highlight-note{font-size:var(--font-ui-small);color:var(--text-muted);margin-bottom:var(--space-2)}.modal-highlight-meta{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-ui-smaller);color:var(--text-muted)}.modal-metadata{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--background-modifier-border)}.modal-metadata-item h4{font-size:var(--font-ui-medium);font-weight:500;color:var(--text-normal);margin-bottom:var(--space-1)}.modal-metadata-item p{font-size:var(--font-ui-small);color:var(--text-muted)}@media (max-width: 768px){.raindrop-modern-dashboard{height:100vh;height:100dvh}.dashboard-header{padding:var(--space-3)}.dashboard-title{font-size:var(--font-ui-medium)}.main-content{flex-direction:column}.collection-tree{width:100%;max-height:50vh;border-right:none;border-bottom:1px solid var(--background-modifier-border)}.content-area{padding:var(--space-3)}.modal-content{margin:var(--space-2);max-height:calc(100vh - var(--space-4))}.modal-header{padding:var(--space-4)}.modal-body{padding:var(--space-4);max-height:calc(100vh - 8rem)}.modal-actions{flex-direction:column}.modal-metadata{grid-template-columns:1fr}}.loading-spinner{display:inline-block;width:1em;height:1em;border:2px solid var(--background-modifier-border);border-radius:50%;border-top-color:var(--interactive-accent);animation:spin 1s ease-in-out infinite}@keyframes spin{to{transform:rotate(360deg)}}.line-clamp-1{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.btn:focus-visible,.modern-search:focus-within,.tree-node:focus-visible,.item-card:focus-visible{outline:2px solid var(--interactive-accent);outline-offset:2px} diff --git a/build/versions.json b/build/versions.json new file mode 100644 index 0000000..68f9473 --- /dev/null +++ b/build/versions.json @@ -0,0 +1,15 @@ +{ + "1.0.0": "1.8.10", + "1.1.0": "1.8.10", + "1.2.0": "1.8.10", + "1.3.0": "1.8.10", + "1.4.0": "1.8.10", + "1.5.0": "1.8.10", + "1.5.1": "1.8.10", + "1.6.0": "1.8.10", + "1.6.1": "1.8.10", + "1.7.0": "1.8.10", + "1.7.1": "1.8.10", + "2.1.0": "1.8.10", + "2.2.0": "1.8.10" +} \ No newline at end of file diff --git a/scripts/esbuild.config.mjs b/scripts/esbuild.config.mjs index 1128ba3..e9865b8 100644 --- a/scripts/esbuild.config.mjs +++ b/scripts/esbuild.config.mjs @@ -1,6 +1,8 @@ import esbuild from "esbuild"; import process from "process"; import builtins from "builtin-modules"; +import fs from "fs"; +import path from "path"; const banner = `/* @@ -10,49 +12,114 @@ if you want to view the source, please visit the github repository of this plugi `; const prod = process.argv[2] === "production"; +const outDir = "build"; + +// Ensure output directory exists +if (!fs.existsSync(outDir)) { + fs.mkdirSync(outDir); +} const context = await esbuild.context({ - banner: { - js: banner, - }, - entryPoints: ["src/main.ts"], - bundle: true, - external: [ - "obsidian", - "electron", - "@codemirror/autocomplete", - "@codemirror/collab", - "@codemirror/commands", - "@codemirror/language", - "@codemirror/lint", - "@codemirror/search", - "@codemirror/state", - "@codemirror/view", - "@lezer/common", - "@lezer/highlight", - "@lezer/lr", - ...builtins], - format: "cjs", - target: "es2018", - logLevel: "info", - sourcemap: prod ? false : "inline", - treeShaking: true, - outfile: "build/main.js", + banner: { + js: banner, + }, + entryPoints: ["src/main.ts"], + bundle: true, + external: [ + "obsidian", + "electron", + "@codemirror/autocomplete", + "@codemirror/collab", + "@codemirror/commands", + "@codemirror/language", + "@codemirror/lint", + "@codemirror/search", + "@codemirror/state", + "@codemirror/view", + "@lezer/common", + "@lezer/highlight", + "@lezer/lr", + ...builtins], + format: "cjs", + target: "es2018", + logLevel: "info", + sourcemap: prod ? false : "inline", + treeShaking: true, + minify: prod, + outfile: `${outDir}/main.js`, }); // Add output for styles.css +const styleEntryPoints = ["styles.css"]; +if (fs.existsSync("styles_modern.css")) { + styleEntryPoints.push("styles_modern.css"); +} + const styleContext = await esbuild.context({ - entryPoints: ["styles.css"], - bundle: true, - outfile: "build/styles.css", - logLevel: "info", + entryPoints: styleEntryPoints, + bundle: true, + outdir: outDir, + logLevel: "info", + minify: prod, }); +function copyFiles() { + const filesToCopy = [ + "manifest.json", + "versions.json" + ]; + + console.log("Copying static files..."); + filesToCopy.forEach(file => { + if (fs.existsSync(file)) { + fs.copyFileSync(file, path.join(outDir, file)); + console.log(`Copied ${file} to ${outDir}`); + } else { + console.warn(`Warning: ${file} not found`); + } + }); +} + +function generateReleaseManifest() { + if (!prod) return; + + const releaseFiles = [ + "main.js", + "manifest.json", + "styles.css", + "versions.json" + ]; + + // Check if styles_modern.css was copied + if (fs.existsSync(path.join(outDir, "styles_modern.css"))) { + releaseFiles.push("styles_modern.css"); + } + + const manifestContent = `Plugin Release Files +Version: ${JSON.parse(fs.readFileSync("manifest.json")).version} +Date: ${new Date().toISOString()} + +Files: +${releaseFiles.map(f => `- ${f}`).join("\n")} + +Installation: +1. Create a folder 'make-it-rain' in your Obsidian vault's .obsidian/plugins/ directory. +2. Copy all the files listed above into that folder. +3. Reload Obsidian and enable the plugin. +`; + + fs.writeFileSync(path.join(outDir, "release-files.txt"), manifestContent); + console.log("Generated release-files.txt"); +} + if (prod) { - await context.rebuild(); - await styleContext.rebuild(); - process.exit(0); + await context.rebuild(); + await styleContext.rebuild(); + copyFiles(); + generateReleaseManifest(); + process.exit(0); } else { - await context.watch(); - await styleContext.watch(); -} \ No newline at end of file + await context.watch(); + await styleContext.watch(); + copyFiles(); +} diff --git a/scripts/release.mjs b/scripts/release.mjs index 8826292..1a5e04f 100644 --- a/scripts/release.mjs +++ b/scripts/release.mjs @@ -63,18 +63,29 @@ try { console.log('═'.repeat(50)); console.log(`\nšŸ“Œ Version: ${version}`); console.log(`šŸ·ļø Tag: ${tag}`); - console.log(`šŸ“‚ Build output: dist/`); - console.log(`\nšŸ“¦ Release files:`); - console.log(` - dist/main.js`); - console.log(` - dist/manifest.json`); - console.log(` - dist/styles.css`); - console.log(` - dist/styles_modern.css`); + console.log(`šŸ“‚ Build output: build/`); + + const releaseFilesPath = path.join(rootDir, 'build', 'release-files.txt'); + if (fs.existsSync(releaseFilesPath)) { + console.log(`\nšŸ“¦ Release files (manifest):`); + console.log(fs.readFileSync(releaseFilesPath, 'utf-8')); + } else { + console.log(`\nšŸ“¦ Release files:`); + console.log(` - build/main.js`); + console.log(` - build/manifest.json`); + console.log(` - build/styles.css`); + console.log(` - build/versions.json`); + if (fs.existsSync(path.join(rootDir, 'build', 'styles_modern.css'))) { + console.log(` - build/styles_modern.css`); + } + } + console.log(`\nšŸ”— GitHub: https://github.com/frostmute/make-it-rain/releases/tag/${tag}`); console.log(`\nšŸ’” Next steps:`); console.log(` 1. Go to GitHub releases page`); console.log(` 2. Edit the ${tag} release`); console.log(` 3. Add release notes from RELEASE_NOTES_v${version}.md`); - console.log(` 4. Upload dist files as release assets`); + console.log(` 4. Upload build files as release assets (see list above)`); console.log(`\nāœ… Ready for BRAT import!\n`); } catch (error) {