panatgithub_AnkiHeadingSync/main.js
Dusk 13b5685fe5 fix(review): satisfy Obsidian review bot lint
中文: 修复 Obsidian Review Bot 指出的英文文案 sentence case 问题,并调整设置页测试中的计时器类型,避免禁用 prefer-active-window-timers 规则。

English: Fix the remaining Obsidian Review Bot sentence-case findings and update the settings tab test timer shim so no prefer-active-window-timers disable comment is needed.
2026-05-03 20:00:24 +08:00

47 lines
360 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
*/
"use strict";var Tn=Object.defineProperty;var bo=Object.getOwnPropertyDescriptor;var yo=Object.getOwnPropertyNames;var xo=Object.prototype.hasOwnProperty;var Qe=(e,t)=>{for(var n in t)Tn(e,n,{get:t[n],enumerable:!0})},Co=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of yo(t))!xo.call(e,i)&&i!==n&&Tn(e,i,{get:()=>t[i],enumerable:!(r=bo(t,i))||r.enumerable});return e};var So=e=>Co(Tn({},"__esModule",{value:!0}),e);var Ml={};Qe(Ml,{default:()=>Fl});module.exports=So(Ml);var ho=require("obsidian");function B(e,t){return`${e}:${t}`}function Dn(e){return e?.cardType==="basic"}function ti(e){return e?.cardType==="cloze"}function O(e){return e?.cardType==="qa-group"}var ni=require("obsidian");function se(e=(0,ni.getLanguage)()){let t=e.toLowerCase();return t==="zh"||t.startsWith("zh-")?"zh":"en"}function de(e,t){return t.join(e==="zh"?"\u3001":", ")}var An={commands:{syncCurrentFileToAnki:"Sync current file to Anki",syncVaultToAnki:"Sync vault to Anki",clearCurrentFileSyncedCards:"Clear synced cards in current file",cleanupEmptyDecks:"Clean up empty decks"},settings:{pluginTitle:"Anki heading sync",ankiConnectUrl:{name:"AnkiConnect URL",desc:"Default: http://127.0.0.1:8765",placeholder:"Example: http://127.0.0.1:8765"},qaHeadingLevel:{name:"Heading level for question-and-answer cards",desc:"Default question-and-answer heading level is 4."},clozeHeadingLevel:{name:"Cloze heading level",desc:"Default cloze heading level is 5."},cardAnswerCutoffMode:{name:"Card answer cutoff mode",desc:"A valid sync marker always wins. Without a valid marker, either keep the whole heading block or stop before the first 2+ consecutive blank lines.",options:{headingBlock:"Heading-block: whole heading block",doubleBlankLines:"Double-blank-lines: stop before the first 2+ blank lines"}},qaGroup:{title:"List notes for question-and-answer groups",marker:{name:"Marker for question-and-answer groups",desc:"When a question-and-answer heading ends with this hashtag marker, the whole heading block syncs as one list note for that group.",placeholder:"Hashtag marker"},managedNoteType:"Current note type: {{modelName}}. This route syncs QA Group list notes using the field mapping shown below.",managedModelContract:"Current note type summary: {{fieldCount}} fields and {{templateCount}} templates are available for this route."},syncOptions:{addObsidianBacklink:{name:"Add Obsidian backlink",desc:"Append a backlink to the source heading into synced cards."},obsidianBacklinkLabel:{name:"Obsidian backlink label",desc:"The text shown for the backlink. Blank input uses the default backlink label.",placeholder:"Open in Obsidian"},obsidianBacklinkPlacement:{name:"Obsidian backlink placement",desc:"Choose whether the backlink is appended to the question field or placed at the start or end of the answer body.",options:{questionLastLine:"Last line of question field",answerFirstLine:"First line of answer body",answerLastLine:"Last line of answer body"}},highlightsToCloze:{name:"Highlights to cloze",desc:"Convert ==highlight== segments into cloze deletions for cloze cards."},syncObsidianTagsToAnki:{name:"Sync Obsidian tags to Anki",desc:"Sync Obsidian-recognized tags from the current note into Anki note tags, including nested tags. On each sync, these tags overwrite the managed tags in Anki based on the current Obsidian content."},keepPureTagLinesInCardBody:{name:"Keep pure tag lines in card body",desc:'When turned off, remove every line in the card body that contains only tags, such as "#example #tag/case". Inline tags like "this is a #tag example" and lines with ordinary text like "tag label: #project" are kept. Extra blank lines created by removal are cleaned up automatically.'}},mapping:{title:"Note type field mappings",refresh:{name:"Refresh note types from Anki",button:"Refresh note types"},status:{idle:"Refresh note types from Anki to load the available note types.",loadedCount:"Loaded {{count}} note types from Anki.",empty:"Anki returned no note types.",failedLoadNoteTypes:"Failed to load note types from Anki.",loadedSavedMapping:"Loaded saved mapping for {{modelName}}.",selectedModel:"Selected {{modelName}}. Read fields from Anki to create or refresh its mapping.",loadedFieldsForModel:"Loaded fields for {{modelName}}. Review the suggested mapping and save it.",failedLoadFields:"Failed to load fields for {{modelName}}.",noLoadedFields:"No loaded fields for {{modelName}}. Read fields from Anki first.",savedMapping:"Saved mapping for {{modelName}}.",failedSaveMapping:"Failed to save mapping for {{modelName}}.",savedMappingReady:"Saved mapping is ready for {{title}}.",noSavedMapping:"No saved mapping for {{title}}. Read fields from Anki first."},section:{basic:{title:"Basic and question-and-answer",description:"Choose the note type for question-and-answer cards, read its fields from Anki, then confirm the title and body mapping."},cloze:{title:"Cloze",description:"Choose the cloze note type, read its fields from Anki, then confirm the main field mapping."}},noteTypeLabel:"{{title}} note type",noteTypeDesc:"Loaded from Anki note types. Refresh if the latest models are not shown.",fieldsLabel:"{{title}} fields",fieldsDesc:"Load the current note type fields from Anki, then review the suggested mapping.",readFieldsButton:"Read fields from Anki",loadedFields:"Loaded fields: {{fields}}",loadedFieldsNone:"Loaded fields: none. Read fields from Anki first.",mappingLabel:"{{title}} mapping",mappingDesc:"Save the current field mapping for this specific note type.",saveMappingButton:"Save mapping",titleFieldLabel:"{{title}} title field",titleFieldDesc:"Which Anki field should receive the heading/title fragment.",bodyFieldLabel:"{{title}} body field",bodyFieldDesc:"Which Anki field should receive the body fragment.",mainField:{name:"Cloze main field",desc:"The selected field receives title + <br><hr> + body during sync."},selectFieldPlaceholder:"-- select field --"},deck:{defaultSectionTitle:"Default deck",defaultDeck:{name:"Default deck",desc:"Lowest priority: used when neither a file-level deck nor a folder mapping matches."},fileDeckSectionTitle:"File-level custom deck",fileDeckEnabled:{name:"Enable file-level custom deck",desc:"When enabled, a shared marker can define one deck for the whole note in YAML or body."},marker:{name:"Deck marker name",desc:"YAML key and body marker share the same identifier. By default, use the built-in target deck marker."},template:{name:"Default deck template",desc:"Only the filename variable is supported. It expands to the current file name without .md when inserted."},insertLocation:{name:"Template insert location",desc:"Choose whether the deck template is written into YAML frontmatter or the body header area.",options:{body:"Body header",yaml:"YAML frontmatter"}},insertTemplate:{name:"Insert deck template into the current file",desc:"Write the deck declaration into the current active Markdown file using the current marker, template, and insert location.",button:"Insert deck template"},folderMappingSectionTitle:"Advanced: folder mapping",folderDeckMode:{name:"Folder mapping mode",desc:"Off / parent folders only / parent folders plus current file name.",options:{off:"Off",folder:"Folder-based mapping",folderAndFile:"Folder-and-file mapping"}},examplesTitle:"Examples:",folderExample:"Folder-based mapping example: \u6570\u5B66/\u7B2C\u4E00\u7AE0/\u7B2C\u4E00\u8282.md -> \u6570\u5B66::\u7B2C\u4E00\u7AE0",folderAndFileExample:"Folder-and-file mapping example: \u6570\u5B66/\u7B2C\u4E00\u7AE0/\u7B2C\u4E00\u8282.md -> \u6570\u5B66::\u7B2C\u4E00\u7AE0::\u7B2C\u4E00\u8282",fallbackDesc:"If neither folder-and-file mapping nor file-level custom decks are used, the default deck name is used as the Anki deck.",priorityTitle:"Final priority",priorityDesc:"Final deck priority: file-level custom deck > folder-mapped deck > default deck."},scope:{name:"Plugin run scope",summary:{all:"Process Markdown files across the whole vault",include:"Only process Markdown files in the checked folders below",exclude:"Process the whole vault, but skip Markdown files in the checked folders below"},unconfiguredWarning:"Run scope is not configured yet. Include mode requires at least one selected folder before sync can run.",option:{all:"All files",include:"Only in selected folders",exclude:"Exclude selected folders"},treeDescription:{include:"Only in selected folders: only process Markdown files in the checked folders below",exclude:"Exclude selected folders: process the whole vault, but skip Markdown files in the checked folders below"},loading:"Loading folders from the current vault...",empty:"There are no selectable folders in the current vault.",failedLoad:"Failed to load folders from the current vault.",expandFolder:"Expand {{name}}",collapseFolder:"Collapse {{name}}",folderDeckModeOverride:{ariaLabel:"Toggle the alternate folder deck mapping mode for {{name}}",hint:{folder:"This folder uses the folder-only deck name by itself",folderAndFile:"This folder uses the folder-and-file deck name by itself"},title:{folder:"Global mode is folder-and-file; enable this to use folder-only deck names for this folder",folderAndFile:"Global mode is folder-only; enable this to use folder-and-file deck names for this folder"}}},cards:{cardTypes:{title:"Card types and basics",desc:"Edit recognition rules directly. Changes save automatically.",advancedHint:"Advanced: keep AnkiConnect URL here without promoting it to a separate status card.",markerPlaceholder:"/",fieldsUnavailable:"-- read fields first --",autoManagedField:"Written automatically",autoComposedAnswer:"Auto composed",qaGroupManagedNoteType:"{{modelName}} (for QA Group list notes)",statusLabel:"Status: ",cacheEmpty:"There are no cached Anki note templates yet. Read the Anki template config manually.",cacheSummary:"Currently using {{noteTypeCount}} cached note templates with {{configuredCount}} selected card modes configured.",cacheChanged:"Anki currently reports {{liveCount}} note templates, which differs from the {{cachedCount}} cached templates on this page. The UI is still using the cache with {{configuredCount}} selected card modes configured; read the Anki template config manually to refresh.",cacheCheckFailed:"Still using {{noteTypeCount}} cached note templates with {{configuredCount}} selected card modes configured. The background check for the latest template list failed; read the Anki template config manually if you need a refresh.",loadedSummary:"Loaded {{noteTypeCount}} note templates and configured {{configuredCount}} selected card modes.",loadedFieldsStatus:"Refreshed fields for {{count}} selected note types.",failedLoad:"Failed to load note types or fields from Anki.",failedSave:"Failed to save card type settings.",loadAnki:{button:"Read Anki note types and fields manually",loading:"Loading Anki note types and fields..."},columns:{enabled:"Enabled",type:"Card type",headingLevel:"Heading marker",extraMarker:"Extra marker",noteType:"Anki note type",questionField:"Question field",answerField:"Answer field"},labels:{headingLevel:"Card marker:",extraMarker:"Extra marker:",noteType:"Anki note type:",questionField:"Question field:",answerField:"Answer field:",mainField:"Main field:",fields:"Fields:",qaGroupTitleField:"Title field:",qaGroupFirstQuestionField:"First question field:",qaGroupFirstAnswerField:"First answer field:",qaGroupConfiguredSlots:"Configured pairs:",qaGroupSlotFields:"Question/answer fields:",qaGroupWarnings:"Warnings:"},qaGroup:{noModel:"Select an Anki note type first",unavailable:"Read fields from Anki first",detectedSlots:"Configured {{count}} pair(s)",configuredSlots:"Configured {{count}} pair(s)",configuredSlotExample:"First {{firstQuestionField}} / {{firstAnswerField}}, last {{lastQuestionField}} / {{lastAnswerField}}",acceptWarnings:"I confirm these warnings can be ignored and sync may continue",warning:{missingAnswer:"Slot {{index}} is missing its answer field, so {{questionField}} / {{answerField}} was ignored.",missingQuestion:"Slot {{index}} is missing its question field, so {{questionField}} / {{answerField}} was ignored."}},sharedClozeMappingHint:"Reuse the current Anki note type and main field from the sequential cloze row. No separate setup is needed.",rows:{basic:"Question and answer (regular paragraph)",qaGroup:"Question and answer (nested list)",cloze:"Cloze (sequential deletions)",clozeAll:"Cloze (all deletions)"}},syncContent:{title:"Card body sync content",desc:"These options affect rendered content only. Updating them refreshes this card only.",sections:{bodyRange:"1. Choose the card body range",backlink:"2. Add backlinks for card-level jumps from Anki to Obsidian",tags:"3. Read tags",clozeSpecial:"4. Cloze-specific options"}},scope:{title:"Plugin run scope",desc:"Keep the existing scope modes and folder tree. The tree is loaded lazily and can be refreshed locally.",refreshFolders:"Refresh folder list"},deck:{title:"Card deck settings",desc:"Card deck settings are grouped by recommended workflow.",sections:{folderMapping:"1. Recommended: use folder-and-file mapping for Anki decks",fileDeck:"2. Optional: enable file-level custom decks",defaultDeck:"3. Fallback: use the default deck"}},commands:{title:"Command guide",desc:"These are the current commands exposed in the command palette.",items:{syncCurrentFile:"Sync only the active Markdown file to Anki.",syncVault:"Sync all in-scope Markdown files in the vault to Anki.",clearCurrentFile:"Clear synced card markers and tracked sync state for the active file.",cleanupDecks:"Delete selected empty decks from Anki."}}}},modal:{emptyDeck:{title:"Clean up empty decks",description:"Select the empty decks to delete. A deck is deleted only if it is still empty at deletion time.",selectAll:"Select all",clearAll:"Clear all",invert:"Invert selection",cancel:"Cancel",deleteSelected:"Delete selected empty decks",selectionCount:"Selected {{selected}} / {{total}} empty decks"}},notice:{invalidSettingsRestored:"Invalid plugin settings were detected. Default settings were restored in memory.",failedSavePluginSettings:"Failed to save plugin settings.",noActiveMarkdownForSync:"No active Markdown file is available for sync.",syncUseCaseNotInitialized:"Sync use case is not initialized.",currentFileSyncFailed:"Current file sync failed.",vaultSyncFailed:"Vault sync failed.",noActiveMarkdownForDeckTemplateInsertion:"No active Markdown file is available for deck template insertion.",vaultGatewayNotInitialized:"Vault gateway is not initialized.",markdownFileNotFound:"Markdown file not found: {{filePath}}",deckTemplateAlreadyCurrent:"The deck template in the current file is already up to date.",deckTemplateInserted:"Inserted deck template into the current file: {{deck}}",deckTemplateInsertionFailed:"Deck template insertion failed.",noActiveMarkdownForReset:"No active Markdown file is available for reset.",clearCurrentFileUseCaseNotInitialized:"Clear-current-file use case is not initialized.",noTrackedCardsInCurrentFile:"There are no synced cards in the current file.",clearCurrentFileFailed:"Clear current file synced cards failed.",cleanupEmptyDecksUseCaseNotInitialized:"Empty-deck cleanup use case is not initialized.",noEmptyDeckCandidates:"No empty decks were found for cleanup.",cleanupEmptyDecksCancelled:"Empty-deck cleanup was cancelled.",cleanupEmptyDecksFailed:"Cleanup empty decks failed.",summary:{currentFileSync:"Current file sync completed: files {{scannedFiles}}, cards {{scannedCards}}, created {{created}}, rebuilt {{rebuilt}}, updated {{updated}}, migrated note types {{migratedNoteTypes}}, migrated decks {{migratedDecks}}, orphaned {{orphaned}}, media {{uploadedMedia}}, skipped {{skippedUnchangedCards}}.",vaultSync:"Vault sync completed: files {{scannedFiles}}, cards {{scannedCards}}, created {{created}}, rebuilt {{rebuilt}}, updated {{updated}}, migrated note types {{migratedNoteTypes}}, migrated decks {{migratedDecks}}, orphaned {{orphaned}}, media {{uploadedMedia}}, skipped {{skippedUnchangedCards}}.",clearCurrentFile:"Current file synced cards cleared: tracked cards {{trackedCards}}, tracked groups {{trackedGroups}}, deleted notes {{deletedNotes}}, removed markers {{removedMarkers}}, removed ID markers {{removedCardMarkers}}, removed GI markers {{removedGroupMarkers}}, deleted local records {{deletedLocalRecords}}.",cleanupEmptyDecks:"Empty-deck cleanup completed: candidates {{candidateCount}}, selected {{selectedCount}}, deleted {{deletedCount}}, skipped {{skippedCount}}.",markerWriteConflicts:"Marker write conflicts: {{files}}.",warningsCount:"Warnings: {{count}}.",markerRemovalConflicts:"Marker removal conflicts: {{files}}.",failures:"Failures: {{items}}.",skippedDecks:"Skipped decks: {{decks}}."}},errors:{runScopeNotConfigured:"Run scope is not configured. In include mode, select at least one folder before syncing.",currentFileOutOfScope:"The current file is outside the plugin scope: {{filePath}}",deck:{emptyName:"Deck name cannot be empty. Check the file-level deck declaration or default deck setting."},settings:{headingLevelsRange:"Heading levels must be integers between 1 and 6.",headingLevelsDifferent:"The question-and-answer and cloze heading levels must be different.",cardTypeConfigsObject:"Card type configs must be an object.",cardTypeEnabledBoolean:"Each card type enabled flag must be a boolean.",cardTypeExtraMarkerString:"Each card type extra marker must be a string.",cardTypeDefaultConflict:"Only one enabled default card type is allowed at heading H{{headingLevel}}.",cardAnswerCutoffModeInvalid:"Card answer cutoff mode must be heading-block or double-blank-lines.",qaNoteTypeRequired:"A question-and-answer note type is required.",qaGroupMarkerRequired:"A question-and-answer group marker is required.",qaGroupMarkerInvalid:"The question-and-answer group marker must be a hashtag-style token.",clozeNoteTypeRequired:"Cloze note type is required.",defaultDeckRequired:"Default deck is required.",fileDeckEnabledBoolean:"File deck enabled must be a boolean.",syncObsidianTagsToAnkiBoolean:"Sync Obsidian tags to Anki must be a boolean.",keepPureTagLinesInCardBodyBoolean:"Keep pure tag lines in card body must be a boolean.",fileDeckMarkerString:"File deck marker must be a string.",fileDeckTemplateString:"File deck template must be a string.",fileDeckInsertLocationInvalid:"File deck insert location must be YAML or body.",folderDeckModeInvalid:"Folder deck mode must be off, folder, or folder-and-file.",scopeModeInvalid:"Scope mode must be one of all, include, or exclude.",obsidianBacklinkPlacementInvalid:"Obsidian backlink placement must be question-last-line, answer-first-line, or answer-last-line.",includeFoldersArray:"Include folders must be an array.",includeFoldersStrings:"Include folders must only contain strings.",excludeFoldersArray:"Exclude folders must be an array.",excludeFoldersStrings:"Exclude folders must only contain strings.",alternateFolderDeckModeFoldersArray:"Alternate folder deck mode folders must be an array.",alternateFolderDeckModeFoldersStrings:"Alternate folder deck mode folders must only contain strings.",ankiConnectUrlRequired:"AnkiConnect URL is required.",ankiNoteTypeCacheArray:"Anki note type cache must be an array.",ankiNoteTypeCacheStrings:"Anki note type cache can only contain strings.",ankiModelFieldCacheObject:"Anki model field cache must be an object.",ankiModelFieldCacheEntryObject:"Each Anki model field cache entry must be an object.",ankiModelFieldCacheFieldNamesArray:"Anki model field cache fieldNames must be an array.",ankiModelFieldCacheFieldNamesStrings:"Anki model field cache fieldNames can only contain strings.",ankiModelFieldCacheLoadedAt:"Anki model field cache loadedAt must be a finite number.",noteFieldMappingsObject:"Note field mappings must be an object.",noteFieldMappingsCardType:"Note field mappings must use a supported card type.",noteFieldMappingsModelName:"Note field mappings must include a model name.",noteFieldMappingsLoadedFieldNames:"Note field mappings must include loaded field names.",noteFieldMappingsLoadedAt:"Note field mappings must include a loaded timestamp.",noteFieldMappingsQaGroupSlotsArray:"Question-and-answer group field mapping slots must be an array.",noteFieldMappingsQaGroupSlotObject:"Each question-and-answer group field mapping slot must be an object.",noteFieldMappingsQaGroupSlotIndex:"Each question-and-answer group field mapping slot.index must be an integer greater than 0.",noteFieldMappingsQaGroupSlotQuestionField:"Each question-and-answer group field mapping slot.questionField must be a string.",noteFieldMappingsQaGroupSlotAnswerField:"Each question-and-answer group field mapping slot.answerField must be a string.",noteFieldMappingsQaGroupWarningsArray:"Question-and-answer group field mapping warnings must be an array.",noteFieldMappingsQaGroupWarningsStrings:"Question-and-answer group field mapping warnings can only contain strings.",noteFieldMappingsQaGroupAcceptedWarningsArray:"Question-and-answer group field mapping acceptedWarnings must be an array.",noteFieldMappingsQaGroupAcceptedWarningsStrings:"Question-and-answer group field mapping acceptedWarnings can only contain strings.",noteFieldMappingsQaGroupDerivationObject:"Question-and-answer group field mapping derivation must be an object.",noteFieldMappingsQaGroupDerivationMode:"Question-and-answer group field mapping derivation mode must be first-pair.",noteFieldMappingsQaGroupDerivationFirstQuestionField:"Question-and-answer group field mapping derivation.firstQuestionField must be a string.",noteFieldMappingsQaGroupDerivationFirstAnswerField:"Question-and-answer group field mapping derivation.firstAnswerField must be a string."},noteFieldMapping:{noteTypeNotSelected:{basic:"No Anki note type is selected for basic cards. Choose one in settings before syncing.",cloze:"No Anki note type is selected for cloze cards. Choose one in settings before syncing.",qaGroup:"No Anki note type is selected for question-and-answer group cards. Choose one in settings before syncing."},missingSavedMapping:{basic:'No saved field mapping found for basic note type "{{modelName}}". Open plugin settings and read fields from Anki first.',cloze:'No saved field mapping found for cloze note type "{{modelName}}". Open plugin settings and read fields from Anki first.',qaGroup:'No saved field mapping found for QA Group note type "{{modelName}}". Open plugin settings, read fields from Anki, and save the mapping first.'},incompleteSavedMapping:{basic:'Saved field mapping for basic note type "{{modelName}}" is incomplete. Open plugin settings and save both title and body fields.',cloze:'Saved field mapping for cloze note type "{{modelName}}" is incomplete. Open plugin settings and save the main field.'},titleBodyMustDiffer:{basic:'Basic note type "{{modelName}}" must use different title and body fields.'},stale:'Saved field mapping for note type "{{modelName}}" is stale because these fields no longer exist in Anki: {{fields}}. Open plugin settings and read fields from Anki again.',qaGroupMissingTitle:'Saved field mapping for QA Group note type "{{modelName}}" is incomplete because the title field is missing. Save the mapping again in settings.',qaGroupNoCompleteSlots:'Saved field mapping for QA Group note type "{{modelName}}" is incomplete because it has no saved question/answer slot pairs. Save the mapping again in settings.',qaGroupNonContinuousSlots:'QA Group note type "{{modelName}}" must start its question/answer slots at pair {{firstIndex}} = 1. Renumber the first pair to 1.',qaGroupSelectedFieldMissing:'The selected field "{{field}}" for QA Group note type "{{modelName}}" is no longer present in Anki. Read fields again and save the mapping again.',qaGroupDuplicateFields:'QA Group note type "{{modelName}}" cannot reuse the same title, question, or answer field.',qaGroupFirstPairNumberMismatch:'The first question field "{{questionField}}" and first answer field "{{answerField}}" for QA Group note type "{{modelName}}" do not use the same pair number.',qaGroupFirstPairMustStartAtOne:'QA Group note type "{{modelName}}" must start its first selected pair at 1, but the current pair starts at {{firstIndex}}.',qaGroupWarningsUnaccepted:'QA Group note type "{{modelName}}" still has unconfirmed field warnings. Confirm them in settings before syncing.',qaGroupSlotCapacityExceeded:'Saved field mapping for QA Group note type "{{modelName}}" only includes {{capacity}} question/answer pair(s), but the current block has {{itemCount}} item(s): {{filePath}}:{{blockStartLine}}.'},noteTypeMigration:{failed:'Failed to migrate Anki note {{noteId}} from "{{fromModel}}" to "{{toModel}}"{{location}}: {{reason}}',unsupported:'The current AnkiConnect does not support migrating Anki note {{noteId}} from "{{fromModel}}" to "{{toModel}}"{{location}}. Upgrade AnkiConnect, or clear the Anki ID and sync again. Reason: {{reason}}'},writeBack:{summary:"Markdown marker write-back failed for {{fileCount}} file(s).",markdownFileNotFound:"Markdown file was not found.",missingSourceContent:"Scanned source content is missing for marker write-back.",noteIdMissing:"Cannot write a marker because note ID is missing for the block at line {{blockStartLine}}."},markerRemoval:{markdownFileNotFound:"Markdown file was not found."}},warnings:{deck:{conflictYamlBody:"Conflicting {{marker}} declarations were found in YAML and body. This sync used the YAML value.",multipleBodyDeclarations:"Multiple {{marker}} declarations were found in the file. This sync used the first body declaration.",invalidFolderSegment:"A folder or file name contains ::, so folder-based deck mapping was skipped and the default deck was used.",fallbackDefault:"No explicit deck was found and a folder-based deck could not be generated, so the default deck was used."}}};var ri={commands:{syncCurrentFileToAnki:"\u540C\u6B65\u5F53\u524D\u6587\u4EF6\u5230 Anki",syncVaultToAnki:"\u540C\u6B65\u5168\u5E93\u5230 Anki",clearCurrentFileSyncedCards:"\u6E05\u7A7A\u5F53\u524D\u6587\u4EF6\u5DF2\u540C\u6B65\u5361\u7247",cleanupEmptyDecks:"\u6E05\u7406\u7A7A\u724C\u7EC4"},settings:{pluginTitle:"Anki Heading Sync",ankiConnectUrl:{name:"AnkiConnect URL",desc:"\u9ED8\u8BA4\u662F http://127.0.0.1:8765",placeholder:"http://127.0.0.1:8765"},qaHeadingLevel:{name:"QA \u6807\u9898\u5C42\u7EA7",desc:"\u9ED8\u8BA4\u662F H4"},clozeHeadingLevel:{name:"\u586B\u7A7A\u9898\u6807\u9898\u5C42\u7EA7",desc:"\u9ED8\u8BA4\u662F H5"},cardAnswerCutoffMode:{name:"\u5361\u7247\u6B63\u6587\u622A\u6B62\u6A21\u5F0F",desc:"\u6709\u6548\u540C\u6B65\u6807\u8BB0\u59CB\u7EC8\u4F18\u5148\u3002\u6CA1\u6709\u6709\u6548\u6807\u8BB0\u65F6\uFF0C\u9009\u62E9\u7EE7\u7EED\u5230\u6574\u4E2A\u6807\u9898\u5757\u672B\u5C3E\uFF0C\u6216\u5728\u9996\u4E2A 2+ \u8FDE\u7EED\u7A7A\u884C\u524D\u622A\u6B62\u3002",options:{headingBlock:"heading-block\uFF1A\u6574\u4E2A\u6807\u9898\u5757",doubleBlankLines:"double-blank-lines\uFF1A\u5728\u9996\u4E2A 2+ \u8FDE\u7EED\u7A7A\u884C\u524D\u622A\u6B62"}},qaGroup:{title:"\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\u5F62\u5F0F\uFF09",marker:{name:"QA Group \u6807\u8BB0",desc:"\u5F53 QA \u6807\u9898\u4EE5\u8FD9\u4E2A hashtag \u6807\u8BB0\u7ED3\u5C3E\u65F6\uFF0C\u6574\u4E2A\u6807\u9898\u5757\u4F1A\u540C\u6B65\u4E3A\u4E00\u6761\u591A\u7EA7\u5217\u8868\u95EE\u7B54\u7B14\u8BB0\u3002",placeholder:"#anki-list"},managedNoteType:"\u5F53\u524D\u7B14\u8BB0\u7C7B\u578B\uFF1A{{modelName}}\u3002\u8FD9\u6761\u8DEF\u7EBF\u4F1A\u6309\u4E0B\u65B9\u5B57\u6BB5\u6620\u5C04\u540C\u6B65\u591A\u7EA7\u5217\u8868\u95EE\u7B54\u5185\u5BB9\u3002",managedModelContract:"\u5F53\u524D\u7B14\u8BB0\u7C7B\u578B\u6458\u8981\uFF1A\u8FD9\u6761\u8DEF\u7EBF\u53EF\u7528 {{fieldCount}} \u4E2A\u5B57\u6BB5\u548C {{templateCount}} \u4E2A\u6A21\u677F\u3002"},syncOptions:{addObsidianBacklink:{name:"\u6DFB\u52A0 Obsidian \u56DE\u94FE",desc:"\u628A\u6765\u6E90\u6807\u9898\u7684\u56DE\u94FE\u8FFD\u52A0\u5230\u540C\u6B65\u540E\u7684\u5361\u7247\u4E2D\u3002"},obsidianBacklinkLabel:{name:"Obsidian \u56DE\u94FE\u663E\u793A\u540D\u79F0",desc:"\u8BBE\u7F6E\u56DE\u94FE\u663E\u793A\u7684\u6587\u5B57\u3002\u7559\u7A7A\u6216\u53EA\u586B\u7A7A\u683C\u65F6\u4F1A\u56DE\u9000\u4E3A Open in Obsidian\u3002",placeholder:"Open in Obsidian"},obsidianBacklinkPlacement:{name:"Obsidian \u56DE\u94FE\u653E\u7F6E\u4F4D\u7F6E",desc:"\u9009\u62E9\u628A\u56DE\u94FE\u8FFD\u52A0\u5230\u95EE\u9898\u680F\u6700\u540E\u4E00\u884C\uFF0C\u6216\u653E\u5230\u7B54\u6848\u6B63\u6587\u7684\u7B2C\u4E00\u884C / \u6700\u540E\u4E00\u884C\u3002",options:{questionLastLine:"\u95EE\u9898\u680F\u7684\u6700\u540E\u4E00\u884C",answerFirstLine:"\u7B54\u6848\u6B63\u6587\u7684\u7B2C\u4E00\u884C",answerLastLine:"\u7B54\u6848\u6B63\u6587\u7684\u6700\u540E\u4E00\u884C"}},highlightsToCloze:{name:"\u9AD8\u4EAE\u8F6C\u586B\u7A7A\u9898",desc:"\u628A ==highlight== \u7247\u6BB5\u8F6C\u6362\u6210\u586B\u7A7A\u9898\u4F7F\u7528\u7684\u6316\u7A7A\u683C\u5F0F\u3002"},syncObsidianTagsToAnki:{name:"\u540C\u6B65 Obsidian \u6807\u7B7E\u5230 Anki",desc:"\u5C06\u5F53\u524D\u7B14\u8BB0\u4E2D Obsidian \u8BC6\u522B\u5230\u7684\u6807\u7B7E\u540C\u6B65\u4E3A Anki \u7B14\u8BB0\u6807\u7B7E\uFF0C\u652F\u6301\u5D4C\u5957\u6807\u7B7E\u3002\u6BCF\u6B21\u540C\u6B65\u65F6\uFF0C\u8FD9\u4E9B\u6807\u7B7E\u90FD\u4F1A\u4EE5\u5F53\u524D Obsidian \u5185\u5BB9\u4E3A\u51C6\u8986\u76D6 Anki\u3002"},keepPureTagLinesInCardBody:{name:"\u5728\u5361\u7247\u6B63\u6587\u4E2D\u4FDD\u7559\u7EAF\u6807\u7B7E\u884C",desc:"\u5173\u95ED\u540E\uFF0C\u4F1A\u5220\u9664\u6B63\u6587\u4E2D\u6240\u6709\u53EA\u5305\u542B\u6807\u7B7E\u7684\u6574\u884C\uFF0C\u4F8B\u5982 \u201C#\u9879\u76EEA #\u91CD\u70B9/\u6848\u4F8B\u201D\u3002\u50CF\u201C\u8FD9\u662F #\u6807\u7B7E \u7684\u6848\u4F8B\u201D\u8FD9\u7C7B\u884C\u5185\u6807\u7B7E\uFF0C\u6216\u201C\u6807\u7B7E\uFF1A#\u9879\u76EEA\u201D\u8FD9\u7C7B\u5E26\u666E\u901A\u6587\u5B57\u7684\u884C\uFF0C\u4E0D\u4F1A\u88AB\u5220\u9664\u3002\u5220\u9664\u540E\u4F1A\u81EA\u52A8\u6E05\u7406\u591A\u4F59\u7A7A\u884C\u3002"}},mapping:{title:"\u7B14\u8BB0\u7C7B\u578B\u5B57\u6BB5\u6620\u5C04",refresh:{name:"\u4ECE Anki \u5237\u65B0\u7B14\u8BB0\u7C7B\u578B",button:"\u5237\u65B0\u7B14\u8BB0\u7C7B\u578B"},status:{idle:"\u8BF7\u5148\u4ECE Anki \u5237\u65B0\u7B14\u8BB0\u7C7B\u578B\uFF0C\u4EE5\u52A0\u8F7D\u53EF\u7528\u7684\u7B14\u8BB0\u7C7B\u578B\u5217\u8868\u3002",loadedCount:"\u5DF2\u4ECE Anki \u52A0\u8F7D {{count}} \u4E2A\u7B14\u8BB0\u7C7B\u578B\u3002",empty:"Anki \u6CA1\u6709\u8FD4\u56DE\u4EFB\u4F55\u7B14\u8BB0\u7C7B\u578B\u3002",failedLoadNoteTypes:"\u4ECE Anki \u52A0\u8F7D\u7B14\u8BB0\u7C7B\u578B\u5931\u8D25\u3002",loadedSavedMapping:"\u5DF2\u52A0\u8F7D {{modelName}} \u7684\u5DF2\u4FDD\u5B58\u6620\u5C04\u3002",selectedModel:"\u5DF2\u9009\u62E9 {{modelName}}\u3002\u8BF7\u4ECE Anki \u8BFB\u53D6\u5B57\u6BB5\u4EE5\u521B\u5EFA\u6216\u5237\u65B0\u5B83\u7684\u6620\u5C04\u3002",loadedFieldsForModel:"\u5DF2\u52A0\u8F7D {{modelName}} \u7684\u5B57\u6BB5\u3002\u8BF7\u68C0\u67E5\u5EFA\u8BAE\u6620\u5C04\u540E\u4FDD\u5B58\u3002",failedLoadFields:"\u52A0\u8F7D {{modelName}} \u7684\u5B57\u6BB5\u5931\u8D25\u3002",noLoadedFields:"{{modelName}} \u8FD8\u6CA1\u6709\u5DF2\u52A0\u8F7D\u5B57\u6BB5\u3002\u8BF7\u5148\u4ECE Anki \u8BFB\u53D6\u5B57\u6BB5\u3002",savedMapping:"\u5DF2\u4FDD\u5B58 {{modelName}} \u7684\u6620\u5C04\u3002",failedSaveMapping:"\u4FDD\u5B58 {{modelName}} \u7684\u6620\u5C04\u5931\u8D25\u3002",savedMappingReady:"{{title}} \u7684\u5DF2\u4FDD\u5B58\u6620\u5C04\u5DF2\u5C31\u7EEA\u3002",noSavedMapping:"{{title}} \u8FD8\u6CA1\u6709\u5DF2\u4FDD\u5B58\u6620\u5C04\u3002\u8BF7\u5148\u4ECE Anki \u8BFB\u53D6\u5B57\u6BB5\u3002"},section:{basic:{title:"QA / \u57FA\u7840\u5361",description:"\u9009\u62E9 QA \u7B14\u8BB0\u7C7B\u578B\uFF0C\u4ECE Anki \u8BFB\u53D6\u5B57\u6BB5\uFF0C\u7136\u540E\u786E\u8BA4\u6807\u9898/\u6B63\u6587\u6620\u5C04\u3002"},cloze:{title:"\u586B\u7A7A\u9898",description:"\u9009\u62E9\u586B\u7A7A\u9898\u7B14\u8BB0\u7C7B\u578B\uFF0C\u4ECE Anki \u8BFB\u53D6\u5B57\u6BB5\uFF0C\u7136\u540E\u786E\u8BA4\u4E3B\u5B57\u6BB5\u6620\u5C04\u3002"}},noteTypeLabel:"{{title}} \u7B14\u8BB0\u7C7B\u578B",noteTypeDesc:"\u4ECE Anki \u7684\u7B14\u8BB0\u7C7B\u578B\u5217\u8868\u52A0\u8F7D\u3002\u5982\u679C\u6700\u65B0\u6A21\u578B\u6CA1\u6709\u663E\u793A\uFF0C\u8BF7\u5148\u5237\u65B0\u3002",fieldsLabel:"{{title}} \u5B57\u6BB5",fieldsDesc:"\u4ECE Anki \u8BFB\u53D6\u5F53\u524D\u7B14\u8BB0\u7C7B\u578B\u7684\u5B57\u6BB5\uFF0C\u7136\u540E\u68C0\u67E5\u5EFA\u8BAE\u6620\u5C04\u3002",readFieldsButton:"\u4ECE Anki \u8BFB\u53D6\u5B57\u6BB5",loadedFields:"\u5DF2\u52A0\u8F7D\u5B57\u6BB5\uFF1A{{fields}}",loadedFieldsNone:"\u5DF2\u52A0\u8F7D\u5B57\u6BB5\uFF1A\u65E0\u3002\u8BF7\u5148\u4ECE Anki \u8BFB\u53D6\u5B57\u6BB5\u3002",mappingLabel:"{{title}} \u6620\u5C04",mappingDesc:"\u4FDD\u5B58\u5F53\u524D\u7B14\u8BB0\u7C7B\u578B\u7684\u5B57\u6BB5\u6620\u5C04\u3002",saveMappingButton:"\u4FDD\u5B58\u6620\u5C04",titleFieldLabel:"{{title}} \u6807\u9898\u5B57\u6BB5",titleFieldDesc:"\u9009\u62E9\u63A5\u6536\u6807\u9898\u7247\u6BB5\u7684 Anki \u5B57\u6BB5\u3002",bodyFieldLabel:"{{title}} \u6B63\u6587\u5B57\u6BB5",bodyFieldDesc:"\u9009\u62E9\u63A5\u6536\u6B63\u6587\u7247\u6BB5\u7684 Anki \u5B57\u6BB5\u3002",mainField:{name:"\u586B\u7A7A\u9898\u4E3B\u5B57\u6BB5",desc:"\u540C\u6B65\u65F6\uFF0C\u6240\u9009\u5B57\u6BB5\u4F1A\u63A5\u6536 \u6807\u9898 + <br><hr> + \u6B63\u6587\u3002"},selectFieldPlaceholder:"-- \u9009\u62E9\u5B57\u6BB5 --"},deck:{defaultSectionTitle:"\u9ED8\u8BA4\u724C\u7EC4",defaultDeck:{name:"\u9ED8\u8BA4\u724C\u7EC4",desc:"\u4F18\u5148\u7EA7\u6700\u4F4E\uFF1A\u5F53\u6587\u4EF6\u7EA7\u81EA\u5B9A\u4E49\u724C\u7EC4\u4E0E\u6587\u4EF6\u5939\u6620\u5C04\u724C\u7EC4\u90FD\u672A\u547D\u4E2D\u65F6\u4F7F\u7528\u3002"},fileDeckSectionTitle:"\u6587\u4EF6\u7EA7\u81EA\u5B9A\u4E49\u724C\u7EC4",fileDeckEnabled:{name:"\u5F00\u542F\u6587\u4EF6\u7EA7\u81EA\u5B9A\u4E49\u724C\u7EC4",desc:"\u5F00\u542F\u540E\uFF0C\u53EF\u5728 YAML \u6216\u6B63\u6587\u4E2D\u7528\u7EDF\u4E00\u8BC6\u522B\u540D\u4E3A\u6574\u7BC7\u7B14\u8BB0\u6307\u5B9A\u4E00\u4E2A\u724C\u7EC4\u3002"},marker:{name:"\u724C\u7EC4\u8BC6\u522B\u540D",desc:"YAML key \u4E0E\u6B63\u6587\u6807\u8BB0\u5171\u7528\u540C\u4E00\u4E2A\u8BC6\u522B\u540D\u3002\u9ED8\u8BA4\u503C\u662F TARGET DECK\u3002"},template:{name:"\u9ED8\u8BA4\u724C\u7EC4\u6A21\u677F",desc:"\u53EA\u652F\u6301 filename \u53D8\u91CF\u3002\u63D2\u5165\u65F6\u4F1A\u5C55\u5F00\u4E3A\u5F53\u524D\u6587\u4EF6\u540D\uFF08\u4E0D\u542B .md\uFF09\u3002"},insertLocation:{name:"\u6A21\u677F\u63D2\u5165\u4F4D\u7F6E",desc:"\u9009\u62E9\u5C06\u724C\u7EC4\u6A21\u677F\u5199\u5165 YAML frontmatter \u8FD8\u662F\u6B63\u6587\u524D\u90E8\u3002",options:{body:"\u6B63\u6587\u524D\u90E8",yaml:"YAML frontmatter"}},insertTemplate:{name:"\u5411\u5F53\u524D\u6587\u4EF6\u63D2\u5165\u724C\u7EC4\u6A21\u677F",desc:"\u6309\u5F53\u524D\u8BC6\u522B\u540D\u3001\u6A21\u677F\u548C\u63D2\u5165\u4F4D\u7F6E\uFF0C\u628A\u724C\u7EC4\u58F0\u660E\u5199\u5165\u5F53\u524D\u6D3B\u52A8 Markdown \u6587\u4EF6\u3002",button:"\u63D2\u5165\u724C\u7EC4\u6A21\u677F"},folderMappingSectionTitle:"\u9AD8\u7EA7\uFF1A\u6587\u4EF6\u5939\u6620\u5C04\u724C\u7EC4",folderDeckMode:{name:"\u6587\u4EF6\u5939\u6620\u5C04\u6A21\u5F0F",desc:"\u5173\u95ED / \u4EC5\u7236\u6587\u4EF6\u5939 / \u6587\u4EF6\u5939\u53CA\u6587\u4EF6\u540D\u3002",options:{off:"\u5173\u95ED",folder:"\u6587\u4EF6\u5939\u7EA7\u6620\u5C04",folderAndFile:"\u6587\u4EF6\u5939\u53CA\u6587\u4EF6\u540D\u7EA7\u6620\u5C04"}},examplesTitle:"\u793A\u4F8B\uFF1A",folderExample:"\u6587\u4EF6\u5939\u6620\u5C04\u724C\u7EC4\u793A\u4F8B\uFF1A\u6570\u5B66/\u7B2C\u4E00\u7AE0/\u7B2C\u4E00\u8282.md -> \u6570\u5B66::\u7B2C\u4E00\u7AE0",folderAndFileExample:"\u6587\u4EF6\u5939\u53CA\u6587\u4EF6\u540D\u6620\u5C04\u724C\u7EC4\u793A\u4F8B\uFF1A\u6570\u5B66/\u7B2C\u4E00\u7AE0/\u7B2C\u4E00\u8282.md -> \u6570\u5B66::\u7B2C\u4E00\u7AE0::\u7B2C\u4E00\u8282",fallbackDesc:"\u82E5\u5747\u4E0D\u6253\u5F00\u300C\u6587\u4EF6\u5939\u53CA\u6587\u4EF6\u540D\u300D\u53CA\u300C\u6587\u4EF6\u7EA7\u300D\u724C\u7EC4\uFF0C\u5219\u4EE5\u300C\u9ED8\u8BA4\u724C\u7EC4\u540D\u79F0\u300D\u4F5C\u4E3A Anki \u7684\u724C\u7EC4\u540D\u3002",priorityTitle:"\u6700\u7EC8\u724C\u7EC4\u4F18\u5148\u7EA7\u8BF4\u660E",priorityDesc:"\u6700\u7EC8\u724C\u7EC4\u4F18\u5148\u7EA7\uFF1A\u6587\u4EF6\u7EA7\u81EA\u5B9A\u4E49\u724C\u7EC4 > \u6587\u4EF6\u5939\u6620\u5C04\u724C\u7EC4 > \u9ED8\u8BA4\u724C\u7EC4\u3002"},scope:{name:"\u63D2\u4EF6\u8FD0\u884C\u8303\u56F4",summary:{all:"\u5904\u7406\u6574\u4E2A vault \u4E2D\u7684 Markdown \u6587\u4EF6",include:"\u4EC5\u5904\u7406\u4E0B\u65B9\u52FE\u9009\u6587\u4EF6\u5939\u4E2D\u7684 Markdown \u6587\u4EF6",exclude:"\u5904\u7406\u6574\u4E2A vault\uFF0C\u4F46\u8DF3\u8FC7\u4E0B\u65B9\u52FE\u9009\u6587\u4EF6\u5939\u4E2D\u7684 Markdown \u6587\u4EF6"},unconfiguredWarning:"\u8FD0\u884C\u8303\u56F4\u5C1A\u672A\u914D\u7F6E\u3002\u5F53\u524D\u662F include \u6A21\u5F0F\uFF0C\u81F3\u5C11\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u5939\u540E\u624D\u80FD\u540C\u6B65\u3002",option:{all:"\u5168\u90E8\u6587\u4EF6",include:"\u4EC5\u5728\u6307\u5B9A\u6587\u4EF6\u5939",exclude:"\u6392\u9664\u6307\u5B9A\u6587\u4EF6\u5939"},treeDescription:{include:"\u4EC5\u5728\u6307\u5B9A\u6587\u4EF6\u5939\uFF1A\u53EA\u5904\u7406\u4E0B\u65B9\u52FE\u9009\u6587\u4EF6\u5939\u4E2D\u7684 Markdown \u6587\u4EF6",exclude:"\u6392\u9664\u6307\u5B9A\u6587\u4EF6\u5939\uFF1A\u5904\u7406\u6574\u4E2A vault\uFF0C\u4F46\u8DF3\u8FC7\u4E0B\u65B9\u52FE\u9009\u6587\u4EF6\u5939\u4E2D\u7684 Markdown \u6587\u4EF6"},loading:"\u6B63\u5728\u8BFB\u53D6\u5F53\u524D vault \u6587\u4EF6\u5939...",empty:"\u5F53\u524D vault \u4E2D\u6CA1\u6709\u53EF\u9009\u6587\u4EF6\u5939\u3002",failedLoad:"\u8BFB\u53D6\u5F53\u524D vault \u6587\u4EF6\u5939\u5931\u8D25\u3002",expandFolder:"\u5C55\u5F00 {{name}}",collapseFolder:"\u6536\u8D77 {{name}}",folderDeckModeOverride:{ariaLabel:"\u5207\u6362 {{name}} \u7684\u6587\u4EF6\u5939\u724C\u7EC4\u6620\u5C04\u6A21\u5F0F",hint:{folder:"\u672C\u6587\u4EF6\u5939\u5355\u72EC\u91C7\u7528\u300C\u6587\u4EF6\u5939\u300D\u4F5C\u4E3A\u724C\u7EC4\u540D",folderAndFile:"\u672C\u6587\u4EF6\u5939\u5355\u72EC\u91C7\u7528\u300C\u6587\u4EF6\u5939\u53CA\u6587\u4EF6\u540D\u300D\u4F5C\u4E3A\u724C\u7EC4\u540D"},title:{folder:"\u5F53\u524D\u5168\u5C40\u4E3A\u300C\u6587\u4EF6\u5939\u53CA\u6587\u4EF6\u540D\u300D\uFF0C\u52FE\u9009\u540E\u6B64\u6587\u4EF6\u5939\u6539\u7528\u300C\u6587\u4EF6\u5939\u300D\u4F5C\u4E3A\u724C\u7EC4\u540D",folderAndFile:"\u5F53\u524D\u5168\u5C40\u4E3A\u300C\u6587\u4EF6\u5939\u300D\uFF0C\u52FE\u9009\u540E\u6B64\u6587\u4EF6\u5939\u6539\u7528\u300C\u6587\u4EF6\u5939\u53CA\u6587\u4EF6\u540D\u300D\u4F5C\u4E3A\u724C\u7EC4\u540D"}}},cards:{cardTypes:{title:"\u5361\u7247\u7C7B\u578B\u53CA\u57FA\u7840\u8BBE\u7F6E",desc:"\u76F4\u63A5\u7F16\u8F91\u8BC6\u522B\u89C4\u5219\uFF0C\u4FEE\u6539\u540E\u81EA\u52A8\u4FDD\u5B58\u3002",advancedHint:"\u9AD8\u7EA7\u9879\uFF1A\u5C06 AnkiConnect URL \u4FDD\u7559\u5728\u8FD9\u91CC\uFF0C\u4E0D\u5355\u72EC\u505A\u8FDE\u63A5\u72B6\u6001\u5361\u7247\u3002",markerPlaceholder:"/",fieldsUnavailable:"-- \u8BF7\u5148\u8BFB\u53D6\u5B57\u6BB5 --",autoManagedField:"\u81EA\u52A8\u5199\u5165",autoComposedAnswer:"\u81EA\u52A8\u62FC\u63A5",qaGroupManagedNoteType:"{{modelName}}\uFF08\u7528\u4E8E\u591A\u7EA7\u5217\u8868\u95EE\u7B54\uFF09",statusLabel:"\u72B6\u6001\uFF1A",cacheEmpty:"\u5F53\u524D\u6CA1\u6709\u5DF2\u7F13\u5B58\u7684 Anki \u7B14\u8BB0\u6A21\u677F\u3002\u8BF7\u624B\u52A8\u8BFB\u53D6 Anki \u91CC\u7684\u6A21\u677F\u914D\u7F6E\u3002",cacheSummary:"\u5F53\u524D\u4F7F\u7528\u7F13\u5B58\u7684 {{noteTypeCount}} \u4E2A\u7B14\u8BB0\u6A21\u677F\uFF0C\u5DF2\u9009\u62E9\u5E76\u914D\u7F6E {{configuredCount}} \u4E2A\u5361\u7247\u6A21\u5F0F\u3002",cacheChanged:"\u68C0\u6D4B\u5230 Anki \u5F53\u524D\u6709 {{liveCount}} \u4E2A\u7B14\u8BB0\u6A21\u677F\uFF0C\u548C\u672C\u9875\u7F13\u5B58\u7684 {{cachedCount}} \u4E2A\u6A21\u677F\u4E0D\u4E00\u81F4\u3002\u5F53\u524D\u4ECD\u5728\u4F7F\u7528\u7F13\u5B58\uFF0C\u5DF2\u9009\u62E9\u5E76\u914D\u7F6E {{configuredCount}} \u4E2A\u5361\u7247\u6A21\u5F0F\uFF1B\u5982\u9700\u66F4\u65B0\u8BF7\u624B\u52A8\u8BFB\u53D6 Anki \u91CC\u7684\u6A21\u677F\u914D\u7F6E\u3002",cacheCheckFailed:"\u5F53\u524D\u7EE7\u7EED\u4F7F\u7528\u7F13\u5B58\u7684 {{noteTypeCount}} \u4E2A\u7B14\u8BB0\u6A21\u677F\uFF0C\u5DF2\u9009\u62E9\u5E76\u914D\u7F6E {{configuredCount}} \u4E2A\u5361\u7247\u6A21\u5F0F\uFF1B\u540E\u53F0\u68C0\u67E5\u6700\u65B0\u6A21\u677F\u5217\u8868\u5931\u8D25\uFF0C\u5982\u9700\u66F4\u65B0\u8BF7\u624B\u52A8\u8BFB\u53D6 Anki \u91CC\u7684\u6A21\u677F\u914D\u7F6E\u3002",loadedSummary:"\u5DF2\u83B7\u53D6 {{noteTypeCount}} \u4E2A\u7B14\u8BB0\u6A21\u677F\uFF0C\u5DF2\u9009\u62E9\u5E76\u914D\u7F6E {{configuredCount}} \u4E2A\u5361\u7247\u6A21\u5F0F\u3002",loadedFieldsStatus:"\u5DF2\u5237\u65B0 {{count}} \u4E2A\u5F53\u524D\u6240\u9009\u6A21\u677F\u7684\u5B57\u6BB5\u3002",failedLoad:"\u4ECE Anki \u8BFB\u53D6\u6A21\u677F\u6216\u5B57\u6BB5\u5931\u8D25\u3002",failedSave:"\u4FDD\u5B58\u5361\u7247\u7C7B\u578B\u8BBE\u7F6E\u5931\u8D25\u3002",loadAnki:{button:"\u624B\u52A8\u8BFB\u53D6 Anki \u91CC\u7684\u6A21\u677F\u914D\u7F6E",loading:"\u6B63\u5728\u8BFB\u53D6 Anki \u6A21\u677F\u548C\u5B57\u6BB5..."},columns:{enabled:"\u542F\u7528",type:"\u5361\u7247\u7C7B\u578B",headingLevel:"\u5361\u7247\u6807\u8BB0",extraMarker:"\u989D\u5916\u6807\u8BB0",noteType:"Anki \u7B14\u8BB0\u6A21\u677F",questionField:"\u95EE\u9898\u5B57\u6BB5",answerField:"\u7B54\u6848\u5B57\u6BB5"},labels:{headingLevel:"\u5361\u7247\u6807\u8BB0\uFF1A",extraMarker:"\u989D\u5916\u6807\u8BB0\uFF1A",noteType:"Anki \u7B14\u8BB0\u6A21\u677F\uFF1A",questionField:"\u95EE\u9898\u5B57\u6BB5\uFF1A",answerField:"\u7B54\u6848\u5B57\u6BB5\uFF1A",mainField:"\u4E3B\u5B57\u6BB5\uFF1A",fields:"\u5B57\u6BB5\uFF1A",qaGroupTitleField:"\u9898\u76EE\u5B57\u6BB5\uFF1A",qaGroupFirstQuestionField:"\u9996\u4E2A\u95EE\u9898\u5B57\u6BB5\uFF1A",qaGroupFirstAnswerField:"\u9996\u4E2A\u7B54\u6848\u5B57\u6BB5\uFF1A",qaGroupConfiguredSlots:"\u5DF2\u914D\u7F6E\u7EC4\u6570\uFF1A",qaGroupSlotFields:"\u95EE\u9898/\u7B54\u6848\u5B57\u6BB5\uFF1A",qaGroupWarnings:"\u8B66\u544A\uFF1A"},qaGroup:{noModel:"\u8BF7\u5148\u9009\u62E9 Anki \u7B14\u8BB0\u6A21\u677F",unavailable:"\u8BF7\u5148\u624B\u52A8\u8BFB\u53D6\u5B57\u6BB5",detectedSlots:"\u5DF2\u914D\u7F6E{{count}}\u7EC4",configuredSlots:"\u5DF2\u914D\u7F6E{{count}}\u7EC4",configuredSlotExample:"\u9996\u7EC4 {{firstQuestionField}} / {{firstAnswerField}}\uFF0C\u672B\u7EC4 {{lastQuestionField}} / {{lastAnswerField}}",acceptWarnings:"\u6211\u5DF2\u786E\u8BA4\u5FFD\u7565\u5F53\u524D\u8B66\u544A\uFF0C\u5E76\u5141\u8BB8\u540C\u6B65",warning:{missingAnswer:"\u7B2C {{index}} \u7EC4\u7F3A\u5C11\u7B54\u6848\u5B57\u6BB5\uFF0C\u5DF2\u5FFD\u7565 {{questionField}} / {{answerField}}\u3002",missingQuestion:"\u7B2C {{index}} \u7EC4\u7F3A\u5C11\u95EE\u9898\u5B57\u6BB5\uFF0C\u5DF2\u5FFD\u7565 {{questionField}} / {{answerField}}\u3002"}},sharedClozeMappingHint:"\u590D\u7528\u201C\u586B\u7A7A\u9898\uFF08\u9010\u4E2A\u6316\u7A7A\uFF09\u201D\u5F53\u524D\u9009\u62E9\u7684 Anki \u7B14\u8BB0\u6A21\u677F\u548C\u4E3B\u5B57\u6BB5\uFF0C\u65E0\u9700\u5355\u72EC\u8BBE\u7F6E\u3002",rows:{basic:"\u95EE\u7B54\u9898\uFF08\u5E38\u89C4\u6BB5\u843D\u5F62\u5F0F\uFF09",qaGroup:"\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\u5F62\u5F0F\uFF09",cloze:"\u586B\u7A7A\u9898\uFF08\u9010\u4E2A\u6316\u7A7A\uFF09",clozeAll:"\u586B\u7A7A\u9898\uFF08\u5168\u90E8\u6316\u7A7A\uFF09"}},syncContent:{title:"\u5361\u7247\u6B63\u6587\u540C\u6B65\u5185\u5BB9",desc:"\u8FD9\u4E9B\u9009\u9879\u53EA\u5F71\u54CD\u5361\u7247\u6E32\u67D3\u5185\u5BB9\uFF0C\u4FEE\u6539\u540E\u4EC5\u5237\u65B0\u8FD9\u4E00\u5F20\u5361\u7247\u3002",sections:{bodyRange:"1. \u786E\u5B9A\u300C\u5361\u7247\u6B63\u6587\u300D\u8303\u56F4",backlink:"2. \u786E\u5B9A\u662F\u5426\u589E\u52A0\u56DE\u94FE\uFF0C\u65B9\u4FBF\u4ECE Anki\u300C\u5361\u7247\u7EA7\u8DF3\u8F6C\u300D\u56DE Obsidian",tags:"3. \u786E\u5B9A\u662F\u5426\u8BFB\u53D6\u300C\u6807\u7B7E\u300D",clozeSpecial:"4. \u300C\u586B\u7A7A\u9898\u300D\u4E13\u9879"}},scope:{title:"\u63D2\u4EF6\u8FD0\u884C\u8303\u56F4",desc:"\u4FDD\u7559\u73B0\u6709\u4F5C\u7528\u8303\u56F4\u548C\u6587\u4EF6\u5939\u6811\u903B\u8F91\uFF1B\u6587\u4EF6\u5939\u6811\u6309\u9700\u52A0\u8F7D\uFF0C\u5E76\u652F\u6301\u5C40\u90E8\u5237\u65B0\u3002",refreshFolders:"\u5237\u65B0\u6587\u4EF6\u5939\u5217\u8868"},deck:{title:"\u5361\u7247\u724C\u7EC4\u8BBE\u7F6E",desc:"\u5361\u7247\u724C\u7EC4\u8BBE\u7F6E\u6309\u63A8\u8350\u8DEF\u5F84\u5206\u7EC4\u5C55\u793A\u3002",sections:{folderMapping:"1\uFF0C\u63A8\u8350\u7528\u300C\u6587\u4EF6\u5939\u53CA\u6587\u4EF6\u540D\u300D\u4F5C\u4E3A\u300CAnki\u724C\u7EC4\u300D",fileDeck:"2\uFF0C\u53EF\u6253\u5F00\u300C\u6587\u4EF6\u7EA7\u81EA\u5B9A\u4E49\u724C\u7EC4\u300D\uFF0C\u4F5C\u4E3A\u4E2A\u6027\u5316\u5B9A\u5236",defaultDeck:"3\uFF0C\u9ED8\u8BA4\u724C\u7EC4\u4F5C\u4E3A\u515C\u5E95"}},commands:{title:"\u547D\u4EE4\u8BF4\u660E",desc:"\u4E0B\u9762\u5C55\u793A\u5F53\u524D\u547D\u4EE4\u9762\u677F\u4E2D\u53EF\u7528\u7684\u63D2\u4EF6\u547D\u4EE4\u3002",items:{syncCurrentFile:"\u53EA\u628A\u5F53\u524D\u6D3B\u52A8 Markdown \u6587\u4EF6\u540C\u6B65\u5230 Anki\u3002",syncVault:"\u628A\u5168\u5E93\u4E2D\u6240\u6709\u5904\u4E8E\u4F5C\u7528\u8303\u56F4\u5185\u7684 Markdown \u6587\u4EF6\u540C\u6B65\u5230 Anki\u3002",clearCurrentFile:"\u6E05\u7A7A\u5F53\u524D\u6587\u4EF6\u7684\u5DF2\u540C\u6B65\u6807\u8BB0\u548C\u672C\u5730\u8DDF\u8E2A\u72B6\u6001\u3002",cleanupDecks:"\u4ECE Anki \u5220\u9664\u6240\u9009\u7A7A\u724C\u7EC4\u3002"}}}},modal:{emptyDeck:{title:"\u6E05\u7406\u7A7A\u724C\u7EC4",description:"\u52FE\u9009\u8981\u5220\u9664\u7684\u7A7A\u724C\u7EC4\u3002\u53EA\u6709\u5220\u9664\u65F6\u4ECD\u4E3A\u7A7A\u7684\u724C\u7EC4\u4F1A\u88AB\u771F\u6B63\u5220\u9664\u3002",selectAll:"\u5168\u9009\u5168\u90E8",clearAll:"\u5168\u90E8\u4E0D\u9009",invert:"\u53CD\u9009",cancel:"\u53D6\u6D88",deleteSelected:"\u5220\u9664\u6240\u9009\u7A7A\u724C\u7EC4",selectionCount:"\u5DF2\u9009 {{selected}} / \u5171 {{total}} \u4E2A\u7A7A\u724C\u7EC4"}},notice:{invalidSettingsRestored:"\u68C0\u6D4B\u5230\u65E0\u6548\u7684\u63D2\u4EF6\u8BBE\u7F6E\uFF0C\u5DF2\u5728\u5185\u5B58\u4E2D\u6062\u590D\u9ED8\u8BA4\u8BBE\u7F6E\u3002",failedSavePluginSettings:"\u4FDD\u5B58\u63D2\u4EF6\u8BBE\u7F6E\u5931\u8D25\u3002",noActiveMarkdownForSync:"\u5F53\u524D\u6CA1\u6709\u53EF\u7528\u4E8E\u540C\u6B65\u7684\u6D3B\u52A8 Markdown \u6587\u4EF6\u3002",syncUseCaseNotInitialized:"\u540C\u6B65\u7528\u4F8B\u5C1A\u672A\u521D\u59CB\u5316\u3002",currentFileSyncFailed:"\u5F53\u524D\u6587\u4EF6\u540C\u6B65\u5931\u8D25\u3002",vaultSyncFailed:"\u5168\u5E93\u540C\u6B65\u5931\u8D25\u3002",noActiveMarkdownForDeckTemplateInsertion:"\u5F53\u524D\u6CA1\u6709\u53EF\u7528\u4E8E\u63D2\u5165\u724C\u7EC4\u6A21\u677F\u7684\u6D3B\u52A8 Markdown \u6587\u4EF6\u3002",vaultGatewayNotInitialized:"Vault \u7F51\u5173\u5C1A\u672A\u521D\u59CB\u5316\u3002",markdownFileNotFound:"\u672A\u627E\u5230 Markdown \u6587\u4EF6\uFF1A{{filePath}}",deckTemplateAlreadyCurrent:"\u5F53\u524D\u6587\u4EF6\u4E2D\u7684\u724C\u7EC4\u6A21\u677F\u5DF2\u662F\u6700\u65B0\uFF0C\u65E0\u9700\u91CD\u590D\u5199\u5165\u3002",deckTemplateInserted:"\u5DF2\u5411\u5F53\u524D\u6587\u4EF6\u5199\u5165\u724C\u7EC4\u6A21\u677F\uFF1A{{deck}}",deckTemplateInsertionFailed:"\u63D2\u5165\u724C\u7EC4\u6A21\u677F\u5931\u8D25\u3002",noActiveMarkdownForReset:"\u5F53\u524D\u6CA1\u6709\u53EF\u7528\u4E8E\u91CD\u7F6E\u7684\u6D3B\u52A8 Markdown \u6587\u4EF6\u3002",clearCurrentFileUseCaseNotInitialized:"\u6E05\u7A7A\u5F53\u524D\u6587\u4EF6\u7528\u4F8B\u5C1A\u672A\u521D\u59CB\u5316\u3002",noTrackedCardsInCurrentFile:"\u5F53\u524D\u6587\u4EF6\u6CA1\u6709\u5DF2\u540C\u6B65\u5361\u7247\u3002",clearCurrentFileFailed:"\u6E05\u7A7A\u5F53\u524D\u6587\u4EF6\u5DF2\u540C\u6B65\u5361\u7247\u5931\u8D25\u3002",cleanupEmptyDecksUseCaseNotInitialized:"\u7A7A\u724C\u7EC4\u6E05\u7406\u7528\u4F8B\u5C1A\u672A\u521D\u59CB\u5316\u3002",noEmptyDeckCandidates:"\u672A\u53D1\u73B0\u53EF\u6E05\u7406\u7684\u7A7A\u724C\u7EC4\u3002",cleanupEmptyDecksCancelled:"\u5DF2\u53D6\u6D88\u7A7A\u724C\u7EC4\u6E05\u7406\u3002",cleanupEmptyDecksFailed:"\u6E05\u7406\u7A7A\u724C\u7EC4\u5931\u8D25\u3002",summary:{currentFileSync:"\u5F53\u524D\u6587\u4EF6\u540C\u6B65\u5B8C\u6210\uFF1A\u6587\u4EF6 {{scannedFiles}}\uFF0C\u5361\u7247 {{scannedCards}}\uFF0C\u65B0\u5EFA {{created}}\uFF0C\u91CD\u5EFA {{rebuilt}}\uFF0C\u66F4\u65B0 {{updated}}\uFF0C\u8FC1\u79FB\u6A21\u677F {{migratedNoteTypes}}\uFF0C\u8FC1\u79FB\u724C\u7EC4 {{migratedDecks}}\uFF0C\u5B64\u513F {{orphaned}}\uFF0C\u5A92\u4F53 {{uploadedMedia}}\uFF0C\u8DF3\u8FC7 {{skippedUnchangedCards}}\u3002",vaultSync:"\u5168\u5E93\u540C\u6B65\u5B8C\u6210\uFF1A\u6587\u4EF6 {{scannedFiles}}\uFF0C\u5361\u7247 {{scannedCards}}\uFF0C\u65B0\u5EFA {{created}}\uFF0C\u91CD\u5EFA {{rebuilt}}\uFF0C\u66F4\u65B0 {{updated}}\uFF0C\u8FC1\u79FB\u6A21\u677F {{migratedNoteTypes}}\uFF0C\u8FC1\u79FB\u724C\u7EC4 {{migratedDecks}}\uFF0C\u5B64\u513F {{orphaned}}\uFF0C\u5A92\u4F53 {{uploadedMedia}}\uFF0C\u8DF3\u8FC7 {{skippedUnchangedCards}}\u3002",clearCurrentFile:"\u5F53\u524D\u6587\u4EF6\u5DF2\u540C\u6B65\u5361\u7247\u6E05\u7A7A\u5B8C\u6210\uFF1A\u5DF2\u8DDF\u8E2A\u5361\u7247 {{trackedCards}}\uFF0C\u5DF2\u8DDF\u8E2A\u5206\u7EC4 {{trackedGroups}}\uFF0C\u5220\u9664\u7B14\u8BB0 {{deletedNotes}}\uFF0C\u79FB\u9664\u6807\u8BB0 {{removedMarkers}}\uFF0C\u79FB\u9664 ID \u6807\u8BB0 {{removedCardMarkers}}\uFF0C\u79FB\u9664 GI \u6807\u8BB0 {{removedGroupMarkers}}\uFF0C\u5220\u9664\u672C\u5730\u8BB0\u5F55 {{deletedLocalRecords}}\u3002",cleanupEmptyDecks:"\u7A7A\u724C\u7EC4\u6E05\u7406\u5B8C\u6210\uFF1A\u5019\u9009 {{candidateCount}}\uFF0C\u5DF2\u9009 {{selectedCount}}\uFF0C\u5DF2\u5220 {{deletedCount}}\uFF0C\u8DF3\u8FC7 {{skippedCount}}\u3002",markerWriteConflicts:"\u6807\u8BB0\u5199\u56DE\u51B2\u7A81\uFF1A{{files}}\u3002",warningsCount:"\u8B66\u544A\uFF1A{{count}}\u3002",markerRemovalConflicts:"\u6807\u8BB0\u79FB\u9664\u51B2\u7A81\uFF1A{{files}}\u3002",failures:"\u5931\u8D25\u9879\uFF1A{{items}}\u3002",skippedDecks:"\u8DF3\u8FC7\u7684\u724C\u7EC4\uFF1A{{decks}}\u3002"}},errors:{runScopeNotConfigured:"\u8FD0\u884C\u8303\u56F4\u5C1A\u672A\u914D\u7F6E\u3002\u5F53\u524D\u662F include \u6A21\u5F0F\uFF0C\u8BF7\u81F3\u5C11\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u5939\u540E\u518D\u540C\u6B65\u3002",currentFileOutOfScope:"\u5F53\u524D\u6587\u4EF6\u4E0D\u5728\u63D2\u4EF6\u4F5C\u7528\u8303\u56F4\u5185\uFF1A{{filePath}}",deck:{emptyName:"\u724C\u7EC4\u4E0D\u80FD\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u7EA7\u724C\u7EC4\u58F0\u660E\u6216\u9ED8\u8BA4\u724C\u7EC4\u8BBE\u7F6E\u3002"},settings:{headingLevelsRange:"\u6807\u9898\u5C42\u7EA7\u5FC5\u987B\u662F 1 \u5230 6 \u4E4B\u95F4\u7684\u6574\u6570\u3002",headingLevelsDifferent:"QA \u548C\u586B\u7A7A\u9898\u7684\u6807\u9898\u5C42\u7EA7\u5FC5\u987B\u4E0D\u540C\u3002",cardTypeConfigsObject:"\u5361\u7247\u7C7B\u578B\u914D\u7F6E\u5FC5\u987B\u662F\u5BF9\u8C61\u3002",cardTypeEnabledBoolean:"\u6BCF\u79CD\u5361\u7247\u7C7B\u578B\u7684\u542F\u7528\u72B6\u6001\u5FC5\u987B\u662F\u5E03\u5C14\u503C\u3002",cardTypeExtraMarkerString:"\u6BCF\u79CD\u5361\u7247\u7C7B\u578B\u7684\u989D\u5916\u6807\u8BB0\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u3002",cardTypeDefaultConflict:"\u540C\u4E00\u4E2A H{{headingLevel}} \u53EA\u80FD\u6709\u4E00\u4E2A\u542F\u7528\u7684\u9ED8\u8BA4\u5361\u7247\u7C7B\u578B\u3002",cardAnswerCutoffModeInvalid:"\u5361\u7247\u6B63\u6587\u622A\u6B62\u6A21\u5F0F\u53EA\u80FD\u662F heading-block \u6216 double-blank-lines\u3002",qaNoteTypeRequired:"QA \u7B14\u8BB0\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A\u3002",qaGroupMarkerRequired:"QA Group \u6807\u8BB0\u4E0D\u80FD\u4E3A\u7A7A\u3002",qaGroupMarkerInvalid:"QA Group \u6807\u8BB0\u5FC5\u987B\u662F\u7C7B\u4F3C #anki-list \u7684 hashtag \u6837\u5F0F token\u3002",clozeNoteTypeRequired:"\u586B\u7A7A\u9898\u7B14\u8BB0\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A\u3002",defaultDeckRequired:"\u9ED8\u8BA4\u724C\u7EC4\u4E0D\u80FD\u4E3A\u7A7A\u3002",fileDeckEnabledBoolean:"\u6587\u4EF6\u7EA7\u724C\u7EC4\u5F00\u5173\u5FC5\u987B\u662F\u5E03\u5C14\u503C\u3002",syncObsidianTagsToAnkiBoolean:"\u540C\u6B65 Obsidian \u6807\u7B7E\u5230 Anki \u5F00\u5173\u5FC5\u987B\u662F\u5E03\u5C14\u503C\u3002",keepPureTagLinesInCardBodyBoolean:"\u4FDD\u7559\u6B63\u6587\u7EAF\u6807\u7B7E\u884C\u5F00\u5173\u5FC5\u987B\u662F\u5E03\u5C14\u503C\u3002",fileDeckMarkerString:"\u6587\u4EF6\u7EA7\u724C\u7EC4\u8BC6\u522B\u540D\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u3002",fileDeckTemplateString:"\u6587\u4EF6\u7EA7\u724C\u7EC4\u6A21\u677F\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u3002",fileDeckInsertLocationInvalid:"\u6587\u4EF6\u7EA7\u724C\u7EC4\u6A21\u677F\u63D2\u5165\u4F4D\u7F6E\u53EA\u80FD\u662F yaml \u6216 body\u3002",folderDeckModeInvalid:"\u6587\u4EF6\u5939\u724C\u7EC4\u6A21\u5F0F\u53EA\u80FD\u662F off\u3001folder \u6216 folder-and-file\u3002",scopeModeInvalid:"\u8FD0\u884C\u8303\u56F4\u6A21\u5F0F\u53EA\u80FD\u662F all\u3001include \u6216 exclude\u3002",obsidianBacklinkPlacementInvalid:"Obsidian \u56DE\u94FE\u653E\u7F6E\u4F4D\u7F6E\u53EA\u80FD\u662F question-last-line\u3001answer-first-line \u6216 answer-last-line\u3002",includeFoldersArray:"\u5305\u542B\u6587\u4EF6\u5939\u5FC5\u987B\u662F\u6570\u7EC4\u3002",includeFoldersStrings:"\u5305\u542B\u6587\u4EF6\u5939\u5217\u8868\u4E2D\u53EA\u80FD\u5305\u542B\u5B57\u7B26\u4E32\u3002",excludeFoldersArray:"\u6392\u9664\u6587\u4EF6\u5939\u5FC5\u987B\u662F\u6570\u7EC4\u3002",excludeFoldersStrings:"\u6392\u9664\u6587\u4EF6\u5939\u5217\u8868\u4E2D\u53EA\u80FD\u5305\u542B\u5B57\u7B26\u4E32\u3002",alternateFolderDeckModeFoldersArray:"\u6587\u4EF6\u5939\u724C\u7EC4\u6A21\u5F0F\u8986\u76D6\u5217\u8868\u5FC5\u987B\u662F\u6570\u7EC4\u3002",alternateFolderDeckModeFoldersStrings:"\u6587\u4EF6\u5939\u724C\u7EC4\u6A21\u5F0F\u8986\u76D6\u5217\u8868\u4E2D\u53EA\u80FD\u5305\u542B\u5B57\u7B26\u4E32\u3002",ankiConnectUrlRequired:"AnkiConnect URL \u4E0D\u80FD\u4E3A\u7A7A\u3002",ankiNoteTypeCacheArray:"Anki \u7B14\u8BB0\u6A21\u677F\u7F13\u5B58\u5FC5\u987B\u662F\u6570\u7EC4\u3002",ankiNoteTypeCacheStrings:"Anki \u7B14\u8BB0\u6A21\u677F\u7F13\u5B58\u4E2D\u53EA\u80FD\u5305\u542B\u5B57\u7B26\u4E32\u3002",ankiModelFieldCacheObject:"Anki \u6A21\u677F\u5B57\u6BB5\u7F13\u5B58\u5FC5\u987B\u662F\u5BF9\u8C61\u3002",ankiModelFieldCacheEntryObject:"\u6BCF\u4E2A Anki \u6A21\u677F\u5B57\u6BB5\u7F13\u5B58\u9879\u90FD\u5FC5\u987B\u662F\u5BF9\u8C61\u3002",ankiModelFieldCacheFieldNamesArray:"Anki \u6A21\u677F\u5B57\u6BB5\u7F13\u5B58\u4E2D\u7684 fieldNames \u5FC5\u987B\u662F\u6570\u7EC4\u3002",ankiModelFieldCacheFieldNamesStrings:"Anki \u6A21\u677F\u5B57\u6BB5\u7F13\u5B58\u4E2D\u7684 fieldNames \u53EA\u80FD\u5305\u542B\u5B57\u7B26\u4E32\u3002",ankiModelFieldCacheLoadedAt:"Anki \u6A21\u677F\u5B57\u6BB5\u7F13\u5B58\u4E2D\u7684 loadedAt \u5FC5\u987B\u662F\u6709\u9650\u6570\u5B57\u3002",noteFieldMappingsObject:"\u5B57\u6BB5\u6620\u5C04\u5FC5\u987B\u662F\u5BF9\u8C61\u3002",noteFieldMappingsCardType:"\u5B57\u6BB5\u6620\u5C04\u5FC5\u987B\u4F7F\u7528\u53D7\u652F\u6301\u7684\u5361\u7247\u7C7B\u578B\u3002",noteFieldMappingsModelName:"\u5B57\u6BB5\u6620\u5C04\u5FC5\u987B\u5305\u542B\u6A21\u578B\u540D\u79F0\u3002",noteFieldMappingsLoadedFieldNames:"\u5B57\u6BB5\u6620\u5C04\u5FC5\u987B\u5305\u542B\u5DF2\u52A0\u8F7D\u5B57\u6BB5\u540D\u3002",noteFieldMappingsLoadedAt:"\u5B57\u6BB5\u6620\u5C04\u5FC5\u987B\u5305\u542B\u5DF2\u52A0\u8F7D\u65F6\u95F4\u6233\u3002",noteFieldMappingsQaGroupSlotsArray:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 slots \u5FC5\u987B\u662F\u6570\u7EC4\u3002",noteFieldMappingsQaGroupSlotObject:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684\u6BCF\u4E2A slot \u90FD\u5FC5\u987B\u662F\u5BF9\u8C61\u3002",noteFieldMappingsQaGroupSlotIndex:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 slot.index \u5FC5\u987B\u662F\u5927\u4E8E 0 \u7684\u6574\u6570\u3002",noteFieldMappingsQaGroupSlotQuestionField:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 slot.questionField \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u3002",noteFieldMappingsQaGroupSlotAnswerField:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 slot.answerField \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u3002",noteFieldMappingsQaGroupWarningsArray:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 warnings \u5FC5\u987B\u662F\u6570\u7EC4\u3002",noteFieldMappingsQaGroupWarningsStrings:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 warnings \u53EA\u80FD\u5305\u542B\u5B57\u7B26\u4E32\u3002",noteFieldMappingsQaGroupAcceptedWarningsArray:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 acceptedWarnings \u5FC5\u987B\u662F\u6570\u7EC4\u3002",noteFieldMappingsQaGroupAcceptedWarningsStrings:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 acceptedWarnings \u53EA\u80FD\u5305\u542B\u5B57\u7B26\u4E32\u3002",noteFieldMappingsQaGroupDerivationObject:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 derivation \u5FC5\u987B\u662F\u5BF9\u8C61\u3002",noteFieldMappingsQaGroupDerivationMode:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 derivation.mode \u53EA\u80FD\u662F first-pair\u3002",noteFieldMappingsQaGroupDerivationFirstQuestionField:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 derivation.firstQuestionField \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u3002",noteFieldMappingsQaGroupDerivationFirstAnswerField:"QA Group \u5B57\u6BB5\u6620\u5C04\u4E2D\u7684 derivation.firstAnswerField \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u3002"},noteFieldMapping:{noteTypeNotSelected:{basic:"\u57FA\u7840\u5361\u5C1A\u672A\u9009\u62E9 Anki \u7B14\u8BB0\u6A21\u677F\u3002\u8BF7\u5148\u5728\u8BBE\u7F6E\u9875\u9009\u62E9\u6A21\u677F\u540E\u518D\u540C\u6B65\u3002",cloze:"\u586B\u7A7A\u9898\u5C1A\u672A\u9009\u62E9 Anki \u7B14\u8BB0\u6A21\u677F\u3002\u8BF7\u5148\u5728\u8BBE\u7F6E\u9875\u9009\u62E9\u6A21\u677F\u540E\u518D\u540C\u6B65\u3002",qaGroup:"\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\uFF09\u5C1A\u672A\u9009\u62E9 Anki \u7B14\u8BB0\u6A21\u677F\u3002\u8BF7\u5148\u5728\u8BBE\u7F6E\u9875\u9009\u62E9\u6A21\u677F\u540E\u518D\u540C\u6B65\u3002"},missingSavedMapping:{basic:'\u627E\u4E0D\u5230\u57FA\u7840\u5361\u7B14\u8BB0\u7C7B\u578B "{{modelName}}" \u7684\u5DF2\u4FDD\u5B58\u5B57\u6BB5\u6620\u5C04\u3002\u8BF7\u6253\u5F00\u63D2\u4EF6\u8BBE\u7F6E\u5E76\u5148\u4ECE Anki \u8BFB\u53D6\u5B57\u6BB5\u3002',cloze:'\u627E\u4E0D\u5230\u586B\u7A7A\u9898\u7B14\u8BB0\u7C7B\u578B "{{modelName}}" \u7684\u5DF2\u4FDD\u5B58\u5B57\u6BB5\u6620\u5C04\u3002\u8BF7\u6253\u5F00\u63D2\u4EF6\u8BBE\u7F6E\u5E76\u5148\u4ECE Anki \u8BFB\u53D6\u5B57\u6BB5\u3002',qaGroup:'\u627E\u4E0D\u5230\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\uFF09\u7B14\u8BB0\u6A21\u677F "{{modelName}}" \u7684\u5DF2\u4FDD\u5B58\u5B57\u6BB5\u6620\u5C04\u3002\u8BF7\u5148\u5728\u8BBE\u7F6E\u9875\u4ECE Anki \u8BFB\u53D6\u5B57\u6BB5\u5E76\u4FDD\u5B58\u6620\u5C04\u3002'},incompleteSavedMapping:{basic:'\u57FA\u7840\u5361\u7B14\u8BB0\u7C7B\u578B "{{modelName}}" \u7684\u5DF2\u4FDD\u5B58\u5B57\u6BB5\u6620\u5C04\u4E0D\u5B8C\u6574\u3002\u8BF7\u6253\u5F00\u63D2\u4EF6\u8BBE\u7F6E\u5E76\u4FDD\u5B58\u6807\u9898\u5B57\u6BB5\u548C\u6B63\u6587\u5B57\u6BB5\u3002',cloze:'\u586B\u7A7A\u9898\u7B14\u8BB0\u7C7B\u578B "{{modelName}}" \u7684\u5DF2\u4FDD\u5B58\u5B57\u6BB5\u6620\u5C04\u4E0D\u5B8C\u6574\u3002\u8BF7\u6253\u5F00\u63D2\u4EF6\u8BBE\u7F6E\u5E76\u4FDD\u5B58\u4E3B\u5B57\u6BB5\u3002'},titleBodyMustDiffer:{basic:'\u57FA\u7840\u5361\u7B14\u8BB0\u7C7B\u578B "{{modelName}}" \u7684\u6807\u9898\u5B57\u6BB5\u548C\u6B63\u6587\u5B57\u6BB5\u5FC5\u987B\u4E0D\u540C\u3002'},stale:'\u7B14\u8BB0\u7C7B\u578B "{{modelName}}" \u7684\u5DF2\u4FDD\u5B58\u5B57\u6BB5\u6620\u5C04\u5DF2\u8FC7\u671F\uFF0C\u56E0\u4E3A\u8FD9\u4E9B\u5B57\u6BB5\u5728 Anki \u4E2D\u5DF2\u4E0D\u5B58\u5728\uFF1A{{fields}}\u3002\u8BF7\u91CD\u65B0\u4ECE Anki \u8BFB\u53D6\u5B57\u6BB5\u3002',qaGroupMissingTitle:'\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\uFF09\u7B14\u8BB0\u6A21\u677F "{{modelName}}" \u7684\u5DF2\u4FDD\u5B58\u5B57\u6BB5\u6620\u5C04\u4E0D\u5B8C\u6574\uFF0C\u7F3A\u5C11\u6807\u9898\u5B57\u6BB5\u3002\u8BF7\u5728\u8BBE\u7F6E\u9875\u91CD\u65B0\u4FDD\u5B58\u5B57\u6BB5\u6620\u5C04\u3002',qaGroupNoCompleteSlots:'\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\uFF09\u7B14\u8BB0\u6A21\u677F "{{modelName}}" \u7684\u5DF2\u4FDD\u5B58\u5B57\u6BB5\u6620\u5C04\u4E0D\u5B8C\u6574\uFF0C\u81F3\u5C11\u9700\u8981\u4E00\u7EC4\u95EE\u9898/\u7B54\u6848\u5B57\u6BB5\u3002\u8BF7\u5728\u8BBE\u7F6E\u9875\u91CD\u65B0\u4FDD\u5B58\u5B57\u6BB5\u6620\u5C04\u3002',qaGroupNonContinuousSlots:'\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\uFF09\u7B14\u8BB0\u6A21\u677F "{{modelName}}" \u7684\u7B2C\u4E00\u7EC4\u95EE\u9898/\u7B54\u6848\u5B57\u6BB5\u4E0D\u662F\u4ECE\u7B2C {{firstIndex}} \u7EC4\u5F00\u59CB\u8FDE\u7EED\u7F16\u53F7\u3002\u8BF7\u4ECE\u7B2C 1 \u7EC4\u5F00\u59CB\u3002',qaGroupSelectedFieldMissing:'\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\uFF09\u7B14\u8BB0\u6A21\u677F "{{modelName}}" \u4E2D\u5DF2\u9009\u62E9\u5B57\u6BB5 "{{field}}"\uFF0C\u4F46\u5B83\u5F53\u524D\u4E0D\u5728 Anki \u5B57\u6BB5\u5217\u8868\u91CC\u3002\u8BF7\u91CD\u65B0\u8BFB\u53D6\u5B57\u6BB5\u540E\u518D\u4FDD\u5B58\u3002',qaGroupDuplicateFields:'\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\uFF09\u7B14\u8BB0\u6A21\u677F "{{modelName}}" \u7684\u9898\u76EE\u5B57\u6BB5\u3001\u95EE\u9898\u5B57\u6BB5\u548C\u7B54\u6848\u5B57\u6BB5\u4E0D\u80FD\u91CD\u590D\u3002',qaGroupFirstPairNumberMismatch:'\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\uFF09\u7B14\u8BB0\u6A21\u677F "{{modelName}}" \u7684\u9996\u4E2A\u95EE\u9898\u5B57\u6BB5 "{{questionField}}" \u4E0E\u9996\u4E2A\u7B54\u6848\u5B57\u6BB5 "{{answerField}}" \u7F16\u53F7\u4E0D\u4E00\u81F4\u3002\u8BF7\u9009\u62E9\u540C\u4E00\u7EC4\u5B57\u6BB5\u3002',qaGroupFirstPairMustStartAtOne:'\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\uFF09\u7B14\u8BB0\u6A21\u677F "{{modelName}}" \u7684\u9996\u7EC4\u5B57\u6BB5\u5FC5\u987B\u4ECE\u7B2C 1 \u7EC4\u5F00\u59CB\uFF0C\u5F53\u524D\u662F\u7B2C {{firstIndex}} \u7EC4\u3002',qaGroupWarningsUnaccepted:'\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\uFF09\u7B14\u8BB0\u6A21\u677F "{{modelName}}" \u4ECD\u6709\u672A\u786E\u8BA4\u7684\u5B57\u6BB5\u8B66\u544A\u3002\u8BF7\u5148\u5728\u8BBE\u7F6E\u9875\u786E\u8BA4\u540E\u518D\u540C\u6B65\u3002',qaGroupSlotCapacityExceeded:'\u95EE\u7B54\u9898\uFF08\u591A\u7EA7\u5217\u8868\uFF09\u7B14\u8BB0\u6A21\u677F "{{modelName}}" \u7684\u5DF2\u4FDD\u5B58\u5B57\u6BB5\u6620\u5C04\u53EA\u5305\u542B {{capacity}} \u7EC4\u95EE\u9898/\u7B54\u6848\u5B57\u6BB5\uFF0C\u4F46\u5F53\u524D\u5757\u6709 {{itemCount}} \u9879\uFF1A{{filePath}}:{{blockStartLine}}\u3002'},noteTypeMigration:{failed:"\u65E0\u6CD5\u5C06 Anki \u7B14\u8BB0 {{noteId}} \u4ECE\u201C{{fromModel}}\u201D\u8FC1\u79FB\u5230\u201C{{toModel}}\u201D{{location}}\uFF1A{{reason}}",unsupported:"\u5F53\u524D AnkiConnect \u4E0D\u652F\u6301\u5C06 Anki \u7B14\u8BB0 {{noteId}} \u4ECE\u201C{{fromModel}}\u201D\u8FC1\u79FB\u5230\u201C{{toModel}}\u201D{{location}}\u3002\u8BF7\u5347\u7EA7 AnkiConnect\uFF0C\u6216\u6E05\u7406\u8BE5\u5361\u7247\u7684 Anki ID \u540E\u91CD\u65B0\u540C\u6B65\u3002\u539F\u56E0\uFF1A{{reason}}"},writeBack:{summary:"Markdown \u6807\u8BB0\u5199\u56DE\u5931\u8D25\uFF0C\u5171 {{fileCount}} \u4E2A\u6587\u4EF6\u3002",markdownFileNotFound:"Markdown \u6587\u4EF6\u4E0D\u5B58\u5728\u3002",missingSourceContent:"\u7F3A\u5C11\u7528\u4E8E\u5199\u56DE\u6807\u8BB0\u7684\u626B\u63CF\u6E90\u7801\u5185\u5BB9\u3002",noteIdMissing:"\u65E0\u6CD5\u4E3A\u7B2C {{blockStartLine}} \u884C\u6240\u5728\u5757\u5199\u5165\u6807\u8BB0\uFF0C\u56E0\u4E3A\u7F3A\u5C11 note ID\u3002"},markerRemoval:{markdownFileNotFound:"Markdown \u6587\u4EF6\u4E0D\u5B58\u5728\u3002"}},warnings:{deck:{conflictYamlBody:"\u68C0\u6D4B\u5230 YAML \u548C\u6B63\u6587\u4E2D\u7684 {{marker}} \u58F0\u660E\u4E92\u76F8\u51B2\u7A81\uFF0C\u672C\u6B21\u540C\u6B65\u5DF2\u4F7F\u7528 YAML \u7684\u503C\u3002",multipleBodyDeclarations:"\u68C0\u6D4B\u5230\u6587\u4EF6\u4E2D\u5B58\u5728\u591A\u4E2A {{marker}} \u58F0\u660E\uFF0C\u672C\u6B21\u540C\u6B65\u53EA\u4F7F\u7528\u7B2C\u4E00\u4E2A\u6B63\u6587\u58F0\u660E\u3002",invalidFolderSegment:"\u68C0\u6D4B\u5230\u6587\u4EF6\u5939\u540D\u6216\u6587\u4EF6\u540D\u5305\u542B ::\uFF0C\u5DF2\u8DF3\u8FC7\u6587\u4EF6\u5939\u6620\u5C04\u5E76\u56DE\u9000\u5230\u9ED8\u8BA4\u724C\u7EC4\u3002",fallbackDefault:"\u8BE5\u6587\u4EF6\u6CA1\u6709\u663E\u5F0F\u724C\u7EC4\uFF0C\u4E14\u65E0\u6CD5\u751F\u6210\u6587\u4EF6\u5939\u6620\u5C04\u724C\u7EC4\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u724C\u7EC4\u3002"}}};function ii(e,t){let n=t.split("."),r=e;for(let i of n){if(!r||typeof r!="object"||!(i in r))return;r=r[i]}return typeof r=="string"?r:void 0}function Fo(e,t,n){return t?e.replace(/\{\{\s*([\w.]+)\s*\}\}/g,(r,i)=>{let a=t[i];return a===void 0?"":Array.isArray(a)?de(n,a.filter(o=>o!==void 0).map(o=>String(o))):String(a)}):e}function g(e,t){let n=se(),i=ii(n==="zh"?ri:An,e)??ii(An,e)??e;return Fo(i,t,n)}var S=class extends Error{constructor(t,n,r){super(t),this.name="PluginUserError",this.userMessage={key:t,params:n},this.details=r}};function En(e){return e instanceof S}function Le(e){return"rawMessage"in e?e.rawMessage:g(e.key,e.params)}function ai(e){return"rawMessage"in e?e.rawMessage:g(e.key,e.params)}function lt(e){let t=Le(e.userMessage);if(!e.details?.failures?.length)return t;let n=e.details.failures.map(r=>`${r.filePath}: ${ai(r)}`).join(`
`);return`${t}
${n}`}function ye(e,t,n){return En(e)?e.userMessage:e instanceof Error?{rawMessage:e.message}:{key:t,params:n}}function xe(e,t){return En(e)?lt(e):Le(ye(e,t))}function pt(e,t){return En(t)?{filePath:e,...t.userMessage}:t instanceof Error?{filePath:e,rawMessage:t.message}:{filePath:e,rawMessage:String(t)}}function oi(e){let t=se();return de(t,e.map(n=>`${n.filePath} (${ai(n)})`))}var Mo=["\u9898\u76EE","\u6807\u9898","\u6B63\u9762","Stem","Title"],wo=[/^问题0*(\d+)$/i,/^Q0*(\d+)$/i,/^S0*(\d+)_Q$/i],vo=[/^答案0*(\d+)$/i,/^A0*(\d+)$/i,/^S0*(\d+)_A$/i],ce=class{suggest(t,n,r=Date.now(),i,a){let o=a&&n.includes(a)?a:Do(n,Mo),u=To(n,t);return this.createMappingFromSelection(t,n,{titleField:o,firstQuestionField:u.questionField,firstAnswerField:u.answerField},r)}createMappingFromSelection(t,n,r,i=Date.now()){let a=[...n],o=_n(r.titleField),u=_n(r.firstQuestionField),s=_n(r.firstAnswerField),d=Eo(u,s),c=new Set(a);for(let l of[o,u,s])if(l&&!c.has(l))throw new S("errors.noteFieldMapping.qaGroupSelectedFieldMissing",{modelName:t,field:l});return{cardType:"qa-group",modelName:t,loadedFieldNames:a,titleField:o,slots:Ao(t,a,o,u,s),warnings:[],acceptedWarnings:void 0,derivation:d,loadedAt:i}}validateMapping(t,n){if(!t.titleField)throw new S("errors.noteFieldMapping.qaGroupMissingTitle",{modelName:t.modelName});if(t.slots.length===0)throw new S("errors.noteFieldMapping.qaGroupNoCompleteSlots",{modelName:t.modelName});let r=new Set(n),i=new Set,a=new Set([t.titleField]);r.has(t.titleField)||i.add(t.titleField);for(let o of t.slots){if(r.has(o.questionField)||i.add(o.questionField),r.has(o.answerField)||i.add(o.answerField),a.has(o.questionField)||a.has(o.answerField)||o.questionField===o.answerField)throw new S("errors.noteFieldMapping.qaGroupDuplicateFields",{modelName:t.modelName});a.add(o.questionField),a.add(o.answerField)}if(i.size>0)throw new S("errors.noteFieldMapping.stale",{modelName:t.modelName,fields:[...i].map(o=>`"${o}"`)})}validateWarningsAccepted(t){if(!(!t.warnings.length||Ln(t.warnings,t.acceptedWarnings)))throw new S("errors.noteFieldMapping.qaGroupWarningsUnaccepted",{modelName:t.modelName})}};function Ln(e,t){return e.length===0?!0:!t||e.length!==t.length?!1:e.every((n,r)=>n===t[r])}function ci(e){try{let t=JSON.parse(e);return t.kind!=="missing-answer"&&t.kind!=="missing-question"||typeof t.index!="number"||!Number.isInteger(t.index)||t.index<1||typeof t.questionField!="string"||typeof t.answerField!="string"?void 0:{kind:t.kind,index:t.index,questionField:t.questionField,answerField:t.answerField}}catch{return}}function To(e,t){let n=new Map,r=new Map;for(let u of e){let s=ui(u,wo);if(s&&!n.has(s)){n.set(s,u);continue}let d=ui(u,vo);d&&!r.has(d)&&r.set(d,u)}let i=[...new Set([...n.keys(),...r.keys()])].sort((u,s)=>u-s);if(i.length>0&&i[0]!==1)throw new S("errors.noteFieldMapping.qaGroupNonContinuousSlots",{modelName:t,firstIndex:i[0]});let a=n.get(1),o=r.get(1);if(!a||!o)throw new S("errors.noteFieldMapping.qaGroupNoCompleteSlots",{modelName:t});return{questionField:a,answerField:o}}function ui(e,t){for(let n of t){let r=e.match(n);if(!r)continue;let i=Number.parseInt(r[1]??"",10);if(Number.isInteger(i)&&i>=1)return i}}function Do(e,t){return e.find(n=>t.some(r=>r.toLowerCase()===n.toLowerCase()))}function Ao(e,t,n,r,i){if(!r||!i)return[];let a=new Set;if(n&&a.add(n),a.has(r)||a.has(i)||r===i)throw new S("errors.noteFieldMapping.qaGroupDuplicateFields",{modelName:e});let o=si(r),u=si(i);if(!o||!u)return[{index:1,questionField:r,answerField:i}];if(o.index!==u.index)throw new S("errors.noteFieldMapping.qaGroupFirstPairNumberMismatch",{modelName:e,questionField:r,answerField:i});if(o.index!==1)throw new S("errors.noteFieldMapping.qaGroupFirstPairMustStartAtOne",{modelName:e,firstIndex:o.index});let s=new Set(t),d=[];for(let c=1;;c+=1){let l=c===1?r:di(o,c),f=c===1?i:di(u,c);if(!s.has(l)||!s.has(f))break;if(a.has(l)||a.has(f)||l===f)throw new S("errors.noteFieldMapping.qaGroupDuplicateFields",{modelName:e});a.add(l),a.add(f),d.push({index:c,questionField:l,answerField:f})}return d}function Eo(e,t){if(!(!e&&!t))return{mode:"first-pair",firstQuestionField:e,firstAnswerField:t}}function _n(e){let t=e?.trim();return t||void 0}function si(e){let t=[...e.matchAll(/\d+/g)],n=t[t.length-1];if(!(!n||n.index===void 0))return{prefix:e.slice(0,n.index),digits:n[0],suffix:e.slice(n.index+n[0].length),index:Number.parseInt(n[0],10)}}function di(e,t){return`${e.prefix}${String(t).padStart(e.digits.length,"0")}${e.suffix}`}var Bn=["basic","qa-group","cloze","cloze-all"],Ke="Open in Obsidian",Nn=4,li=5,Ze=4,gi="",Pn="",_o="",Rn="#anki-cloze",Lo="#anki-cloze-all",mi="#anki-list",Io=new ce,H={qaHeadingLevel:Nn,clozeHeadingLevel:Ze,cardAnswerCutoffMode:"heading-block",qaGroupMarker:mi,qaNoteType:gi,clozeNoteType:Pn,cardTypeConfigs:ki(),noteFieldMappings:{},ankiNoteTypeCache:[],ankiModelFieldCache:{},defaultDeck:"Obsidian",fileDeckEnabled:!1,fileDeckMarker:"TARGET DECK",fileDeckTemplate:"obsidian::filename",fileDeckInsertLocation:"body",folderDeckMode:"folder-and-file",scopeMode:"include",includeFolders:[],excludeFolders:[],alternateFolderDeckModeFolders:[],addObsidianBacklink:!0,obsidianBacklinkLabel:Ke,obsidianBacklinkPlacement:"answer-last-line",convertHighlightsToCloze:!0,syncObsidianTagsToAnki:!0,keepPureTagLinesInCardBody:!0,ankiConnectUrl:"http://127.0.0.1:8765"};function No(e){if(typeof e!="string")return Ke;let t=e.trim();return t.length>0?t:Ke}function Ce(e){let t=bi(e.cardTypeConfigs,e),n=Oo(t),r={...e,...n,cardTypeConfigs:t,noteFieldMappings:xi(e.noteFieldMappings),ankiNoteTypeCache:Qo(e.ankiNoteTypeCache),ankiModelFieldCache:Vo(e.ankiModelFieldCache),obsidianBacklinkLabel:No(e.obsidianBacklinkLabel)};return{...r,noteFieldMappings:Wo(r)}}function hi(e){let t=e??{},n=bi(t.cardTypeConfigs,t);return Ce({...H,...t,cardTypeConfigs:n,noteFieldMappings:xi(t.noteFieldMappings??H.noteFieldMappings),ankiModelFieldCache:t.ankiModelFieldCache??H.ankiModelFieldCache,includeFolders:t.includeFolders??H.includeFolders,excludeFolders:t.excludeFolders??H.excludeFolders,alternateFolderDeckModeFolders:t.alternateFolderDeckModeFolders??H.alternateFolderDeckModeFolders})}function pe(e){if(Bo(e.cardTypeConfigs),e.cardAnswerCutoffMode!=="heading-block"&&e.cardAnswerCutoffMode!=="double-blank-lines")throw new S("errors.settings.cardAnswerCutoffModeInvalid");if(Go(e.noteFieldMappings),Po(e.ankiNoteTypeCache),Ro(e.ankiModelFieldCache),!e.defaultDeck.trim())throw new S("errors.settings.defaultDeckRequired");if(typeof e.fileDeckEnabled!="boolean")throw new S("errors.settings.fileDeckEnabledBoolean");if(typeof e.syncObsidianTagsToAnki!="boolean")throw new S("errors.settings.syncObsidianTagsToAnkiBoolean");if(typeof e.keepPureTagLinesInCardBody!="boolean")throw new S("errors.settings.keepPureTagLinesInCardBodyBoolean");if(typeof e.fileDeckMarker!="string")throw new S("errors.settings.fileDeckMarkerString");if(typeof e.fileDeckTemplate!="string")throw new S("errors.settings.fileDeckTemplateString");if(e.fileDeckInsertLocation!=="yaml"&&e.fileDeckInsertLocation!=="body")throw new S("errors.settings.fileDeckInsertLocationInvalid");if(e.folderDeckMode!=="off"&&e.folderDeckMode!=="folder"&&e.folderDeckMode!=="folder-and-file")throw new S("errors.settings.folderDeckModeInvalid");if(e.scopeMode!=="all"&&e.scopeMode!=="include"&&e.scopeMode!=="exclude")throw new S("errors.settings.scopeModeInvalid");if(e.obsidianBacklinkPlacement!=="question-last-line"&&e.obsidianBacklinkPlacement!=="answer-first-line"&&e.obsidianBacklinkPlacement!=="answer-last-line")throw new S("errors.settings.obsidianBacklinkPlacementInvalid");if(In(e.includeFolders,"include"),In(e.excludeFolders,"exclude"),In(e.alternateFolderDeckModeFolders,"alternateFolderDeckMode"),!e.ankiConnectUrl.trim())throw new S("errors.settings.ankiConnectUrlRequired")}function gt(e,t){return e!=="include"?!0:t.some(n=>n.trim().length>0)}function Po(e){if(!Array.isArray(e))throw new S("errors.settings.ankiNoteTypeCacheArray");for(let t of e)if(typeof t!="string")throw new S("errors.settings.ankiNoteTypeCacheStrings")}function Ro(e){if(!e||typeof e!="object"||Array.isArray(e))throw new S("errors.settings.ankiModelFieldCacheObject");for(let t of Object.values(e)){if(!t||typeof t!="object"||Array.isArray(t))throw new S("errors.settings.ankiModelFieldCacheEntryObject");if(!Array.isArray(t.fieldNames))throw new S("errors.settings.ankiModelFieldCacheFieldNamesArray");for(let n of t.fieldNames)if(typeof n!="string")throw new S("errors.settings.ankiModelFieldCacheFieldNamesStrings");if(!Number.isFinite(t.loadedAt))throw new S("errors.settings.ankiModelFieldCacheLoadedAt")}}function In(e,t){if(!Array.isArray(e))throw t==="include"?new S("errors.settings.includeFoldersArray"):t==="exclude"?new S("errors.settings.excludeFoldersArray"):new S("errors.settings.alternateFolderDeckModeFoldersArray");for(let n of e)if(typeof n!="string")throw t==="include"?new S("errors.settings.includeFoldersStrings"):t==="exclude"?new S("errors.settings.excludeFoldersStrings"):new S("errors.settings.alternateFolderDeckModeFoldersStrings")}function Bo(e){if(!e||typeof e!="object"||Array.isArray(e))throw new S("errors.settings.cardTypeConfigsObject");let t=new Map;for(let n of Bn){let r=e[n];if(!r||typeof r!="object"||Array.isArray(r))throw new S("errors.settings.cardTypeConfigsObject");if(typeof r.enabled!="boolean")throw new S("errors.settings.cardTypeEnabledBoolean");if(!Number.isInteger(r.headingLevel)||r.headingLevel<1||r.headingLevel>6)throw new S("errors.settings.headingLevelsRange");if(typeof r.extraMarker!="string")throw new S("errors.settings.cardTypeExtraMarkerString");if(!r.enabled||r.extraMarker.trim().length>0)continue;let i=t.get(r.headingLevel)??[];i.push(n),t.set(r.headingLevel,i)}for(let[n,r]of t.entries())if(r.length>1)throw new S("errors.settings.cardTypeDefaultConflict",{headingLevel:n})}function Go(e){if(!e||typeof e!="object"||Array.isArray(e))throw new S("errors.settings.noteFieldMappingsObject");for(let t of Object.values(e)){if(t.cardType!=="basic"&&t.cardType!=="qa-group"&&t.cardType!=="cloze")throw new S("errors.settings.noteFieldMappingsCardType");if(!t.modelName.trim())throw new S("errors.settings.noteFieldMappingsModelName");if(!Array.isArray(t.loadedFieldNames))throw new S("errors.settings.noteFieldMappingsLoadedFieldNames");if(!Number.isFinite(t.loadedAt))throw new S("errors.settings.noteFieldMappingsLoadedAt");if(O(t)){if(!Array.isArray(t.slots))throw new S("errors.settings.noteFieldMappingsQaGroupSlotsArray");for(let n of t.slots){if(!n||typeof n!="object"||Array.isArray(n))throw new S("errors.settings.noteFieldMappingsQaGroupSlotObject");if(!Number.isInteger(n.index)||n.index<1)throw new S("errors.settings.noteFieldMappingsQaGroupSlotIndex");if(typeof n.questionField!="string")throw new S("errors.settings.noteFieldMappingsQaGroupSlotQuestionField");if(typeof n.answerField!="string")throw new S("errors.settings.noteFieldMappingsQaGroupSlotAnswerField")}if(fi(t.warnings,"errors.settings.noteFieldMappingsQaGroupWarningsArray","errors.settings.noteFieldMappingsQaGroupWarningsStrings"),fi(t.acceptedWarnings,"errors.settings.noteFieldMappingsQaGroupAcceptedWarningsArray","errors.settings.noteFieldMappingsQaGroupAcceptedWarningsStrings",!0),t.derivation!==void 0){if(!t.derivation||typeof t.derivation!="object"||Array.isArray(t.derivation))throw new S("errors.settings.noteFieldMappingsQaGroupDerivationObject");if(t.derivation.mode!=="first-pair")throw new S("errors.settings.noteFieldMappingsQaGroupDerivationMode");if(t.derivation.firstQuestionField!==void 0&&typeof t.derivation.firstQuestionField!="string")throw new S("errors.settings.noteFieldMappingsQaGroupDerivationFirstQuestionField");if(t.derivation.firstAnswerField!==void 0&&typeof t.derivation.firstAnswerField!="string")throw new S("errors.settings.noteFieldMappingsQaGroupDerivationFirstAnswerField")}}}}function ki(){return{basic:{enabled:!0,headingLevel:Nn,extraMarker:"",noteType:gi},"qa-group":{enabled:!0,headingLevel:Nn,extraMarker:mi,noteType:""},cloze:{enabled:!0,headingLevel:Ze,extraMarker:Rn,noteType:Pn},"cloze-all":{enabled:!0,headingLevel:Ze,extraMarker:Lo,noteType:Pn}}}function qo(e){let t=ki();return{basic:{...t.basic,headingLevel:Ve(e.qaHeadingLevel,t.basic.headingLevel),noteType:je(e.qaNoteType,t.basic.noteType)},"qa-group":{...t["qa-group"],headingLevel:Ve(e.qaHeadingLevel,t["qa-group"].headingLevel),extraMarker:yi(e.qaGroupMarker,t["qa-group"].extraMarker),noteType:je(e.cardTypeConfigs?.["qa-group"]?.noteType,t["qa-group"].noteType)},cloze:{...t.cloze,headingLevel:Ve(e.clozeHeadingLevel,t.cloze.headingLevel),noteType:je(e.clozeNoteType,t.cloze.noteType)},"cloze-all":{...t["cloze-all"],headingLevel:Ve(e.clozeHeadingLevel,t["cloze-all"].headingLevel),noteType:je(e.clozeNoteType,t["cloze-all"].noteType)}}}function bi(e,t){let n=qo(t),r={};for(let i of Bn){let a=e?.[i],o=n[i],u=a&&typeof a=="object"&&!Array.isArray(a)?{...o,...a}:o,s={enabled:typeof u.enabled=="boolean"?u.enabled:o.enabled,headingLevel:Ve(u.headingLevel,o.headingLevel),extraMarker:yi(u.extraMarker,o.extraMarker),noteType:je(u.noteType,o.noteType)};r[i]=i==="cloze"?zo(s,a,t):s}return r["cloze-all"]={...r["cloze-all"],noteType:r.cloze.noteType},r}function zo(e,t,n){return e.headingLevel===li&&e.extraMarker===_o?{...e,headingLevel:Ze,extraMarker:Rn}:!Ho(t)&&n.clozeHeadingLevel===li?{...e,headingLevel:Ze,extraMarker:Rn}:e}function Ho(e){return!e||typeof e!="object"||Array.isArray(e)?!1:"headingLevel"in e||"extraMarker"in e}function Oo(e){return{qaHeadingLevel:e.basic.headingLevel,clozeHeadingLevel:e.cloze.headingLevel,qaGroupMarker:e["qa-group"].extraMarker,qaNoteType:e.basic.noteType,clozeNoteType:e.cloze.noteType}}function Ve(e,t){return typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=6?e:t}function yi(e,t){return typeof e!="string"?t:e.trim()}function je(e,t){if(typeof e!="string")return t;let n=e.trim();return n.length>0?n:t}function xi(e){if(!e||typeof e!="object"||Array.isArray(e))return{};let t={};for(let n of Object.values(e)){if(!n||typeof n!="object"||Array.isArray(n))continue;let r=n;if(r.cardType!=="basic"&&r.cardType!=="qa-group"&&r.cardType!=="cloze")continue;let i=typeof r.modelName=="string"?r.modelName.trim():"";if(i.length===0)continue;let a=Ci(r.loadedFieldNames),o=typeof r.loadedAt=="number"&&Number.isFinite(r.loadedAt)?r.loadedAt:0;if(r.cardType==="qa-group"){let u=$o(r,i,a,o);t[B(u.cardType,u.modelName)]=u;continue}if(r.cardType==="cloze"){t[B(r.cardType,i)]={cardType:r.cardType,modelName:i,loadedFieldNames:a,mainField:le(r.mainField),loadedAt:o};continue}t[B(r.cardType,i)]={cardType:r.cardType,modelName:i,loadedFieldNames:a,titleField:le(r.titleField),bodyField:le(r.bodyField),loadedAt:o}}return t}function Wo(e){let t={...e.noteFieldMappings};for(let n of Bn){if(n==="qa-group")continue;let r=e.cardTypeConfigs[n];if(!r.enabled)continue;let i=r.noteType.trim();if(i.length===0)continue;let a=n==="cloze"||n==="cloze-all"?"cloze":"basic",o=B(a,i);if(t[o])continue;let u=e.ankiModelFieldCache[i];if(!u||u.fieldNames.length===0)continue;let s=[...u.fieldNames];t[o]=a==="cloze"?{cardType:a,modelName:i,loadedFieldNames:s,mainField:ft(s,["Text","Body","Content"])??s[0],loadedAt:u.loadedAt}:{cardType:a,modelName:i,loadedFieldNames:s,titleField:ft(s,["Front","Title"])??s[0],bodyField:ft(s,["Back","Body","Answer"])??s.find(d=>d!==(ft(s,["Front","Title"])??s[0])),loadedAt:u.loadedAt}}return t}function ft(e,t){return e.find(n=>t.some(r=>r.toLowerCase()===n.toLowerCase()))}function $o(e,t,n,r){let i=pi(e.acceptedWarnings),a=jo(e.slots),o=pi(e.warnings),u=le(e.titleField),s=Uo(e.derivation);if(a.length>0||o.length>0||i.length>0||s!==void 0)return{cardType:"qa-group",modelName:t,loadedFieldNames:n,titleField:u,slots:a,warnings:o,acceptedWarnings:i.length>0?i:void 0,derivation:s,loadedAt:r};if(n.length>0)try{return Io.suggest(t,n,r,i,u)}catch{return{cardType:"qa-group",modelName:t,loadedFieldNames:n,titleField:u,slots:[],warnings:[],acceptedWarnings:void 0,derivation:s,loadedAt:r}}return{cardType:"qa-group",modelName:t,loadedFieldNames:n,titleField:u,slots:[],warnings:[],acceptedWarnings:void 0,derivation:s,loadedAt:r}}function Uo(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e;if(t.mode==="first-pair")return{mode:"first-pair",firstQuestionField:le(t.firstQuestionField),firstAnswerField:le(t.firstAnswerField)}}function Qo(e){if(!Array.isArray(e))return[];let t=new Set;for(let n of e){if(typeof n!="string")continue;let r=n.trim();r.length>0&&t.add(r)}return[...t].sort((n,r)=>n.localeCompare(r))}function Vo(e){if(!e||typeof e!="object"||Array.isArray(e))return{};let t=Object.entries(e).flatMap(([n,r])=>{let i=n.trim();if(i.length===0||!r||typeof r!="object"||Array.isArray(r))return[];let a=r,o=typeof a.loadedAt=="number"&&Number.isFinite(a.loadedAt)?a.loadedAt:0;return[[i,{fieldNames:Ci(a.fieldNames),loadedAt:o}]]});return t.sort(([n],[r])=>n.localeCompare(r)),Object.fromEntries(t)}function Ci(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(typeof r!="string")continue;let i=r.trim();i.length===0||n.has(i)||(n.add(i),t.push(i))}return t}function jo(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!="object"||Array.isArray(n))continue;let r=n;if(!Number.isInteger(r.index)||r.index<1)continue;let i=le(r.questionField),a=le(r.answerField);!i||!a||t.push({index:r.index,questionField:i,answerField:a})}return t}function le(e){if(typeof e!="string")return;let t=e.trim();return t.length>0?t:void 0}function pi(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(typeof n!="string")continue;let r=n.trim();r.length!==0&&t.push(r)}return t}function fi(e,t,n,r=!1){if(!(typeof e>"u"&&r)){if(!Array.isArray(e))throw new S(t);for(let i of e)if(typeof i!="string")throw new S(n)}}var Z=class{normalize(t){let r=t.trim().replace(/\\/g,"/").replace(/\/+?/g,"::").split(/::+/).map(i=>i.trim().replace(/^:+|:+$/g,"")).filter(Boolean);if(r.length===0)throw new S("errors.deck.emptyName");return r.join("::")}};var mt=class{constructor(t=new Z){this.deckNormalizationService=t}insert(t,n,r,i){let a=this.expandTemplate(r,t.basename),o=i==="yaml"?Ko(t.content,n,a):Zo(t.content,n,a);return{expectedContent:t.content,nextContent:o,insertedDeck:a}}expandTemplate(t,n){return this.deckNormalizationService.normalize(t.replace(/\bfilename\b/g,n))}};function Ko(e,t,n){let r=e.split(/\r?\n/),i=Si(r),a=`${t}: ${n}`;if(!i)return["---",a,"---","",...r].join(`
`);let o=[...r],u=eu(t),s=i.start+1,d=i.end,c=o.slice(s,d).findIndex(l=>u.test(l));return c>=0?(o[s+c]=a,o.join(`
`)):(o.splice(d,0,a),o.join(`
`))}function Zo(e,t,n){let r=e.split(/\r?\n/),i=Si(r),a=i?i.end+1:0,o=r.slice(0,a),u=r.slice(a),s=Yo(u,t),d=`${t}: ${n}`,c=[...u];if(s)return c.splice(s.start,s.end-s.start+1,d),[...o,...c].join(`
`);let l=Jo(u),f=l.length>0?[d,"",...l]:[d];return i?[...o,"",...f].join(`
`):f.join(`
`)}function Si(e){if(e[0]?.trim()==="---"){for(let t=1;t<e.length;t+=1)if(e[t]?.trim()==="---"||e[t]?.trim()==="...")return{start:0,end:t}}}function Yo(e,t){let n=new RegExp(`^\\s*${Gn(t)}\\s*:\\s*(.+?)\\s*$`),r=new RegExp(`^\\s*${Gn(t)}\\s*$`),i=null;for(let a=0;a<e.length;a+=1){let o=e[a]?.trim()??"";if(o.startsWith("```")||o.startsWith("~~~")){i=i?null:o.slice(0,3);continue}if(i)continue;if(n.test(e[a]??""))return{start:a,end:a};if(!r.test(e[a]??""))continue;let u=Xo(e,a+1);return{start:a,end:u??a}}}function Xo(e,t){for(let n=t;n<e.length;n+=1){let r=e[n]?.trim()??"";if(r)return r.startsWith("```")||r.startsWith("~~~")?void 0:n}}function Jo(e){let t=0;for(;t<e.length&&!(e[t]??"").trim();)t+=1;return e.slice(t)}function eu(e){return new RegExp(`^\\s*${Gn(e)}\\s*:`)}function Gn(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var ht=class{constructor(t){this.ankiGateway=t}async listCandidates(){let t=await this.ankiGateway.listDeckNames(),n=Fi(t);return(await this.ankiGateway.getDeckStats(n)).filter(i=>i.noteCount===0).map(i=>i.deckName).sort((i,a)=>i.localeCompare(a))}async execute(t,n){let r=Array.from(new Set(t));if(r.length===0)return{candidateCount:n.length,selectedCount:0,deletedCount:0,deletedDeckNames:[],skippedDeckNames:[]};let[i,a]=await Promise.all([this.ankiGateway.listDeckNames(),this.ankiGateway.getDeckStats(r)]),o=new Set(Fi(i)),u=new Map(a.map(l=>[l.deckName,l.noteCount])),s=r.filter(l=>o.has(l)&&u.get(l)===0),d=r.filter(l=>!o.has(l)||u.get(l)!==0),c=[];for(let l of s)try{await this.ankiGateway.deleteDecks([l]),c.push(l)}catch{d.push(l)}return{candidateCount:n.length,selectedCount:r.length,deletedCount:c.length,deletedDeckNames:c,skippedDeckNames:d}}};function Fi(e){return e.filter(t=>!e.some(n=>n!==t&&n.startsWith(`${t}::`)))}var fe=class extends Error{constructor(t){super(`Markdown file changed before AHS write-back: ${t}`),this.name="MarkdownWriteConflictError"}},kt=class extends Error{constructor(t){super(`Markdown file not found: ${t}`),this.name="MarkdownFileNotFoundError"}};function bt(e,t){let n=new Set(t.additionalRemovalLineIndexes??[]);t.markerLine!==void 0&&n.add(t.markerLine-1);for(let a=t.contentEndLine;a<t.blockEndLine;a+=1)(e[a]??"").trim()||n.add(a);let r=[...n].sort((a,o)=>o-a),i=t.contentEndLine-[...n].filter(a=>a<t.contentEndLine).length;for(let a of r)e.splice(a,1);for(e.splice(i,0,`${t.markerIndent??""}${t.renderedMarker}`);i+1<e.length&&!(e[i+1]??"").trim();)e.splice(i+1,1);i+1<e.length&&e.splice(i+1,0,"","")}var Y=class extends Error{constructor(t){super(t),this.name="CardMarkerError"}},tu=/<!--\s*ID:/,nu=/^\s*<!--\s*ID:\s*([1-9]\d*)\s*-->\s*$/,ge=class{isCandidate(t){return tu.test(t)}parse(t,n){let r=t.match(nu);return r?{noteId:Number(r[1]),raw:r[0].trim(),lineIndex:n}:null}create(t){return{noteId:t,raw:`<!--ID: ${t}-->`,lineIndex:-1}}createForCard(t){if(t.noteId===void 0)throw new Y("Cannot create an ID marker without a noteId.");return this.create(t.noteId)}applyBatch(t,n){if(n.length===0)return t;this.validateBatch(t,n);let r=t.includes(`\r
`)?`\r
`:`
`,i=t.split(/\r?\n/),a=[...n].sort((o,u)=>u.blockStartLine-o.blockStartLine);for(let o of a)this.applyWrite(i,o);return i.join(r)}validateBatch(t,n){let r=n[0]?.filePath,i=new Set;for(let a of n){if(a.filePath!==r)throw new Y("Batch marker writes must belong to the same Markdown file.");if(a.sourceContent!==t)throw new Y(`Marker writes for ${a.filePath} must share the scanned source content.`);if(a.markerLine===void 0&&a.contentEndLine>a.blockEndLine)throw new Y(`Cannot insert marker outside the heading block in ${a.filePath}.`);if(a.markerLine!==void 0&&a.markerLine<a.blockStartLine)throw new Y(`Cannot replace marker outside the heading block in ${a.filePath}.`);if(a.contentEndLine<a.blockStartLine||a.contentEndLine>a.blockEndLine)throw new Y(`Cannot write marker outside the content range in ${a.filePath}.`);if(i.has(a.blockStartLine))throw new Y(`Duplicate marker write detected for block ${a.blockStartLine} in ${a.filePath}.`);i.add(a.blockStartLine)}}applyWrite(t,n){let r=n.markerLine!==void 0?n.blockEndLine-1:n.blockEndLine;if(n.contentEndLine<n.blockStartLine||n.contentEndLine>r)throw new Y(`Cannot write marker outside the heading block in ${n.filePath}.`);bt(t,{contentEndLine:n.contentEndLine,blockEndLine:n.blockEndLine,markerLine:n.markerLine,markerIndent:n.markerIndent,renderedMarker:this.create(n.noteId).raw})}};var U=class extends Error{constructor(t){super(t),this.name="GroupMarkerError"}},ru=/<!--\s*GI:/,iu=/^\s*<!--\s*GI:n=([1-9]\d*);i=([^;]*);f=([^;]*)\s*-->\s*$/,au=/^[A-Za-z][A-Za-z0-9_-]*$/,X=class{isCandidate(t){return ru.test(t)}parse(t,n){let r=t.match(iu);if(!r)return null;let i=Number(r[1]),a=ou(r[2]),o=uu(r[3]);return qn(a,o),{noteId:i,itemToSlot:a,freeSlots:o,raw:r[0].trim(),lineIndex:n}}create(t,n,r){return qn(n,r),{noteId:t,itemToSlot:{...n},freeSlots:[...new Set(r)].sort((i,a)=>i-a),raw:yt(t,n,r),lineIndex:-1}}isEquivalent(t,n,r,i){if(!t||t.noteId!==n)return!1;let a=Object.entries(t.itemToSlot).sort(Mi),o=Object.entries(r).sort(Mi);if(a.length!==o.length)return!1;for(let d=0;d<a.length;d+=1)if(a[d][0]!==o[d][0]||a[d][1]!==o[d][1])return!1;let u=[...t.freeSlots].sort((d,c)=>d-c),s=[...i].sort((d,c)=>d-c);return u.length!==s.length?!1:u.every((d,c)=>d===s[c])}validateBatch(t,n){if(n.length===0)return;let r=n[0]?.filePath,i=new Set;for(let a of n){if(a.filePath!==r)throw new U("Batch GI marker writes must belong to the same Markdown file.");if(a.sourceContent!==t)throw new U(`GI marker writes for ${a.filePath} must share the scanned source content.`);if(a.markerLine!==void 0&&a.markerLine<a.blockStartLine)throw new U(`Cannot replace GI marker outside the heading block in ${a.filePath}.`);if(a.contentEndLine<a.blockStartLine||a.contentEndLine>a.blockEndLine)throw new U(`Cannot place GI marker outside the content range in ${a.filePath}.`);if(i.has(a.blockStartLine))throw new U(`Duplicate GI marker write detected for block ${a.blockStartLine} in ${a.filePath}.`);i.add(a.blockStartLine)}}applyBatch(t,n){if(n.length===0)return t;this.validateBatch(t,n);let r=t.includes(`\r
`)?`\r
`:`
`,i=t.split(/\r?\n/),a=[...n].sort((o,u)=>u.blockStartLine-o.blockStartLine);for(let o of a)this.applyWrite(i,o);return i.join(r)}applyWrite(t,n){bt(t,{contentEndLine:n.contentEndLine,blockEndLine:n.blockEndLine,markerLine:n.markerLine,markerIndent:n.markerIndent,renderedMarker:yt(n.noteId,n.itemToSlot,n.freeSlots),additionalRemovalLineIndexes:su(t,n.blockStartLine,n.blockEndLine)})}};function yt(e,t,n){qn(t,n);let r=Object.entries(t).sort((a,o)=>a[1]-o[1]||a[0].localeCompare(o[0])).map(([a,o])=>`${a}:${o}`).join(","),i=[...new Set(n)].sort((a,o)=>a-o).join(",");return`<!--GI:n=${e};i=${r};f=${i}-->`}function ou(e){if(!e.trim())return{};let t={},n=new Set;for(let r of e.split(",")){let i=r.trim();if(!i)continue;let[a,o]=i.split(":");if(!a||!o||!au.test(a))throw new U(`Invalid GI item mapping entry: ${r}`);let u=Number(o);if(!Number.isInteger(u)||u<1)throw new U(`Invalid GI slot value: ${o}`);if(t[a]!==void 0||n.has(u))throw new U(`Duplicate GI mapping entry detected: ${r}`);t[a]=u,n.add(u)}return t}function uu(e){if(!e.trim())return[];let t=[],n=new Set;for(let r of e.split(",")){let i=r.trim();if(!i)continue;let a=Number(i);if(!Number.isInteger(a)||a<1)throw new U(`Invalid GI free slot value: ${i}`);if(n.has(a))throw new U(`Duplicate GI free slot detected: ${i}`);n.add(a),t.push(a)}return t.sort((r,i)=>r-i)}function qn(e,t){let n=new Set;for(let r of Object.values(e)){if(!Number.isInteger(r)||r<1)throw new U(`GI item slot must be a positive integer. Received: ${r}`);n.add(r)}for(let r of t){if(!Number.isInteger(r)||r<1)throw new U(`GI free slot must be a positive integer. Received: ${r}`);if(n.has(r))throw new U(`GI free slot ${r} overlaps with an occupied slot.`)}}function su(e,t,n){let r=[];for(let i=t;i<n;i+=1)/^\s*<!--\s*ID:/i.test(e[i]??"")&&r.push(i);return r}function Mi(e,t){return e[1]-t[1]||e[0].localeCompare(t[0])}var Ct=class{constructor(t,n=new ge,r=new X){this.vaultGateway=t;this.cardMarkerService=n;this.groupMarkerService=r}async remove(t,n,r){if(n.length===0&&r.length===0)return xt();let i=await this.vaultGateway.readMarkdownFile(t);if(!i)return{...xt(),failureFiles:[{filePath:t,key:"errors.markerRemoval.markdownFileNotFound"}]};let a=du(i.content,new Set(n.map(o=>o.noteId)),new Set(r.map(o=>o.noteId)),this.cardMarkerService,this.groupMarkerService);try{return a.nextContent!==i.content&&await this.vaultGateway.replaceMarkdownFile(t,i.content,a.nextContent),{removedCardMarkers:a.removedCardMarkers,removedGroupMarkers:a.removedGroupMarkers,removedMarkers:a.removedCardMarkers+a.removedGroupMarkers,conflictFiles:[],failureFiles:[]}}catch(o){return o instanceof fe?{...xt(),conflictFiles:[t]}:{...xt(),failureFiles:[pt(t,o)]}}}};function du(e,t,n,r,i){let a=e.includes(`\r
`)?`\r
`:`
`,o=e.split(/\r?\n/),u=[],s=0,d=0;for(let c=0;c<o.length;c+=1){let l=o[c];if(r.isCandidate(l)){let f=r.parse(l,c+1);if(f&&t.has(f.noteId)){s+=1;continue}}if(i.isCandidate(l)){let f=i.parse(l,c+1);if(f?.noteId!==void 0&&n.has(f.noteId)){d+=1;continue}}u.push(l)}return{nextContent:u.join(a),removedCardMarkers:s,removedGroupMarkers:d}}function xt(){return{removedCardMarkers:0,removedGroupMarkers:0,removedMarkers:0,conflictFiles:[],failureFiles:[]}}function wi(){return{files:{},cards:{},groupBlocks:{},pendingWriteBack:[]}}function z(e){return String(e)}function Ie(e,t,n){return`${e}\0${t}\0${n}`}var St=class{constructor(t,n,r,i=new Ct(r)){this.pluginStateRepository=t;this.ankiGateway=n;this.markdownMarkerRemovalService=i}async hasTrackedCards(t){let n=await this.pluginStateRepository.load(),r=vi(n,t);return r.trackedCards.length>0||r.trackedGroups.length>0}async execute(t){let n=await this.pluginStateRepository.load(),r=vi(n,t);if(r.trackedCards.length===0&&r.trackedGroups.length===0)return lu();let i=r.noteIds;i.length>0&&await this.ankiGateway.deleteNotes(i);let a=await this.markdownMarkerRemovalService.remove(t,r.trackedCards.map(u=>({noteId:u.noteId})),r.trackedGroups.map(u=>({noteId:u.noteId,groupId:u.groupId,blockStartLine:u.blockStartLine}))),o=cu(n,t,r);return await this.pluginStateRepository.save(o),{trackedCards:r.trackedCards.length,trackedGroups:r.trackedGroups.length,deletedNotes:i.length,removedMarkers:a.removedMarkers,removedCardMarkers:a.removedCardMarkers,removedGroupMarkers:a.removedGroupMarkers,deletedLocalRecords:r.trackedCards.length+r.trackedGroups.length,conflictFiles:a.conflictFiles,failureFiles:a.failureFiles}}};function vi(e,t){let n=new Set,r=new Set,i=e.groupBlocks??{};for(let u of e.files[t]?.noteIds??[]){let s=z(u);e.cards[s]&&n.add(s)}for(let u of e.files[t]?.groupIds??[])i[u]&&r.add(u);for(let u of Object.values(e.cards))u.filePath===t&&n.add(z(u.noteId));for(let[u,s]of Object.entries(i))s.filePath===t&&r.add(u);let a=Array.from(n).map(u=>e.cards[u]).filter(u=>!!u),o=Array.from(r).map(u=>i[u]).filter(u=>!!u);return{trackedCards:a,trackedGroups:o,noteIds:Array.from(new Set([...a.map(u=>u.noteId),...o.map(u=>u.noteId)]))}}function cu(e,t,n){let r={...e.cards},i={...e.groupBlocks??{}};for(let o of n.trackedCards)delete r[z(o.noteId)];for(let o of n.trackedGroups)delete i[o.groupId];let a={...e.files};return delete a[t],{files:a,cards:r,groupBlocks:e.groupBlocks?i:void 0,pendingWriteBack:e.pendingWriteBack.filter(o=>o.filePath!==t)}}function lu(){return{trackedCards:0,trackedGroups:0,deletedNotes:0,removedMarkers:0,removedCardMarkers:0,removedGroupMarkers:0,deletedLocalRecords:0,conflictFiles:[],failureFiles:[]}}var Ft=class{constructor(t){this.manualSyncService=t}async execute(t,n){return this.manualSyncService.syncFile(t,n)}};var Mt=class{constructor(t){this.manualSyncService=t}async execute(t){return this.manualSyncService.syncVault(t)}};var Ti=require("obsidian"),wt=class{constructor(t){this.getBaseUrl=t}async ensureDeckExists(t){await this.invoke("createDeck",{deck:t})}async ensureDecks(t){let n=Array.from(new Set(t));await this.invokeMulti(n.map(r=>({action:"createDeck",params:{deck:r}})))}async listNoteModels(){return this.invoke("modelNames",{})}async listDeckNames(){let t=await this.invoke("deckNamesAndIds",{});return Object.keys(t)}async getModelFieldNames(t){return this.invoke("modelFieldNames",{modelName:t})}async getModelFieldNamesByModelNames(t){let n=Array.from(new Set(t.map(i=>i.trim()).filter(i=>i.length>0)));if(n.length===0)return{};let r=await this.invoke("multi",{actions:n.map(i=>({action:"modelFieldNames",params:{modelName:i}}))});return n.reduce((i,a,o)=>{let u=pu(r[o]);return u&&(i[a]=u),i},{})}async findNoteIds(t){return this.invoke("findNotes",{query:t})}async getNoteDetails(t){if(t.length===0)return[];let n=await this.invoke("notesInfo",{notes:t}),r=n.flatMap(a=>Array.isArray(a?.cards)?a.cards:[]),i=new Map;if(r.length>0){let a=await this.invoke("cardsInfo",{cards:r});for(let o of a)!o||typeof o.cardId!="number"||typeof o.deckName!="string"||i.set(o.cardId,o.deckName)}return n.flatMap(a=>{if(!a||typeof a.noteId!="number"||typeof a.modelName!="string")return[];let o=Array.isArray(a.cards)?a.cards:[],u=Object.fromEntries(Object.entries(a.fields??{}).map(([s,d])=>[s,d?.value??""]));return[{noteId:a.noteId,modelName:a.modelName,cardIds:o,deckNames:Array.from(new Set(o.map(s=>i.get(s)).filter(s=>typeof s=="string"))),tags:Array.isArray(a.tags)?a.tags.filter(s=>typeof s=="string"):[],fields:u}]})}async getModelDetails(t){return{fieldNames:await this.getModelFieldNames(t)}}async getDeckStats(t){if(t.length===0)return[];let n=await this.invoke("deckNamesAndIds",{}),r=await this.invoke("getDeckStats",{decks:t});return t.map(i=>({deckName:i,noteCount:fu(r,n[i])}))}async getNoteSummaries(t){return(await this.getNoteDetails(t)).map(n=>({noteId:n.noteId,modelName:n.modelName,cardIds:n.cardIds,deckNames:n.deckNames,tags:n.tags}))}async addNote(t){return this.invoke("addNote",{note:{deckName:t.deckName,modelName:t.modelName,fields:t.fields,options:{allowDuplicate:!1,duplicateScope:"deck"},tags:t.tags}})}async addNotes(t){return this.invokeMulti(t.map(n=>({action:"addNote",params:{note:{deckName:n.deckName,modelName:n.modelName,fields:n.fields,options:{allowDuplicate:!1,duplicateScope:"deck"},tags:n.tags}}})))}async deleteNotes(t){t.length!==0&&await this.invoke("deleteNotes",{notes:t})}async updateNote(t){if(await this.invoke("updateNoteFields",{note:{id:t.noteId,fields:t.fields}}),!t.deckName)return;let r=(await this.invoke("notesInfo",{notes:[t.noteId]}))[0]?.cards??[];r.length>0&&await this.invoke("changeDeck",{cards:r,deck:t.deckName})}async updateNoteModel(t){try{await this.invoke("updateNoteModel",{note:{id:t.noteId,modelName:t.modelName,fields:t.fields}})}catch(n){throw new Error(gu("updateNoteModel",{noteId:t.noteId,modelName:t.modelName},n))}}async updateNotes(t){await this.invokeMulti(t.map(n=>({action:"updateNoteFields",params:{note:{id:n.noteId,fields:n.fields}}})))}async syncNoteTags(t){let n=[];for(let r of t)r.removeTags.length>0&&n.push({action:"removeTags",params:{notes:[r.noteId],tags:r.removeTags.join(" ")}}),r.addTags.length>0&&n.push({action:"addTags",params:{notes:[r.noteId],tags:r.addTags.join(" ")}});await this.invokeMulti(n)}async changeDecks(t){await this.invokeMulti(t.filter(n=>n.cardIds.length>0).map(n=>({action:"changeDeck",params:{cards:n.cardIds,deck:n.deckName}})))}async deleteDecks(t){let n=Array.from(new Set(t));n.length!==0&&await this.invoke("deleteDecks",{decks:n,cardsToo:!0})}async storeMedia(t){await this.invoke("storeMediaFile",{filename:t.fileName,path:t.absolutePath})}async storeMediaFiles(t){await this.invokeMulti(t.map(n=>({action:"storeMediaFile",params:{filename:n.fileName,path:n.absolutePath}})))}async invoke(t,n){let i=(await(0,Ti.requestUrl)({url:this.getBaseUrl(),method:"POST",contentType:"application/json",body:JSON.stringify({action:t,version:6,params:n})})).json;if(i.error)throw new Error(i.error);return i.result}async invokeMulti(t){return t.length===0?[]:this.invoke("multi",{actions:t})}};function pu(e){if(Array.isArray(e))return e.filter(n=>typeof n=="string");if(!e||typeof e!="object"||Array.isArray(e))return;let t=e;if(!t.error&&Array.isArray(t.result))return t.result.filter(n=>typeof n=="string")}function fu(e,t){if(!e||typeof e!="object"||typeof t!="number")return;let n=e[String(t)];if(!n||typeof n!="object")return;let i=n.total_in_deck;if(typeof i=="number"&&Number.isFinite(i))return i}function gu(e,t,n){let r=typeof t.noteId=="number"&&typeof t.modelName=="string"?` for note ${t.noteId} to model ${t.modelName}`:typeof t.noteId=="number"?` for note ${t.noteId}`:"";return`AnkiConnect ${e} failed${r}: ${mu(n)}`}function mu(e){return e instanceof Error&&e.message.trim().length>0?e.message.trim():String(e)}var vt=class{constructor(t){this.plugin=t}async load(){let t=await this.plugin.loadData();return t!==null&&typeof t=="object"?t:null}async save(t){await this.plugin.saveData(t)}};var ie=require("obsidian");function Q(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function Tt(e){if(!e)return[];let t=[],n=new Set;for(let r of e){if(typeof r!="string")continue;let a=(r.startsWith("#")?r.slice(1):r).split("/").map(u=>u.trim()).filter(u=>u.length>0);if(a.length===0)continue;let o=a.join("::");n.has(o)||(n.add(o),t.push(o))}return t}var hu=new Set(["png","jpg","jpeg","gif","bmp","svg","webp","tiff"]),ku=new Set(["wav","m4a","flac","mp3","wma","aac","webm","ogg"]),At=class{constructor(t){this.app=t}listFolderTree(){return Promise.resolve(this.app.vault.getRoot().children.filter(t=>t instanceof ie.TFolder).map(t=>this.toFolderTreeNode(t)))}listMarkdownFileRefs(){return Promise.resolve(this.app.vault.getMarkdownFiles().map(t=>({path:t.path,basename:t.basename,mtime:t.stat.mtime,size:t.stat.size})))}async listMarkdownFiles(){let t=this.app.vault.getMarkdownFiles();return Promise.all(t.map(n=>this.toSourceFile(n)))}async getMarkdownFile(t){let n=this.app.vault.getAbstractFileByPath(t);return!(n instanceof ie.TFile)||n.extension.toLowerCase()!=="md"?null:this.toSourceFile(n)}async readMarkdownFile(t){return this.getMarkdownFile(t)}async replaceMarkdownFile(t,n,r){let i=this.app.vault.getAbstractFileByPath(t);if(!(i instanceof ie.TFile)||i.extension.toLowerCase()!=="md")throw new kt(t);await this.app.vault.process(i,a=>{if(a!==n)throw new fe(t);return r})}resolveWikiLink(t,n){let{alias:r,linkPath:i}=Di(t),o=this.app.metadataCache.getFirstLinkpathDest(Dt(i),n)?.path??Dt(i),u=r||bu(i);return{url:this.createObsidianUrl(i.includes("#")?`${o}${i.slice(i.indexOf("#"))}`:o),displayText:u}}resolveEmbed(t,n){let{alias:r,linkPath:i}=Di(t),a=this.app.metadataCache.getFirstLinkpathDest(Dt(i),n);if(!(a instanceof ie.TFile))return null;let o=a.extension.toLowerCase(),u=hu.has(o)?"image":ku.has(o)?"audio":null;if(!u)return null;let s=yu(this.app,a.path),d=`${Q(a.path)}-${a.name}`;return{kind:u,fileName:d,absolutePath:s,altText:r||a.name}}createBacklink(t){return this.createObsidianUrl(`${t.filePath}#${xu(t.headingText)}`)}async toSourceFile(t){let n=this.app.metadataCache.getFileCache(t);return{path:t.path,basename:t.basename,content:await this.app.vault.cachedRead(t),tags:Cu(n)}}createObsidianUrl(t){return`obsidian://open?vault=${encodeURIComponent(this.app.vault.getName())}&file=${encodeURIComponent(t)}`}toFolderTreeNode(t){return{path:t.path,name:t.name,children:t.children.filter(n=>n instanceof ie.TFolder).map(n=>this.toFolderTreeNode(n))}}};function Di(e){let[t,n]=e.split("|",2).map(r=>r.trim());return{linkPath:t,alias:n||void 0}}function Dt(e){return e.split("#",1)[0]}function bu(e){let t=Dt(e);return(t.split("/").pop()??t).replace(/\.[^.]+$/,"")||e}function yu(e,t){let n=e.vault.adapter;if(!n.getFullPath)throw new Error("The active vault adapter does not expose an absolute filesystem path.");return n.getFullPath(t)}function xu(e){return e.replace(/(?:\s+#\S+)+$/g,t=>t.replace(/(^|\s)#(\S+)/g,"$1$2"))}function Cu(e){return e?Tt((0,ie.getAllTags)(e)):[]}var Et=class{constructor(t){this.pluginDataStore=t}async load(){let t=await this.pluginDataStore.load()??{},n=hi(t.settings);return pe(n),n}async save(t){let n=Ce(t);pe(n);let r=await this.pluginDataStore.load()??{};await this.pluginDataStore.save({...r,settings:n})}};function Se(e,t){if(e==="cloze")return t==="all"?"all":"sequential"}function _t(e,t,n){return`${e}\0${t}\0${n}`}var Lt=class{constructor(t){this.pluginDataStore=t}async load(){let t=await this.pluginDataStore.load()??{};return Su(t.pluginState)}async save(t){let n=await this.pluginDataStore.load()??{};await this.pluginDataStore.save({...n,pluginState:t})}};function Su(e){if(!e)return wi();let t=_u(e.cards),n=Lu(e.files),r=Iu(e.groupBlocks),i={};for(let u of Object.values(t)){let s=Xe(u.noteId);if(s===void 0)continue;let d=Fu(u,s);if(!d)continue;let c=z(s),l=i[c];(!l||l.lastSyncedAt<=d.lastSyncedAt)&&(i[c]=d)}let a={};for(let[u,s]of Object.entries(n))a[u]={filePath:u,fileHash:typeof s.fileHash=="string"?s.fileHash:"",fileStamp:typeof s.fileStamp=="string"?s.fileStamp:"",deckRulesFingerprint:typeof s.deckRulesFingerprint=="string"?s.deckRulesFingerprint:void 0,lastIndexedAt:typeof s.lastIndexedAt=="number"?s.lastIndexedAt:0,noteIds:Tu(s,t,i),groupIds:Eu(s,r)};let o={};for(let[u,s]of Object.entries(r)){let d=vu(s,u);if(!d)continue;let c=o[u];(!c||c.lastSyncedAt<=d.lastSyncedAt)&&(o[u]=d)}return{files:a,cards:i,groupBlocks:o,pendingWriteBack:Du(e.pendingWriteBack)}}function Fu(e,t){let n=Mu(e.cardType);return n?{noteId:t,filePath:typeof e.filePath=="string"?e.filePath:"",heading:typeof e.heading=="string"?e.heading:"",backlinkHeadingText:typeof e.backlinkHeadingText=="string"?e.backlinkHeadingText:typeof e.heading=="string"?e.heading:"",headingLevel:typeof e.headingLevel=="number"?e.headingLevel:1,bodyMarkdown:typeof e.bodyMarkdown=="string"?e.bodyMarkdown:"",cardType:n,clozeMode:Se(n,wu(e.clozeMode)),blockStartOffset:typeof e.blockStartOffset=="number"?e.blockStartOffset:0,blockEndOffset:typeof e.blockEndOffset=="number"?e.blockEndOffset:0,blockStartLine:typeof e.blockStartLine=="number"?e.blockStartLine:1,bodyStartLine:typeof e.bodyStartLine=="number"?e.bodyStartLine:1,blockEndLine:typeof e.blockEndLine=="number"?e.blockEndLine:1,contentEndLine:typeof e.contentEndLine=="number"?e.contentEndLine:1,markerLine:typeof e.markerLine=="number"?e.markerLine:void 0,rawBlockText:typeof e.rawBlockText=="string"?e.rawBlockText:"",rawBlockHash:typeof e.rawBlockHash=="string"?e.rawBlockHash:"",renderConfigHash:typeof e.renderConfigHash=="string"?e.renderConfigHash:"",deck:typeof e.deck=="string"?e.deck:"",deckHint:typeof e.deckHint=="string"?e.deckHint:void 0,deckHintSource:e.deckHintSource==="frontmatter"||e.deckHintSource==="body"?e.deckHintSource:void 0,deckWarnings:Array.isArray(e.deckWarnings)?[...e.deckWarnings]:[],tagsHint:Array.isArray(e.tagsHint)?e.tagsHint.filter(r=>typeof r=="string"):[],lastSyncedAt:typeof e.lastSyncedAt=="number"?e.lastSyncedAt:0,orphan:!!e.orphan}:null}function Mu(e){if(e==="basic"||e==="cloze")return e}function wu(e){if(e==="sequential"||e==="all")return e}function vu(e,t){let n=Xe(e.noteId);return n===void 0||!t.trim()?null:{groupId:t,noteId:n,filePath:typeof e.filePath=="string"?e.filePath:"",headingText:typeof e.headingText=="string"?e.headingText:"",backlinkHeadingText:typeof e.backlinkHeadingText=="string"?e.backlinkHeadingText:typeof e.headingText=="string"?e.headingText:"",headingLevel:typeof e.headingLevel=="number"?e.headingLevel:1,stem:typeof e.stem=="string"?e.stem:"",src:typeof e.src=="string"?e.src:"",blockStartOffset:typeof e.blockStartOffset=="number"?e.blockStartOffset:0,blockEndOffset:typeof e.blockEndOffset=="number"?e.blockEndOffset:0,blockStartLine:typeof e.blockStartLine=="number"?e.blockStartLine:1,bodyStartLine:typeof e.bodyStartLine=="number"?e.bodyStartLine:1,blockEndLine:typeof e.blockEndLine=="number"?e.blockEndLine:1,contentEndLine:typeof e.contentEndLine=="number"?e.contentEndLine:1,markerLine:typeof e.markerLine=="number"?e.markerLine:void 0,markerIndent:typeof e.markerIndent=="string"?e.markerIndent:void 0,rawBlockText:typeof e.rawBlockText=="string"?e.rawBlockText:"",rawBlockHash:typeof e.rawBlockHash=="string"?e.rawBlockHash:"",deck:typeof e.deck=="string"?e.deck:"",deckHint:typeof e.deckHint=="string"?e.deckHint:void 0,deckHintSource:e.deckHintSource==="frontmatter"||e.deckHintSource==="body"?e.deckHintSource:void 0,deckWarnings:Array.isArray(e.deckWarnings)?[...e.deckWarnings]:[],tagsHint:Array.isArray(e.tagsHint)?e.tagsHint.filter(r=>typeof r=="string"):[],items:Array.isArray(e.items)?e.items.flatMap(r=>{if(!r||typeof r!="object")return[];let i=r;return typeof i.title!="string"||typeof i.answer!="string"||typeof i.ordinalInMarkdown!="number"?[]:[{itemId:typeof i.itemId=="string"?i.itemId:void 0,title:i.title,answer:i.answer,slot:typeof i.slot=="number"?i.slot:void 0,ordinalInMarkdown:i.ordinalInMarkdown}]}):[],freeSlots:Array.isArray(e.freeSlots)?e.freeSlots.filter(r=>typeof r=="number"&&Number.isInteger(r)&&r>0):[],lastSyncedAt:typeof e.lastSyncedAt=="number"?e.lastSyncedAt:0,orphan:!!e.orphan}}function Tu(e,t,n){let r=new Set;if(Array.isArray(e.noteIds))for(let i of e.noteIds){let a=Xe(i);a!==void 0&&n[z(a)]&&r.add(a)}if(Array.isArray(e.cardIds))for(let i of e.cardIds){let a=Xe(t[i]?.noteId);a!==void 0&&n[z(a)]&&r.add(a)}return Array.from(r)}function Du(e){return Array.isArray(e)?e.flatMap(t=>{let n=Au(t);return n?[n]:[]}):[]}function Au(e){let t=Ye(e.filePath),n=Nu(e.blockStartLine),r=Ye(e.expectedFileHash),i=Ye(e.targetMarker),a=Ye(e.rawBlockHash),o=Xe(e.targetNoteId);if(!t||!n||!r||!i||!a||!o)return null;let u=Pu(e.markerKind);if(e.markerKind!==void 0&&!u)return null;let s=e.targetGroupId===void 0?void 0:Ye(e.targetGroupId);return e.targetGroupId!==void 0&&!s?null:{filePath:t,blockStartLine:n,expectedFileHash:r,targetMarker:i,rawBlockHash:a,targetNoteId:o,markerKind:u,targetGroupId:s}}function Eu(e,t){return Array.isArray(e.groupIds)?e.groupIds.filter(n=>typeof n=="string"&&!!t[n]):[]}function _u(e){let t={},n=e??{};for(let r in n){let i=n[r];t[r]=i}return t}function Lu(e){let t={},n=e??{};for(let r in n){let i=n[r];t[r]=i}return t}function Iu(e){let t={},n=e??{};for(let r in n){let i=n[r];t[r]=i}return t}function Xe(e){return typeof e=="number"&&Number.isInteger(e)&&e>0?e:void 0}function Nu(e){return typeof e=="number"&&Number.isInteger(e)&&e>0?e:void 0}function Ye(e){return typeof e=="string"&&e.trim().length>0?e:void 0}function Pu(e){return e==="card-id"||e==="group-gi"?e:void 0}function Ai(e){e.addCommand({id:"sync-current-file-to-anki",name:g("commands.syncCurrentFileToAnki"),callback:()=>{e.runSyncCurrentFile()}}),e.addCommand({id:"sync-vault-to-anki",name:g("commands.syncVaultToAnki"),callback:()=>{e.runSyncVault()}}),e.addCommand({id:"clear-current-file-synced-cards",name:g("commands.clearCurrentFileSyncedCards"),callback:()=>{e.runClearCurrentFileSyncedCards()}}),e.addCommand({id:"cleanup-empty-decks",name:g("commands.cleanupEmptyDecks"),callback:()=>{e.runCleanupEmptyDecks()}})}var Je=require("obsidian");var It=class extends Je.Modal{constructor(n,r){super(n);this.candidateDeckNames=r;this.deckToggles=new Map;this.selectedDeckNames=new Set;this.resolvedValue=null}openAndGetSelection(){return new Promise(n=>{this.resolver=n,this.open()})}onOpen(){let{contentEl:n}=this;n.empty(),n.createEl("h2",{text:g("modal.emptyDeck.title")}),n.createEl("p",{text:g("modal.emptyDeck.description")});for(let i of this.candidateDeckNames)new Je.Setting(n).setName(i).addToggle(a=>{this.deckToggles.set(i,a),a.setValue(!1).onChange(o=>{o?this.selectedDeckNames.add(i):this.selectedDeckNames.delete(i),this.refreshSelectionState()})});let r=new Je.Setting(n).addButton(i=>{i.setButtonText(g("modal.emptyDeck.selectAll")).onClick(()=>{this.selectAllDecks()})}).addButton(i=>{i.setButtonText(g("modal.emptyDeck.clearAll")).onClick(()=>{this.clearSelectedDecks()})}).addButton(i=>{i.setButtonText(g("modal.emptyDeck.invert")).onClick(()=>{this.invertSelectedDecks()})}).addButton(i=>{i.setButtonText(g("modal.emptyDeck.cancel")).onClick(()=>{this.finish(null)})}).addButton(i=>{this.deleteButton=i,i.setButtonText(g("modal.emptyDeck.deleteSelected")).setCta().onClick(()=>{this.finish(Array.from(this.selectedDeckNames))})});this.selectionCountEl=r.settingEl.createSpan({text:this.getSelectionCountText()}),this.selectionCountEl.addClass("anki-helper-empty-deck-selection-count"),this.refreshSelectionState()}onClose(){let n=this.resolver,r=this.resolvedValue;this.contentEl.empty(),this.deckToggles.clear(),this.deleteButton=void 0,this.selectionCountEl=void 0,this.resolver=void 0,this.resolvedValue=null,this.selectedDeckNames.clear(),n?.(r)}finish(n){this.resolvedValue=n,this.close()}selectAllDecks(){this.selectedDeckNames.clear();for(let n of this.candidateDeckNames)this.selectedDeckNames.add(n),this.deckToggles.get(n)?.setValue(!0);this.refreshSelectionState()}clearSelectedDecks(){this.selectedDeckNames.clear();for(let n of this.candidateDeckNames)this.deckToggles.get(n)?.setValue(!1);this.refreshSelectionState()}invertSelectedDecks(){let n=new Set;for(let r of this.candidateDeckNames){let i=!this.selectedDeckNames.has(r);this.deckToggles.get(r)?.setValue(i),i&&n.add(r)}this.selectedDeckNames.clear();for(let r of n)this.selectedDeckNames.add(r);this.refreshSelectionState()}refreshSelectionState(){this.deleteButton?.setDisabled(this.selectedDeckNames.size===0),this.selectionCountEl&&(this.selectionCountEl.textContent=this.getSelectionCountText())}getSelectionCountText(){return g("modal.emptyDeck.selectionCount",{selected:this.selectedDeckNames.size,total:this.candidateDeckNames.length})}};var zn=require("obsidian");var Nt=class{info(t){new zn.Notice(t,5e3)}error(t){new zn.Notice(t,8e3)}showSyncSummary(t,n){let r=se(),o=[g(t==="currentFile"?"notice.summary.currentFileSync":"notice.summary.vaultSync",{scannedFiles:n.scannedFiles,scannedCards:n.scannedCards,created:n.created,rebuilt:n.rebuilt,updated:n.updated,migratedNoteTypes:n.migratedNoteTypes,migratedDecks:n.migratedDecks,orphaned:n.orphaned,uploadedMedia:n.uploadedMedia,skippedUnchangedCards:n.skippedUnchangedCards})];n.markerWriteConflictFiles.length>0&&o.push(g("notice.summary.markerWriteConflicts",{files:de(r,n.markerWriteConflictFiles)})),n.warnings.length>0&&o.push(g("notice.summary.warningsCount",{count:n.warnings.length})),this.info(o.join(" "));for(let u of n.warnings.slice(0,3))this.info(this.renderDeckWarning(u))}showClearCurrentFileSummary(t){let n=se(),r=[g("notice.summary.clearCurrentFile",{trackedCards:t.trackedCards,trackedGroups:t.trackedGroups,deletedNotes:t.deletedNotes,removedMarkers:t.removedMarkers,removedCardMarkers:t.removedCardMarkers,removedGroupMarkers:t.removedGroupMarkers,deletedLocalRecords:t.deletedLocalRecords})];t.conflictFiles.length>0&&r.push(g("notice.summary.markerRemovalConflicts",{files:de(n,t.conflictFiles)})),t.failureFiles.length>0&&r.push(g("notice.summary.failures",{items:oi(t.failureFiles)})),this.info(r.join(" "))}showCleanupEmptyDecksSummary(t){let n=se(),r=[g("notice.summary.cleanupEmptyDecks",{candidateCount:t.candidateCount,selectedCount:t.selectedCount,deletedCount:t.deletedCount,skippedCount:t.skippedDeckNames.length})];t.skippedDeckNames.length>0&&r.push(g("notice.summary.skippedDecks",{decks:de(n,t.skippedDeckNames)})),this.info(r.join(" "))}renderDeckWarning(t){return g(Ru(t.code),t.params)}};function Ru(e){switch(e){case"deck_conflict_yaml_body":return"warnings.deck.conflictYamlBody";case"deck_multiple_body_declarations":return"warnings.deck.multipleBodyDeclarations";case"deck_invalid_folder_segment":return"warnings.deck.invalidFolderSegment";case"deck_fallback_default":return"warnings.deck.fallbackDefault"}}var G=require("obsidian");function Ei(e){return e==="cloze"}function _i(e){return e==="basic"}var Ne=class{map(t,n,r){return this.mapRenderedCard(t,n,r)}mapRenderedCard(t,n,r){let i=this.getRequiredMapping(t,r);return this.validateMapping(i,n),_i(t.type)?this.mapBasic(t,i):this.mapCloze(t,i)}suggest(t,n,r,i=Date.now()){if(t==="qa-group")throw new Error("QaGroupFieldMappingService must be used for qa-group mappings.");return Bu(t)?{cardType:t,modelName:n,loadedFieldNames:[...r],titleField:Pt(r,["Front","Title"])??r[0],bodyField:Pt(r,["Back","Body","Answer"])??r.find(a=>a!==(Pt(r,["Front","Title"])??r[0])),loadedAt:i}:{cardType:t,modelName:n,loadedFieldNames:[...r],mainField:Pt(r,["Text","Body","Content"])??r[0],loadedAt:i}}validateMapping(t,n){if(!Dn(t)&&!ti(t))throw new Error("QaGroupFieldMappingService validates qa-group mappings.");let r=new Set(n.fieldNames);if(Dn(t)){if(!t.titleField||!t.bodyField)throw new S(Li(t.cardType),{modelName:t.modelName});if(t.titleField===t.bodyField)throw new S(qu(),{modelName:t.modelName});let i=[t.titleField,t.bodyField].filter(a=>!r.has(a));if(i.length>0)throw new S("errors.noteFieldMapping.stale",{modelName:t.modelName,fields:i.map(a=>`"${a}"`)});return}if(!t.mainField)throw new S("errors.noteFieldMapping.incompleteSavedMapping.cloze",{modelName:t.modelName});if(!r.has(t.mainField))throw new S("errors.noteFieldMapping.stale",{modelName:t.modelName,fields:[`"${t.mainField}"`]})}mapBasic(t,n){let r=n.titleField,i=n.bodyField;if(!r||!i)throw new S(Li(t.type),{modelName:t.noteModel});return{[r]:t.renderedFields.title,[i]:t.renderedFields.body}}mapCloze(t,n){if(!n.mainField)throw new S("errors.noteFieldMapping.incompleteSavedMapping.cloze",{modelName:t.noteModel});return{[n.mainField]:`${t.renderedFields.title}<br><hr>${t.renderedFields.body}`}}getRequiredMapping(t,n){let r=n[B(t.type,t.noteModel)];if(!r)throw new S(Gu(t.type),{modelName:t.noteModel});return r}};function Bu(e){return e==="basic"}function Gu(e){return e==="cloze"?"errors.noteFieldMapping.missingSavedMapping.cloze":"errors.noteFieldMapping.missingSavedMapping.basic"}function Li(e){return e==="cloze"?"errors.noteFieldMapping.incompleteSavedMapping.cloze":"errors.noteFieldMapping.incompleteSavedMapping.basic"}function qu(){return"errors.noteFieldMapping.titleBodyMustDiffer.basic"}function Pt(e,t){return e.find(n=>t.some(r=>r.toLowerCase()===n.toLowerCase()))}function Pi(e,t){let n=new Set(Hn(t));return e.map(r=>Bi(r,n,!1))}function Ri(e,t,n,r){let i=zu(e),a=new Set(Hn(t).filter(u=>i.nodeByPath.has(u)));if(!i.nodeByPath.has(n))return Rt(e,Array.from(a));if(r)return Ii(n,a,i.parentByPath)||(Ni(a,n),a.add(n)),Rt(e,Array.from(a));let o=Ii(n,a,i.parentByPath);if(o&&(a.delete(o),o!==n)){let u=i.nodeByPath.get(o);if(u)for(let s of qi(u,n))a.add(s)}return Ni(a,n),Rt(e,Array.from(a))}function Rt(e,t){let n=new Set(Hn(t));return e.flatMap(r=>Gi(r,n).paths)}function Bi(e,t,n){let r=n||t.has(e.path),i=e.children.map(o=>Bi(o,t,r));if(r)return{...e,checked:!0,indeterminate:!1,children:i};let a=i.some(o=>o.checked||o.indeterminate);return{...e,checked:!1,indeterminate:a,children:i}}function Gi(e,t){return t.has(e.path)?{paths:[e.path]}:e.children.length===0?{paths:[]}:{paths:e.children.map(r=>Gi(r,t)).flatMap(r=>r.paths)}}function zu(e){let t=new Map,n=new Map,r=(i,a)=>{t.set(i.path,i),n.set(i.path,a);for(let o of i.children)r(o,i.path)};for(let i of e)r(i,void 0);return{nodeByPath:t,parentByPath:n}}function Ii(e,t,n){let r=e;for(;r;){if(t.has(r))return r;r=n.get(r)}}function Ni(e,t){for(let n of Array.from(e))(n===t||zi(n,t))&&e.delete(n)}function qi(e,t){if(e.path===t)return[];let n=e.children.find(i=>i.path===t||zi(t,i.path));if(!n)return[e.path];let r=[];for(let i of e.children){if(i.path===n.path){r.push(...qi(i,t));continue}r.push(i.path)}return r}function Hn(e){return Array.from(new Set(e.map(t=>Hu(t)).filter(Boolean)))}function Hu(e){return e.trim().replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}function zi(e,t){return e===t||e.startsWith(`${t}/`)}var Hi={key:"settings.scope.loading"},Ou=500,Oi=["card-types","sync-content","deck","scope","commands"],Bt=["basic","qa-group","cloze","cloze-all"],Wu=8,$u=64,Wi="--ahs-settings-page-header-height",Uu="--ahs-settings-sticky-card-gap",Qu=`${$u}px`,Vu=`${Wu}px`,ju="anki-heading-sync-settings",$i="ahs-is-hidden";function w(e,...t){e.classList.add(...t)}function Ku(e,t,n){if(n){e.classList.add(t);return}e.classList.remove(t)}var Gt=class extends G.PluginSettingTab{constructor(n){super(n.app,n);this.noteFieldMappingService=new Ne;this.qaGroupFieldMappingService=new ce;this.availableNoteModels=[];this.draftMappings={};this.loadedModelDetails={};this.debouncedTextSaves=new Map;this.textDraftValues=new Map;this.cardShells=new Map;this.expandedCardIds=new Set;this.expandedFolderPaths=new Set;this.folderTree=[];this.folderTreeStatus=Hi;this.folderTreeLoadPromise=null;this.hasLoadedFolderTree=!1;this.displayInitialized=!1;this.ankiConfigLoading=!1;this.cardTypeStatusOverride=null;this.noteTypeCacheCheckStatus="idle";this.noteTypeCacheCheckPromise=null;this.detectedAnkiNoteTypeCache=null;this.noteTypeCacheCheckToken=0;this.pageHeaderResizeObserver=null;this.scopeNeedsSelectedAncestorExpansion=!0;this.plugin=n}hide(){this.disconnectPageHeaderResizeObserver(),super.hide(),this.displayInitialized=!1,this.cardShells.clear(),this.flushDebouncedTextSaves(),this.cardTypeStatusOverride=null,this.noteTypeCacheCheckStatus="idle",this.noteTypeCacheCheckPromise=null,this.detectedAnkiNoteTypeCache=null,this.noteTypeCacheCheckToken+=1,this.scopeNeedsSelectedAncestorExpansion=!0}display(){let{containerEl:n}=this,r=n.scrollTop;if(n.classList.add(ju),!this.displayInitialized){n.style.setProperty(Wi,Qu),n.style.setProperty(Uu,Vu),n.empty();let i=n.createDiv();i.dataset.settingsPageHeader="true",w(i,"ahs-settings-page-header");let a=i.createDiv();a.dataset.settingsPageHeaderMask="true",w(a,"ahs-settings-page-header-mask");let o=new G.Setting(i).setName(g("settings.pluginTitle")).setHeading();w(o.settingEl,"ahs-settings-page-title-setting"),w(o.nameEl,"ahs-settings-page-title"),this.observePageHeaderHeight(i);let u=n.createDiv();u.dataset.settingsCardsContainer="true",this.initializeCards(u),this.displayInitialized=!0}for(let i of Oi)this.renderCard(i);n.scrollTop=r}markActionButton(n){n.setCta()}initializeCards(n){this.cardShells.clear();for(let r of Oi){let i=n.createDiv();i.dataset.settingsCard=r;let a=i.createEl("button");a.type="button",a.dataset.settingsCardToggle=r,w(a,"ahs-settings-card-toggle"),a.addEventListener("click",()=>{this.toggleCard(r)});let o=i.createDiv();o.dataset.settingsCardBody=r,w(o,"ahs-settings-card-body",$i),this.cardShells.set(r,{cardEl:i,headerEl:a,bodyEl:o})}}toggleCard(n){this.expandedCardIds.has(n)?this.expandedCardIds.delete(n):this.expandedCardIds.add(n),this.renderCard(n)}renderCard(n){let r=this.cardShells.get(n);if(!r)return;let i=this.expandedCardIds.has(n);if(r.headerEl.textContent=`${i?"\u25BE":"\u25B8"} ${this.getCardTitle(n)}`,r.headerEl.setAttr("aria-expanded",String(i)),Ku(r.bodyEl,$i,!i),r.bodyEl.empty(),!!i){if(n==="card-types"){this.renderCardTypesCard(r.bodyEl);return}if(n==="sync-content"){this.renderSyncContentCard(r.bodyEl);return}if(n==="scope"){this.renderScopeCard(r.bodyEl);return}if(n==="deck"){this.renderDeckCard(r.bodyEl);return}this.renderCommandsCard(r.bodyEl)}}observePageHeaderHeight(n){this.disconnectPageHeaderResizeObserver(),this.updatePageHeaderHeight(n),!(typeof ResizeObserver>"u")&&(this.pageHeaderResizeObserver=new ResizeObserver(()=>{this.updatePageHeaderHeight(n)}),this.pageHeaderResizeObserver.observe(n))}updatePageHeaderHeight(n){let r=n.getBoundingClientRect().height;!Number.isFinite(r)||r<=0||this.containerEl.style.setProperty(Wi,`${Math.round(r)}px`)}disconnectPageHeaderResizeObserver(){this.pageHeaderResizeObserver?.disconnect(),this.pageHeaderResizeObserver=null}renderCardTypesCard(n){this.hydrateVisibleCardTypeCaches(),this.maybeStartNoteTypeCacheCheck();let r=n.createDiv();w(r,"ahs-settings-action-row");let i=new G.ButtonComponent(r).setButtonText(this.ankiConfigLoading?g("settings.cards.cardTypes.loadAnki.loading"):g("settings.cards.cardTypes.loadAnki.button")).setCta().setDisabled(this.ankiConfigLoading).onClick(()=>this.loadAnkiCardTypeConfig());i.buttonEl.dataset.cardTypesRefresh="true",r.createSpan({text:`${g("settings.cards.cardTypes.statusLabel")}${Le(this.getCardTypeStatusMessage())}`});let a=n.createDiv();a.dataset.cardTypeList="true",w(a,"ahs-settings-card-list");for(let o of Bt)this.renderCardTypeBlock(a,o)}renderCardTypeBlock(n,r){let i=this.plugin.settings.cardTypeConfigs[r],a=n.createDiv();a.dataset.cardTypeConfig=r,w(a,"ahs-settings-card-type-block");let o=a.createDiv();w(o,"ahs-settings-card-type-header");let u=o.createEl("input");u.type="checkbox",u.checked=i.enabled,u.dataset.cardTypeEnabled=r,u.addEventListener("change",()=>{this.saveCardTypeConfig(r,{enabled:u.checked})});let s=o.createEl("strong",{text:this.getCardTypeLabel(r)});w(s,"ahs-settings-card-type-title");let d=a.createDiv();w(d,"ahs-settings-recognition-row");let c=this.createInlineControlGroup(d,g("settings.cards.cardTypes.labels.headingLevel")),l=this.createSelect(c,`card-type-heading:${r}`);l.dataset.cardTypeHeading=r,w(l,"ahs-settings-heading-select");for(let b=1;b<=6;b+=1)this.appendOption(l,String(b),`H${b}`);l.value=String(i.headingLevel),l.addEventListener("change",()=>{this.saveCardTypeConfig(r,{headingLevel:Number(l.value)})});let m=this.createInlineControlGroup(d,g("settings.cards.cardTypes.labels.extraMarker")).createEl("input");if(m.type="text",m.dataset.cardTypeMarker=r,m.placeholder=g("settings.cards.cardTypes.markerPlaceholder"),w(m,"ahs-settings-marker-input"),m.value=this.getDraftValue(`card-type-marker:${r}`,i.extraMarker),m.addEventListener("input",()=>{this.scheduleDebouncedTextSave(`card-type-marker:${r}`,m.value,async b=>{await this.saveCardTypeConfig(r,{extraMarker:b})&&this.textDraftValues.delete(`card-type-marker:${r}`)})}),r==="cloze-all"){let b=a.createEl("p",{text:g("settings.cards.cardTypes.sharedClozeMappingHint")});b.dataset.cardTypeSharedHint=r,w(b,"ahs-settings-muted-text");return}let p=a.createDiv();w(p,"ahs-settings-grid-row");let F=this.createGridControlSlot(p,g("settings.cards.cardTypes.labels.noteType")),k=this.createSelect(F,`card-type-note-type:${r}`);k.dataset.cardTypeNoteType=r,this.applyFluidEllipsis(k);for(let b of this.getSelectableNoteModels(i.noteType))this.appendOption(k,b,b);k.value=i.noteType,k.disabled=this.ankiConfigLoading,k.addEventListener("change",()=>{this.saveCardTypeConfig(r,{noteType:k.value})}),this.renderCardTypeFieldControls(p,r)}renderCardTypeFieldControls(n,r){if(r==="qa-group"){this.renderQaGroupFieldControls(n,r);return}let i=this.getCurrentMappingForConfig(r);if(r==="cloze"){let c=this.createGridControlSlot(n,g("settings.cards.cardTypes.labels.mainField")),l=this.createFieldSelect(c,`card-type-question-field:${r}`),f=i&&"mainField"in i?i:void 0;l.dataset.cardTypeQuestionField=r,this.applyFluidEllipsis(l),this.populateFieldSelect(l,f?.loadedFieldNames??[],f?.mainField),l.addEventListener("change",()=>{this.saveFieldMapping(r,{mainField:l.value||void 0})});return}let a=this.createGridControlSlot(n,g("settings.cards.cardTypes.labels.questionField")),o=this.createFieldSelect(a,`card-type-question-field:${r}`),u=i&&"bodyField"in i?i:void 0;o.dataset.cardTypeQuestionField=r,this.applyFluidEllipsis(o),this.populateFieldSelect(o,u?.loadedFieldNames??[],u?.titleField),o.addEventListener("change",()=>{this.saveFieldMapping(r,{titleField:o.value||void 0})});let s=this.createGridControlSlot(n,g("settings.cards.cardTypes.labels.answerField")),d=this.createFieldSelect(s,`card-type-answer-field:${r}`);d.dataset.cardTypeAnswerField=r,this.applyFluidEllipsis(d),this.populateFieldSelect(d,u?.loadedFieldNames??[],u?.bodyField),d.addEventListener("change",()=>{this.saveFieldMapping(r,{bodyField:d.value||void 0})})}renderQaGroupFieldControls(n,r){let i=this.plugin.settings.cardTypeConfigs[r].noteType.trim(),a=this.getQaGroupFieldState(r),o=a.mapping?this.getQaGroupSelectedFields(a.mapping):void 0,u=this.createGridControlSlot(n,g("settings.cards.cardTypes.labels.qaGroupTitleField"));if(a.mapping){let l=this.createFieldSelect(u,`card-type-qa-group-title-field:${r}`);l.dataset.qaGroupTitleField=r,this.applyFluidEllipsis(l),this.populateFieldSelect(l,a.mapping.loadedFieldNames,a.mapping.titleField);let f=n.createDiv();f.dataset.qaGroupPairRow=r,w(f,"ahs-settings-qa-group-pair-row");let m=this.createGridControlSlot(f,g("settings.cards.cardTypes.labels.qaGroupFirstQuestionField")),p=this.createFieldSelect(m,`card-type-qa-group-first-question-field:${r}`);p.dataset.qaGroupFirstQuestionField=r,this.applyFluidEllipsis(p),this.populateFieldSelect(p,a.mapping.loadedFieldNames,o?.firstQuestionField);let F=this.createGridControlSlot(f,g("settings.cards.cardTypes.labels.qaGroupFirstAnswerField")),k=this.createFieldSelect(F,`card-type-qa-group-first-answer-field:${r}`);k.dataset.qaGroupFirstAnswerField=r,this.applyFluidEllipsis(k),this.populateFieldSelect(k,a.mapping.loadedFieldNames,o?.firstAnswerField);let b=()=>{this.saveQaGroupFieldSelection(r,{titleField:l.value||void 0,firstQuestionField:p.value||void 0,firstAnswerField:k.value||void 0})};l.addEventListener("change",b),p.addEventListener("change",b),k.addEventListener("change",b);let x=f.createSpan({text:g("settings.cards.cardTypes.qaGroup.configuredSlots",{count:a.mapping.slots.length})});x.dataset.qaGroupSlotSummary=r,w(x,"ahs-settings-nowrap-start"),this.applyFluidEllipsis(x)}else{u.createSpan({text:i.length>0?g("settings.cards.cardTypes.qaGroup.unavailable"):g("settings.cards.cardTypes.qaGroup.noModel")}).dataset.qaGroupTitleField=r;let l=n.createDiv();l.dataset.qaGroupPairRow=r,w(l,"ahs-settings-qa-group-pair-row");let f=this.createGridControlSlot(l,g("settings.cards.cardTypes.labels.qaGroupFirstQuestionField"));f.createSpan({text:i.length>0?g("settings.cards.cardTypes.qaGroup.unavailable"):g("settings.cards.cardTypes.qaGroup.noModel")}).dataset.qaGroupFirstQuestionField=r;let m=this.createGridControlSlot(l,g("settings.cards.cardTypes.labels.qaGroupFirstAnswerField"));m.createSpan({text:i.length>0?g("settings.cards.cardTypes.qaGroup.unavailable"):g("settings.cards.cardTypes.qaGroup.noModel")}).dataset.qaGroupFirstAnswerField=r;let p=l.createSpan({text:i.length>0?g("settings.cards.cardTypes.qaGroup.unavailable"):g("settings.cards.cardTypes.qaGroup.noModel")});p.dataset.qaGroupSlotSummary=r,w(p,"ahs-settings-nowrap-start"),this.applyFluidEllipsis(p)}if(a.error){let l=n.createDiv({text:Le(a.error)});l.dataset.qaGroupError=r,w(l,"ahs-settings-grid-full");return}if(!a.mapping||a.mapping.warnings.length===0)return;let s=n.createDiv();s.dataset.qaGroupWarnings=r,w(s,"ahs-settings-grid-full","ahs-settings-warnings"),s.createEl("strong",{text:g("settings.cards.cardTypes.labels.qaGroupWarnings")});for(let l of a.mapping.warnings)s.createDiv({text:this.renderQaGroupWarning(l)}).dataset.qaGroupWarning=r;let d=s.createEl("label");w(d,"ahs-settings-inline-check");let c=d.createEl("input");c.type="checkbox",c.checked=Ln(a.mapping.warnings,a.mapping.acceptedWarnings),c.dataset.qaGroupWarningAccept=r,c.addEventListener("change",()=>{this.saveQaGroupWarningAcceptance(r,c.checked)}),d.createSpan({text:g("settings.cards.cardTypes.qaGroup.acceptWarnings")})}renderSyncContentCard(n){let r=this.createSyncContentSection(n,"body-range",g("settings.cards.syncContent.sections.bodyRange"));new G.Setting(r).setName(g("settings.cardAnswerCutoffMode.name")).setDesc(g("settings.cardAnswerCutoffMode.desc")).addDropdown(u=>{u.addOption("heading-block",g("settings.cardAnswerCutoffMode.options.headingBlock")),u.addOption("double-blank-lines",g("settings.cardAnswerCutoffMode.options.doubleBlankLines")),u.setValue(this.plugin.settings.cardAnswerCutoffMode).onChange(s=>{this.plugin.updateSettings({cardAnswerCutoffMode:s})})});let i=this.createSyncContentSection(n,"backlink",g("settings.cards.syncContent.sections.backlink"));new G.Setting(i).setName(g("settings.syncOptions.addObsidianBacklink.name")).setDesc(g("settings.syncOptions.addObsidianBacklink.desc")).addToggle(u=>{u.setValue(this.plugin.settings.addObsidianBacklink).onChange(s=>{this.plugin.updateSettings({addObsidianBacklink:s})})}),new G.Setting(i).setName(g("settings.syncOptions.obsidianBacklinkLabel.name")).setDesc(g("settings.syncOptions.obsidianBacklinkLabel.desc")).addText(u=>{u.setPlaceholder(g("settings.syncOptions.obsidianBacklinkLabel.placeholder")).setValue(this.getDraftValue("obsidian-backlink-label",this.plugin.settings.obsidianBacklinkLabel)).onChange(s=>{this.scheduleDebouncedTextSave("obsidian-backlink-label",s,async d=>{let c=d.trim();await this.plugin.updateSettings({obsidianBacklinkLabel:c||Ke}),this.textDraftValues.delete("obsidian-backlink-label")})})}),new G.Setting(i).setName(g("settings.syncOptions.obsidianBacklinkPlacement.name")).setDesc(g("settings.syncOptions.obsidianBacklinkPlacement.desc")).addDropdown(u=>{u.addOption("question-last-line",g("settings.syncOptions.obsidianBacklinkPlacement.options.questionLastLine")),u.addOption("answer-first-line",g("settings.syncOptions.obsidianBacklinkPlacement.options.answerFirstLine")),u.addOption("answer-last-line",g("settings.syncOptions.obsidianBacklinkPlacement.options.answerLastLine")),u.setValue(this.plugin.settings.obsidianBacklinkPlacement).onChange(s=>{this.plugin.updateSettings({obsidianBacklinkPlacement:s})})});let a=this.createSyncContentSection(n,"tags",g("settings.cards.syncContent.sections.tags"));new G.Setting(a).setName(g("settings.syncOptions.syncObsidianTagsToAnki.name")).setDesc(g("settings.syncOptions.syncObsidianTagsToAnki.desc")).addToggle(u=>{u.setValue(this.plugin.settings.syncObsidianTagsToAnki).onChange(s=>{this.plugin.updateSettings({syncObsidianTagsToAnki:s})})}),new G.Setting(a).setName(g("settings.syncOptions.keepPureTagLinesInCardBody.name")).setDesc(g("settings.syncOptions.keepPureTagLinesInCardBody.desc")).addToggle(u=>{u.setValue(this.plugin.settings.keepPureTagLinesInCardBody).onChange(s=>{this.plugin.updateSettings({keepPureTagLinesInCardBody:s})})});let o=this.createSyncContentSection(n,"cloze-special",g("settings.cards.syncContent.sections.clozeSpecial"));new G.Setting(o).setName(g("settings.syncOptions.highlightsToCloze.name")).setDesc(g("settings.syncOptions.highlightsToCloze.desc")).addToggle(u=>{u.setValue(this.plugin.settings.convertHighlightsToCloze).onChange(s=>{this.plugin.updateSettings({convertHighlightsToCloze:s})})})}createSyncContentSection(n,r,i){let a=n.createDiv();return a.dataset.syncContentSection=r,w(a,"ahs-settings-section"),this.createSectionHeading(a,"syncContentSectionTitle",r,i),a}renderScopeCard(n){if(new G.Setting(n).setName(g("settings.scope.name")).setDesc(Yu(this.plugin.settings.scopeMode)).addDropdown(s=>{s.addOption("all",g("settings.scope.option.all")).addOption("include",g("settings.scope.option.include")).addOption("exclude",g("settings.scope.option.exclude")).setValue(this.plugin.settings.scopeMode).onChange(d=>{d!=="all"&&d!=="include"&&d!=="exclude"||this.updateScopeMode(d)})}),!gt(this.plugin.settings.scopeMode,this.plugin.settings.includeFolders)){let s=n.createEl("p",{text:g("settings.scope.unconfiguredWarning")});s.dataset.scopeWarning="unconfigured",w(s,"ahs-settings-warning-text")}if(this.plugin.settings.scopeMode==="all")return;let r=n.createDiv(),i=new G.ButtonComponent(r).setButtonText(g("settings.cards.scope.refreshFolders")).setCta().setDisabled(!!this.folderTreeLoadPromise).onClick(()=>{this.refreshFolderTree()});if(i.buttonEl.dataset.scopeRefreshFolders="true",this.ensureFolderTreeLoaded(),n.createEl("p",{text:Ju(this.plugin.settings.scopeMode)}),this.folderTreeLoadPromise||this.folderTree.length===0){n.createEl("p",{text:Le(this.folderTreeStatus)});return}this.expandSelectedFolderAncestorsIfNeeded(this.plugin.settings.scopeMode);let a=this.getSelectedFoldersForScopeMode(this.plugin.settings.scopeMode),o=Pi(this.folderTree,a),u=n.createDiv();u.dataset.scopeTree="true",w(u,"ahs-settings-folder-tree");for(let s of o)this.renderFolderNode(u,s,this.plugin.settings.scopeMode,0)}renderDeckCard(n){let r=this.createDeckSection(n,"folder-mapping",g("settings.cards.deck.sections.folderMapping"));new G.Setting(r).setName(g("settings.deck.folderDeckMode.name")).setDesc(g("settings.deck.folderDeckMode.desc")).addDropdown(o=>{this.populateFolderDeckModeDropdown(o,this.plugin.settings.folderDeckMode),o.onChange(u=>{u!=="off"&&u!=="folder"&&u!=="folder-and-file"||this.plugin.updateSettings({folderDeckMode:u})})}),this.renderDeckExampleBlock(r);let i=this.createDeckSection(n,"file-deck",g("settings.cards.deck.sections.fileDeck"));new G.Setting(i).setName(g("settings.deck.fileDeckEnabled.name")).setDesc(g("settings.deck.fileDeckEnabled.desc")).addToggle(o=>{o.setValue(this.plugin.settings.fileDeckEnabled).onChange(async u=>{await this.plugin.updateSettings({fileDeckEnabled:u}),this.renderCard("deck")})}),this.plugin.settings.fileDeckEnabled&&(new G.Setting(i).setName(g("settings.deck.marker.name")).setDesc(g("settings.deck.marker.desc")).addText(o=>{o.setValue(this.getDraftValue("file-deck-marker",this.plugin.settings.fileDeckMarker)).onChange(u=>{this.scheduleDebouncedTextSave("file-deck-marker",u,async s=>{let d=s.trim();if(!d){this.textDraftValues.delete("file-deck-marker"),this.renderCard("deck");return}await this.plugin.updateSettings({fileDeckMarker:d}),this.textDraftValues.delete("file-deck-marker")})})}),new G.Setting(i).setName(g("settings.deck.template.name")).setDesc(g("settings.deck.template.desc")).addText(o=>{o.setValue(this.getDraftValue("file-deck-template",this.plugin.settings.fileDeckTemplate)).onChange(u=>{this.scheduleDebouncedTextSave("file-deck-template",u,async s=>{let d=s.trim();if(!d){this.textDraftValues.delete("file-deck-template"),this.renderCard("deck");return}await this.plugin.updateSettings({fileDeckTemplate:d}),this.textDraftValues.delete("file-deck-template")})})}),new G.Setting(i).setName(g("settings.deck.insertLocation.name")).setDesc(g("settings.deck.insertLocation.desc")).addDropdown(o=>{this.populateFileDeckInsertLocationDropdown(o,this.plugin.settings.fileDeckInsertLocation),o.onChange(u=>{u!=="yaml"&&u!=="body"||this.plugin.updateSettings({fileDeckInsertLocation:u})})}),new G.Setting(i).setName(g("settings.deck.insertTemplate.name")).setDesc(g("settings.deck.insertTemplate.desc")).addButton(o=>{this.markActionButton(o),o.setButtonText(g("settings.deck.insertTemplate.button")).onClick(()=>{this.plugin.insertDeckTemplateToCurrentFile()})}));let a=this.createDeckSection(n,"default-deck",g("settings.cards.deck.sections.defaultDeck"));new G.Setting(a).setName(g("settings.deck.defaultDeck.name")).setDesc(g("settings.deck.defaultDeck.desc")).addText(o=>{o.setValue(this.getDraftValue("default-deck",this.plugin.settings.defaultDeck)).onChange(u=>{this.scheduleDebouncedTextSave("default-deck",u,async s=>{let d=s.trim();if(!d){this.textDraftValues.delete("default-deck"),this.renderCard("deck");return}await this.plugin.updateSettings({defaultDeck:d}),this.textDraftValues.delete("default-deck")})})}),this.createDeckHelperText(a,g("settings.deck.fallbackDesc"),"fallback"),this.createDeckPriorityFooter(n)}renderDeckExampleBlock(n){let r=n.createDiv();r.dataset.deckExampleBlock="true",w(r,"ahs-settings-deck-example-block");let i=r.createEl("strong",{text:g("settings.deck.examplesTitle")});w(i,"ahs-settings-small-title");for(let a of[g("settings.deck.folderExample"),g("settings.deck.folderAndFileExample")]){let o=r.createDiv({text:a});o.dataset.deckExampleRow="true",w(o,"ahs-settings-helper-text")}}createDeckHelperText(n,r,i){let a=n.createDiv({text:r});return a.dataset.deckHelperText=i,w(a,"ahs-settings-helper-text"),a}createDeckPriorityFooter(n){let r=this.createDeckHelperText(n,g("settings.deck.priorityDesc"),"priority");r.dataset.deckPriorityFooter="true",w(r,"ahs-settings-helper-text-priority")}createDeckSection(n,r,i){let a=n.createDiv();return a.dataset.deckSection=r,w(a,"ahs-settings-section"),this.createSectionHeading(a,"deckSectionTitle",r,i),a}renderCommandsCard(n){n.createEl("p",{text:g("settings.cards.commands.desc")});let r=n.createEl("ul");for(let[i,a]of[[g("commands.syncCurrentFileToAnki"),g("settings.cards.commands.items.syncCurrentFile")],[g("commands.syncVaultToAnki"),g("settings.cards.commands.items.syncVault")],[g("commands.clearCurrentFileSyncedCards"),g("settings.cards.commands.items.clearCurrentFile")],[g("commands.cleanupEmptyDecks"),g("settings.cards.commands.items.cleanupDecks")]])r.createEl("li",{text:`${i}: ${a}`})}async saveCardTypeConfig(n,r){let i={...this.plugin.settings.cardTypeConfigs,[n]:{...this.plugin.settings.cardTypeConfigs[n],...r}};try{pe(Ce({...this.plugin.settings,cardTypeConfigs:i}))}catch(a){return this.cardTypeStatusOverride=ye(a,"settings.cards.cardTypes.failedSave"),this.renderCard("card-types"),!1}if(this.cardTypeStatusOverride=null,await this.plugin.updateSettings({cardTypeConfigs:i}),n==="qa-group"&&typeof r.noteType=="string"){await this.syncQaGroupMappingFromCache(i[n].noteType);let a=B("qa-group",i[n].noteType);if(!this.plugin.settings.noteFieldMappings[a]){let o=this.plugin.settings.ankiModelFieldCache[i[n].noteType];if(o){let u=this.qaGroupFieldMappingService.suggest(i[n].noteType,o.fieldNames,o.loadedAt);await this.plugin.updateSettings({noteFieldMappings:{...this.plugin.settings.noteFieldMappings,[a]:u}})}}}return(n==="basic"||n==="cloze")&&typeof r.noteType=="string"&&await this.syncFieldMappingFromCache(n),this.renderCard("card-types"),!0}async saveFieldMapping(n,r){let i=this.getCurrentMappingForConfig(n),a=this.getRuntimeCardType(n),o=this.plugin.settings.cardTypeConfigs[n].noteType,u=B(a,o),s={...i??this.createFallbackMapping(a,o),...r};this.cardTypeStatusOverride=null,this.draftMappings[u]=s,await this.plugin.updateSettings({noteFieldMappings:{...this.plugin.settings.noteFieldMappings,[u]:{...s,loadedFieldNames:[...s.loadedFieldNames]}}}),this.renderCard("card-types")}async loadAnkiCardTypeConfig(){this.noteTypeCacheCheckToken+=1,this.noteTypeCacheCheckPromise=null,this.cardTypeStatusOverride=null,this.noteTypeCacheCheckStatus=this.resolveManualRefreshCacheStatus(),this.ankiConfigLoading=!0,this.renderCard("card-types");try{let n=await this.plugin.listNoteModels(),r=Qi(n);this.availableNoteModels.splice(0,this.availableNoteModels.length,...r);let i=await this.plugin.getModelFieldNamesByModelNames(r),a=Date.now(),o=Object.entries(i).reduce((s,[d,c])=>(s[d]={fieldNames:[...c],loadedAt:a},s),{});await this.plugin.updateSettings({ankiNoteTypeCache:this.getAvailableNoteModels(),ankiModelFieldCache:o}),this.hydrateVisibleCardTypeCaches(o),await this.syncVisibleFieldMappingsFromCache(o),await this.syncQaGroupMappingFromCache(this.plugin.settings.cardTypeConfigs["qa-group"].noteType,o);let u=this.countConfiguredCardTypes(o);this.detectedAnkiNoteTypeCache=[...r],this.noteTypeCacheCheckStatus="same",this.cardTypeStatusOverride={key:"settings.cards.cardTypes.loadedSummary",params:{noteTypeCount:this.availableNoteModels.length,configuredCount:u}}}catch(n){this.cardTypeStatusOverride=ye(n,"settings.cards.cardTypes.failedLoad")}finally{this.ankiConfigLoading=!1,this.renderCard("card-types")}}maybeStartNoteTypeCacheCheck(){if(this.ankiConfigLoading||this.plugin.settings.ankiNoteTypeCache.length===0||this.noteTypeCacheCheckStatus!=="idle"||this.noteTypeCacheCheckPromise)return;this.noteTypeCacheCheckStatus="checking";let n=++this.noteTypeCacheCheckToken,r=this.checkNoteTypeCacheFreshness(n).finally(()=>{this.noteTypeCacheCheckPromise===r&&(this.noteTypeCacheCheckPromise=null),n===this.noteTypeCacheCheckToken&&this.renderCard("card-types")});this.noteTypeCacheCheckPromise=r}async checkNoteTypeCacheFreshness(n){try{let r=Qi(await this.plugin.listNoteModels());if(n!==this.noteTypeCacheCheckToken)return;this.detectedAnkiNoteTypeCache=r,this.noteTypeCacheCheckStatus=Xu(this.plugin.settings.ankiNoteTypeCache,r)?"same":"changed"}catch{if(n!==this.noteTypeCacheCheckToken)return;this.noteTypeCacheCheckStatus="failed"}}getCardTypeStatusMessage(){if(this.ankiConfigLoading)return{key:"settings.cards.cardTypes.loadAnki.loading"};if(this.cardTypeStatusOverride)return this.cardTypeStatusOverride;let n=this.plugin.settings.ankiNoteTypeCache.length;if(n===0)return{key:"settings.cards.cardTypes.cacheEmpty"};let r=this.countConfiguredCardTypes(this.plugin.settings.ankiModelFieldCache);return this.noteTypeCacheCheckStatus==="changed"?{key:"settings.cards.cardTypes.cacheChanged",params:{cachedCount:n,liveCount:this.detectedAnkiNoteTypeCache?.length??n,configuredCount:r}}:this.noteTypeCacheCheckStatus==="failed"?{key:"settings.cards.cardTypes.cacheCheckFailed",params:{noteTypeCount:n,configuredCount:r}}:{key:"settings.cards.cardTypes.cacheSummary",params:{noteTypeCount:n,configuredCount:r}}}resolveManualRefreshCacheStatus(){return this.noteTypeCacheCheckStatus==="changed"||this.noteTypeCacheCheckStatus==="failed"?this.noteTypeCacheCheckStatus:this.plugin.settings.ankiNoteTypeCache.length>0?"same":"idle"}hydrateVisibleCardTypeCaches(n=this.plugin.settings.ankiModelFieldCache){for(let r of Bt)this.hydrateCardTypeCache(r,n)}hydrateCardTypeCache(n,r){let i=this.getRuntimeCardType(n),a=this.plugin.settings.cardTypeConfigs[n].noteType,o=B(i,a),u=r[a];if(!u)return;let s=this.createCachedModelDetails(a,u.fieldNames);this.loadedModelDetails[o]=s,this.seedDraftMapping(i,a,s,u.loadedAt)}async syncVisibleFieldMappingsFromCache(n=this.plugin.settings.ankiModelFieldCache){for(let r of Bt)r==="qa-group"||r==="cloze-all"||await this.syncFieldMappingFromCache(r,n)}async syncFieldMappingFromCache(n,r=this.plugin.settings.ankiModelFieldCache){let i=this.getRuntimeCardType(n),a=this.plugin.settings.cardTypeConfigs[n].noteType.trim(),o=r[a];if(!o)return;let u=B(i,a),s=this.plugin.settings.noteFieldMappings[u]??this.draftMappings[u],d=s?{...s,loadedFieldNames:[...o.fieldNames],loadedAt:o.loadedAt}:this.noteFieldMappingService.suggest(i,a,o.fieldNames,o.loadedAt);this.draftMappings[u]=d,!On(this.plugin.settings.noteFieldMappings[u],d)&&await this.plugin.updateSettings({noteFieldMappings:{...this.plugin.settings.noteFieldMappings,[u]:d}})}createCachedModelDetails(n,r){return{fieldNames:[...r]}}countConfiguredCardTypes(n){return Bt.reduce((r,i)=>{let a=this.plugin.settings.cardTypeConfigs[i];return a.enabled?r+(n[a.noteType]?1:0):r},0)}seedDraftMapping(n,r,i,a=Date.now()){let o=B(n,r),u=this.plugin.settings.noteFieldMappings[o]??this.draftMappings[o];if(n==="qa-group"){if(O(u)){this.draftMappings[o]=this.refreshSavedQaGroupMapping(u,i.fieldNames,a);return}try{this.draftMappings[o]=this.qaGroupFieldMappingService.suggest(r,i.fieldNames,a,void 0,void 0)}catch{delete this.draftMappings[o]}return}if(u){this.draftMappings[o]={...u,loadedFieldNames:[...i.fieldNames],loadedAt:a};return}this.draftMappings[o]=this.noteFieldMappingService.suggest(n,r,i.fieldNames,a)}getSelectableNoteModels(n){let r=this.availableNoteModels.length>0?this.getAvailableNoteModels():[...this.plugin.settings.ankiNoteTypeCache];return r.includes(n)||r.unshift(n),r}getAvailableNoteModels(){return[...this.availableNoteModels]}getCurrentMappingForConfig(n){let r=this.getRuntimeCardType(n),i=this.plugin.settings.cardTypeConfigs[n].noteType,a=B(r,i),o=this.draftMappings[a]??this.plugin.settings.noteFieldMappings[a];if(o)return O(o)?this.cloneQaGroupFieldMapping(o):{...o,loadedFieldNames:[...o.loadedFieldNames]};let u=this.loadedModelDetails[a];if(!u)return;if(r==="qa-group")try{let d=this.plugin.settings.noteFieldMappings[a]??this.draftMappings[a],c=this.qaGroupFieldMappingService.suggest(i,u.fieldNames,Date.now(),O(d)?d.acceptedWarnings:void 0,O(d)?d.titleField:void 0);return this.draftMappings[a]=c,this.cloneQaGroupFieldMapping(c)}catch{return}let s=this.noteFieldMappingService.suggest(r,i,u.fieldNames);return this.draftMappings[a]=s,{...s,loadedFieldNames:[...s.loadedFieldNames]}}createFallbackMapping(n,r){let i=B(n,r),a=this.loadedModelDetails[i];if(a){if(n==="qa-group"){let o=this.plugin.settings.noteFieldMappings[i]??this.draftMappings[i];return this.qaGroupFieldMappingService.suggest(r,a.fieldNames,Date.now(),O(o)?o.acceptedWarnings:void 0,O(o)?o.titleField:void 0)}return this.noteFieldMappingService.suggest(n,r,a.fieldNames)}return n==="qa-group"?{cardType:n,modelName:r,titleField:void 0,slots:[],warnings:[],acceptedWarnings:void 0,derivation:void 0,loadedFieldNames:[],loadedAt:Date.now()}:{cardType:n,modelName:r,loadedFieldNames:[],loadedAt:Date.now()}}async saveQaGroupWarningAcceptance(n,r){let i=this.getCurrentMappingForConfig(n);if(!i||!O(i))return;let a=this.getRuntimeCardType(n),o=B(a,i.modelName),u={...i,slots:i.slots.map(s=>({...s})),warnings:[...i.warnings],acceptedWarnings:r?[...i.warnings]:void 0,loadedFieldNames:[...i.loadedFieldNames]};this.cardTypeStatusOverride=null,this.draftMappings[o]=u,await this.plugin.updateSettings({noteFieldMappings:{...this.plugin.settings.noteFieldMappings,[o]:u}}),this.renderCard("card-types")}async saveQaGroupFieldSelection(n,r){let i=this.plugin.settings.cardTypeConfigs[n].noteType.trim();if(i.length===0)return;let a=B("qa-group",i),o=this.getCurrentMappingForConfig(n),u=o&&O(o)?o.loadedFieldNames:this.loadedModelDetails[a]?.fieldNames??[],s=o&&O(o)?o.loadedAt:Date.now(),d=this.createQaGroupSelectionDraft(i,u,s,r);this.draftMappings[a]=d;try{let c=this.qaGroupFieldMappingService.createMappingFromSelection(i,u,r,s);this.cardTypeStatusOverride=null,this.draftMappings[a]=c,await this.plugin.updateSettings({noteFieldMappings:{...this.plugin.settings.noteFieldMappings,[a]:c}})}catch{this.cardTypeStatusOverride=null,this.renderCard("card-types");return}this.renderCard("card-types")}async syncQaGroupMappingFromCache(n,r=this.plugin.settings.ankiModelFieldCache){let i=n.trim();if(i.length===0)return;let a=r[i];if(!a)return;let o=B("qa-group",i),u=this.plugin.settings.noteFieldMappings[o]??this.draftMappings[o];if(O(u)){let s=this.refreshSavedQaGroupMapping(u,a.fieldNames,a.loadedAt);this.draftMappings[o]=s,On(this.plugin.settings.noteFieldMappings[o],s)||await this.plugin.updateSettings({noteFieldMappings:{...this.plugin.settings.noteFieldMappings,[o]:s}});return}try{let s=this.qaGroupFieldMappingService.suggest(i,a.fieldNames,a.loadedAt,void 0,void 0);this.draftMappings[o]=s,On(this.plugin.settings.noteFieldMappings[o],s)||await this.plugin.updateSettings({noteFieldMappings:{...this.plugin.settings.noteFieldMappings,[o]:s}})}catch{if(delete this.draftMappings[o],this.plugin.settings.noteFieldMappings[o]){let s={...this.plugin.settings.noteFieldMappings};delete s[o],await this.plugin.updateSettings({noteFieldMappings:s})}}}getQaGroupFieldState(n){let r=this.plugin.settings.cardTypeConfigs[n].noteType,i=B("qa-group",r),a=this.draftMappings[i]??this.plugin.settings.noteFieldMappings[i];if(a&&O(a)){if(a.derivation?.mode==="first-pair"){let u=this.getQaGroupSelectedFields(a);try{return{mapping:this.qaGroupFieldMappingService.createMappingFromSelection(r,a.loadedFieldNames,u,a.loadedAt)}}catch(s){return{mapping:this.cloneQaGroupFieldMapping(a),error:ye(s,"settings.cards.cardTypes.failedSave")}}}return{mapping:this.cloneQaGroupFieldMapping(a)}}let o=this.loadedModelDetails[i];if(!o)return{};try{let u=this.plugin.settings.noteFieldMappings[i]??this.draftMappings[i];return{mapping:this.qaGroupFieldMappingService.suggest(r,o.fieldNames,Date.now(),O(u)?u.acceptedWarnings:void 0,O(u)?u.titleField:void 0)}}catch(u){return{error:ye(u,"settings.cards.cardTypes.failedSave")}}}refreshSavedQaGroupMapping(n,r,i){if(n.derivation?.mode==="first-pair")try{return this.qaGroupFieldMappingService.createMappingFromSelection(n.modelName,r,this.getQaGroupSelectedFields(n),i)}catch{return{...this.cloneQaGroupFieldMapping(n),loadedFieldNames:[...r],loadedAt:i}}return{...n,loadedFieldNames:[...r],slots:n.slots.map(a=>({...a})),warnings:[...n.warnings],acceptedWarnings:n.acceptedWarnings?[...n.acceptedWarnings]:void 0,derivation:n.derivation?{...n.derivation}:void 0,loadedAt:i}}cloneQaGroupFieldMapping(n){return{...n,derivation:n.derivation?{...n.derivation}:void 0,loadedFieldNames:[...n.loadedFieldNames],slots:n.slots.map(r=>({...r})),warnings:[...n.warnings],acceptedWarnings:n.acceptedWarnings?[...n.acceptedWarnings]:void 0}}getQaGroupSelectedFields(n){return{titleField:n.titleField,firstQuestionField:n.derivation?.firstQuestionField??n.slots[0]?.questionField,firstAnswerField:n.derivation?.firstAnswerField??n.slots[0]?.answerField}}createQaGroupSelectionDraft(n,r,i,a){let o=a.titleField?.trim()||void 0,u=a.firstQuestionField?.trim()||void 0,s=a.firstAnswerField?.trim()||void 0;return{cardType:"qa-group",modelName:n,titleField:o,slots:[],warnings:[],acceptedWarnings:void 0,derivation:u||s?{mode:"first-pair",firstQuestionField:u,firstAnswerField:s}:void 0,loadedFieldNames:[...r],loadedAt:i}}renderQaGroupWarning(n){let r=ci(n);if(!r)return n;let i=String(r.index).padStart(2,"0");return r.kind==="missing-answer"?g("settings.cards.cardTypes.qaGroup.warning.missingAnswer",{index:i,questionField:r.questionField,answerField:r.answerField}):g("settings.cards.cardTypes.qaGroup.warning.missingQuestion",{index:i,questionField:r.questionField,answerField:r.answerField})}getRuntimeCardType(n){return n==="qa-group"?"qa-group":n==="cloze"||n==="cloze-all"?"cloze":"basic"}ensureFolderTreeLoaded(n=!1){n&&(this.hasLoadedFolderTree=!1,this.folderTree=[]),!(this.hasLoadedFolderTree||this.folderTreeLoadPromise)&&(this.folderTreeStatus=Hi,this.folderTreeLoadPromise=this.plugin.listFolderTree().then(r=>{this.folderTree=r,this.folderTreeStatus=r.length>0?{rawMessage:""}:{key:"settings.scope.empty"},this.requestSelectedFolderAncestorExpansion()}).catch(r=>{this.folderTree=[],this.folderTreeStatus=ye(r,"settings.scope.failedLoad")}).finally(()=>{this.hasLoadedFolderTree=!0,this.folderTreeLoadPromise=null,this.renderCard("scope")}))}refreshFolderTree(){this.expandedFolderPaths.clear(),this.ensureFolderTreeLoaded(!0),this.renderCard("scope")}async updateScopeMode(n){await this.plugin.updateSettings({scopeMode:n}),n!=="all"&&(this.requestSelectedFolderAncestorExpansion(),this.ensureFolderTreeLoaded()),this.renderCard("scope")}async updateFolderSelection(n,r,i){let a=n==="include"?this.plugin.settings.includeFolders:this.plugin.settings.excludeFolders,o=Ri(this.folderTree,a,r,i);if(n==="include"){let u=i?this.plugin.settings.alternateFolderDeckModeFolders:this.plugin.settings.alternateFolderDeckModeFolders.filter(s=>!Zu(s,r));await this.plugin.updateSettings({includeFolders:o,alternateFolderDeckModeFolders:u})}else await this.plugin.updateSettings({excludeFolders:o});this.renderCard("scope")}async updateAlternateFolderDeckModeFolder(n,r){let i=r?this.plugin.settings.alternateFolderDeckModeFolders.includes(n)?[...this.plugin.settings.alternateFolderDeckModeFolders]:[...this.plugin.settings.alternateFolderDeckModeFolders,n]:this.plugin.settings.alternateFolderDeckModeFolders.filter(a=>a!==n);await this.plugin.updateSettings({alternateFolderDeckModeFolders:i}),this.renderCard("scope")}renderFolderNode(n,r,i,a){let o=n.createDiv();o.dataset.folderRow=r.path,w(o,"ahs-settings-folder-row"),o.style.setProperty("--ahs-folder-depth-indent",`${a*18}px`);let u=r.children.length>0,s=u&&this.expandedFolderPaths.has(r.path),d=o.createEl(u?"button":"span");d.dataset.folderToggle=r.path,d.textContent=u?s?"\u25BE":"\u25B8":"",w(d,"ahs-settings-folder-toggle"),u?(w(d,"ahs-settings-folder-toggle-button"),d.setAttr("aria-label",s?g("settings.scope.collapseFolder",{name:r.name}):g("settings.scope.expandFolder",{name:r.name})),d.setAttr("title",s?g("settings.scope.collapseFolder",{name:r.name}):g("settings.scope.expandFolder",{name:r.name})),d.addEventListener("click",()=>{this.expandedFolderPaths.has(r.path)?this.expandedFolderPaths.delete(r.path):this.expandedFolderPaths.add(r.path),this.renderCard("scope")})):w(d,"ahs-settings-folder-toggle-spacer");let c=o.createEl("input");c.type="checkbox",c.checked=r.checked,c.indeterminate=r.indeterminate,c.dataset.folderPath=r.path,w(c,"ahs-settings-folder-checkbox"),c.addEventListener("change",()=>{this.updateFolderSelection(i,r.path,c.checked)});let l=o.createDiv();w(l,"ahs-settings-folder-label-stack");let f=l.createDiv();w(f,"ahs-settings-folder-label-inline");let m=f.createSpan({text:r.name});if(m.dataset.folderPathLabel=r.path,w(m,"ahs-settings-folder-label"),this.applyFluidEllipsis(m),i==="include"&&r.checked&&this.plugin.settings.folderDeckMode!=="off"){let F=f.createEl("input"),k=g("settings.scope.folderDeckModeOverride.ariaLabel",{name:r.name}),b=this.getFolderDeckModeOverrideTitle(),x=this.plugin.settings.alternateFolderDeckModeFolders.includes(r.path);if(F.type="checkbox",F.checked=x,F.dataset.folderDeckModeOverride=r.path,F.setAttr("aria-label",k),F.setAttr("title",b),w(F,"ahs-settings-folder-override-checkbox"),F.addEventListener("click",C=>{C?.stopPropagation()}),F.addEventListener("change",()=>{this.updateAlternateFolderDeckModeFolder(r.path,F.checked)}),x){let C=f.createSpan({text:this.getFolderDeckModeOverrideHint()});C.dataset.folderDeckModeOverrideHint=r.path,w(C,"ahs-settings-folder-override-hint")}}if(!u||!s)return;let p=n.createDiv();p.dataset.folderChildren=r.path,w(p,"ahs-settings-folder-children");for(let F of r.children)this.renderFolderNode(p,F,i,a+1)}requestSelectedFolderAncestorExpansion(){this.scopeNeedsSelectedAncestorExpansion=!0}expandSelectedFolderAncestorsIfNeeded(n){if(this.scopeNeedsSelectedAncestorExpansion){this.scopeNeedsSelectedAncestorExpansion=!1;for(let r of this.getSelectedFoldersForScopeMode(n))for(let i of es(r))this.expandedFolderPaths.add(i)}}getSelectedFoldersForScopeMode(n){return n==="include"?this.plugin.settings.includeFolders:this.plugin.settings.excludeFolders}getFolderDeckModeOverrideHint(){return this.plugin.settings.folderDeckMode==="folder"?g("settings.scope.folderDeckModeOverride.hint.folderAndFile"):g("settings.scope.folderDeckModeOverride.hint.folder")}getFolderDeckModeOverrideTitle(){return this.plugin.settings.folderDeckMode==="folder"?g("settings.scope.folderDeckModeOverride.title.folderAndFile"):g("settings.scope.folderDeckModeOverride.title.folder")}createInlineControlGroup(n,r){let i=n.createEl("label");w(i,"ahs-settings-inline-control-group");let a=i.createSpan({text:r});return w(a,"ahs-settings-inline-control-label"),i}createGridControlSlot(n,r){let i=n.createEl("label");w(i,"ahs-settings-grid-control-slot");let a=i.createSpan({text:r});w(a,"ahs-settings-grid-control-label");let o=i.createDiv();return w(o,"ahs-settings-grid-control-content"),o}applyFluidEllipsis(n){let r=(n.tagName||n.tag||"").toLowerCase(),i=r==="select"||r==="input";w(n,"ahs-settings-fluid-ellipsis"),i&&w(n,"ahs-settings-fluid-control")}createSectionHeading(n,r,i,a){let o=n.createDiv(),u=new G.Setting(o).setName(a).setHeading();u.settingEl.dataset[r]=i,u.nameEl.dataset[r]=i,w(u.settingEl,"ahs-settings-section-heading")}scheduleDebouncedTextSave(n,r,i){let a=window.activeWindow;this.textDraftValues.set(n,r);let o=this.debouncedTextSaves.get(n);o&&a.clearTimeout(o.timer);let u=a.setTimeout(()=>{this.flushDebouncedTextSave(n)},Ou);this.debouncedTextSaves.set(n,{timer:u,saveAction:i})}async flushDebouncedTextSave(n){let r=window.activeWindow,i=this.debouncedTextSaves.get(n);i&&(r.clearTimeout(i.timer),this.debouncedTextSaves.delete(n),await i.saveAction(this.textDraftValues.get(n)??""))}async flushDebouncedTextSaves(){let n=[...this.debouncedTextSaves.keys()];await Promise.allSettled(n.map(r=>this.flushDebouncedTextSave(r)))}getDraftValue(n,r){return this.textDraftValues.get(n)??r}createSelect(n,r){let i=n.createEl("select");return i.dataset.selectKey=r,i}createFieldSelect(n,r){return this.createSelect(n,r)}appendOption(n,r,i){let a=n.createEl("option",{text:i});a.value=r}populateFieldSelect(n,r,i){n.empty(),this.appendOption(n,"",r.length>0?g("settings.mapping.selectFieldPlaceholder"):g("settings.cards.cardTypes.fieldsUnavailable"));for(let a of r)this.appendOption(n,a,a);n.value=i??""}populateFileDeckInsertLocationDropdown(n,r){n.addOption("body",g("settings.deck.insertLocation.options.body")),n.addOption("yaml",g("settings.deck.insertLocation.options.yaml")),n.setValue(r)}populateFolderDeckModeDropdown(n,r){n.addOption("off",g("settings.deck.folderDeckMode.options.off")),n.addOption("folder",g("settings.deck.folderDeckMode.options.folder")),n.addOption("folder-and-file",g("settings.deck.folderDeckMode.options.folderAndFile")),n.setValue(r)}getCardTitle(n){return n==="card-types"?g("settings.cards.cardTypes.title"):n==="sync-content"?g("settings.cards.syncContent.title"):n==="scope"?g("settings.cards.scope.title"):n==="deck"?g("settings.cards.deck.title"):g("settings.cards.commands.title")}getCardTypeLabel(n){return n==="basic"?g("settings.cards.cardTypes.rows.basic"):n==="qa-group"?g("settings.cards.cardTypes.rows.qaGroup"):n==="cloze"?g("settings.cards.cardTypes.rows.cloze"):n==="cloze-all"?g("settings.cards.cardTypes.rows.clozeAll"):g("settings.cards.cardTypes.rows.qaGroup")}};function Ui(e){return e.trim().replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}function Zu(e,t){let n=Ui(e),r=Ui(t);return n===r||n.startsWith(`${r}/`)}function Yu(e){return e==="include"?g("settings.scope.summary.include"):e==="exclude"?g("settings.scope.summary.exclude"):g("settings.scope.summary.all")}function On(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Qi(e){let t=new Set;for(let n of e){if(typeof n!="string")continue;let r=n.trim();r.length>0&&t.add(r)}return[...t].sort((n,r)=>n.localeCompare(r))}function Xu(e,t){return e.length!==t.length?!1:e.every((n,r)=>n===t[r])}function Ju(e){return e==="include"?g("settings.scope.treeDescription.include"):g("settings.scope.treeDescription.exclude")}function es(e){let t=e.split("/").filter(r=>r.length>0),n=[];for(let r=1;r<t.length;r+=1)n.push(t.slice(0,r).join("/"));return n}function qt(e){let t=ns(Vi(e.error));return new S(ts(e.error)?"errors.noteTypeMigration.unsupported":"errors.noteTypeMigration.failed",{noteId:e.noteId,fromModel:e.fromModel,toModel:e.toModel,reason:t,location:e.location?` (${e.location})`:""})}function ts(e){let t=Vi(e).toLowerCase();return t.includes("updatenotemodel")&&(t.includes("unsupported action")||t.includes("unknown action")||t.includes("not supported")||t.includes("unsupported"))}function ns(e){return e.replace(/^AnkiConnect updateNoteModel failed(?: for note \d+(?: to model .+?)?)?:\s*/i,"").trim()}function Vi(e){return e instanceof Error&&e.message.trim().length>0?e.message.trim():String(e)}var zt=class{async runCollectBatches(t,n,r,i){if(t.length===0)return[];let a=rs(t,n),o=[],u=0;return await Promise.all(Array.from({length:Math.min(r,a.length)},async()=>{for(;u<a.length;){let s=u;u+=1,o[s]=await i(a[s])}})),o.flat()}async runVoidBatches(t,n,r,i){await this.runCollectBatches(t,n,r,async a=>(await i(a),[]))}};function rs(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function Ht(e){let t=[],n=new Set;for(let r of e??[])typeof r!="string"||r.length===0||n.has(r)||(n.add(r),t.push(r));return t}function ji(e,t){let n=Ht(e),r=Ht(t);if(n.length!==r.length)return!1;let i=new Set(r);return n.every(a=>i.has(a))}function et(e,t){let n=Ht(e),r=Ht(t),i=new Set(n),a=new Set(r);return{addTags:n.filter(o=>!a.has(o)),removeTags:r.filter(o=>!i.has(o))}}var Ot=class{constructor(t,n=new Ne,r=new zt){this.ankiGateway=t;this.noteFieldMappingService=n;this.batchScheduler=r}async execute(t,n,r,i){let a=new Map,o=new Map,u=new Set,s=new Map,d=0,c=0,l=0,f=0,m=0,p=Array.from(new Set([...t.toRebuild,...t.toUpdate,...t.toVerifyDeck,...t.toRewriteMarker,...t.toChangeDeck].flatMap(y=>y.noteId?[y.noteId]:[]))),F=await this.batchScheduler.runCollectBatches(p,100,1,y=>this.ankiGateway.getNoteSummaries(y)),k=new Map(F.map(y=>[y.noteId,y])),b=[],x=[],C=[],h=[],M=[],T=new Set(t.toChangeDeck.map(y=>y.card.syncKey));for(let y of t.toCreate)b.push(await this.requireRenderedCard(y,n,r));for(let y of t.toRebuild){if(y.noteId&&k.has(y.noteId)){x.push({plannedCard:y,renderedCard:await this.requireRenderedCard(y,n,r)});continue}b.push(await this.requireRenderedCard(y,n,r)),s.set(y.card.syncKey,y)}for(let y of t.toUpdate){if(y.noteId&&k.has(y.noteId)){let v=await this.requireRenderedCard(y,n,r),_=k.get(y.noteId);_&&_.modelName!==v.noteModel?h.push({plannedCard:y,renderedCard:v,summary:_}):C.push({plannedCard:y,renderedCard:v});continue}b.push(await this.requireRenderedCard(y,n,r)),s.set(y.card.syncKey,y)}for(let y of t.toRewriteMarker)if(!s.has(y.card.syncKey)){if(y.noteId&&k.has(y.noteId)){s.set(y.card.syncKey,y),o.set(y.card.syncKey,y.noteId);continue}b.push(await this.requireRenderedCard(y,n,r)),s.set(y.card.syncKey,y)}for(let y of t.toVerifyDeck){if(!y.noteId)continue;let v=k.get(y.noteId);v&&is(v,y.deck,T.has(y.card.syncKey))&&(M.push(y),o.set(y.card.syncKey,y.noteId))}await this.batchScheduler.runVoidBatches(Array.from(new Set([...b.map(y=>y.deck),...x.map(y=>y.renderedCard.deck),...M.map(y=>y.deck)])),50,1,y=>this.ankiGateway.ensureDecks(y));let D=await this.uploadMedia([...b,...x.map(y=>y.renderedCard),...C.map(y=>y.renderedCard),...h.map(y=>y.renderedCard)]),I=await this.batchScheduler.runCollectBatches(b,50,1,async y=>this.ankiGateway.addNotes(await Promise.all(y.map(async v=>({deckName:v.deck,modelName:v.noteModel,fields:await this.mapFields(v,i,a),tags:v.card.tagsHint})))));for(let y=0;y<b.length;y+=1){let v=b[y],_=I[y];d+=1,u.add(v.card.syncKey),o.set(v.card.syncKey,_);let L=s.get(v.card.syncKey);s.set(v.card.syncKey,{...L??{card:v.card,deck:v.deck,noteModel:v.noteModel,renderConfigHash:v.renderConfigHash},noteId:_})}for(let{plannedCard:y,renderedCard:v}of x){let _=await this.mapFields(v,i,a),[L]=await this.ankiGateway.addNotes([{deckName:v.deck,modelName:v.noteModel,fields:_,tags:v.card.tagsHint}]);try{await this.ankiGateway.deleteNotes([y.noteId??0])}catch(P){try{await this.ankiGateway.deleteNotes([L])}catch(q){let be=Ki(P),N=Ki(q);throw new Error(`Failed to rebuild note ${y.noteId}: ${be.message}; rollback failed: ${N.message}`)}throw P}c+=1,u.add(v.card.syncKey),o.set(v.card.syncKey,L),s.set(v.card.syncKey,{...y,noteId:L})}await this.batchScheduler.runVoidBatches(C,50,1,async y=>{await this.ankiGateway.updateNotes(await Promise.all(y.map(async({plannedCard:v,renderedCard:_})=>({noteId:v.noteId??0,fields:await this.mapFields(_,i,a)}))))}),await this.batchScheduler.runVoidBatches(h,25,1,async y=>{for(let{plannedCard:v,renderedCard:_,summary:L}of y){let P=await this.mapFields(_,i,a);try{await this.ankiGateway.updateNoteModel({noteId:v.noteId??0,modelName:_.noteModel,fields:P})}catch(q){throw qt({noteId:v.noteId??0,fromModel:L.modelName,toModel:_.noteModel,error:q,location:`${v.card.filePath}:${v.card.blockStartLine}`})}}});let A=[...C,...h].flatMap(({plannedCard:y})=>{if(!y.noteId)return[];let v=k.get(y.noteId);if(!v)return[];let _=et(y.card.tagsHint,v.tags);return _.addTags.length===0&&_.removeTags.length===0?[]:[{noteId:y.noteId,addTags:_.addTags,removeTags:_.removeTags}]});await this.batchScheduler.runVoidBatches(A,50,1,y=>this.ankiGateway.syncNoteTags(y)),l+=C.length+h.length,f=h.length;for(let{plannedCard:y}of[...C,...h])y.noteId&&(u.add(y.card.syncKey),o.set(y.card.syncKey,y.noteId));let R=new Map;for(let y of M){let v=y.noteId;if(!v)continue;let _=k.get(v);if(!_||_.cardIds.length===0)continue;let L=R.get(y.deck)??new Set;for(let P of _.cardIds)L.add(P);R.set(y.deck,L)}await this.batchScheduler.runVoidBatches(Array.from(R.entries()).map(([y,v])=>({deckName:y,cardIds:Array.from(v)})),25,1,y=>this.ankiGateway.changeDecks(y)),m=M.length;for(let y of M)u.add(y.card.syncKey);return{created:d,rebuilt:c,updated:l,migratedNoteTypes:f,migratedDecks:m,uploadedMedia:D,markerWrites:Array.from(s.values()).map(y=>({...y,noteId:o.get(y.card.syncKey)??y.noteId})),resolvedNoteIds:o,touchedSyncKeys:u}}async requireRenderedCard(t,n,r){let i=n.get(t.card.syncKey);if(i)return i;let a=await r(t);return n.set(t.card.syncKey,a),a}async mapFields(t,n,r){let i=await this.getModelDetails(t.noteModel,r);return this.noteFieldMappingService.mapRenderedCard({type:t.card.cardType,noteModel:t.noteModel,renderedFields:t.renderedFields},i,n)}async getModelDetails(t,n){let r=n.get(t);if(r)return r;let i=this.ankiGateway.getModelDetails(t).catch(a=>{throw n.delete(t),a});return n.set(t,i),i}async uploadMedia(t){let n=new Map;for(let r of t)for(let i of r.media)n.set(`${i.kind}:${i.absolutePath}:${i.fileName}`,i);return await this.batchScheduler.runVoidBatches(Array.from(n.values()),10,3,r=>this.ankiGateway.storeMediaFiles(r)),n.size}};function Ki(e){return e instanceof Error?e:new Error(String(e))}function is(e,t,n){let r=e.deckNames?.filter(i=>i.length>0)??[];return r.length===0?n:r.some(i=>i!==t)}var Pe=class{filter(t,n,r,i){let a=Wt(r),o=Wt(i);return t.filter(u=>u.path.toLowerCase().endsWith(".md")?this.isPathInScope(u.path,n,a,o):!1)}isPathInScope(t,n,r,i){let a=os(t),o=Wt(r),u=Wt(i);return n==="include"?o.some(s=>Zi(a,s)):n==="exclude"?!u.some(s=>Zi(a,s)):!0}};function Wt(e){return e.map(as).filter(Boolean)}function as(e){return e.trim().replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}function os(e){return e.trim().replace(/\\/g,"/").replace(/^\/+/,"")}function Zi(e,t){return e===t||e.startsWith(`${t}/`)}function $t(e,t,n){return`${e}\0group\0${t}\0${n}`}function Fe(e,t){return`${e}#${t}`}function Qt(e){let t=us(e.lines,e.startLine,e.markerAdapter),n=t.find(o=>o.valid);if(n?.marker){let o=e.lines.slice(0,n.index);return{contentLines:o,trailingLines:cs(e.lines.slice(n.index+1)),contentEndLine:Ut(o,e.startLine,e.fallbackLine),markerLine:e.startLine+n.index,markerIndent:n.indent,marker:n.marker,markerState:"present-valid"}}let r=e.cutoffMode==="double-blank-lines"?ss(e.lines):void 0;if(r){let o=t.find(s=>!s.valid&&s.index>=r.end),u=e.lines.slice(0,r.start);return{contentLines:u,trailingLines:e.lines.slice(r.end),contentEndLine:Ut(u,e.startLine,e.fallbackLine),markerLine:o?e.startLine+o.index:void 0,markerIndent:o?.indent,markerState:o?"present-invalid":"missing"}}let i=ds(e.lines),a=i===void 0?void 0:t.find(o=>!o.valid&&o.index===i);if(a){let o=e.lines.filter((u,s)=>s!==a.index);return{contentLines:o,trailingLines:[],contentEndLine:Ut(o,e.startLine,e.fallbackLine),markerLine:e.startLine+a.index,markerIndent:a.indent,markerState:"present-invalid"}}return{contentLines:e.lines,trailingLines:[],contentEndLine:Ut(e.lines,e.startLine,e.fallbackLine),markerState:"missing"}}function us(e,t,n){let r=[],i=null;for(let a=0;a<e.length;a+=1){let o=e[a],u=o.trim();if(Yi(u)){i=i?null:u.slice(0,3);continue}if(i||!n.isCandidate(o))continue;let s=n.parse(o,t+a);r.push({index:a,indent:ls(o),marker:s??void 0,valid:!!s})}return r}function ss(e){let t=null,n,r=0;for(let i=0;i<e.length;i+=1){let a=e[i]?.trim()??"";if(Yi(a)){if(r>=2&&n!==void 0)return{start:n,end:i};t=t?null:a.slice(0,3),n=void 0,r=0;continue}if(!t){if(!a){n??(n=i),r+=1;continue}if(r>=2&&n!==void 0)return{start:n,end:i};n=void 0,r=0}}if(r>=2&&n!==void 0)return{start:n,end:e.length}}function Ut(e,t,n){for(let r=e.length-1;r>=0;r-=1)if(e[r].trim())return t+r;return n}function ds(e){for(let t=e.length-1;t>=0;t-=1)if(e[t].trim())return t}function cs(e){let t=0;for(;t<e.length&&!e[t].trim();)t+=1;return e.slice(t)}function ls(e){return e.match(/^[ \t]*/)?.[0]??""}function Yi(e){return e.startsWith("```")||e.startsWith("~~~")}var Vt=class{constructor(t=new Z){this.deckNormalizationService=t}extract(t,n="TARGET DECK"){let r=t.content.split(/\r?\n/),i=[],a=ps(r),o=a?this.extractFrontmatterDeck(r.slice(a.start+1,a.end),n):void 0,u=this.extractBodyDeck(r,a?.end!==void 0?a.end+1:0,t.path,n);return i.push(...u.warnings),o&&u.bodyDeck?o===u.bodyDeck?{frontmatterDeck:o,bodyDeck:u.bodyDeck,explicitDeckHint:o,explicitDeckSource:"frontmatter",warnings:i}:(i.push({filePath:t.path,code:"deck_conflict_yaml_body",params:{marker:n}}),{frontmatterDeck:o,bodyDeck:u.bodyDeck,explicitDeckHint:o,explicitDeckSource:"frontmatter",warnings:i}):o?{frontmatterDeck:o,explicitDeckHint:o,explicitDeckSource:"frontmatter",warnings:i}:u.bodyDeck?{bodyDeck:u.bodyDeck,explicitDeckHint:u.bodyDeck,explicitDeckSource:"body",warnings:i}:{warnings:i}}extractFrontmatterDeck(t,n){let r=ms(n);for(let i of t){let a=i.match(r);if(a)return this.deckNormalizationService.normalize(gs(a[1]??""))}}extractBodyDeck(t,n,r,i){let a=[],o=[],u=null,s=hs(i),d=ks(i);for(let c=n;c<t.length;c+=1){let l=t[c],f=l.trim();if(f.startsWith("```")||f.startsWith("~~~")){u=u?null:f.slice(0,3);continue}if(u)continue;let m=l.match(s);if(m){o.push(this.deckNormalizationService.normalize(m[1]??""));continue}if(!d.test(l))continue;let p=fs(t,c+1);p&&o.push(this.deckNormalizationService.normalize(p))}return o.length>1&&a.push({filePath:r,code:"deck_multiple_body_declarations",params:{marker:i}}),{bodyDeck:o[0],warnings:a}}};function ps(e){if(e[0]?.trim()==="---"){for(let t=1;t<e.length;t+=1)if(e[t]?.trim()==="---"||e[t]?.trim()==="...")return{start:0,end:t}}}function fs(e,t){for(let n=t;n<e.length;n+=1){let r=e[n]?.trim()??"";if(r)return r.startsWith("```")||r.startsWith("~~~")?void 0:r}}function gs(e){let t=e.trim();return t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1).trim():t}function ms(e){return new RegExp(`^\\s*${Wn(e)}\\s*:\\s*(.*?)\\s*$`)}function hs(e){return new RegExp(`^\\s*${Wn(e)}\\s*:\\s*(.+?)\\s*$`)}function ks(e){return new RegExp(`^\\s*${Wn(e)}\\s*$`)}function Wn(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var bs=/^([ \t]*)(?:[-+*]|\d+[.)])\s+(.*)$/,jt=class{constructor(t=new X){this.groupMarkerService=t}isQaGroupHeading(t,n){return t.trimEnd().endsWith(n)}parse(t){let n=ys(t.parentHeadingText,t.marker),r=Qt({lines:t.bodyLines,startLine:t.bodyStartLine,fallbackLine:t.bodyStartLine-1,cutoffMode:t.cardAnswerCutoffMode??"heading-block",markerAdapter:this.groupMarkerService}),i=Xi(r.contentLines),a=[];for(let s=0;s<i.length;s+=1){let d=i[s],c=i[s+1],l=Ji(r.contentLines,d.index+1,c?.index??r.contentLines.length,d.indent.length);if(!l)continue;let f=xs(l.rawLines);f&&a.push({title:d.labelMarkdown,answer:f,ordinalInMarkdown:s+1})}let o=$n(r.contentLines.filter(s=>!Ss(s))),u=[`qa-group:${n}`,...a.map(s=>`${s.title}
${s.answer}`),...o].join(`
`).trimEnd();return{stem:n,items:a,markerState:r.markerState,groupMarker:r.marker,contentEndLine:r.contentEndLine,markerLine:r.markerLine,markerIndent:r.markerIndent,rawBlockText:u,rawBlockHash:Q(u)}}};function ys(e,t){let n=e.trimEnd();return n.endsWith(t)?n.slice(0,n.length-t.length).trimEnd():n}function Xi(e){let t=[],n=null;for(let i=0;i<e.length;i+=1){let a=e[i],o=a.trim();if(na(o)){n=n?null:o.slice(0,3);continue}if(n)continue;let u=a.match(bs);u&&t.push({index:i,indent:u[1],labelMarkdown:u[2].trimEnd()})}if(t.length===0)return[];let r=Math.min(...t.map(i=>i.indent.length));return t.filter(i=>i.indent.length===r)}function Ji(e,t,n,r){let i,a=t-1,o=null;for(let u=t;u<n;u+=1){let s=e[u],d=s.trim(),c=ta(s).length,l=!!o;if(i===void 0){if(!d)continue;if(c<=r)return null;i=u}else if(!l&&d&&c<=r)break;a=u,na(d)&&(o=o?null:d.slice(0,3))}return i===void 0?null:{rawLines:e.slice(i,a+1)}}function xs(e){let t=$n(e);if(t.length===0)return"";let n=ea(t),r=Xi(n);return r.length===1&&r[0]?.index===0?Cs(n,r[0]):n.join(`
`).trimEnd()}function Cs(e,t){let n=Ji(e,t.index+1,e.length,t.indent.length);if(!n)return t.labelMarkdown;let r=$n(n.rawLines);return r.length===0?t.labelMarkdown:[t.labelMarkdown,...ea(r)].join(`
`).trimEnd()}function $n(e){let t=0,n=e.length;for(;t<n&&!e[t].trim();)t+=1;for(;n>t&&!e[n-1].trim();)n-=1;return e.slice(t,n)}function ea(e){let t=e.filter(r=>r.trim().length>0).map(r=>ta(r).length),n=t.length>0?Math.min(...t):0;return e.map(r=>r.slice(Math.min(n,r.length)))}function ta(e){return e.match(/^[ \t]*/)?.[0]??""}function na(e){return e.startsWith("```")||e.startsWith("~~~")}function Ss(e){return/^\s*<!--\s*ID:/i.test(e)}var Fs=/^(#{1,6})\s+(.*?)\s*$/,Un=["qa-group","cloze-all","cloze","basic"],Kt=class{constructor(t=new ge,n=new Vt,r=new jt){this.markerService=t;this.deckExtractionService=n;this.qaGroupBlockParser=r}index(t,n){let r=Ms(n);ws(r);let i=t.content.split(/\r?\n/),a=Is(t.content),o=Es(i),u=n.fileDeckEnabled?this.deckExtractionService.extract(t,n.fileDeckMarker??"TARGET DECK"):{warnings:[]},s=As(t,n.syncObsidianTagsToAnki),d=[],c=[],l=Ts(n.knownCards),f=Ds(n.pendingWriteBack),m=new Set,p=new Set,F=n.knownGroupBlocks??[];for(let k=0;k<o.length;k+=1){let b=o[k],x=vs(b.text,b.level,r);if(!x)continue;let C=_s(o,k,i.length),h=i.slice(b.lineIndex+1,C),M=n.cardAnswerCutoffMode??"heading-block";if(x.configId==="qa-group"){let P=x.config.extraMarker,q=this.qaGroupBlockParser.parse({parentHeadingText:b.text,marker:P,bodyLines:h,bodyStartLine:b.lineIndex+2,cardAnswerCutoffMode:M}),be=Fe(t.path,b.text),N=this.resolveGroupIdentity(be,q.rawBlockHash,q.groupMarker?.noteId,F,m,p);N.noteId!==void 0&&m.add(N.noteId),N.groupId&&p.add(N.groupId),c.push({noteId:N.noteId,groupId:N.groupId,syncKey:$t(t.path,b.lineIndex+1,q.rawBlockHash),markerState:q.markerState,identitySource:N.identitySource,filePath:t.path,headingText:b.text,backlinkHeadingText:b.text,headingLevel:b.level,stem:q.stem,src:be,blockStartOffset:a[b.lineIndex]??0,blockEndOffset:C<i.length?a[C]??t.content.length:t.content.length,blockStartLine:b.lineIndex+1,bodyStartLine:b.lineIndex+2,blockEndLine:C,contentEndLine:q.contentEndLine,markerLine:q.markerLine,markerIndent:q.markerIndent,rawBlockText:q.rawBlockText,rawBlockHash:q.rawBlockHash,deckHint:u.explicitDeckHint,deckHintSource:u.explicitDeckSource,deckWarnings:[...u.warnings],tagsHint:[...s],items:q.items,groupMarker:q.groupMarker,freeSlots:q.groupMarker?.freeSlots??N.freeSlots,sourceContent:t.content});continue}let D=x.configId==="cloze"||x.configId==="cloze-all"?"cloze":"basic",I=x.configId==="cloze-all"?"all":x.configId==="cloze"?"sequential":void 0,A=Qt({lines:h,startLine:b.lineIndex+2,fallbackLine:b.lineIndex+1,cutoffMode:M,markerAdapter:this.markerService}),R=Ls(A.contentLines),y=R.join(`
`),v=[i[b.lineIndex],...R].join(`
`).trimEnd(),_=Q(v),L=this.resolveIdentity(t.path,b.lineIndex+1,_,A.marker?.noteId,l,f,m);L.noteId!==void 0&&m.add(L.noteId),d.push({noteId:L.noteId,syncKey:_t(t.path,b.lineIndex+1,_),idMarkerState:A.markerState,noteIdSource:L.noteIdSource,filePath:t.path,cardType:D,clozeMode:I,heading:b.text,backlinkHeadingText:b.text,headingLevel:b.level,bodyMarkdown:y,blockStartOffset:a[b.lineIndex]??0,blockEndOffset:C<i.length?a[C]??t.content.length:t.content.length,blockStartLine:b.lineIndex+1,bodyStartLine:b.lineIndex+2,blockEndLine:C,contentEndLine:A.contentEndLine,markerLine:A.markerLine,markerIndent:A.markerIndent,rawBlockText:v,rawBlockHash:_,deckHint:u.explicitDeckHint,deckHintSource:u.explicitDeckSource,deckWarnings:[...u.warnings],tagsHint:[...s],sourceContent:t.content})}return{filePath:t.path,fileHash:Q(t.content),fileStamp:n.fileStamp,content:t.content,cards:d,groupBlocks:c}}resolveIdentity(t,n,r,i,a,o,u){if(i!==void 0)return u.has(i)?{}:{noteId:i,noteIdSource:"marker"};let s=a.get(ra(t,r))??[];if(s.length===1)return u.has(s[0].noteId)?{}:{noteId:s[0].noteId,noteIdSource:"state-recovery"};let d=o.get(Ie(t,n,r))??[];return d.length===1?u.has(d[0].targetNoteId)?{}:{noteId:d[0].targetNoteId,noteIdSource:"pending-writeback"}:{}}resolveGroupIdentity(t,n,r,i,a,o){if(r!==void 0&&!a.has(r)){let d=i.find(c=>!c.orphan&&c.noteId===r);if(!d)return{noteId:r,freeSlots:[],identitySource:"gi-marker"};if(!o.has(d.groupId))return{noteId:d.noteId,groupId:d.groupId,freeSlots:[...d.freeSlots],identitySource:"gi-marker"}}let u=i.filter(d=>!d.orphan&&d.src===t);if(u.length===1&&!o.has(u[0].groupId)&&!a.has(u[0].noteId))return{noteId:u[0].noteId,groupId:u[0].groupId,freeSlots:[...u[0].freeSlots],identitySource:"state-recovery"};let s=i.filter(d=>!d.orphan&&d.rawBlockHash===n);return s.length===1&&!o.has(s[0].groupId)&&!a.has(s[0].noteId)?{noteId:s[0].noteId,groupId:s[0].groupId,freeSlots:[...s[0].freeSlots],identitySource:"state-recovery"}:{freeSlots:[]}}};function Ms(e){return e.cardTypeConfigs?e.cardTypeConfigs:{basic:{...H.cardTypeConfigs.basic,headingLevel:e.qaHeadingLevel??H.cardTypeConfigs.basic.headingLevel},"qa-group":{...H.cardTypeConfigs["qa-group"],headingLevel:e.qaHeadingLevel??H.cardTypeConfigs["qa-group"].headingLevel,extraMarker:e.qaGroupMarker??H.cardTypeConfigs["qa-group"].extraMarker},cloze:{...H.cardTypeConfigs.cloze,headingLevel:e.clozeHeadingLevel??H.cardTypeConfigs.cloze.headingLevel},"cloze-all":{...H.cardTypeConfigs["cloze-all"],headingLevel:e.clozeHeadingLevel??H.cardTypeConfigs["cloze-all"].headingLevel}}}function ws(e){let t=new Map;for(let n of Object.values(e)){if(!Number.isInteger(n.headingLevel)||n.headingLevel<1||n.headingLevel>6)throw new Error("Card heading level must be an integer between 1 and 6.");!n.enabled||n.extraMarker.trim().length>0||t.set(n.headingLevel,(t.get(n.headingLevel)??0)+1)}if([...t.values()].some(n=>n>1))throw new Error("Each heading level can only have one enabled default card type.")}function vs(e,t,n){let r=Un.map(a=>({configId:a,config:n[a]})).filter(({config:a})=>a.enabled&&a.headingLevel===t),i=r.filter(({config:a})=>a.extraMarker.trim().length>0&&e.trimEnd().endsWith(a.extraMarker.trim())).sort((a,o)=>{let u=o.config.extraMarker.trim().length-a.config.extraMarker.trim().length;return u!==0?u:Un.indexOf(a.configId)-Un.indexOf(o.configId)});return i.length>0?i[0]??null:r.find(({config:a})=>a.extraMarker.trim().length===0)??null}function Ts(e){let t=new Map;for(let n of e){if(n.orphan)continue;let r=ra(n.filePath,n.rawBlockHash),i=t.get(r);if(i){i.push(n);continue}t.set(r,[n])}return t}function Ds(e){let t=new Map;for(let n of e.filter(r=>r.markerKind!=="group-gi")){let r=Ie(n.filePath,n.blockStartLine,n.rawBlockHash),i=t.get(r);if(i){i.push(n);continue}t.set(r,[n])}return t}function ra(e,t){return`${e}\0${t}`}function As(e,t){return t===!1?[]:Array.isArray(e.tags)?[...e.tags]:[]}function Es(e){let t=[],n=null;for(let r=0;r<e.length;r+=1){let i=e[r],a=i.trim();if(a.startsWith("```")||a.startsWith("~~~")){n=n?null:a.slice(0,3);continue}if(n)continue;let o=i.match(Fs);o&&t.push({level:o[1].length,text:o[2].replace(/\s+#+\s*$/,"").trim(),lineIndex:r})}return t}function _s(e,t,n){let r=e[t];for(let i=t+1;i<e.length;i+=1){let a=e[i];if(a.level<=r.level)return a.lineIndex}return n}function Ls(e){let t=0,n=e.length;for(;t<n&&!e[t].trim();)t+=1;for(;n>t&&!e[n-1].trim();)n-=1;return e.slice(t,n)}function Is(e){let t=[0];for(let n=0;n<e.length;n+=1)e[n]===`
`&&t.push(n+1);return t}var Zt=class{constructor(t,n=new Pe,r=new Kt){this.vaultGateway=t;this.scanScopeService=n;this.cardIndexingService=r}async indexVault(t,n,r=!1){let i=this.scanScopeService.filter(await this.vaultGateway.listMarkdownFileRefs(),t.scopeMode,t.includeFolders,t.excludeFolders);return this.indexRefs(i,t,n,this.buildStateIndex(n),r)}async indexFile(t,n,r){let a=(await this.vaultGateway.listMarkdownFileRefs()).find(c=>c.path===t),o=await this.vaultGateway.readMarkdownFile(t);if(!o)throw new Error(`Markdown file not found: ${t}`);let u=a?ia(a.mtime,a.size):`${Date.now()}:${o.content.length}`,s=this.buildStateIndex(r),d=this.cardIndexingService.index(o,{cardTypeConfigs:n.cardTypeConfigs,cardAnswerCutoffMode:n.cardAnswerCutoffMode,syncObsidianTagsToAnki:n.syncObsidianTagsToAnki,fileStamp:u,knownCards:s.cardsByFilePath.get(t)??[],knownGroupBlocks:s.groupBlocksByFilePath.get(t)??[],pendingWriteBack:s.pendingByFilePath.get(t)??[],fileDeckEnabled:n.fileDeckEnabled,fileDeckMarker:n.fileDeckMarker});return{scopedFilePaths:[t],scannedFiles:1,indexedFiles:[d],cards:d.cards,groupBlocks:d.groupBlocks??[],skippedUnchangedFiles:0,skippedUnchangedCards:0}}async indexRefs(t,n,r,i,a){let o=[],u=[],s=[],d=0,c=0,l=Qn(n);for(let f of t){let m=ia(f.mtime,f.size),p=r.files[f.path],F=i.pendingByFilePath.get(f.path)??[],k=F.length>0,b=i.cardsByFilePath.get(f.path)??[],x=(p?.noteIds??[]).some(D=>!r.cards[z(D)]),C=Ps(b,n);if(!(a||k||!p||p.fileStamp!==m||p.deckRulesFingerprint!==l||C||x)){d+=1;let D=(p?.groupIds??[]).map(A=>r.groupBlocks?.[A]).filter(A=>!!A).map(A=>Bs(A));c+=(p?.noteIds??[]).length+D.length;let I=(p?.noteIds??[]).map(A=>r.cards[z(A)]).filter(A=>!!A).map(A=>Ns(A));o.push({filePath:f.path,fileHash:p?.fileHash??"",fileStamp:m,cards:I,groupBlocks:D}),u.push(...I),s.push(...D);continue}let M=await this.vaultGateway.readMarkdownFile(f.path);if(!M)continue;let T=this.cardIndexingService.index(M,{cardTypeConfigs:n.cardTypeConfigs,cardAnswerCutoffMode:n.cardAnswerCutoffMode,syncObsidianTagsToAnki:n.syncObsidianTagsToAnki,fileStamp:m,knownCards:b,knownGroupBlocks:i.groupBlocksByFilePath.get(f.path)??[],pendingWriteBack:F,fileDeckEnabled:n.fileDeckEnabled,fileDeckMarker:n.fileDeckMarker});o.push(T),u.push(...T.cards),s.push(...T.groupBlocks??[])}return{scopedFilePaths:t.map(f=>f.path),scannedFiles:t.length,indexedFiles:o,cards:u,groupBlocks:s,skippedUnchangedFiles:d,skippedUnchangedCards:c}}buildStateIndex(t){let n=new Map,r=new Map,i=new Map;for(let a of Object.values(t.cards)){let o=n.get(a.filePath);if(o){o.push(a);continue}n.set(a.filePath,[a])}for(let a of Object.values(t.groupBlocks??{})){let o=r.get(a.filePath);if(o){o.push(a);continue}r.set(a.filePath,[a])}for(let a of t.pendingWriteBack){let o=i.get(a.filePath);if(o){o.push(a);continue}i.set(a.filePath,[a])}return{cardsByFilePath:n,groupBlocksByFilePath:r,pendingByFilePath:i}}};function Ns(e){return{noteId:e.noteId,syncKey:_t(e.filePath,e.blockStartLine,e.rawBlockHash),idMarkerState:"present-valid",noteIdSource:"marker",filePath:e.filePath,cardType:e.cardType,clozeMode:Se(e.cardType,e.clozeMode),heading:e.heading,backlinkHeadingText:e.backlinkHeadingText,headingLevel:e.headingLevel,bodyMarkdown:e.bodyMarkdown,blockStartOffset:e.blockStartOffset,blockEndOffset:e.blockEndOffset,blockStartLine:e.blockStartLine,bodyStartLine:e.bodyStartLine,blockEndLine:e.blockEndLine,contentEndLine:e.contentEndLine,markerLine:e.markerLine,rawBlockText:e.rawBlockText,rawBlockHash:e.rawBlockHash,deckHint:e.deckHint,deckHintSource:e.deckHintSource,deckWarnings:[...e.deckWarnings],tagsHint:e.tagsHint}}function Ps(e,t){let n=t.cardTypeConfigs["cloze-all"],r=n.enabled?n.extraMarker.trim():"";return r.length===0?!1:e.some(i=>i.cardType!=="cloze"||Se(i.cardType,i.clozeMode)==="all"?!1:i.heading.trimEnd().endsWith(r)||Rs(i.rawBlockText).trimEnd().endsWith(r))}function Rs(e){return e.split(/\r?\n/,1)[0]??""}function Bs(e){return{noteId:e.noteId,groupId:e.groupId,syncKey:$t(e.filePath,e.blockStartLine,e.rawBlockHash),markerState:"present-valid",identitySource:"state-recovery",filePath:e.filePath,headingText:e.headingText,backlinkHeadingText:e.backlinkHeadingText,headingLevel:e.headingLevel,stem:e.stem,src:e.src||Fe(e.filePath,e.backlinkHeadingText),blockStartOffset:e.blockStartOffset,blockEndOffset:e.blockEndOffset,blockStartLine:e.blockStartLine,bodyStartLine:e.bodyStartLine,blockEndLine:e.blockEndLine,contentEndLine:e.contentEndLine,markerLine:e.markerLine,markerIndent:e.markerIndent,rawBlockText:e.rawBlockText,rawBlockHash:e.rawBlockHash,deckHint:e.deckHint,deckHintSource:e.deckHintSource,deckWarnings:[...e.deckWarnings],tagsHint:e.tagsHint?[...e.tagsHint]:[],items:e.items.map(t=>({...t})),freeSlots:[...e.freeSlots]}}function ia(e,t){return`${e}:${t}`}var Gs="deck-rules-v5";function Qn(e){return Q(JSON.stringify({version:Gs,cardTypeConfigs:e.cardTypeConfigs,cardAnswerCutoffMode:e.cardAnswerCutoffMode,defaultDeck:e.defaultDeck,fileDeckEnabled:e.fileDeckEnabled,fileDeckMarker:e.fileDeckMarker,folderDeckMode:e.folderDeckMode,alternateFolderDeckModeFolders:[...e.alternateFolderDeckModeFolders].sort(),syncObsidianTagsToAnki:e.syncObsidianTagsToAnki,keepPureTagLinesInCardBody:e.keepPureTagLinesInCardBody}))}var Yt=class{constructor(t,n=new ge,r=new X){this.vaultGateway=t;this.markerService=n;this.groupMarkerService=r}async write(t,n,r=[]){let i=new Map,a=[],o=[],u=[],s=[];for(let d of t){let c=i.get(d.card.filePath);if(c){c.push({kind:"card",plannedCard:d});continue}i.set(d.card.filePath,[{kind:"card",plannedCard:d}])}for(let d of r){let c=i.get(d.filePath);if(c){c.push({kind:"group",write:d});continue}i.set(d.filePath,[{kind:"group",write:d}])}for(let[d,c]of i.entries()){let l=n.get(d),f=l?.content??qs(c[0]);if(!f||!l){s.push(...c.map(m=>this.createPendingEntry(d,m,l?.fileHash??""))),u.push({filePath:d,key:"errors.writeBack.missingSourceContent"});continue}try{let m=c.flatMap(C=>C.kind==="card"?[this.toWriteRequest(C.plannedCard,f)]:[]),p=c.flatMap(C=>C.kind==="group"?[C.write]:[]);this.markerService.validateBatch(f,m),this.groupMarkerService.validateBatch(f,p);let F=f.includes(`\r
`)?`\r
`:`
`,k=f.split(/\r?\n/),b=[...m.map(C=>({kind:"card",blockStartLine:C.blockStartLine,write:C})),...p.map(C=>({kind:"group",blockStartLine:C.blockStartLine,write:C}))].sort((C,h)=>h.blockStartLine-C.blockStartLine||(C.kind===h.kind?0:C.kind==="group"?-1:1));for(let C of b){if(C.kind==="card"){this.markerService.applyWrite(k,C.write);continue}this.groupMarkerService.applyWrite(k,C.write)}let x=k.join(F);await this.vaultGateway.replaceMarkdownFile(d,f,x),a.push(...c.map(C=>C.kind==="card"?C.plannedCard.card.syncKey:C.write.syncKey))}catch(m){if(s.push(...c.map(p=>this.createPendingEntry(d,p,l.fileHash))),m instanceof fe){o.push(d);continue}u.push(pt(d,m))}}return{writtenSyncKeys:a,conflictFiles:o,failureFiles:u,pendingEntries:s}}toWriteRequest(t,n){return{filePath:t.card.filePath,noteId:aa(t),blockStartLine:t.card.blockStartLine,contentEndLine:t.card.contentEndLine,blockEndLine:t.card.blockEndLine,markerLine:t.card.markerLine,markerIndent:t.card.markerIndent,sourceContent:n}}createPendingEntry(t,n,r){if(n.kind==="card"){let i=aa(n.plannedCard);return{filePath:t,blockStartLine:n.plannedCard.card.blockStartLine,expectedFileHash:r,targetMarker:this.markerService.create(i).raw,rawBlockHash:n.plannedCard.card.rawBlockHash,targetNoteId:i,markerKind:"card-id"}}return{filePath:t,blockStartLine:n.write.blockStartLine,expectedFileHash:r,targetMarker:yt(n.write.noteId,n.write.itemToSlot,n.write.freeSlots),rawBlockHash:zs(n.write.syncKey),targetNoteId:n.write.noteId,markerKind:"group-gi",targetGroupId:n.write.groupId}}};function qs(e){if(e)return e.kind==="card"?e.plannedCard.card.sourceContent:e.write.sourceContent}function zs(e){return e.split("\0").at(-1)??""}function aa(e){if(e.noteId===void 0)throw new S("errors.writeBack.noteIdMissing",{blockStartLine:e.card.blockStartLine});return e.noteId}var tr={};Qe(tr,{arrayReplaceAt:()=>er,assign:()=>Ge,escapeHtml:()=>oe,escapeRE:()=>Fd,fromCodePoint:()=>rt,has:()=>pd,isMdAsciiPunct:()=>ve,isPunctChar:()=>we,isSpace:()=>E,isString:()=>cn,isValidEntityCode:()=>ln,isWhiteSpace:()=>Me,lib:()=>Md,normalizeReference:()=>Te,unescapeAll:()=>ae,unescapeMd:()=>kd});var nn={};Qe(nn,{decode:()=>tt,encode:()=>en,format:()=>Re,parse:()=>nt});var oa={};function Hs(e){let t=oa[e];if(t)return t;t=oa[e]=[];for(let n=0;n<128;n++){let r=String.fromCharCode(n);t.push(r)}for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t[r]="%"+("0"+r.toString(16).toUpperCase()).slice(-2)}return t}function Xt(e,t){typeof t!="string"&&(t=Xt.defaultChars);let n=Hs(t);return e.replace(/(%[a-f0-9]{2})+/gi,function(r){let i="";for(let a=0,o=r.length;a<o;a+=3){let u=parseInt(r.slice(a+1,a+3),16);if(u<128){i+=n[u];continue}if((u&224)===192&&a+3<o){let s=parseInt(r.slice(a+4,a+6),16);if((s&192)===128){let d=u<<6&1984|s&63;d<128?i+="\uFFFD\uFFFD":i+=String.fromCharCode(d),a+=3;continue}}if((u&240)===224&&a+6<o){let s=parseInt(r.slice(a+4,a+6),16),d=parseInt(r.slice(a+7,a+9),16);if((s&192)===128&&(d&192)===128){let c=u<<12&61440|s<<6&4032|d&63;c<2048||c>=55296&&c<=57343?i+="\uFFFD\uFFFD\uFFFD":i+=String.fromCharCode(c),a+=6;continue}}if((u&248)===240&&a+9<o){let s=parseInt(r.slice(a+4,a+6),16),d=parseInt(r.slice(a+7,a+9),16),c=parseInt(r.slice(a+10,a+12),16);if((s&192)===128&&(d&192)===128&&(c&192)===128){let l=u<<18&1835008|s<<12&258048|d<<6&4032|c&63;l<65536||l>1114111?i+="\uFFFD\uFFFD\uFFFD\uFFFD":(l-=65536,i+=String.fromCharCode(55296+(l>>10),56320+(l&1023))),a+=9;continue}}i+="\uFFFD"}return i})}Xt.defaultChars=";/?:@&=+$,#";Xt.componentChars="";var tt=Xt;var ua={};function Os(e){let t=ua[e];if(t)return t;t=ua[e]=[];for(let n=0;n<128;n++){let r=String.fromCharCode(n);/^[0-9a-z]$/i.test(r)?t.push(r):t.push("%"+("0"+n.toString(16).toUpperCase()).slice(-2))}for(let n=0;n<e.length;n++)t[e.charCodeAt(n)]=e[n];return t}function Jt(e,t,n){typeof t!="string"&&(n=t,t=Jt.defaultChars),typeof n>"u"&&(n=!0);let r=Os(t),i="";for(let a=0,o=e.length;a<o;a++){let u=e.charCodeAt(a);if(n&&u===37&&a+2<o&&/^[0-9a-f]{2}$/i.test(e.slice(a+1,a+3))){i+=e.slice(a,a+3),a+=2;continue}if(u<128){i+=r[u];continue}if(u>=55296&&u<=57343){if(u>=55296&&u<=56319&&a+1<o){let s=e.charCodeAt(a+1);if(s>=56320&&s<=57343){i+=encodeURIComponent(e[a]+e[a+1]),a++;continue}}i+="%EF%BF%BD";continue}i+=encodeURIComponent(e[a])}return i}Jt.defaultChars=";/?:@&=+$,-_.!~*'()#";Jt.componentChars="-_.!~*'()";var en=Jt;function Re(e){let t="";return t+=e.protocol||"",t+=e.slashes?"//":"",t+=e.auth?e.auth+"@":"",e.hostname&&e.hostname.indexOf(":")!==-1?t+="["+e.hostname+"]":t+=e.hostname||"",t+=e.port?":"+e.port:"",t+=e.pathname||"",t+=e.search||"",t+=e.hash||"",t}function tn(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var Ws=/^([a-z0-9.+-]+:)/i,$s=/:[0-9]*$/,Us=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,Qs=["<",">",'"',"`"," ","\r",`
`," "],Vs=["{","}","|","\\","^","`"].concat(Qs),js=["'"].concat(Vs),sa=["%","/","?",";","#"].concat(js),da=["/","?","#"],Ks=255,ca=/^[+a-z0-9A-Z_-]{0,63}$/,Zs=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,la={javascript:!0,"javascript:":!0},pa={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function Ys(e,t){if(e&&e instanceof tn)return e;let n=new tn;return n.parse(e,t),n}tn.prototype.parse=function(e,t){let n,r,i,a=e;if(a=a.trim(),!t&&e.split("#").length===1){let d=Us.exec(a);if(d)return this.pathname=d[1],d[2]&&(this.search=d[2]),this}let o=Ws.exec(a);if(o&&(o=o[0],n=o.toLowerCase(),this.protocol=o,a=a.substr(o.length)),(t||o||a.match(/^\/\/[^@\/]+@[^@\/]+/))&&(i=a.substr(0,2)==="//",i&&!(o&&la[o])&&(a=a.substr(2),this.slashes=!0)),!la[o]&&(i||o&&!pa[o])){let d=-1;for(let p=0;p<da.length;p++)r=a.indexOf(da[p]),r!==-1&&(d===-1||r<d)&&(d=r);let c,l;d===-1?l=a.lastIndexOf("@"):l=a.lastIndexOf("@",d),l!==-1&&(c=a.slice(0,l),a=a.slice(l+1),this.auth=c),d=-1;for(let p=0;p<sa.length;p++)r=a.indexOf(sa[p]),r!==-1&&(d===-1||r<d)&&(d=r);d===-1&&(d=a.length),a[d-1]===":"&&d--;let f=a.slice(0,d);a=a.slice(d),this.parseHost(f),this.hostname=this.hostname||"";let m=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!m){let p=this.hostname.split(/\./);for(let F=0,k=p.length;F<k;F++){let b=p[F];if(b&&!b.match(ca)){let x="";for(let C=0,h=b.length;C<h;C++)b.charCodeAt(C)>127?x+="x":x+=b[C];if(!x.match(ca)){let C=p.slice(0,F),h=p.slice(F+1),M=b.match(Zs);M&&(C.push(M[1]),h.unshift(M[2])),h.length&&(a=h.join(".")+a),this.hostname=C.join(".");break}}}}this.hostname.length>Ks&&(this.hostname=""),m&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}let u=a.indexOf("#");u!==-1&&(this.hash=a.substr(u),a=a.slice(0,u));let s=a.indexOf("?");return s!==-1&&(this.search=a.substr(s),a=a.slice(0,s)),a&&(this.pathname=a),pa[n]&&this.hostname&&!this.pathname&&(this.pathname=""),this};tn.prototype.parseHost=function(e){let t=$s.exec(e);t&&(t=t[0],t!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)};var nt=Ys;var Vn={};Qe(Vn,{Any:()=>rn,Cc:()=>an,Cf:()=>fa,P:()=>Be,S:()=>on,Z:()=>un});var rn=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;var an=/[\0-\x1F\x7F-\x9F]/;var fa=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC3F]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/;var Be=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/;var on=/[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC2\uFD40-\uFD4F\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF76\uDF7B-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC5\uDECE-\uDEDB\uDEE0-\uDEE8\uDEF0-\uDEF8\uDF00-\uDF92\uDF94-\uDFCA]/;var un=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var ga=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 ma=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(e=>e.charCodeAt(0)));var jn,Xs=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]]),Kn=(jn=String.fromCodePoint)!==null&&jn!==void 0?jn:function(e){let t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),t+=String.fromCharCode(e),t};function Zn(e){var t;return e>=55296&&e<=57343||e>1114111?65533:(t=Xs.get(e))!==null&&t!==void 0?t:e}var $;(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"})($||($={}));var Js=32,me;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(me||(me={}));function Yn(e){return e>=$.ZERO&&e<=$.NINE}function ed(e){return e>=$.UPPER_A&&e<=$.UPPER_F||e>=$.LOWER_A&&e<=$.LOWER_F}function td(e){return e>=$.UPPER_A&&e<=$.UPPER_Z||e>=$.LOWER_A&&e<=$.LOWER_Z||Yn(e)}function nd(e){return e===$.EQUALS||td(e)}var W;(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"})(W||(W={}));var J;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(J||(J={}));var sn=class{constructor(t,n,r){this.decodeTree=t,this.emitCodePoint=n,this.errors=r,this.state=W.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=J.Strict}startEntity(t){this.decodeMode=t,this.state=W.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,n){switch(this.state){case W.EntityStart:return t.charCodeAt(n)===$.NUM?(this.state=W.NumericStart,this.consumed+=1,this.stateNumericStart(t,n+1)):(this.state=W.NamedEntity,this.stateNamedEntity(t,n));case W.NumericStart:return this.stateNumericStart(t,n);case W.NumericDecimal:return this.stateNumericDecimal(t,n);case W.NumericHex:return this.stateNumericHex(t,n);case W.NamedEntity:return this.stateNamedEntity(t,n)}}stateNumericStart(t,n){return n>=t.length?-1:(t.charCodeAt(n)|Js)===$.LOWER_X?(this.state=W.NumericHex,this.consumed+=1,this.stateNumericHex(t,n+1)):(this.state=W.NumericDecimal,this.stateNumericDecimal(t,n))}addToNumericResult(t,n,r,i){if(n!==r){let a=r-n;this.result=this.result*Math.pow(i,a)+parseInt(t.substr(n,a),i),this.consumed+=a}}stateNumericHex(t,n){let r=n;for(;n<t.length;){let i=t.charCodeAt(n);if(Yn(i)||ed(i))n+=1;else return this.addToNumericResult(t,r,n,16),this.emitNumericEntity(i,3)}return this.addToNumericResult(t,r,n,16),-1}stateNumericDecimal(t,n){let r=n;for(;n<t.length;){let i=t.charCodeAt(n);if(Yn(i))n+=1;else return this.addToNumericResult(t,r,n,10),this.emitNumericEntity(i,2)}return this.addToNumericResult(t,r,n,10),-1}emitNumericEntity(t,n){var r;if(this.consumed<=n)return(r=this.errors)===null||r===void 0||r.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(t===$.SEMI)this.consumed+=1;else if(this.decodeMode===J.Strict)return 0;return this.emitCodePoint(Zn(this.result),this.consumed),this.errors&&(t!==$.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(t,n){let{decodeTree:r}=this,i=r[this.treeIndex],a=(i&me.VALUE_LENGTH)>>14;for(;n<t.length;n++,this.excess++){let o=t.charCodeAt(n);if(this.treeIndex=rd(r,i,this.treeIndex+Math.max(1,a),o),this.treeIndex<0)return this.result===0||this.decodeMode===J.Attribute&&(a===0||nd(o))?0:this.emitNotTerminatedNamedEntity();if(i=r[this.treeIndex],a=(i&me.VALUE_LENGTH)>>14,a!==0){if(o===$.SEMI)return this.emitNamedEntityData(this.treeIndex,a,this.consumed+this.excess);this.decodeMode!==J.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;let{result:n,decodeTree:r}=this,i=(r[n]&me.VALUE_LENGTH)>>14;return this.emitNamedEntityData(n,i,this.consumed),(t=this.errors)===null||t===void 0||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,n,r){let{decodeTree:i}=this;return this.emitCodePoint(n===1?i[t]&~me.VALUE_LENGTH:i[t+1],r),n===3&&this.emitCodePoint(i[t+2],r),r}end(){var t;switch(this.state){case W.NamedEntity:return this.result!==0&&(this.decodeMode!==J.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case W.NumericDecimal:return this.emitNumericEntity(0,2);case W.NumericHex:return this.emitNumericEntity(0,3);case W.NumericStart:return(t=this.errors)===null||t===void 0||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case W.EntityStart:return 0}}};function ha(e){let t="",n=new sn(e,r=>t+=Kn(r));return function(i,a){let o=0,u=0;for(;(u=i.indexOf("&",u))>=0;){t+=i.slice(o,u),n.startEntity(a);let d=n.write(i,u+1);if(d<0){o=u+n.end();break}o=u+d,u=d===0?o+1:o}let s=t+i.slice(o);return t="",s}}function rd(e,t,n,r){let i=(t&me.BRANCH_LENGTH)>>7,a=t&me.JUMP_TABLE;if(i===0)return a!==0&&r===a?n:-1;if(a){let s=r-a;return s<0||s>=i?-1:e[n+s]-1}let o=n,u=o+i-1;for(;o<=u;){let s=o+u>>>1,d=e[s];if(d<r)o=s+1;else if(d>r)u=s-1;else return e[s+i]}return-1}var id=ha(ga),af=ha(ma);function he(e,t=J.Legacy){return id(e,t)}function dn(e){for(let t=1;t<e.length;t++)e[t][0]+=e[t-1][0]+1;return e}var ad=new Map(dn([[9,"&Tab;"],[0,"&NewLine;"],[22,"&excl;"],[0,"&quot;"],[0,"&num;"],[0,"&dollar;"],[0,"&percnt;"],[0,"&amp;"],[0,"&apos;"],[0,"&lpar;"],[0,"&rpar;"],[0,"&ast;"],[0,"&plus;"],[0,"&comma;"],[1,"&period;"],[0,"&sol;"],[10,"&colon;"],[0,"&semi;"],[0,{v:"&lt;",n:8402,o:"&nvlt;"}],[0,{v:"&equals;",n:8421,o:"&bne;"}],[0,{v:"&gt;",n:8402,o:"&nvgt;"}],[0,"&quest;"],[0,"&commat;"],[26,"&lbrack;"],[0,"&bsol;"],[0,"&rbrack;"],[0,"&Hat;"],[0,"&lowbar;"],[0,"&DiacriticalGrave;"],[5,{n:106,o:"&fjlig;"}],[20,"&lbrace;"],[0,"&verbar;"],[0,"&rbrace;"],[34,"&nbsp;"],[0,"&iexcl;"],[0,"&cent;"],[0,"&pound;"],[0,"&curren;"],[0,"&yen;"],[0,"&brvbar;"],[0,"&sect;"],[0,"&die;"],[0,"&copy;"],[0,"&ordf;"],[0,"&laquo;"],[0,"&not;"],[0,"&shy;"],[0,"&circledR;"],[0,"&macr;"],[0,"&deg;"],[0,"&PlusMinus;"],[0,"&sup2;"],[0,"&sup3;"],[0,"&acute;"],[0,"&micro;"],[0,"&para;"],[0,"&centerdot;"],[0,"&cedil;"],[0,"&sup1;"],[0,"&ordm;"],[0,"&raquo;"],[0,"&frac14;"],[0,"&frac12;"],[0,"&frac34;"],[0,"&iquest;"],[0,"&Agrave;"],[0,"&Aacute;"],[0,"&Acirc;"],[0,"&Atilde;"],[0,"&Auml;"],[0,"&angst;"],[0,"&AElig;"],[0,"&Ccedil;"],[0,"&Egrave;"],[0,"&Eacute;"],[0,"&Ecirc;"],[0,"&Euml;"],[0,"&Igrave;"],[0,"&Iacute;"],[0,"&Icirc;"],[0,"&Iuml;"],[0,"&ETH;"],[0,"&Ntilde;"],[0,"&Ograve;"],[0,"&Oacute;"],[0,"&Ocirc;"],[0,"&Otilde;"],[0,"&Ouml;"],[0,"&times;"],[0,"&Oslash;"],[0,"&Ugrave;"],[0,"&Uacute;"],[0,"&Ucirc;"],[0,"&Uuml;"],[0,"&Yacute;"],[0,"&THORN;"],[0,"&szlig;"],[0,"&agrave;"],[0,"&aacute;"],[0,"&acirc;"],[0,"&atilde;"],[0,"&auml;"],[0,"&aring;"],[0,"&aelig;"],[0,"&ccedil;"],[0,"&egrave;"],[0,"&eacute;"],[0,"&ecirc;"],[0,"&euml;"],[0,"&igrave;"],[0,"&iacute;"],[0,"&icirc;"],[0,"&iuml;"],[0,"&eth;"],[0,"&ntilde;"],[0,"&ograve;"],[0,"&oacute;"],[0,"&ocirc;"],[0,"&otilde;"],[0,"&ouml;"],[0,"&div;"],[0,"&oslash;"],[0,"&ugrave;"],[0,"&uacute;"],[0,"&ucirc;"],[0,"&uuml;"],[0,"&yacute;"],[0,"&thorn;"],[0,"&yuml;"],[0,"&Amacr;"],[0,"&amacr;"],[0,"&Abreve;"],[0,"&abreve;"],[0,"&Aogon;"],[0,"&aogon;"],[0,"&Cacute;"],[0,"&cacute;"],[0,"&Ccirc;"],[0,"&ccirc;"],[0,"&Cdot;"],[0,"&cdot;"],[0,"&Ccaron;"],[0,"&ccaron;"],[0,"&Dcaron;"],[0,"&dcaron;"],[0,"&Dstrok;"],[0,"&dstrok;"],[0,"&Emacr;"],[0,"&emacr;"],[2,"&Edot;"],[0,"&edot;"],[0,"&Eogon;"],[0,"&eogon;"],[0,"&Ecaron;"],[0,"&ecaron;"],[0,"&Gcirc;"],[0,"&gcirc;"],[0,"&Gbreve;"],[0,"&gbreve;"],[0,"&Gdot;"],[0,"&gdot;"],[0,"&Gcedil;"],[1,"&Hcirc;"],[0,"&hcirc;"],[0,"&Hstrok;"],[0,"&hstrok;"],[0,"&Itilde;"],[0,"&itilde;"],[0,"&Imacr;"],[0,"&imacr;"],[2,"&Iogon;"],[0,"&iogon;"],[0,"&Idot;"],[0,"&imath;"],[0,"&IJlig;"],[0,"&ijlig;"],[0,"&Jcirc;"],[0,"&jcirc;"],[0,"&Kcedil;"],[0,"&kcedil;"],[0,"&kgreen;"],[0,"&Lacute;"],[0,"&lacute;"],[0,"&Lcedil;"],[0,"&lcedil;"],[0,"&Lcaron;"],[0,"&lcaron;"],[0,"&Lmidot;"],[0,"&lmidot;"],[0,"&Lstrok;"],[0,"&lstrok;"],[0,"&Nacute;"],[0,"&nacute;"],[0,"&Ncedil;"],[0,"&ncedil;"],[0,"&Ncaron;"],[0,"&ncaron;"],[0,"&napos;"],[0,"&ENG;"],[0,"&eng;"],[0,"&Omacr;"],[0,"&omacr;"],[2,"&Odblac;"],[0,"&odblac;"],[0,"&OElig;"],[0,"&oelig;"],[0,"&Racute;"],[0,"&racute;"],[0,"&Rcedil;"],[0,"&rcedil;"],[0,"&Rcaron;"],[0,"&rcaron;"],[0,"&Sacute;"],[0,"&sacute;"],[0,"&Scirc;"],[0,"&scirc;"],[0,"&Scedil;"],[0,"&scedil;"],[0,"&Scaron;"],[0,"&scaron;"],[0,"&Tcedil;"],[0,"&tcedil;"],[0,"&Tcaron;"],[0,"&tcaron;"],[0,"&Tstrok;"],[0,"&tstrok;"],[0,"&Utilde;"],[0,"&utilde;"],[0,"&Umacr;"],[0,"&umacr;"],[0,"&Ubreve;"],[0,"&ubreve;"],[0,"&Uring;"],[0,"&uring;"],[0,"&Udblac;"],[0,"&udblac;"],[0,"&Uogon;"],[0,"&uogon;"],[0,"&Wcirc;"],[0,"&wcirc;"],[0,"&Ycirc;"],[0,"&ycirc;"],[0,"&Yuml;"],[0,"&Zacute;"],[0,"&zacute;"],[0,"&Zdot;"],[0,"&zdot;"],[0,"&Zcaron;"],[0,"&zcaron;"],[19,"&fnof;"],[34,"&imped;"],[63,"&gacute;"],[65,"&jmath;"],[142,"&circ;"],[0,"&caron;"],[16,"&breve;"],[0,"&DiacriticalDot;"],[0,"&ring;"],[0,"&ogon;"],[0,"&DiacriticalTilde;"],[0,"&dblac;"],[51,"&DownBreve;"],[127,"&Alpha;"],[0,"&Beta;"],[0,"&Gamma;"],[0,"&Delta;"],[0,"&Epsilon;"],[0,"&Zeta;"],[0,"&Eta;"],[0,"&Theta;"],[0,"&Iota;"],[0,"&Kappa;"],[0,"&Lambda;"],[0,"&Mu;"],[0,"&Nu;"],[0,"&Xi;"],[0,"&Omicron;"],[0,"&Pi;"],[0,"&Rho;"],[1,"&Sigma;"],[0,"&Tau;"],[0,"&Upsilon;"],[0,"&Phi;"],[0,"&Chi;"],[0,"&Psi;"],[0,"&ohm;"],[7,"&alpha;"],[0,"&beta;"],[0,"&gamma;"],[0,"&delta;"],[0,"&epsi;"],[0,"&zeta;"],[0,"&eta;"],[0,"&theta;"],[0,"&iota;"],[0,"&kappa;"],[0,"&lambda;"],[0,"&mu;"],[0,"&nu;"],[0,"&xi;"],[0,"&omicron;"],[0,"&pi;"],[0,"&rho;"],[0,"&sigmaf;"],[0,"&sigma;"],[0,"&tau;"],[0,"&upsi;"],[0,"&phi;"],[0,"&chi;"],[0,"&psi;"],[0,"&omega;"],[7,"&thetasym;"],[0,"&Upsi;"],[2,"&phiv;"],[0,"&piv;"],[5,"&Gammad;"],[0,"&digamma;"],[18,"&kappav;"],[0,"&rhov;"],[3,"&epsiv;"],[0,"&backepsilon;"],[10,"&IOcy;"],[0,"&DJcy;"],[0,"&GJcy;"],[0,"&Jukcy;"],[0,"&DScy;"],[0,"&Iukcy;"],[0,"&YIcy;"],[0,"&Jsercy;"],[0,"&LJcy;"],[0,"&NJcy;"],[0,"&TSHcy;"],[0,"&KJcy;"],[1,"&Ubrcy;"],[0,"&DZcy;"],[0,"&Acy;"],[0,"&Bcy;"],[0,"&Vcy;"],[0,"&Gcy;"],[0,"&Dcy;"],[0,"&IEcy;"],[0,"&ZHcy;"],[0,"&Zcy;"],[0,"&Icy;"],[0,"&Jcy;"],[0,"&Kcy;"],[0,"&Lcy;"],[0,"&Mcy;"],[0,"&Ncy;"],[0,"&Ocy;"],[0,"&Pcy;"],[0,"&Rcy;"],[0,"&Scy;"],[0,"&Tcy;"],[0,"&Ucy;"],[0,"&Fcy;"],[0,"&KHcy;"],[0,"&TScy;"],[0,"&CHcy;"],[0,"&SHcy;"],[0,"&SHCHcy;"],[0,"&HARDcy;"],[0,"&Ycy;"],[0,"&SOFTcy;"],[0,"&Ecy;"],[0,"&YUcy;"],[0,"&YAcy;"],[0,"&acy;"],[0,"&bcy;"],[0,"&vcy;"],[0,"&gcy;"],[0,"&dcy;"],[0,"&iecy;"],[0,"&zhcy;"],[0,"&zcy;"],[0,"&icy;"],[0,"&jcy;"],[0,"&kcy;"],[0,"&lcy;"],[0,"&mcy;"],[0,"&ncy;"],[0,"&ocy;"],[0,"&pcy;"],[0,"&rcy;"],[0,"&scy;"],[0,"&tcy;"],[0,"&ucy;"],[0,"&fcy;"],[0,"&khcy;"],[0,"&tscy;"],[0,"&chcy;"],[0,"&shcy;"],[0,"&shchcy;"],[0,"&hardcy;"],[0,"&ycy;"],[0,"&softcy;"],[0,"&ecy;"],[0,"&yucy;"],[0,"&yacy;"],[1,"&iocy;"],[0,"&djcy;"],[0,"&gjcy;"],[0,"&jukcy;"],[0,"&dscy;"],[0,"&iukcy;"],[0,"&yicy;"],[0,"&jsercy;"],[0,"&ljcy;"],[0,"&njcy;"],[0,"&tshcy;"],[0,"&kjcy;"],[1,"&ubrcy;"],[0,"&dzcy;"],[7074,"&ensp;"],[0,"&emsp;"],[0,"&emsp13;"],[0,"&emsp14;"],[1,"&numsp;"],[0,"&puncsp;"],[0,"&ThinSpace;"],[0,"&hairsp;"],[0,"&NegativeMediumSpace;"],[0,"&zwnj;"],[0,"&zwj;"],[0,"&lrm;"],[0,"&rlm;"],[0,"&dash;"],[2,"&ndash;"],[0,"&mdash;"],[0,"&horbar;"],[0,"&Verbar;"],[1,"&lsquo;"],[0,"&CloseCurlyQuote;"],[0,"&lsquor;"],[1,"&ldquo;"],[0,"&CloseCurlyDoubleQuote;"],[0,"&bdquo;"],[1,"&dagger;"],[0,"&Dagger;"],[0,"&bull;"],[2,"&nldr;"],[0,"&hellip;"],[9,"&permil;"],[0,"&pertenk;"],[0,"&prime;"],[0,"&Prime;"],[0,"&tprime;"],[0,"&backprime;"],[3,"&lsaquo;"],[0,"&rsaquo;"],[3,"&oline;"],[2,"&caret;"],[1,"&hybull;"],[0,"&frasl;"],[10,"&bsemi;"],[7,"&qprime;"],[7,{v:"&MediumSpace;",n:8202,o:"&ThickSpace;"}],[0,"&NoBreak;"],[0,"&af;"],[0,"&InvisibleTimes;"],[0,"&ic;"],[72,"&euro;"],[46,"&tdot;"],[0,"&DotDot;"],[37,"&complexes;"],[2,"&incare;"],[4,"&gscr;"],[0,"&hamilt;"],[0,"&Hfr;"],[0,"&Hopf;"],[0,"&planckh;"],[0,"&hbar;"],[0,"&imagline;"],[0,"&Ifr;"],[0,"&lagran;"],[0,"&ell;"],[1,"&naturals;"],[0,"&numero;"],[0,"&copysr;"],[0,"&weierp;"],[0,"&Popf;"],[0,"&Qopf;"],[0,"&realine;"],[0,"&real;"],[0,"&reals;"],[0,"&rx;"],[3,"&trade;"],[1,"&integers;"],[2,"&mho;"],[0,"&zeetrf;"],[0,"&iiota;"],[2,"&bernou;"],[0,"&Cayleys;"],[1,"&escr;"],[0,"&Escr;"],[0,"&Fouriertrf;"],[1,"&Mellintrf;"],[0,"&order;"],[0,"&alefsym;"],[0,"&beth;"],[0,"&gimel;"],[0,"&daleth;"],[12,"&CapitalDifferentialD;"],[0,"&dd;"],[0,"&ee;"],[0,"&ii;"],[10,"&frac13;"],[0,"&frac23;"],[0,"&frac15;"],[0,"&frac25;"],[0,"&frac35;"],[0,"&frac45;"],[0,"&frac16;"],[0,"&frac56;"],[0,"&frac18;"],[0,"&frac38;"],[0,"&frac58;"],[0,"&frac78;"],[49,"&larr;"],[0,"&ShortUpArrow;"],[0,"&rarr;"],[0,"&darr;"],[0,"&harr;"],[0,"&updownarrow;"],[0,"&nwarr;"],[0,"&nearr;"],[0,"&LowerRightArrow;"],[0,"&LowerLeftArrow;"],[0,"&nlarr;"],[0,"&nrarr;"],[1,{v:"&rarrw;",n:824,o:"&nrarrw;"}],[0,"&Larr;"],[0,"&Uarr;"],[0,"&Rarr;"],[0,"&Darr;"],[0,"&larrtl;"],[0,"&rarrtl;"],[0,"&LeftTeeArrow;"],[0,"&mapstoup;"],[0,"&map;"],[0,"&DownTeeArrow;"],[1,"&hookleftarrow;"],[0,"&hookrightarrow;"],[0,"&larrlp;"],[0,"&looparrowright;"],[0,"&harrw;"],[0,"&nharr;"],[1,"&lsh;"],[0,"&rsh;"],[0,"&ldsh;"],[0,"&rdsh;"],[1,"&crarr;"],[0,"&cularr;"],[0,"&curarr;"],[2,"&circlearrowleft;"],[0,"&circlearrowright;"],[0,"&leftharpoonup;"],[0,"&DownLeftVector;"],[0,"&RightUpVector;"],[0,"&LeftUpVector;"],[0,"&rharu;"],[0,"&DownRightVector;"],[0,"&dharr;"],[0,"&dharl;"],[0,"&RightArrowLeftArrow;"],[0,"&udarr;"],[0,"&LeftArrowRightArrow;"],[0,"&leftleftarrows;"],[0,"&upuparrows;"],[0,"&rightrightarrows;"],[0,"&ddarr;"],[0,"&leftrightharpoons;"],[0,"&Equilibrium;"],[0,"&nlArr;"],[0,"&nhArr;"],[0,"&nrArr;"],[0,"&DoubleLeftArrow;"],[0,"&DoubleUpArrow;"],[0,"&DoubleRightArrow;"],[0,"&dArr;"],[0,"&DoubleLeftRightArrow;"],[0,"&DoubleUpDownArrow;"],[0,"&nwArr;"],[0,"&neArr;"],[0,"&seArr;"],[0,"&swArr;"],[0,"&lAarr;"],[0,"&rAarr;"],[1,"&zigrarr;"],[6,"&larrb;"],[0,"&rarrb;"],[15,"&DownArrowUpArrow;"],[7,"&loarr;"],[0,"&roarr;"],[0,"&hoarr;"],[0,"&forall;"],[0,"&comp;"],[0,{v:"&part;",n:824,o:"&npart;"}],[0,"&exist;"],[0,"&nexist;"],[0,"&empty;"],[1,"&Del;"],[0,"&Element;"],[0,"&NotElement;"],[1,"&ni;"],[0,"&notni;"],[2,"&prod;"],[0,"&coprod;"],[0,"&sum;"],[0,"&minus;"],[0,"&MinusPlus;"],[0,"&dotplus;"],[1,"&Backslash;"],[0,"&lowast;"],[0,"&compfn;"],[1,"&radic;"],[2,"&prop;"],[0,"&infin;"],[0,"&angrt;"],[0,{v:"&ang;",n:8402,o:"&nang;"}],[0,"&angmsd;"],[0,"&angsph;"],[0,"&mid;"],[0,"&nmid;"],[0,"&DoubleVerticalBar;"],[0,"&NotDoubleVerticalBar;"],[0,"&and;"],[0,"&or;"],[0,{v:"&cap;",n:65024,o:"&caps;"}],[0,{v:"&cup;",n:65024,o:"&cups;"}],[0,"&int;"],[0,"&Int;"],[0,"&iiint;"],[0,"&conint;"],[0,"&Conint;"],[0,"&Cconint;"],[0,"&cwint;"],[0,"&ClockwiseContourIntegral;"],[0,"&awconint;"],[0,"&there4;"],[0,"&becaus;"],[0,"&ratio;"],[0,"&Colon;"],[0,"&dotminus;"],[1,"&mDDot;"],[0,"&homtht;"],[0,{v:"&sim;",n:8402,o:"&nvsim;"}],[0,{v:"&backsim;",n:817,o:"&race;"}],[0,{v:"&ac;",n:819,o:"&acE;"}],[0,"&acd;"],[0,"&VerticalTilde;"],[0,"&NotTilde;"],[0,{v:"&eqsim;",n:824,o:"&nesim;"}],[0,"&sime;"],[0,"&NotTildeEqual;"],[0,"&cong;"],[0,"&simne;"],[0,"&ncong;"],[0,"&ap;"],[0,"&nap;"],[0,"&ape;"],[0,{v:"&apid;",n:824,o:"&napid;"}],[0,"&backcong;"],[0,{v:"&asympeq;",n:8402,o:"&nvap;"}],[0,{v:"&bump;",n:824,o:"&nbump;"}],[0,{v:"&bumpe;",n:824,o:"&nbumpe;"}],[0,{v:"&doteq;",n:824,o:"&nedot;"}],[0,"&doteqdot;"],[0,"&efDot;"],[0,"&erDot;"],[0,"&Assign;"],[0,"&ecolon;"],[0,"&ecir;"],[0,"&circeq;"],[1,"&wedgeq;"],[0,"&veeeq;"],[1,"&triangleq;"],[2,"&equest;"],[0,"&ne;"],[0,{v:"&Congruent;",n:8421,o:"&bnequiv;"}],[0,"&nequiv;"],[1,{v:"&le;",n:8402,o:"&nvle;"}],[0,{v:"&ge;",n:8402,o:"&nvge;"}],[0,{v:"&lE;",n:824,o:"&nlE;"}],[0,{v:"&gE;",n:824,o:"&ngE;"}],[0,{v:"&lnE;",n:65024,o:"&lvertneqq;"}],[0,{v:"&gnE;",n:65024,o:"&gvertneqq;"}],[0,{v:"&ll;",n:new Map(dn([[824,"&nLtv;"],[7577,"&nLt;"]]))}],[0,{v:"&gg;",n:new Map(dn([[824,"&nGtv;"],[7577,"&nGt;"]]))}],[0,"&between;"],[0,"&NotCupCap;"],[0,"&nless;"],[0,"&ngt;"],[0,"&nle;"],[0,"&nge;"],[0,"&lesssim;"],[0,"&GreaterTilde;"],[0,"&nlsim;"],[0,"&ngsim;"],[0,"&LessGreater;"],[0,"&gl;"],[0,"&NotLessGreater;"],[0,"&NotGreaterLess;"],[0,"&pr;"],[0,"&sc;"],[0,"&prcue;"],[0,"&sccue;"],[0,"&PrecedesTilde;"],[0,{v:"&scsim;",n:824,o:"&NotSucceedsTilde;"}],[0,"&NotPrecedes;"],[0,"&NotSucceeds;"],[0,{v:"&sub;",n:8402,o:"&NotSubset;"}],[0,{v:"&sup;",n:8402,o:"&NotSuperset;"}],[0,"&nsub;"],[0,"&nsup;"],[0,"&sube;"],[0,"&supe;"],[0,"&NotSubsetEqual;"],[0,"&NotSupersetEqual;"],[0,{v:"&subne;",n:65024,o:"&varsubsetneq;"}],[0,{v:"&supne;",n:65024,o:"&varsupsetneq;"}],[1,"&cupdot;"],[0,"&UnionPlus;"],[0,{v:"&sqsub;",n:824,o:"&NotSquareSubset;"}],[0,{v:"&sqsup;",n:824,o:"&NotSquareSuperset;"}],[0,"&sqsube;"],[0,"&sqsupe;"],[0,{v:"&sqcap;",n:65024,o:"&sqcaps;"}],[0,{v:"&sqcup;",n:65024,o:"&sqcups;"}],[0,"&CirclePlus;"],[0,"&CircleMinus;"],[0,"&CircleTimes;"],[0,"&osol;"],[0,"&CircleDot;"],[0,"&circledcirc;"],[0,"&circledast;"],[1,"&circleddash;"],[0,"&boxplus;"],[0,"&boxminus;"],[0,"&boxtimes;"],[0,"&dotsquare;"],[0,"&RightTee;"],[0,"&dashv;"],[0,"&DownTee;"],[0,"&bot;"],[1,"&models;"],[0,"&DoubleRightTee;"],[0,"&Vdash;"],[0,"&Vvdash;"],[0,"&VDash;"],[0,"&nvdash;"],[0,"&nvDash;"],[0,"&nVdash;"],[0,"&nVDash;"],[0,"&prurel;"],[1,"&LeftTriangle;"],[0,"&RightTriangle;"],[0,{v:"&LeftTriangleEqual;",n:8402,o:"&nvltrie;"}],[0,{v:"&RightTriangleEqual;",n:8402,o:"&nvrtrie;"}],[0,"&origof;"],[0,"&imof;"],[0,"&multimap;"],[0,"&hercon;"],[0,"&intcal;"],[0,"&veebar;"],[1,"&barvee;"],[0,"&angrtvb;"],[0,"&lrtri;"],[0,"&bigwedge;"],[0,"&bigvee;"],[0,"&bigcap;"],[0,"&bigcup;"],[0,"&diam;"],[0,"&sdot;"],[0,"&sstarf;"],[0,"&divideontimes;"],[0,"&bowtie;"],[0,"&ltimes;"],[0,"&rtimes;"],[0,"&leftthreetimes;"],[0,"&rightthreetimes;"],[0,"&backsimeq;"],[0,"&curlyvee;"],[0,"&curlywedge;"],[0,"&Sub;"],[0,"&Sup;"],[0,"&Cap;"],[0,"&Cup;"],[0,"&fork;"],[0,"&epar;"],[0,"&lessdot;"],[0,"&gtdot;"],[0,{v:"&Ll;",n:824,o:"&nLl;"}],[0,{v:"&Gg;",n:824,o:"&nGg;"}],[0,{v:"&leg;",n:65024,o:"&lesg;"}],[0,{v:"&gel;",n:65024,o:"&gesl;"}],[2,"&cuepr;"],[0,"&cuesc;"],[0,"&NotPrecedesSlantEqual;"],[0,"&NotSucceedsSlantEqual;"],[0,"&NotSquareSubsetEqual;"],[0,"&NotSquareSupersetEqual;"],[2,"&lnsim;"],[0,"&gnsim;"],[0,"&precnsim;"],[0,"&scnsim;"],[0,"&nltri;"],[0,"&NotRightTriangle;"],[0,"&nltrie;"],[0,"&NotRightTriangleEqual;"],[0,"&vellip;"],[0,"&ctdot;"],[0,"&utdot;"],[0,"&dtdot;"],[0,"&disin;"],[0,"&isinsv;"],[0,"&isins;"],[0,{v:"&isindot;",n:824,o:"&notindot;"}],[0,"&notinvc;"],[0,"&notinvb;"],[1,{v:"&isinE;",n:824,o:"&notinE;"}],[0,"&nisd;"],[0,"&xnis;"],[0,"&nis;"],[0,"&notnivc;"],[0,"&notnivb;"],[6,"&barwed;"],[0,"&Barwed;"],[1,"&lceil;"],[0,"&rceil;"],[0,"&LeftFloor;"],[0,"&rfloor;"],[0,"&drcrop;"],[0,"&dlcrop;"],[0,"&urcrop;"],[0,"&ulcrop;"],[0,"&bnot;"],[1,"&profline;"],[0,"&profsurf;"],[1,"&telrec;"],[0,"&target;"],[5,"&ulcorn;"],[0,"&urcorn;"],[0,"&dlcorn;"],[0,"&drcorn;"],[2,"&frown;"],[0,"&smile;"],[9,"&cylcty;"],[0,"&profalar;"],[7,"&topbot;"],[6,"&ovbar;"],[1,"&solbar;"],[60,"&angzarr;"],[51,"&lmoustache;"],[0,"&rmoustache;"],[2,"&OverBracket;"],[0,"&bbrk;"],[0,"&bbrktbrk;"],[37,"&OverParenthesis;"],[0,"&UnderParenthesis;"],[0,"&OverBrace;"],[0,"&UnderBrace;"],[2,"&trpezium;"],[4,"&elinters;"],[59,"&blank;"],[164,"&circledS;"],[55,"&boxh;"],[1,"&boxv;"],[9,"&boxdr;"],[3,"&boxdl;"],[3,"&boxur;"],[3,"&boxul;"],[3,"&boxvr;"],[7,"&boxvl;"],[7,"&boxhd;"],[7,"&boxhu;"],[7,"&boxvh;"],[19,"&boxH;"],[0,"&boxV;"],[0,"&boxdR;"],[0,"&boxDr;"],[0,"&boxDR;"],[0,"&boxdL;"],[0,"&boxDl;"],[0,"&boxDL;"],[0,"&boxuR;"],[0,"&boxUr;"],[0,"&boxUR;"],[0,"&boxuL;"],[0,"&boxUl;"],[0,"&boxUL;"],[0,"&boxvR;"],[0,"&boxVr;"],[0,"&boxVR;"],[0,"&boxvL;"],[0,"&boxVl;"],[0,"&boxVL;"],[0,"&boxHd;"],[0,"&boxhD;"],[0,"&boxHD;"],[0,"&boxHu;"],[0,"&boxhU;"],[0,"&boxHU;"],[0,"&boxvH;"],[0,"&boxVh;"],[0,"&boxVH;"],[19,"&uhblk;"],[3,"&lhblk;"],[3,"&block;"],[8,"&blk14;"],[0,"&blk12;"],[0,"&blk34;"],[13,"&square;"],[8,"&blacksquare;"],[0,"&EmptyVerySmallSquare;"],[1,"&rect;"],[0,"&marker;"],[2,"&fltns;"],[1,"&bigtriangleup;"],[0,"&blacktriangle;"],[0,"&triangle;"],[2,"&blacktriangleright;"],[0,"&rtri;"],[3,"&bigtriangledown;"],[0,"&blacktriangledown;"],[0,"&dtri;"],[2,"&blacktriangleleft;"],[0,"&ltri;"],[6,"&loz;"],[0,"&cir;"],[32,"&tridot;"],[2,"&bigcirc;"],[8,"&ultri;"],[0,"&urtri;"],[0,"&lltri;"],[0,"&EmptySmallSquare;"],[0,"&FilledSmallSquare;"],[8,"&bigstar;"],[0,"&star;"],[7,"&phone;"],[49,"&female;"],[1,"&male;"],[29,"&spades;"],[2,"&clubs;"],[1,"&hearts;"],[0,"&diamondsuit;"],[3,"&sung;"],[2,"&flat;"],[0,"&natural;"],[0,"&sharp;"],[163,"&check;"],[3,"&cross;"],[8,"&malt;"],[21,"&sext;"],[33,"&VerticalSeparator;"],[25,"&lbbrk;"],[0,"&rbbrk;"],[84,"&bsolhsub;"],[0,"&suphsol;"],[28,"&LeftDoubleBracket;"],[0,"&RightDoubleBracket;"],[0,"&lang;"],[0,"&rang;"],[0,"&Lang;"],[0,"&Rang;"],[0,"&loang;"],[0,"&roang;"],[7,"&longleftarrow;"],[0,"&longrightarrow;"],[0,"&longleftrightarrow;"],[0,"&DoubleLongLeftArrow;"],[0,"&DoubleLongRightArrow;"],[0,"&DoubleLongLeftRightArrow;"],[1,"&longmapsto;"],[2,"&dzigrarr;"],[258,"&nvlArr;"],[0,"&nvrArr;"],[0,"&nvHarr;"],[0,"&Map;"],[6,"&lbarr;"],[0,"&bkarow;"],[0,"&lBarr;"],[0,"&dbkarow;"],[0,"&drbkarow;"],[0,"&DDotrahd;"],[0,"&UpArrowBar;"],[0,"&DownArrowBar;"],[2,"&Rarrtl;"],[2,"&latail;"],[0,"&ratail;"],[0,"&lAtail;"],[0,"&rAtail;"],[0,"&larrfs;"],[0,"&rarrfs;"],[0,"&larrbfs;"],[0,"&rarrbfs;"],[2,"&nwarhk;"],[0,"&nearhk;"],[0,"&hksearow;"],[0,"&hkswarow;"],[0,"&nwnear;"],[0,"&nesear;"],[0,"&seswar;"],[0,"&swnwar;"],[8,{v:"&rarrc;",n:824,o:"&nrarrc;"}],[1,"&cudarrr;"],[0,"&ldca;"],[0,"&rdca;"],[0,"&cudarrl;"],[0,"&larrpl;"],[2,"&curarrm;"],[0,"&cularrp;"],[7,"&rarrpl;"],[2,"&harrcir;"],[0,"&Uarrocir;"],[0,"&lurdshar;"],[0,"&ldrushar;"],[2,"&LeftRightVector;"],[0,"&RightUpDownVector;"],[0,"&DownLeftRightVector;"],[0,"&LeftUpDownVector;"],[0,"&LeftVectorBar;"],[0,"&RightVectorBar;"],[0,"&RightUpVectorBar;"],[0,"&RightDownVectorBar;"],[0,"&DownLeftVectorBar;"],[0,"&DownRightVectorBar;"],[0,"&LeftUpVectorBar;"],[0,"&LeftDownVectorBar;"],[0,"&LeftTeeVector;"],[0,"&RightTeeVector;"],[0,"&RightUpTeeVector;"],[0,"&RightDownTeeVector;"],[0,"&DownLeftTeeVector;"],[0,"&DownRightTeeVector;"],[0,"&LeftUpTeeVector;"],[0,"&LeftDownTeeVector;"],[0,"&lHar;"],[0,"&uHar;"],[0,"&rHar;"],[0,"&dHar;"],[0,"&luruhar;"],[0,"&ldrdhar;"],[0,"&ruluhar;"],[0,"&rdldhar;"],[0,"&lharul;"],[0,"&llhard;"],[0,"&rharul;"],[0,"&lrhard;"],[0,"&udhar;"],[0,"&duhar;"],[0,"&RoundImplies;"],[0,"&erarr;"],[0,"&simrarr;"],[0,"&larrsim;"],[0,"&rarrsim;"],[0,"&rarrap;"],[0,"&ltlarr;"],[1,"&gtrarr;"],[0,"&subrarr;"],[1,"&suplarr;"],[0,"&lfisht;"],[0,"&rfisht;"],[0,"&ufisht;"],[0,"&dfisht;"],[5,"&lopar;"],[0,"&ropar;"],[4,"&lbrke;"],[0,"&rbrke;"],[0,"&lbrkslu;"],[0,"&rbrksld;"],[0,"&lbrksld;"],[0,"&rbrkslu;"],[0,"&langd;"],[0,"&rangd;"],[0,"&lparlt;"],[0,"&rpargt;"],[0,"&gtlPar;"],[0,"&ltrPar;"],[3,"&vzigzag;"],[1,"&vangrt;"],[0,"&angrtvbd;"],[6,"&ange;"],[0,"&range;"],[0,"&dwangle;"],[0,"&uwangle;"],[0,"&angmsdaa;"],[0,"&angmsdab;"],[0,"&angmsdac;"],[0,"&angmsdad;"],[0,"&angmsdae;"],[0,"&angmsdaf;"],[0,"&angmsdag;"],[0,"&angmsdah;"],[0,"&bemptyv;"],[0,"&demptyv;"],[0,"&cemptyv;"],[0,"&raemptyv;"],[0,"&laemptyv;"],[0,"&ohbar;"],[0,"&omid;"],[0,"&opar;"],[1,"&operp;"],[1,"&olcross;"],[0,"&odsold;"],[1,"&olcir;"],[0,"&ofcir;"],[0,"&olt;"],[0,"&ogt;"],[0,"&cirscir;"],[0,"&cirE;"],[0,"&solb;"],[0,"&bsolb;"],[3,"&boxbox;"],[3,"&trisb;"],[0,"&rtriltri;"],[0,{v:"&LeftTriangleBar;",n:824,o:"&NotLeftTriangleBar;"}],[0,{v:"&RightTriangleBar;",n:824,o:"&NotRightTriangleBar;"}],[11,"&iinfin;"],[0,"&infintie;"],[0,"&nvinfin;"],[4,"&eparsl;"],[0,"&smeparsl;"],[0,"&eqvparsl;"],[5,"&blacklozenge;"],[8,"&RuleDelayed;"],[1,"&dsol;"],[9,"&bigodot;"],[0,"&bigoplus;"],[0,"&bigotimes;"],[1,"&biguplus;"],[1,"&bigsqcup;"],[5,"&iiiint;"],[0,"&fpartint;"],[2,"&cirfnint;"],[0,"&awint;"],[0,"&rppolint;"],[0,"&scpolint;"],[0,"&npolint;"],[0,"&pointint;"],[0,"&quatint;"],[0,"&intlarhk;"],[10,"&pluscir;"],[0,"&plusacir;"],[0,"&simplus;"],[0,"&plusdu;"],[0,"&plussim;"],[0,"&plustwo;"],[1,"&mcomma;"],[0,"&minusdu;"],[2,"&loplus;"],[0,"&roplus;"],[0,"&Cross;"],[0,"&timesd;"],[0,"&timesbar;"],[1,"&smashp;"],[0,"&lotimes;"],[0,"&rotimes;"],[0,"&otimesas;"],[0,"&Otimes;"],[0,"&odiv;"],[0,"&triplus;"],[0,"&triminus;"],[0,"&tritime;"],[0,"&intprod;"],[2,"&amalg;"],[0,"&capdot;"],[1,"&ncup;"],[0,"&ncap;"],[0,"&capand;"],[0,"&cupor;"],[0,"&cupcap;"],[0,"&capcup;"],[0,"&cupbrcap;"],[0,"&capbrcup;"],[0,"&cupcup;"],[0,"&capcap;"],[0,"&ccups;"],[0,"&ccaps;"],[2,"&ccupssm;"],[2,"&And;"],[0,"&Or;"],[0,"&andand;"],[0,"&oror;"],[0,"&orslope;"],[0,"&andslope;"],[1,"&andv;"],[0,"&orv;"],[0,"&andd;"],[0,"&ord;"],[1,"&wedbar;"],[6,"&sdote;"],[3,"&simdot;"],[2,{v:"&congdot;",n:824,o:"&ncongdot;"}],[0,"&easter;"],[0,"&apacir;"],[0,{v:"&apE;",n:824,o:"&napE;"}],[0,"&eplus;"],[0,"&pluse;"],[0,"&Esim;"],[0,"&Colone;"],[0,"&Equal;"],[1,"&ddotseq;"],[0,"&equivDD;"],[0,"&ltcir;"],[0,"&gtcir;"],[0,"&ltquest;"],[0,"&gtquest;"],[0,{v:"&leqslant;",n:824,o:"&nleqslant;"}],[0,{v:"&geqslant;",n:824,o:"&ngeqslant;"}],[0,"&lesdot;"],[0,"&gesdot;"],[0,"&lesdoto;"],[0,"&gesdoto;"],[0,"&lesdotor;"],[0,"&gesdotol;"],[0,"&lap;"],[0,"&gap;"],[0,"&lne;"],[0,"&gne;"],[0,"&lnap;"],[0,"&gnap;"],[0,"&lEg;"],[0,"&gEl;"],[0,"&lsime;"],[0,"&gsime;"],[0,"&lsimg;"],[0,"&gsiml;"],[0,"&lgE;"],[0,"&glE;"],[0,"&lesges;"],[0,"&gesles;"],[0,"&els;"],[0,"&egs;"],[0,"&elsdot;"],[0,"&egsdot;"],[0,"&el;"],[0,"&eg;"],[2,"&siml;"],[0,"&simg;"],[0,"&simlE;"],[0,"&simgE;"],[0,{v:"&LessLess;",n:824,o:"&NotNestedLessLess;"}],[0,{v:"&GreaterGreater;",n:824,o:"&NotNestedGreaterGreater;"}],[1,"&glj;"],[0,"&gla;"],[0,"&ltcc;"],[0,"&gtcc;"],[0,"&lescc;"],[0,"&gescc;"],[0,"&smt;"],[0,"&lat;"],[0,{v:"&smte;",n:65024,o:"&smtes;"}],[0,{v:"&late;",n:65024,o:"&lates;"}],[0,"&bumpE;"],[0,{v:"&PrecedesEqual;",n:824,o:"&NotPrecedesEqual;"}],[0,{v:"&sce;",n:824,o:"&NotSucceedsEqual;"}],[2,"&prE;"],[0,"&scE;"],[0,"&precneqq;"],[0,"&scnE;"],[0,"&prap;"],[0,"&scap;"],[0,"&precnapprox;"],[0,"&scnap;"],[0,"&Pr;"],[0,"&Sc;"],[0,"&subdot;"],[0,"&supdot;"],[0,"&subplus;"],[0,"&supplus;"],[0,"&submult;"],[0,"&supmult;"],[0,"&subedot;"],[0,"&supedot;"],[0,{v:"&subE;",n:824,o:"&nsubE;"}],[0,{v:"&supE;",n:824,o:"&nsupE;"}],[0,"&subsim;"],[0,"&supsim;"],[2,{v:"&subnE;",n:65024,o:"&varsubsetneqq;"}],[0,{v:"&supnE;",n:65024,o:"&varsupsetneqq;"}],[2,"&csub;"],[0,"&csup;"],[0,"&csube;"],[0,"&csupe;"],[0,"&subsup;"],[0,"&supsub;"],[0,"&subsub;"],[0,"&supsup;"],[0,"&suphsub;"],[0,"&supdsub;"],[0,"&forkv;"],[0,"&topfork;"],[0,"&mlcp;"],[8,"&Dashv;"],[1,"&Vdashl;"],[0,"&Barv;"],[0,"&vBar;"],[0,"&vBarv;"],[1,"&Vbar;"],[0,"&Not;"],[0,"&bNot;"],[0,"&rnmid;"],[0,"&cirmid;"],[0,"&midcir;"],[0,"&topcir;"],[0,"&nhpar;"],[0,"&parsim;"],[9,{v:"&parsl;",n:8421,o:"&nparsl;"}],[44343,{n:new Map(dn([[56476,"&Ascr;"],[1,"&Cscr;"],[0,"&Dscr;"],[2,"&Gscr;"],[2,"&Jscr;"],[0,"&Kscr;"],[2,"&Nscr;"],[0,"&Oscr;"],[0,"&Pscr;"],[0,"&Qscr;"],[1,"&Sscr;"],[0,"&Tscr;"],[0,"&Uscr;"],[0,"&Vscr;"],[0,"&Wscr;"],[0,"&Xscr;"],[0,"&Yscr;"],[0,"&Zscr;"],[0,"&ascr;"],[0,"&bscr;"],[0,"&cscr;"],[0,"&dscr;"],[1,"&fscr;"],[1,"&hscr;"],[0,"&iscr;"],[0,"&jscr;"],[0,"&kscr;"],[0,"&lscr;"],[0,"&mscr;"],[0,"&nscr;"],[1,"&pscr;"],[0,"&qscr;"],[0,"&rscr;"],[0,"&sscr;"],[0,"&tscr;"],[0,"&uscr;"],[0,"&vscr;"],[0,"&wscr;"],[0,"&xscr;"],[0,"&yscr;"],[0,"&zscr;"],[52,"&Afr;"],[0,"&Bfr;"],[1,"&Dfr;"],[0,"&Efr;"],[0,"&Ffr;"],[0,"&Gfr;"],[2,"&Jfr;"],[0,"&Kfr;"],[0,"&Lfr;"],[0,"&Mfr;"],[0,"&Nfr;"],[0,"&Ofr;"],[0,"&Pfr;"],[0,"&Qfr;"],[1,"&Sfr;"],[0,"&Tfr;"],[0,"&Ufr;"],[0,"&Vfr;"],[0,"&Wfr;"],[0,"&Xfr;"],[0,"&Yfr;"],[1,"&afr;"],[0,"&bfr;"],[0,"&cfr;"],[0,"&dfr;"],[0,"&efr;"],[0,"&ffr;"],[0,"&gfr;"],[0,"&hfr;"],[0,"&ifr;"],[0,"&jfr;"],[0,"&kfr;"],[0,"&lfr;"],[0,"&mfr;"],[0,"&nfr;"],[0,"&ofr;"],[0,"&pfr;"],[0,"&qfr;"],[0,"&rfr;"],[0,"&sfr;"],[0,"&tfr;"],[0,"&ufr;"],[0,"&vfr;"],[0,"&wfr;"],[0,"&xfr;"],[0,"&yfr;"],[0,"&zfr;"],[0,"&Aopf;"],[0,"&Bopf;"],[1,"&Dopf;"],[0,"&Eopf;"],[0,"&Fopf;"],[0,"&Gopf;"],[1,"&Iopf;"],[0,"&Jopf;"],[0,"&Kopf;"],[0,"&Lopf;"],[0,"&Mopf;"],[1,"&Oopf;"],[3,"&Sopf;"],[0,"&Topf;"],[0,"&Uopf;"],[0,"&Vopf;"],[0,"&Wopf;"],[0,"&Xopf;"],[0,"&Yopf;"],[1,"&aopf;"],[0,"&bopf;"],[0,"&copf;"],[0,"&dopf;"],[0,"&eopf;"],[0,"&fopf;"],[0,"&gopf;"],[0,"&hopf;"],[0,"&iopf;"],[0,"&jopf;"],[0,"&kopf;"],[0,"&lopf;"],[0,"&mopf;"],[0,"&nopf;"],[0,"&oopf;"],[0,"&popf;"],[0,"&qopf;"],[0,"&ropf;"],[0,"&sopf;"],[0,"&topf;"],[0,"&uopf;"],[0,"&vopf;"],[0,"&wopf;"],[0,"&xopf;"],[0,"&yopf;"],[0,"&zopf;"]]))}],[8906,"&fflig;"],[0,"&filig;"],[0,"&fllig;"],[0,"&ffilig;"],[0,"&ffllig;"]]));var od=new Map([[34,"&quot;"],[38,"&amp;"],[39,"&apos;"],[60,"&lt;"],[62,"&gt;"]]),ud=String.prototype.codePointAt!=null?(e,t)=>e.codePointAt(t):(e,t)=>(e.charCodeAt(t)&64512)===55296?(e.charCodeAt(t)-55296)*1024+e.charCodeAt(t+1)-56320+65536:e.charCodeAt(t);function Xn(e,t){return function(r){let i,a=0,o="";for(;i=e.exec(r);)a!==i.index&&(o+=r.substring(a,i.index)),o+=t.get(i[0].charCodeAt(0)),a=i.index+1;return o+r.substring(a)}}var ka=Xn(/[&<>'"]/g,od),ba=Xn(/["&\u00A0]/g,new Map([[34,"&quot;"],[38,"&amp;"],[160,"&nbsp;"]])),ya=Xn(/[&<>\u00A0]/g,new Map([[38,"&amp;"],[60,"&lt;"],[62,"&gt;"],[160,"&nbsp;"]]));var xa;(function(e){e[e.XML=0]="XML",e[e.HTML=1]="HTML"})(xa||(xa={}));var Ca;(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"})(Ca||(Ca={}));function cd(e){return Object.prototype.toString.call(e)}function cn(e){return cd(e)==="[object String]"}var ld=Object.prototype.hasOwnProperty;function pd(e,t){return ld.call(e,t)}function Ge(e){return Array.prototype.slice.call(arguments,1).forEach(function(n){if(n){if(typeof n!="object")throw new TypeError(n+"must be object");Object.keys(n).forEach(function(r){e[r]=n[r]})}}),e}function er(e,t,n){return[].concat(e.slice(0,t),n,e.slice(t+1))}function ln(e){return!(e>=55296&&e<=57343||e>=64976&&e<=65007||(e&65535)===65535||(e&65535)===65534||e>=0&&e<=8||e===11||e>=14&&e<=31||e>=127&&e<=159||e>1114111)}function rt(e){if(e>65535){e-=65536;let t=55296+(e>>10),n=56320+(e&1023);return String.fromCharCode(t,n)}return String.fromCharCode(e)}var Ma=/\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g,fd=/&([a-z#][a-z0-9]{1,31});/gi,gd=new RegExp(Ma.source+"|"+fd.source,"gi"),md=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;function hd(e,t){if(t.charCodeAt(0)===35&&md.test(t)){let r=t[1].toLowerCase()==="x"?parseInt(t.slice(2),16):parseInt(t.slice(1),10);return ln(r)?rt(r):e}let n=he(e);return n!==e?n:e}function kd(e){return e.indexOf("\\")<0?e:e.replace(Ma,"$1")}function ae(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(gd,function(t,n,r){return n||hd(t,r)})}var bd=/[&<>"]/,yd=/[&<>"]/g,xd={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};function Cd(e){return xd[e]}function oe(e){return bd.test(e)?e.replace(yd,Cd):e}var Sd=/[.?*+^$[\]\\(){}|-]/g;function Fd(e){return e.replace(Sd,"\\$&")}function E(e){switch(e){case 9:case 32:return!0}return!1}function Me(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function we(e){return Be.test(e)||on.test(e)}function ve(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function Te(e){return e=e.trim().replace(/\s+/g," "),"\u1E9E".toLowerCase()==="\u1E7E"&&(e=e.replace(/ẞ/g,"\xDF")),e.toLowerCase().toUpperCase()}var Md={mdurl:nn,ucmicro:Vn};var ar={};Qe(ar,{parseLinkDestination:()=>rr,parseLinkLabel:()=>nr,parseLinkTitle:()=>ir});function nr(e,t,n){let r,i,a,o,u=e.posMax,s=e.pos;for(e.pos=t+1,r=1;e.pos<u;){if(a=e.src.charCodeAt(e.pos),a===93&&(r--,r===0)){i=!0;break}if(o=e.pos,e.md.inline.skipToken(e),a===91){if(o===e.pos-1)r++;else if(n)return e.pos=s,-1}}let d=-1;return i&&(d=e.pos),e.pos=s,d}function rr(e,t,n){let r,i=t,a={ok:!1,pos:0,str:""};if(e.charCodeAt(i)===60){for(i++;i<n;){if(r=e.charCodeAt(i),r===10||r===60)return a;if(r===62)return a.pos=i+1,a.str=ae(e.slice(t+1,i)),a.ok=!0,a;if(r===92&&i+1<n){i+=2;continue}i++}return a}let o=0;for(;i<n&&(r=e.charCodeAt(i),!(r===32||r<32||r===127));){if(r===92&&i+1<n){if(e.charCodeAt(i+1)===32)break;i+=2;continue}if(r===40&&(o++,o>32))return a;if(r===41){if(o===0)break;o--}i++}return t===i||o!==0||(a.str=ae(e.slice(t,i)),a.pos=i,a.ok=!0),a}function ir(e,t,n,r){let i,a=t,o={ok:!1,can_continue:!1,pos:0,str:"",marker:0};if(r)o.str=r.str,o.marker=r.marker;else{if(a>=n)return o;let u=e.charCodeAt(a);if(u!==34&&u!==39&&u!==40)return o;t++,a++,u===40&&(u=41),o.marker=u}for(;a<n;){if(i=e.charCodeAt(a),i===o.marker)return o.pos=a+1,o.str+=ae(e.slice(t,a)),o.ok=!0,o;if(i===40&&o.marker===41)return o;i===92&&a+1<n&&a++,a++}return o.can_continue=!0,o.str+=ae(e.slice(t,a)),o}var ee={};ee.code_inline=function(e,t,n,r,i){let a=e[t];return"<code"+i.renderAttrs(a)+">"+oe(a.content)+"</code>"};ee.code_block=function(e,t,n,r,i){let a=e[t];return"<pre"+i.renderAttrs(a)+"><code>"+oe(e[t].content)+`</code></pre>
`};ee.fence=function(e,t,n,r,i){let a=e[t],o=a.info?ae(a.info).trim():"",u="",s="";if(o){let c=o.split(/(\s+)/g);u=c[0],s=c.slice(2).join("")}let d;if(n.highlight?d=n.highlight(a.content,u,s)||oe(a.content):d=oe(a.content),d.indexOf("<pre")===0)return d+`
`;if(o){let c=a.attrIndex("class"),l=a.attrs?a.attrs.slice():[];c<0?l.push(["class",n.langPrefix+u]):(l[c]=l[c].slice(),l[c][1]+=" "+n.langPrefix+u);let f={attrs:l};return`<pre><code${i.renderAttrs(f)}>${d}</code></pre>
`}return`<pre><code${i.renderAttrs(a)}>${d}</code></pre>
`};ee.image=function(e,t,n,r,i){let a=e[t];return a.attrs[a.attrIndex("alt")][1]=i.renderInlineAsText(a.children,n,r),i.renderToken(e,t,n)};ee.hardbreak=function(e,t,n){return n.xhtmlOut?`<br />
`:`<br>
`};ee.softbreak=function(e,t,n){return n.breaks?n.xhtmlOut?`<br />
`:`<br>
`:`
`};ee.text=function(e,t){return oe(e[t].content)};ee.html_block=function(e,t){return e[t].content};ee.html_inline=function(e,t){return e[t].content};function qe(){this.rules=Ge({},ee)}qe.prototype.renderAttrs=function(t){let n,r,i;if(!t.attrs)return"";for(i="",n=0,r=t.attrs.length;n<r;n++)i+=" "+oe(t.attrs[n][0])+'="'+oe(t.attrs[n][1])+'"';return i};qe.prototype.renderToken=function(t,n,r){let i=t[n],a="";if(i.hidden)return"";i.block&&i.nesting!==-1&&n&&t[n-1].hidden&&(a+=`
`),a+=(i.nesting===-1?"</":"<")+i.tag,a+=this.renderAttrs(i),i.nesting===0&&r.xhtmlOut&&(a+=" /");let o=!1;if(i.block&&(o=!0,i.nesting===1&&n+1<t.length)){let u=t[n+1];(u.type==="inline"||u.hidden||u.nesting===-1&&u.tag===i.tag)&&(o=!1)}return a+=o?`>
`:">",a};qe.prototype.renderInline=function(e,t,n){let r="",i=this.rules;for(let a=0,o=e.length;a<o;a++){let u=e[a].type;typeof i[u]<"u"?r+=i[u](e,a,t,n,this):r+=this.renderToken(e,a,t)}return r};qe.prototype.renderInlineAsText=function(e,t,n){let r="";for(let i=0,a=e.length;i<a;i++)switch(e[i].type){case"text":r+=e[i].content;break;case"image":r+=this.renderInlineAsText(e[i].children,t,n);break;case"html_inline":case"html_block":r+=e[i].content;break;case"softbreak":case"hardbreak":r+=`
`;break;default:}return r};qe.prototype.render=function(e,t,n){let r="",i=this.rules;for(let a=0,o=e.length;a<o;a++){let u=e[a].type;u==="inline"?r+=this.renderInline(e[a].children,t,n):typeof i[u]<"u"?r+=i[u](e,a,t,n,this):r+=this.renderToken(e,a,t,n)}return r};var wa=qe;function K(){this.__rules__=[],this.__cache__=null}K.prototype.__find__=function(e){for(let t=0;t<this.__rules__.length;t++)if(this.__rules__[t].name===e)return t;return-1};K.prototype.__compile__=function(){let e=this,t=[""];e.__rules__.forEach(function(n){n.enabled&&n.alt.forEach(function(r){t.indexOf(r)<0&&t.push(r)})}),e.__cache__={},t.forEach(function(n){e.__cache__[n]=[],e.__rules__.forEach(function(r){r.enabled&&(n&&r.alt.indexOf(n)<0||e.__cache__[n].push(r.fn))})})};K.prototype.at=function(e,t,n){let r=this.__find__(e),i=n||{};if(r===-1)throw new Error("Parser rule not found: "+e);this.__rules__[r].fn=t,this.__rules__[r].alt=i.alt||[],this.__cache__=null};K.prototype.before=function(e,t,n,r){let i=this.__find__(e),a=r||{};if(i===-1)throw new Error("Parser rule not found: "+e);this.__rules__.splice(i,0,{name:t,enabled:!0,fn:n,alt:a.alt||[]}),this.__cache__=null};K.prototype.after=function(e,t,n,r){let i=this.__find__(e),a=r||{};if(i===-1)throw new Error("Parser rule not found: "+e);this.__rules__.splice(i+1,0,{name:t,enabled:!0,fn:n,alt:a.alt||[]}),this.__cache__=null};K.prototype.push=function(e,t,n){let r=n||{};this.__rules__.push({name:e,enabled:!0,fn:t,alt:r.alt||[]}),this.__cache__=null};K.prototype.enable=function(e,t){Array.isArray(e)||(e=[e]);let n=[];return e.forEach(function(r){let i=this.__find__(r);if(i<0){if(t)return;throw new Error("Rules manager: invalid rule name "+r)}this.__rules__[i].enabled=!0,n.push(r)},this),this.__cache__=null,n};K.prototype.enableOnly=function(e,t){Array.isArray(e)||(e=[e]),this.__rules__.forEach(function(n){n.enabled=!1}),this.enable(e,t)};K.prototype.disable=function(e,t){Array.isArray(e)||(e=[e]);let n=[];return e.forEach(function(r){let i=this.__find__(r);if(i<0){if(t)return;throw new Error("Rules manager: invalid rule name "+r)}this.__rules__[i].enabled=!1,n.push(r)},this),this.__cache__=null,n};K.prototype.getRules=function(e){return this.__cache__===null&&this.__compile__(),this.__cache__[e]||[]};var De=K;function ze(e,t,n){this.type=e,this.tag=t,this.attrs=null,this.map=null,this.nesting=n,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}ze.prototype.attrIndex=function(t){if(!this.attrs)return-1;let n=this.attrs;for(let r=0,i=n.length;r<i;r++)if(n[r][0]===t)return r;return-1};ze.prototype.attrPush=function(t){this.attrs?this.attrs.push(t):this.attrs=[t]};ze.prototype.attrSet=function(t,n){let r=this.attrIndex(t),i=[t,n];r<0?this.attrPush(i):this.attrs[r]=i};ze.prototype.attrGet=function(t){let n=this.attrIndex(t),r=null;return n>=0&&(r=this.attrs[n][1]),r};ze.prototype.attrJoin=function(t,n){let r=this.attrIndex(t);r<0?this.attrPush([t,n]):this.attrs[r][1]=this.attrs[r][1]+" "+n};var ue=ze;function va(e,t,n){this.src=e,this.env=n,this.tokens=[],this.inlineMode=!1,this.md=t}va.prototype.Token=ue;var Ta=va;var wd=/\r\n?|\n/g,vd=/\0/g;function or(e){let t;t=e.src.replace(wd,`
`),t=t.replace(vd,"\uFFFD"),e.src=t}function ur(e){let t;e.inlineMode?(t=new e.Token("inline","",0),t.content=e.src,t.map=[0,1],t.children=[],e.tokens.push(t)):e.md.block.parse(e.src,e.md,e.env,e.tokens)}function sr(e){let t=e.tokens;for(let n=0,r=t.length;n<r;n++){let i=t[n];i.type==="inline"&&e.md.inline.parse(i.content,e.md,e.env,i.children)}}function Td(e){return/^<a[>\s]/i.test(e)}function Dd(e){return/^<\/a\s*>/i.test(e)}function dr(e){let t=e.tokens;if(e.md.options.linkify)for(let n=0,r=t.length;n<r;n++){if(t[n].type!=="inline"||!e.md.linkify.pretest(t[n].content))continue;let i=t[n].children,a=0;for(let o=i.length-1;o>=0;o--){let u=i[o];if(u.type==="link_close"){for(o--;i[o].level!==u.level&&i[o].type!=="link_open";)o--;continue}if(u.type==="html_inline"&&(Td(u.content)&&a>0&&a--,Dd(u.content)&&a++),!(a>0)&&u.type==="text"&&e.md.linkify.test(u.content)){let s=u.content,d=e.md.linkify.match(s),c=[],l=u.level,f=0;d.length>0&&d[0].index===0&&o>0&&i[o-1].type==="text_special"&&(d=d.slice(1));for(let m=0;m<d.length;m++){let p=d[m].url,F=e.md.normalizeLink(p);if(!e.md.validateLink(F))continue;let k=d[m].text;d[m].schema?d[m].schema==="mailto:"&&!/^mailto:/i.test(k)?k=e.md.normalizeLinkText("mailto:"+k).replace(/^mailto:/,""):k=e.md.normalizeLinkText(k):k=e.md.normalizeLinkText("http://"+k).replace(/^http:\/\//,"");let b=d[m].index;if(b>f){let M=new e.Token("text","",0);M.content=s.slice(f,b),M.level=l,c.push(M)}let x=new e.Token("link_open","a",1);x.attrs=[["href",F]],x.level=l++,x.markup="linkify",x.info="auto",c.push(x);let C=new e.Token("text","",0);C.content=k,C.level=l,c.push(C);let h=new e.Token("link_close","a",-1);h.level=--l,h.markup="linkify",h.info="auto",c.push(h),f=d[m].lastIndex}if(f<s.length){let m=new e.Token("text","",0);m.content=s.slice(f),m.level=l,c.push(m)}t[n].children=i=er(i,o,c)}}}}var Da=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,Ad=/\((c|tm|r)\)/i,Ed=/\((c|tm|r)\)/ig,_d={c:"\xA9",r:"\xAE",tm:"\u2122"};function Ld(e,t){return _d[t.toLowerCase()]}function Id(e){let t=0;for(let n=e.length-1;n>=0;n--){let r=e[n];r.type==="text"&&!t&&(r.content=r.content.replace(Ed,Ld)),r.type==="link_open"&&r.info==="auto"&&t--,r.type==="link_close"&&r.info==="auto"&&t++}}function Nd(e){let t=0;for(let n=e.length-1;n>=0;n--){let r=e[n];r.type==="text"&&!t&&Da.test(r.content)&&(r.content=r.content.replace(/\+-/g,"\xB1").replace(/\.{2,}/g,"\u2026").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/mg,"$1\u2014").replace(/(^|\s)--(?=\s|$)/mg,"$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/mg,"$1\u2013")),r.type==="link_open"&&r.info==="auto"&&t--,r.type==="link_close"&&r.info==="auto"&&t++}}function cr(e){let t;if(e.md.options.typographer)for(t=e.tokens.length-1;t>=0;t--)e.tokens[t].type==="inline"&&(Ad.test(e.tokens[t].content)&&Id(e.tokens[t].children),Da.test(e.tokens[t].content)&&Nd(e.tokens[t].children))}var Pd=/['"]/,Aa=/['"]/g,Ea="\u2019";function pn(e,t,n){return e.slice(0,t)+n+e.slice(t+1)}function Rd(e,t){let n,r=[];for(let i=0;i<e.length;i++){let a=e[i],o=e[i].level;for(n=r.length-1;n>=0&&!(r[n].level<=o);n--);if(r.length=n+1,a.type!=="text")continue;let u=a.content,s=0,d=u.length;e:for(;s<d;){Aa.lastIndex=s;let c=Aa.exec(u);if(!c)break;let l=!0,f=!0;s=c.index+1;let m=c[0]==="'",p=32;if(c.index-1>=0)p=u.charCodeAt(c.index-1);else for(n=i-1;n>=0&&!(e[n].type==="softbreak"||e[n].type==="hardbreak");n--)if(e[n].content){p=e[n].content.charCodeAt(e[n].content.length-1);break}let F=32;if(s<d)F=u.charCodeAt(s);else for(n=i+1;n<e.length&&!(e[n].type==="softbreak"||e[n].type==="hardbreak");n++)if(e[n].content){F=e[n].content.charCodeAt(0);break}let k=ve(p)||we(String.fromCharCode(p)),b=ve(F)||we(String.fromCharCode(F)),x=Me(p),C=Me(F);if(C?l=!1:b&&(x||k||(l=!1)),x?f=!1:k&&(C||b||(f=!1)),F===34&&c[0]==='"'&&p>=48&&p<=57&&(f=l=!1),l&&f&&(l=k,f=b),!l&&!f){m&&(a.content=pn(a.content,c.index,Ea));continue}if(f)for(n=r.length-1;n>=0;n--){let h=r[n];if(r[n].level<o)break;if(h.single===m&&r[n].level===o){h=r[n];let M,T;m?(M=t.md.options.quotes[2],T=t.md.options.quotes[3]):(M=t.md.options.quotes[0],T=t.md.options.quotes[1]),a.content=pn(a.content,c.index,T),e[h.token].content=pn(e[h.token].content,h.pos,M),s+=T.length-1,h.token===i&&(s+=M.length-1),u=a.content,d=u.length,r.length=n;continue e}}l?r.push({token:i,pos:c.index,single:m,level:o}):f&&m&&(a.content=pn(a.content,c.index,Ea))}}}function lr(e){if(e.md.options.typographer)for(let t=e.tokens.length-1;t>=0;t--)e.tokens[t].type!=="inline"||!Pd.test(e.tokens[t].content)||Rd(e.tokens[t].children,e)}function pr(e){let t,n,r=e.tokens,i=r.length;for(let a=0;a<i;a++){if(r[a].type!=="inline")continue;let o=r[a].children,u=o.length;for(t=0;t<u;t++)o[t].type==="text_special"&&(o[t].type="text");for(t=n=0;t<u;t++)o[t].type==="text"&&t+1<u&&o[t+1].type==="text"?o[t+1].content=o[t].content+o[t+1].content:(t!==n&&(o[n]=o[t]),n++);t!==n&&(o.length=n)}}var fr=[["normalize",or],["block",ur],["inline",sr],["linkify",dr],["replacements",cr],["smartquotes",lr],["text_join",pr]];function gr(){this.ruler=new De;for(let e=0;e<fr.length;e++)this.ruler.push(fr[e][0],fr[e][1])}gr.prototype.process=function(e){let t=this.ruler.getRules("");for(let n=0,r=t.length;n<r;n++)t[n](e)};gr.prototype.State=Ta;var _a=gr;function te(e,t,n,r){this.src=e,this.md=t,this.env=n,this.tokens=r,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType="root",this.level=0;let i=this.src;for(let a=0,o=0,u=0,s=0,d=i.length,c=!1;o<d;o++){let l=i.charCodeAt(o);if(!c)if(E(l)){u++,l===9?s+=4-s%4:s++;continue}else c=!0;(l===10||o===d-1)&&(l!==10&&o++,this.bMarks.push(a),this.eMarks.push(o),this.tShift.push(u),this.sCount.push(s),this.bsCount.push(0),c=!1,u=0,s=0,a=o+1)}this.bMarks.push(i.length),this.eMarks.push(i.length),this.tShift.push(0),this.sCount.push(0),this.bsCount.push(0),this.lineMax=this.bMarks.length-1}te.prototype.push=function(e,t,n){let r=new ue(e,t,n);return r.block=!0,n<0&&this.level--,r.level=this.level,n>0&&this.level++,this.tokens.push(r),r};te.prototype.isEmpty=function(t){return this.bMarks[t]+this.tShift[t]>=this.eMarks[t]};te.prototype.skipEmptyLines=function(t){for(let n=this.lineMax;t<n&&!(this.bMarks[t]+this.tShift[t]<this.eMarks[t]);t++);return t};te.prototype.skipSpaces=function(t){for(let n=this.src.length;t<n;t++){let r=this.src.charCodeAt(t);if(!E(r))break}return t};te.prototype.skipSpacesBack=function(t,n){if(t<=n)return t;for(;t>n;)if(!E(this.src.charCodeAt(--t)))return t+1;return t};te.prototype.skipChars=function(t,n){for(let r=this.src.length;t<r&&this.src.charCodeAt(t)===n;t++);return t};te.prototype.skipCharsBack=function(t,n,r){if(t<=r)return t;for(;t>r;)if(n!==this.src.charCodeAt(--t))return t+1;return t};te.prototype.getLines=function(t,n,r,i){if(t>=n)return"";let a=new Array(n-t);for(let o=0,u=t;u<n;u++,o++){let s=0,d=this.bMarks[u],c=d,l;for(u+1<n||i?l=this.eMarks[u]+1:l=this.eMarks[u];c<l&&s<r;){let f=this.src.charCodeAt(c);if(E(f))f===9?s+=4-(s+this.bsCount[u])%4:s++;else if(c-d<this.tShift[u])s++;else break;c++}s>r?a[o]=new Array(s-r+1).join(" ")+this.src.slice(c,l):a[o]=this.src.slice(c,l)}return a.join("")};te.prototype.Token=ue;var La=te;var Bd=65536;function mr(e,t){let n=e.bMarks[t]+e.tShift[t],r=e.eMarks[t];return e.src.slice(n,r)}function Ia(e){let t=[],n=e.length,r=0,i=e.charCodeAt(r),a=!1,o=0,u="";for(;r<n;)i===124&&(a?(u+=e.substring(o,r-1),o=r):(t.push(u+e.substring(o,r)),u="",o=r+1)),a=i===92,r++,i=e.charCodeAt(r);return t.push(u+e.substring(o)),t}function hr(e,t,n,r){if(t+2>n)return!1;let i=t+1;if(e.sCount[i]<e.blkIndent||e.sCount[i]-e.blkIndent>=4)return!1;let a=e.bMarks[i]+e.tShift[i];if(a>=e.eMarks[i])return!1;let o=e.src.charCodeAt(a++);if(o!==124&&o!==45&&o!==58||a>=e.eMarks[i])return!1;let u=e.src.charCodeAt(a++);if(u!==124&&u!==45&&u!==58&&!E(u)||o===45&&E(u))return!1;for(;a<e.eMarks[i];){let h=e.src.charCodeAt(a);if(h!==124&&h!==45&&h!==58&&!E(h))return!1;a++}let s=mr(e,t+1),d=s.split("|"),c=[];for(let h=0;h<d.length;h++){let M=d[h].trim();if(!M){if(h===0||h===d.length-1)continue;return!1}if(!/^:?-+:?$/.test(M))return!1;M.charCodeAt(M.length-1)===58?c.push(M.charCodeAt(0)===58?"center":"right"):M.charCodeAt(0)===58?c.push("left"):c.push("")}if(s=mr(e,t).trim(),s.indexOf("|")===-1||e.sCount[t]-e.blkIndent>=4)return!1;d=Ia(s),d.length&&d[0]===""&&d.shift(),d.length&&d[d.length-1]===""&&d.pop();let l=d.length;if(l===0||l!==c.length)return!1;if(r)return!0;let f=e.parentType;e.parentType="table";let m=e.md.block.ruler.getRules("blockquote"),p=e.push("table_open","table",1),F=[t,0];p.map=F;let k=e.push("thead_open","thead",1);k.map=[t,t+1];let b=e.push("tr_open","tr",1);b.map=[t,t+1];for(let h=0;h<d.length;h++){let M=e.push("th_open","th",1);c[h]&&(M.attrs=[["style","text-align:"+c[h]]]);let T=e.push("inline","",0);T.content=d[h].trim(),T.children=[],e.push("th_close","th",-1)}e.push("tr_close","tr",-1),e.push("thead_close","thead",-1);let x,C=0;for(i=t+2;i<n&&!(e.sCount[i]<e.blkIndent);i++){let h=!1;for(let T=0,D=m.length;T<D;T++)if(m[T](e,i,n,!0)){h=!0;break}if(h||(s=mr(e,i).trim(),!s)||e.sCount[i]-e.blkIndent>=4||(d=Ia(s),d.length&&d[0]===""&&d.shift(),d.length&&d[d.length-1]===""&&d.pop(),C+=l-d.length,C>Bd))break;if(i===t+2){let T=e.push("tbody_open","tbody",1);T.map=x=[t+2,0]}let M=e.push("tr_open","tr",1);M.map=[i,i+1];for(let T=0;T<l;T++){let D=e.push("td_open","td",1);c[T]&&(D.attrs=[["style","text-align:"+c[T]]]);let I=e.push("inline","",0);I.content=d[T]?d[T].trim():"",I.children=[],e.push("td_close","td",-1)}e.push("tr_close","tr",-1)}return x&&(e.push("tbody_close","tbody",-1),x[1]=i),e.push("table_close","table",-1),F[1]=i,e.parentType=f,e.line=i,!0}function kr(e,t,n){if(e.sCount[t]-e.blkIndent<4)return!1;let r=t+1,i=r;for(;r<n;){if(e.isEmpty(r)){r++;continue}if(e.sCount[r]-e.blkIndent>=4){r++,i=r;continue}break}e.line=i;let a=e.push("code_block","code",0);return a.content=e.getLines(t,i,4+e.blkIndent,!1)+`
`,a.map=[t,e.line],!0}function br(e,t,n,r){let i=e.bMarks[t]+e.tShift[t],a=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4||i+3>a)return!1;let o=e.src.charCodeAt(i);if(o!==126&&o!==96)return!1;let u=i;i=e.skipChars(i,o);let s=i-u;if(s<3)return!1;let d=e.src.slice(u,i),c=e.src.slice(i,a);if(o===96&&c.indexOf(String.fromCharCode(o))>=0)return!1;if(r)return!0;let l=t,f=!1;for(;l++,!(l>=n||(i=u=e.bMarks[l]+e.tShift[l],a=e.eMarks[l],i<a&&e.sCount[l]<e.blkIndent));)if(e.src.charCodeAt(i)===o&&!(e.sCount[l]-e.blkIndent>=4)&&(i=e.skipChars(i,o),!(i-u<s)&&(i=e.skipSpaces(i),!(i<a)))){f=!0;break}s=e.sCount[t],e.line=l+(f?1:0);let m=e.push("fence","code",0);return m.info=c,m.content=e.getLines(t+1,l,s,!0),m.markup=d,m.map=[t,e.line],!0}function yr(e,t,n,r){let i=e.bMarks[t]+e.tShift[t],a=e.eMarks[t],o=e.lineMax;if(e.sCount[t]-e.blkIndent>=4||e.src.charCodeAt(i)!==62)return!1;if(r)return!0;let u=[],s=[],d=[],c=[],l=e.md.block.ruler.getRules("blockquote"),f=e.parentType;e.parentType="blockquote";let m=!1,p;for(p=t;p<n;p++){let C=e.sCount[p]<e.blkIndent;if(i=e.bMarks[p]+e.tShift[p],a=e.eMarks[p],i>=a)break;if(e.src.charCodeAt(i++)===62&&!C){let M=e.sCount[p]+1,T,D;e.src.charCodeAt(i)===32?(i++,M++,D=!1,T=!0):e.src.charCodeAt(i)===9?(T=!0,(e.bsCount[p]+M)%4===3?(i++,M++,D=!1):D=!0):T=!1;let I=M;for(u.push(e.bMarks[p]),e.bMarks[p]=i;i<a;){let A=e.src.charCodeAt(i);if(E(A))A===9?I+=4-(I+e.bsCount[p]+(D?1:0))%4:I++;else break;i++}m=i>=a,s.push(e.bsCount[p]),e.bsCount[p]=e.sCount[p]+1+(T?1:0),d.push(e.sCount[p]),e.sCount[p]=I-M,c.push(e.tShift[p]),e.tShift[p]=i-e.bMarks[p];continue}if(m)break;let h=!1;for(let M=0,T=l.length;M<T;M++)if(l[M](e,p,n,!0)){h=!0;break}if(h){e.lineMax=p,e.blkIndent!==0&&(u.push(e.bMarks[p]),s.push(e.bsCount[p]),c.push(e.tShift[p]),d.push(e.sCount[p]),e.sCount[p]-=e.blkIndent);break}u.push(e.bMarks[p]),s.push(e.bsCount[p]),c.push(e.tShift[p]),d.push(e.sCount[p]),e.sCount[p]=-1}let F=e.blkIndent;e.blkIndent=0;let k=e.push("blockquote_open","blockquote",1);k.markup=">";let b=[t,0];k.map=b,e.md.block.tokenize(e,t,p);let x=e.push("blockquote_close","blockquote",-1);x.markup=">",e.lineMax=o,e.parentType=f,b[1]=e.line;for(let C=0;C<c.length;C++)e.bMarks[C+t]=u[C],e.tShift[C+t]=c[C],e.sCount[C+t]=d[C],e.bsCount[C+t]=s[C];return e.blkIndent=F,!0}function xr(e,t,n,r){let i=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;let a=e.bMarks[t]+e.tShift[t],o=e.src.charCodeAt(a++);if(o!==42&&o!==45&&o!==95)return!1;let u=1;for(;a<i;){let d=e.src.charCodeAt(a++);if(d!==o&&!E(d))return!1;d===o&&u++}if(u<3)return!1;if(r)return!0;e.line=t+1;let s=e.push("hr","hr",0);return s.map=[t,e.line],s.markup=Array(u+1).join(String.fromCharCode(o)),!0}function Na(e,t){let n=e.eMarks[t],r=e.bMarks[t]+e.tShift[t],i=e.src.charCodeAt(r++);if(i!==42&&i!==45&&i!==43)return-1;if(r<n){let a=e.src.charCodeAt(r);if(!E(a))return-1}return r}function Pa(e,t){let n=e.bMarks[t]+e.tShift[t],r=e.eMarks[t],i=n;if(i+1>=r)return-1;let a=e.src.charCodeAt(i++);if(a<48||a>57)return-1;for(;;){if(i>=r)return-1;if(a=e.src.charCodeAt(i++),a>=48&&a<=57){if(i-n>=10)return-1;continue}if(a===41||a===46)break;return-1}return i<r&&(a=e.src.charCodeAt(i),!E(a))?-1:i}function Gd(e,t){let n=e.level+2;for(let r=t+2,i=e.tokens.length-2;r<i;r++)e.tokens[r].level===n&&e.tokens[r].type==="paragraph_open"&&(e.tokens[r+2].hidden=!0,e.tokens[r].hidden=!0,r+=2)}function Cr(e,t,n,r){let i,a,o,u,s=t,d=!0;if(e.sCount[s]-e.blkIndent>=4||e.listIndent>=0&&e.sCount[s]-e.listIndent>=4&&e.sCount[s]<e.blkIndent)return!1;let c=!1;r&&e.parentType==="paragraph"&&e.sCount[s]>=e.blkIndent&&(c=!0);let l,f,m;if((m=Pa(e,s))>=0){if(l=!0,o=e.bMarks[s]+e.tShift[s],f=Number(e.src.slice(o,m-1)),c&&f!==1)return!1}else if((m=Na(e,s))>=0)l=!1;else return!1;if(c&&e.skipSpaces(m)>=e.eMarks[s])return!1;if(r)return!0;let p=e.src.charCodeAt(m-1),F=e.tokens.length;l?(u=e.push("ordered_list_open","ol",1),f!==1&&(u.attrs=[["start",f]])):u=e.push("bullet_list_open","ul",1);let k=[s,0];u.map=k,u.markup=String.fromCharCode(p);let b=!1,x=e.md.block.ruler.getRules("list"),C=e.parentType;for(e.parentType="list";s<n;){a=m,i=e.eMarks[s];let h=e.sCount[s]+m-(e.bMarks[s]+e.tShift[s]),M=h;for(;a<i;){let P=e.src.charCodeAt(a);if(P===9)M+=4-(M+e.bsCount[s])%4;else if(P===32)M++;else break;a++}let T=a,D;T>=i?D=1:D=M-h,D>4&&(D=1);let I=h+D;u=e.push("list_item_open","li",1),u.markup=String.fromCharCode(p);let A=[s,0];u.map=A,l&&(u.info=e.src.slice(o,m-1));let R=e.tight,y=e.tShift[s],v=e.sCount[s],_=e.listIndent;if(e.listIndent=e.blkIndent,e.blkIndent=I,e.tight=!0,e.tShift[s]=T-e.bMarks[s],e.sCount[s]=M,T>=i&&e.isEmpty(s+1)?e.line=Math.min(e.line+2,n):e.md.block.tokenize(e,s,n,!0),(!e.tight||b)&&(d=!1),b=e.line-s>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=_,e.tShift[s]=y,e.sCount[s]=v,e.tight=R,u=e.push("list_item_close","li",-1),u.markup=String.fromCharCode(p),s=e.line,A[1]=s,s>=n||e.sCount[s]<e.blkIndent||e.sCount[s]-e.blkIndent>=4)break;let L=!1;for(let P=0,q=x.length;P<q;P++)if(x[P](e,s,n,!0)){L=!0;break}if(L)break;if(l){if(m=Pa(e,s),m<0)break;o=e.bMarks[s]+e.tShift[s]}else if(m=Na(e,s),m<0)break;if(p!==e.src.charCodeAt(m-1))break}return l?u=e.push("ordered_list_close","ol",-1):u=e.push("bullet_list_close","ul",-1),u.markup=String.fromCharCode(p),k[1]=s,e.line=s,e.parentType=C,d&&Gd(e,F),!0}function Sr(e,t,n,r){let i=e.bMarks[t]+e.tShift[t],a=e.eMarks[t],o=t+1;if(e.sCount[t]-e.blkIndent>=4||e.src.charCodeAt(i)!==91)return!1;function u(x){let C=e.lineMax;if(x>=C||e.isEmpty(x))return null;let h=!1;if(e.sCount[x]-e.blkIndent>3&&(h=!0),e.sCount[x]<0&&(h=!0),!h){let D=e.md.block.ruler.getRules("reference"),I=e.parentType;e.parentType="reference";let A=!1;for(let R=0,y=D.length;R<y;R++)if(D[R](e,x,C,!0)){A=!0;break}if(e.parentType=I,A)return null}let M=e.bMarks[x]+e.tShift[x],T=e.eMarks[x];return e.src.slice(M,T+1)}let s=e.src.slice(i,a+1);a=s.length;let d=-1;for(i=1;i<a;i++){let x=s.charCodeAt(i);if(x===91)return!1;if(x===93){d=i;break}else if(x===10){let C=u(o);C!==null&&(s+=C,a=s.length,o++)}else if(x===92&&(i++,i<a&&s.charCodeAt(i)===10)){let C=u(o);C!==null&&(s+=C,a=s.length,o++)}}if(d<0||s.charCodeAt(d+1)!==58)return!1;for(i=d+2;i<a;i++){let x=s.charCodeAt(i);if(x===10){let C=u(o);C!==null&&(s+=C,a=s.length,o++)}else if(!E(x))break}let c=e.md.helpers.parseLinkDestination(s,i,a);if(!c.ok)return!1;let l=e.md.normalizeLink(c.str);if(!e.md.validateLink(l))return!1;i=c.pos;let f=i,m=o,p=i;for(;i<a;i++){let x=s.charCodeAt(i);if(x===10){let C=u(o);C!==null&&(s+=C,a=s.length,o++)}else if(!E(x))break}let F=e.md.helpers.parseLinkTitle(s,i,a);for(;F.can_continue;){let x=u(o);if(x===null)break;s+=x,i=a,a=s.length,o++,F=e.md.helpers.parseLinkTitle(s,i,a,F)}let k;for(i<a&&p!==i&&F.ok?(k=F.str,i=F.pos):(k="",i=f,o=m);i<a;){let x=s.charCodeAt(i);if(!E(x))break;i++}if(i<a&&s.charCodeAt(i)!==10&&k)for(k="",i=f,o=m;i<a;){let x=s.charCodeAt(i);if(!E(x))break;i++}if(i<a&&s.charCodeAt(i)!==10)return!1;let b=Te(s.slice(1,d));return b?(r||(typeof e.env.references>"u"&&(e.env.references={}),typeof e.env.references[b]>"u"&&(e.env.references[b]={title:k,href:l}),e.line=o),!0):!1}var Ra=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"];var qd="[a-zA-Z_:][a-zA-Z0-9:._-]*",zd="[^\"'=<>`\\x00-\\x20]+",Hd="'[^']*'",Od='"[^"]*"',Wd="(?:"+zd+"|"+Hd+"|"+Od+")",$d="(?:\\s+"+qd+"(?:\\s*=\\s*"+Wd+")?)",Ba="<[A-Za-z][A-Za-z0-9\\-]*"+$d+"*\\s*\\/?>",Ga="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",Ud="<!---?>|<!--(?:[^-]|-[^-]|--[^>])*-->",Qd="<[?][\\s\\S]*?[?]>",Vd="<![A-Za-z][^>]*>",jd="<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",qa=new RegExp("^(?:"+Ba+"|"+Ga+"|"+Ud+"|"+Qd+"|"+Vd+"|"+jd+")"),za=new RegExp("^(?:"+Ba+"|"+Ga+")");var He=[[/^<(script|pre|style|textarea)(?=(\s|>|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+Ra.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(za.source+"\\s*$"),/^$/,!1]];function Fr(e,t,n,r){let i=e.bMarks[t]+e.tShift[t],a=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4||!e.md.options.html||e.src.charCodeAt(i)!==60)return!1;let o=e.src.slice(i,a),u=0;for(;u<He.length&&!He[u][0].test(o);u++);if(u===He.length)return!1;if(r)return He[u][2];let s=t+1;if(!He[u][1].test(o)){for(;s<n&&!(e.sCount[s]<e.blkIndent);s++)if(i=e.bMarks[s]+e.tShift[s],a=e.eMarks[s],o=e.src.slice(i,a),He[u][1].test(o)){o.length!==0&&s++;break}}e.line=s;let d=e.push("html_block","",0);return d.map=[t,s],d.content=e.getLines(t,s,e.blkIndent,!0),!0}function Mr(e,t,n,r){let i=e.bMarks[t]+e.tShift[t],a=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;let o=e.src.charCodeAt(i);if(o!==35||i>=a)return!1;let u=1;for(o=e.src.charCodeAt(++i);o===35&&i<a&&u<=6;)u++,o=e.src.charCodeAt(++i);if(u>6||i<a&&!E(o))return!1;if(r)return!0;a=e.skipSpacesBack(a,i);let s=e.skipCharsBack(a,35,i);s>i&&E(e.src.charCodeAt(s-1))&&(a=s),e.line=t+1;let d=e.push("heading_open","h"+String(u),1);d.markup="########".slice(0,u),d.map=[t,e.line];let c=e.push("inline","",0);c.content=e.src.slice(i,a).trim(),c.map=[t,e.line],c.children=[];let l=e.push("heading_close","h"+String(u),-1);return l.markup="########".slice(0,u),!0}function wr(e,t,n){let r=e.md.block.ruler.getRules("paragraph");if(e.sCount[t]-e.blkIndent>=4)return!1;let i=e.parentType;e.parentType="paragraph";let a=0,o,u=t+1;for(;u<n&&!e.isEmpty(u);u++){if(e.sCount[u]-e.blkIndent>3)continue;if(e.sCount[u]>=e.blkIndent){let m=e.bMarks[u]+e.tShift[u],p=e.eMarks[u];if(m<p&&(o=e.src.charCodeAt(m),(o===45||o===61)&&(m=e.skipChars(m,o),m=e.skipSpaces(m),m>=p))){a=o===61?1:2;break}}if(e.sCount[u]<0)continue;let f=!1;for(let m=0,p=r.length;m<p;m++)if(r[m](e,u,n,!0)){f=!0;break}if(f)break}if(!a)return!1;let s=e.getLines(t,u,e.blkIndent,!1).trim();e.line=u+1;let d=e.push("heading_open","h"+String(a),1);d.markup=String.fromCharCode(o),d.map=[t,e.line];let c=e.push("inline","",0);c.content=s,c.map=[t,e.line-1],c.children=[];let l=e.push("heading_close","h"+String(a),-1);return l.markup=String.fromCharCode(o),e.parentType=i,!0}function vr(e,t,n){let r=e.md.block.ruler.getRules("paragraph"),i=e.parentType,a=t+1;for(e.parentType="paragraph";a<n&&!e.isEmpty(a);a++){if(e.sCount[a]-e.blkIndent>3||e.sCount[a]<0)continue;let d=!1;for(let c=0,l=r.length;c<l;c++)if(r[c](e,a,n,!0)){d=!0;break}if(d)break}let o=e.getLines(t,a,e.blkIndent,!1).trim();e.line=a;let u=e.push("paragraph_open","p",1);u.map=[t,e.line];let s=e.push("inline","",0);return s.content=o,s.map=[t,e.line],s.children=[],e.push("paragraph_close","p",-1),e.parentType=i,!0}var fn=[["table",hr,["paragraph","reference"]],["code",kr],["fence",br,["paragraph","reference","blockquote","list"]],["blockquote",yr,["paragraph","reference","blockquote","list"]],["hr",xr,["paragraph","reference","blockquote","list"]],["list",Cr,["paragraph","reference","blockquote"]],["reference",Sr],["html_block",Fr,["paragraph","reference","blockquote"]],["heading",Mr,["paragraph","reference","blockquote"]],["lheading",wr],["paragraph",vr]];function gn(){this.ruler=new De;for(let e=0;e<fn.length;e++)this.ruler.push(fn[e][0],fn[e][1],{alt:(fn[e][2]||[]).slice()})}gn.prototype.tokenize=function(e,t,n){let r=this.ruler.getRules(""),i=r.length,a=e.md.options.maxNesting,o=t,u=!1;for(;o<n&&(e.line=o=e.skipEmptyLines(o),!(o>=n||e.sCount[o]<e.blkIndent));){if(e.level>=a){e.line=n;break}let s=e.line,d=!1;for(let c=0;c<i;c++)if(d=r[c](e,o,n,!1),d){if(s>=e.line)throw new Error("block rule didn't increment state.line");break}if(!d)throw new Error("none of the block rules matched");e.tight=!u,e.isEmpty(e.line-1)&&(u=!0),o=e.line,o<n&&e.isEmpty(o)&&(u=!0,o++,e.line=o)}};gn.prototype.parse=function(e,t,n,r){if(!e)return;let i=new this.State(e,t,n,r);this.tokenize(i,i.line,i.lineMax)};gn.prototype.State=La;var Ha=gn;function it(e,t,n,r){this.src=e,this.env=n,this.md=t,this.tokens=r,this.tokens_meta=Array(r.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[],this.backticks={},this.backticksScanned=!1,this.linkLevel=0}it.prototype.pushPending=function(){let e=new ue("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e};it.prototype.push=function(e,t,n){this.pending&&this.pushPending();let r=new ue(e,t,n),i=null;return n<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),r.level=this.level,n>0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],i={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(r),this.tokens_meta.push(i),r};it.prototype.scanDelims=function(e,t){let n=this.posMax,r=this.src.charCodeAt(e),i=e>0?this.src.charCodeAt(e-1):32,a=e;for(;a<n&&this.src.charCodeAt(a)===r;)a++;let o=a-e,u=a<n?this.src.charCodeAt(a):32,s=ve(i)||we(String.fromCharCode(i)),d=ve(u)||we(String.fromCharCode(u)),c=Me(i),l=Me(u),f=!l&&(!d||c||s),m=!c&&(!s||l||d);return{can_open:f&&(t||!m||s),can_close:m&&(t||!f||d),length:o}};it.prototype.Token=ue;var Oa=it;function Kd(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}function Tr(e,t){let n=e.pos;for(;n<e.posMax&&!Kd(e.src.charCodeAt(n));)n++;return n===e.pos?!1:(t||(e.pending+=e.src.slice(e.pos,n)),e.pos=n,!0)}var Zd=/(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;function Dr(e,t){if(!e.md.options.linkify||e.linkLevel>0)return!1;let n=e.pos,r=e.posMax;if(n+3>r||e.src.charCodeAt(n)!==58||e.src.charCodeAt(n+1)!==47||e.src.charCodeAt(n+2)!==47)return!1;let i=e.pending.match(Zd);if(!i)return!1;let a=i[1],o=e.md.linkify.matchAtStart(e.src.slice(n-a.length));if(!o)return!1;let u=o.url;if(u.length<=a.length)return!1;let s=u.length;for(;s>0&&u.charCodeAt(s-1)===42;)s--;s!==u.length&&(u=u.slice(0,s));let d=e.md.normalizeLink(u);if(!e.md.validateLink(d))return!1;if(!t){e.pending=e.pending.slice(0,-a.length);let c=e.push("link_open","a",1);c.attrs=[["href",d]],c.markup="linkify",c.info="auto";let l=e.push("text","",0);l.content=e.md.normalizeLinkText(u);let f=e.push("link_close","a",-1);f.markup="linkify",f.info="auto"}return e.pos+=u.length-a.length,!0}function Ar(e,t){let n=e.pos;if(e.src.charCodeAt(n)!==10)return!1;let r=e.pending.length-1,i=e.posMax;if(!t)if(r>=0&&e.pending.charCodeAt(r)===32)if(r>=1&&e.pending.charCodeAt(r-1)===32){let a=r-1;for(;a>=1&&e.pending.charCodeAt(a-1)===32;)a--;e.pending=e.pending.slice(0,a),e.push("hardbreak","br",0)}else e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0);else e.push("softbreak","br",0);for(n++;n<i&&E(e.src.charCodeAt(n));)n++;return e.pos=n,!0}var Er=[];for(let e=0;e<256;e++)Er.push(0);"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(e){Er[e.charCodeAt(0)]=1});function _r(e,t){let n=e.pos,r=e.posMax;if(e.src.charCodeAt(n)!==92||(n++,n>=r))return!1;let i=e.src.charCodeAt(n);if(i===10){for(t||e.push("hardbreak","br",0),n++;n<r&&(i=e.src.charCodeAt(n),!!E(i));)n++;return e.pos=n,!0}let a=e.src[n];if(i>=55296&&i<=56319&&n+1<r){let u=e.src.charCodeAt(n+1);u>=56320&&u<=57343&&(a+=e.src[n+1],n++)}let o="\\"+a;if(!t){let u=e.push("text_special","",0);i<256&&Er[i]!==0?u.content=a:u.content=o,u.markup=o,u.info="escape"}return e.pos=n+1,!0}function Lr(e,t){let n=e.pos;if(e.src.charCodeAt(n)!==96)return!1;let i=n;n++;let a=e.posMax;for(;n<a&&e.src.charCodeAt(n)===96;)n++;let o=e.src.slice(i,n),u=o.length;if(e.backticksScanned&&(e.backticks[u]||0)<=i)return t||(e.pending+=o),e.pos+=u,!0;let s=n,d;for(;(d=e.src.indexOf("`",s))!==-1;){for(s=d+1;s<a&&e.src.charCodeAt(s)===96;)s++;let c=s-d;if(c===u){if(!t){let l=e.push("code_inline","code",0);l.markup=o,l.content=e.src.slice(n,d).replace(/\n/g," ").replace(/^ (.+) $/,"$1")}return e.pos=s,!0}e.backticks[c]=d}return e.backticksScanned=!0,t||(e.pending+=o),e.pos+=u,!0}function Yd(e,t){let n=e.pos,r=e.src.charCodeAt(n);if(t||r!==126)return!1;let i=e.scanDelims(e.pos,!0),a=i.length,o=String.fromCharCode(r);if(a<2)return!1;let u;a%2&&(u=e.push("text","",0),u.content=o,a--);for(let s=0;s<a;s+=2)u=e.push("text","",0),u.content=o+o,e.delimiters.push({marker:r,length:0,token:e.tokens.length-1,end:-1,open:i.can_open,close:i.can_close});return e.pos+=i.length,!0}function Wa(e,t){let n,r=[],i=t.length;for(let a=0;a<i;a++){let o=t[a];if(o.marker!==126||o.end===-1)continue;let u=t[o.end];n=e.tokens[o.token],n.type="s_open",n.tag="s",n.nesting=1,n.markup="~~",n.content="",n=e.tokens[u.token],n.type="s_close",n.tag="s",n.nesting=-1,n.markup="~~",n.content="",e.tokens[u.token-1].type==="text"&&e.tokens[u.token-1].content==="~"&&r.push(u.token-1)}for(;r.length;){let a=r.pop(),o=a+1;for(;o<e.tokens.length&&e.tokens[o].type==="s_close";)o++;o--,a!==o&&(n=e.tokens[o],e.tokens[o]=e.tokens[a],e.tokens[a]=n)}}function Xd(e){let t=e.tokens_meta,n=e.tokens_meta.length;Wa(e,e.delimiters);for(let r=0;r<n;r++)t[r]&&t[r].delimiters&&Wa(e,t[r].delimiters)}var Ir={tokenize:Yd,postProcess:Xd};function Jd(e,t){let n=e.pos,r=e.src.charCodeAt(n);if(t||r!==95&&r!==42)return!1;let i=e.scanDelims(e.pos,r===42);for(let a=0;a<i.length;a++){let o=e.push("text","",0);o.content=String.fromCharCode(r),e.delimiters.push({marker:r,length:i.length,token:e.tokens.length-1,end:-1,open:i.can_open,close:i.can_close})}return e.pos+=i.length,!0}function $a(e,t){let n=t.length;for(let r=n-1;r>=0;r--){let i=t[r];if(i.marker!==95&&i.marker!==42||i.end===-1)continue;let a=t[i.end],o=r>0&&t[r-1].end===i.end+1&&t[r-1].marker===i.marker&&t[r-1].token===i.token-1&&t[i.end+1].token===a.token+1,u=String.fromCharCode(i.marker),s=e.tokens[i.token];s.type=o?"strong_open":"em_open",s.tag=o?"strong":"em",s.nesting=1,s.markup=o?u+u:u,s.content="";let d=e.tokens[a.token];d.type=o?"strong_close":"em_close",d.tag=o?"strong":"em",d.nesting=-1,d.markup=o?u+u:u,d.content="",o&&(e.tokens[t[r-1].token].content="",e.tokens[t[i.end+1].token].content="",r--)}}function ec(e){let t=e.tokens_meta,n=e.tokens_meta.length;$a(e,e.delimiters);for(let r=0;r<n;r++)t[r]&&t[r].delimiters&&$a(e,t[r].delimiters)}var Nr={tokenize:Jd,postProcess:ec};function Pr(e,t){let n,r,i,a,o="",u="",s=e.pos,d=!0;if(e.src.charCodeAt(e.pos)!==91)return!1;let c=e.pos,l=e.posMax,f=e.pos+1,m=e.md.helpers.parseLinkLabel(e,e.pos,!0);if(m<0)return!1;let p=m+1;if(p<l&&e.src.charCodeAt(p)===40){for(d=!1,p++;p<l&&(n=e.src.charCodeAt(p),!(!E(n)&&n!==10));p++);if(p>=l)return!1;if(s=p,i=e.md.helpers.parseLinkDestination(e.src,p,e.posMax),i.ok){for(o=e.md.normalizeLink(i.str),e.md.validateLink(o)?p=i.pos:o="",s=p;p<l&&(n=e.src.charCodeAt(p),!(!E(n)&&n!==10));p++);if(i=e.md.helpers.parseLinkTitle(e.src,p,e.posMax),p<l&&s!==p&&i.ok)for(u=i.str,p=i.pos;p<l&&(n=e.src.charCodeAt(p),!(!E(n)&&n!==10));p++);}(p>=l||e.src.charCodeAt(p)!==41)&&(d=!0),p++}if(d){if(typeof e.env.references>"u")return!1;if(p<l&&e.src.charCodeAt(p)===91?(s=p+1,p=e.md.helpers.parseLinkLabel(e,p),p>=0?r=e.src.slice(s,p++):p=m+1):p=m+1,r||(r=e.src.slice(f,m)),a=e.env.references[Te(r)],!a)return e.pos=c,!1;o=a.href,u=a.title}if(!t){e.pos=f,e.posMax=m;let F=e.push("link_open","a",1),k=[["href",o]];F.attrs=k,u&&k.push(["title",u]),e.linkLevel++,e.md.inline.tokenize(e),e.linkLevel--,e.push("link_close","a",-1)}return e.pos=p,e.posMax=l,!0}function Rr(e,t){let n,r,i,a,o,u,s,d,c="",l=e.pos,f=e.posMax;if(e.src.charCodeAt(e.pos)!==33||e.src.charCodeAt(e.pos+1)!==91)return!1;let m=e.pos+2,p=e.md.helpers.parseLinkLabel(e,e.pos+1,!1);if(p<0)return!1;if(a=p+1,a<f&&e.src.charCodeAt(a)===40){for(a++;a<f&&(n=e.src.charCodeAt(a),!(!E(n)&&n!==10));a++);if(a>=f)return!1;for(d=a,u=e.md.helpers.parseLinkDestination(e.src,a,e.posMax),u.ok&&(c=e.md.normalizeLink(u.str),e.md.validateLink(c)?a=u.pos:c=""),d=a;a<f&&(n=e.src.charCodeAt(a),!(!E(n)&&n!==10));a++);if(u=e.md.helpers.parseLinkTitle(e.src,a,e.posMax),a<f&&d!==a&&u.ok)for(s=u.str,a=u.pos;a<f&&(n=e.src.charCodeAt(a),!(!E(n)&&n!==10));a++);else s="";if(a>=f||e.src.charCodeAt(a)!==41)return e.pos=l,!1;a++}else{if(typeof e.env.references>"u")return!1;if(a<f&&e.src.charCodeAt(a)===91?(d=a+1,a=e.md.helpers.parseLinkLabel(e,a),a>=0?i=e.src.slice(d,a++):a=p+1):a=p+1,i||(i=e.src.slice(m,p)),o=e.env.references[Te(i)],!o)return e.pos=l,!1;c=o.href,s=o.title}if(!t){r=e.src.slice(m,p);let F=[];e.md.inline.parse(r,e.md,e.env,F);let k=e.push("image","img",0),b=[["src",c],["alt",""]];k.attrs=b,k.children=F,k.content=r,s&&b.push(["title",s])}return e.pos=a,e.posMax=f,!0}var tc=/^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,nc=/^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\x00-\x20]*)$/;function Br(e,t){let n=e.pos;if(e.src.charCodeAt(n)!==60)return!1;let r=e.pos,i=e.posMax;for(;;){if(++n>=i)return!1;let o=e.src.charCodeAt(n);if(o===60)return!1;if(o===62)break}let a=e.src.slice(r+1,n);if(nc.test(a)){let o=e.md.normalizeLink(a);if(!e.md.validateLink(o))return!1;if(!t){let u=e.push("link_open","a",1);u.attrs=[["href",o]],u.markup="autolink",u.info="auto";let s=e.push("text","",0);s.content=e.md.normalizeLinkText(a);let d=e.push("link_close","a",-1);d.markup="autolink",d.info="auto"}return e.pos+=a.length+2,!0}if(tc.test(a)){let o=e.md.normalizeLink("mailto:"+a);if(!e.md.validateLink(o))return!1;if(!t){let u=e.push("link_open","a",1);u.attrs=[["href",o]],u.markup="autolink",u.info="auto";let s=e.push("text","",0);s.content=e.md.normalizeLinkText(a);let d=e.push("link_close","a",-1);d.markup="autolink",d.info="auto"}return e.pos+=a.length+2,!0}return!1}function rc(e){return/^<a[>\s]/i.test(e)}function ic(e){return/^<\/a\s*>/i.test(e)}function ac(e){let t=e|32;return t>=97&&t<=122}function Gr(e,t){if(!e.md.options.html)return!1;let n=e.posMax,r=e.pos;if(e.src.charCodeAt(r)!==60||r+2>=n)return!1;let i=e.src.charCodeAt(r+1);if(i!==33&&i!==63&&i!==47&&!ac(i))return!1;let a=e.src.slice(r).match(qa);if(!a)return!1;if(!t){let o=e.push("html_inline","",0);o.content=a[0],rc(o.content)&&e.linkLevel++,ic(o.content)&&e.linkLevel--}return e.pos+=a[0].length,!0}var oc=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,uc=/^&([a-z][a-z0-9]{1,31});/i;function qr(e,t){let n=e.pos,r=e.posMax;if(e.src.charCodeAt(n)!==38||n+1>=r)return!1;if(e.src.charCodeAt(n+1)===35){let a=e.src.slice(n).match(oc);if(a){if(!t){let o=a[1][0].toLowerCase()==="x"?parseInt(a[1].slice(1),16):parseInt(a[1],10),u=e.push("text_special","",0);u.content=ln(o)?rt(o):rt(65533),u.markup=a[0],u.info="entity"}return e.pos+=a[0].length,!0}}else{let a=e.src.slice(n).match(uc);if(a){let o=he(a[0]);if(o!==a[0]){if(!t){let u=e.push("text_special","",0);u.content=o,u.markup=a[0],u.info="entity"}return e.pos+=a[0].length,!0}}}return!1}function Ua(e){let t={},n=e.length;if(!n)return;let r=0,i=-2,a=[];for(let o=0;o<n;o++){let u=e[o];if(a.push(0),(e[r].marker!==u.marker||i!==u.token-1)&&(r=o),i=u.token,u.length=u.length||0,!u.close)continue;t.hasOwnProperty(u.marker)||(t[u.marker]=[-1,-1,-1,-1,-1,-1]);let s=t[u.marker][(u.open?3:0)+u.length%3],d=r-a[r]-1,c=d;for(;d>s;d-=a[d]+1){let l=e[d];if(l.marker===u.marker&&l.open&&l.end<0){let f=!1;if((l.close||u.open)&&(l.length+u.length)%3===0&&(l.length%3!==0||u.length%3!==0)&&(f=!0),!f){let m=d>0&&!e[d-1].open?a[d-1]+1:0;a[o]=o-d+m,a[d]=m,u.open=!1,l.end=o,l.close=!1,c=-1,i=-2;break}}}c!==-1&&(t[u.marker][(u.open?3:0)+(u.length||0)%3]=c)}}function zr(e){let t=e.tokens_meta,n=e.tokens_meta.length;Ua(e.delimiters);for(let r=0;r<n;r++)t[r]&&t[r].delimiters&&Ua(t[r].delimiters)}function Hr(e){let t,n,r=0,i=e.tokens,a=e.tokens.length;for(t=n=0;t<a;t++)i[t].nesting<0&&r--,i[t].level=r,i[t].nesting>0&&r++,i[t].type==="text"&&t+1<a&&i[t+1].type==="text"?i[t+1].content=i[t].content+i[t+1].content:(t!==n&&(i[n]=i[t]),n++);t!==n&&(i.length=n)}var Or=[["text",Tr],["linkify",Dr],["newline",Ar],["escape",_r],["backticks",Lr],["strikethrough",Ir.tokenize],["emphasis",Nr.tokenize],["link",Pr],["image",Rr],["autolink",Br],["html_inline",Gr],["entity",qr]],Wr=[["balance_pairs",zr],["strikethrough",Ir.postProcess],["emphasis",Nr.postProcess],["fragments_join",Hr]];function at(){this.ruler=new De;for(let e=0;e<Or.length;e++)this.ruler.push(Or[e][0],Or[e][1]);this.ruler2=new De;for(let e=0;e<Wr.length;e++)this.ruler2.push(Wr[e][0],Wr[e][1])}at.prototype.skipToken=function(e){let t=e.pos,n=this.ruler.getRules(""),r=n.length,i=e.md.options.maxNesting,a=e.cache;if(typeof a[t]<"u"){e.pos=a[t];return}let o=!1;if(e.level<i){for(let u=0;u<r;u++)if(e.level++,o=n[u](e,!0),e.level--,o){if(t>=e.pos)throw new Error("inline rule didn't increment state.pos");break}}else e.pos=e.posMax;o||e.pos++,a[t]=e.pos};at.prototype.tokenize=function(e){let t=this.ruler.getRules(""),n=t.length,r=e.posMax,i=e.md.options.maxNesting;for(;e.pos<r;){let a=e.pos,o=!1;if(e.level<i){for(let u=0;u<n;u++)if(o=t[u](e,!1),o){if(a>=e.pos)throw new Error("inline rule didn't increment state.pos");break}}if(o){if(e.pos>=r)break;continue}e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()};at.prototype.parse=function(e,t,n,r){let i=new this.State(e,t,n,r);this.tokenize(i);let a=this.ruler2.getRules(""),o=a.length;for(let u=0;u<o;u++)a[u](i)};at.prototype.State=Oa;var Qa=at;function Va(e){let t={};e=e||{},t.src_Any=rn.source,t.src_Cc=an.source,t.src_Z=un.source,t.src_P=Be.source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");let n="[><\uFF5C]";return t.src_pseudo_letter="(?:(?!"+n+"|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|"+n+"|"+t.src_ZPCc+")(?!"+(e["---"]?"-(?!--)|":"-|")+"_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|"+n+`|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!`+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+`|["]).)+\\"|\\'(?:(?!`+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+t.src_ZCc+"|[.]|$)|"+(e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+t.src_ZCc+"|$)|;(?!"+t.src_ZCc+"|$)|\\!+(?!"+t.src_ZCc+"|[!]|$)|\\?(?!"+t.src_ZCc+"|[?]|$))+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy="(^|"+n+'|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|"+t.src_ZPCc+"))((?![$+<=>^`|\uFF5C])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|"+t.src_ZPCc+"))((?![$+<=>^`|\uFF5C])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}function $r(e){return Array.prototype.slice.call(arguments,1).forEach(function(n){n&&Object.keys(n).forEach(function(r){e[r]=n[r]})}),e}function hn(e){return Object.prototype.toString.call(e)}function sc(e){return hn(e)==="[object String]"}function dc(e){return hn(e)==="[object Object]"}function cc(e){return hn(e)==="[object RegExp]"}function ja(e){return hn(e)==="[object Function]"}function lc(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var Za={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};function pc(e){return Object.keys(e||{}).reduce(function(t,n){return t||Za.hasOwnProperty(n)},!1)}var fc={"http:":{validate:function(e,t,n){let r=e.slice(t);return n.re.http||(n.re.http=new RegExp("^\\/\\/"+n.re.src_auth+n.re.src_host_port_strict+n.re.src_path,"i")),n.re.http.test(r)?r.match(n.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,t,n){let r=e.slice(t);return n.re.no_http||(n.re.no_http=new RegExp("^"+n.re.src_auth+"(?:localhost|(?:(?:"+n.re.src_domain+")\\.)+"+n.re.src_domain_root+")"+n.re.src_port+n.re.src_host_terminator+n.re.src_path,"i")),n.re.no_http.test(r)?t>=3&&e[t-3]===":"||t>=3&&e[t-3]==="/"?0:r.match(n.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,n){let r=e.slice(t);return n.re.mailto||(n.re.mailto=new RegExp("^"+n.re.src_email_name+"@"+n.re.src_host_strict,"i")),n.re.mailto.test(r)?r.match(n.re.mailto)[0].length:0}}},gc="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",mc="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function hc(e){e.__index__=-1,e.__text_cache__=""}function kc(e){return function(t,n){let r=t.slice(n);return e.test(r)?r.match(e)[0].length:0}}function Ka(){return function(e,t){t.normalize(e)}}function mn(e){let t=e.re=Va(e.__opts__),n=e.__tlds__.slice();e.onCompile(),e.__tlds_replaced__||n.push(gc),n.push(t.src_xn),t.src_tlds=n.join("|");function r(u){return u.replace("%TLDS%",t.src_tlds)}t.email_fuzzy=RegExp(r(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(r(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(r(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(r(t.tpl_host_fuzzy_test),"i");let i=[];e.__compiled__={};function a(u,s){throw new Error('(LinkifyIt) Invalid schema "'+u+'": '+s)}Object.keys(e.__schemas__).forEach(function(u){let s=e.__schemas__[u];if(s===null)return;let d={validate:null,link:null};if(e.__compiled__[u]=d,dc(s)){cc(s.validate)?d.validate=kc(s.validate):ja(s.validate)?d.validate=s.validate:a(u,s),ja(s.normalize)?d.normalize=s.normalize:s.normalize?a(u,s):d.normalize=Ka();return}if(sc(s)){i.push(u);return}a(u,s)}),i.forEach(function(u){e.__compiled__[e.__schemas__[u]]&&(e.__compiled__[u].validate=e.__compiled__[e.__schemas__[u]].validate,e.__compiled__[u].normalize=e.__compiled__[e.__schemas__[u]].normalize)}),e.__compiled__[""]={validate:null,normalize:Ka()};let o=Object.keys(e.__compiled__).filter(function(u){return u.length>0&&e.__compiled__[u]}).map(lc).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><\uFF5C]|"+t.src_ZPCc+"))("+o+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><\uFF5C]|"+t.src_ZPCc+"))("+o+")","ig"),e.re.schema_at_start=RegExp("^"+e.re.schema_search.source,"i"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),hc(e)}function bc(e,t){let n=e.__index__,r=e.__last_index__,i=e.__text_cache__.slice(n,r);this.schema=e.__schema__.toLowerCase(),this.index=n+t,this.lastIndex=r+t,this.raw=i,this.text=i,this.url=i}function Ur(e,t){let n=new bc(e,t);return e.__compiled__[n.schema].normalize(n,e),n}function V(e,t){if(!(this instanceof V))return new V(e,t);t||pc(e)&&(t=e,e={}),this.__opts__=$r({},Za,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=$r({},fc,e),this.__compiled__={},this.__tlds__=mc,this.__tlds_replaced__=!1,this.re={},mn(this)}V.prototype.add=function(t,n){return this.__schemas__[t]=n,mn(this),this};V.prototype.set=function(t){return this.__opts__=$r(this.__opts__,t),this};V.prototype.test=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return!1;let n,r,i,a,o,u,s,d,c;if(this.re.schema_test.test(t)){for(s=this.re.schema_search,s.lastIndex=0;(n=s.exec(t))!==null;)if(a=this.testSchemaAt(t,n[2],s.lastIndex),a){this.__schema__=n[2],this.__index__=n.index+n[1].length,this.__last_index__=n.index+n[0].length+a;break}}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(d=t.search(this.re.host_fuzzy_test),d>=0&&(this.__index__<0||d<this.__index__)&&(r=t.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))!==null&&(o=r.index+r[1].length,(this.__index__<0||o<this.__index__)&&(this.__schema__="",this.__index__=o,this.__last_index__=r.index+r[0].length))),this.__opts__.fuzzyEmail&&this.__compiled__["mailto:"]&&(c=t.indexOf("@"),c>=0&&(i=t.match(this.re.email_fuzzy))!==null&&(o=i.index+i[1].length,u=i.index+i[0].length,(this.__index__<0||o<this.__index__||o===this.__index__&&u>this.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=u))),this.__index__>=0};V.prototype.pretest=function(t){return this.re.pretest.test(t)};V.prototype.testSchemaAt=function(t,n,r){return this.__compiled__[n.toLowerCase()]?this.__compiled__[n.toLowerCase()].validate(t,r,this):0};V.prototype.match=function(t){let n=[],r=0;this.__index__>=0&&this.__text_cache__===t&&(n.push(Ur(this,r)),r=this.__last_index__);let i=r?t.slice(r):t;for(;this.test(i);)n.push(Ur(this,r)),i=i.slice(this.__last_index__),r+=this.__last_index__;return n.length?n:null};V.prototype.matchAtStart=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return null;let n=this.re.schema_at_start.exec(t);if(!n)return null;let r=this.testSchemaAt(t,n[2],n[0].length);return r?(this.__schema__=n[2],this.__index__=n.index+n[1].length,this.__last_index__=n.index+n[0].length+r,Ur(this,0)):null};V.prototype.tlds=function(t,n){return t=Array.isArray(t)?t:[t],n?(this.__tlds__=this.__tlds__.concat(t).sort().filter(function(r,i,a){return r!==a[i-1]}).reverse(),mn(this),this):(this.__tlds__=t.slice(),this.__tlds_replaced__=!0,mn(this),this)};V.prototype.normalize=function(t){t.schema||(t.url="http://"+t.url),t.schema==="mailto:"&&!/^mailto:/i.test(t.url)&&(t.url="mailto:"+t.url)};V.prototype.onCompile=function(){};var Ya=V;var yc=/^xn--/,xc=/[^\0-\x7F]/,Cc=/[\x2E\u3002\uFF0E\uFF61]/g,Sc={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Qr=35,ne=Math.floor,Vr=String.fromCharCode;function ke(e){throw new RangeError(Sc[e])}function Fc(e,t){let n=[],r=e.length;for(;r--;)n[r]=t(e[r]);return n}function Ja(e,t){let n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),e=e.replace(Cc,".");let i=e.split("."),a=Fc(i,t).join(".");return r+a}function eo(e){let t=[],n=0,r=e.length;for(;n<r;){let i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){let a=e.charCodeAt(n++);(a&64512)==56320?t.push(((i&1023)<<10)+(a&1023)+65536):(t.push(i),n--)}else t.push(i)}return t}var Mc=e=>String.fromCodePoint(...e),wc=function(e){return e>=48&&e<58?26+(e-48):e>=65&&e<91?e-65:e>=97&&e<123?e-97:36},Xa=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},to=function(e,t,n){let r=0;for(e=n?ne(e/700):e>>1,e+=ne(e/t);e>Qr*26>>1;r+=36)e=ne(e/Qr);return ne(r+(Qr+1)*e/(e+38))},no=function(e){let t=[],n=e.length,r=0,i=128,a=72,o=e.lastIndexOf("-");o<0&&(o=0);for(let u=0;u<o;++u)e.charCodeAt(u)>=128&&ke("not-basic"),t.push(e.charCodeAt(u));for(let u=o>0?o+1:0;u<n;){let s=r;for(let c=1,l=36;;l+=36){u>=n&&ke("invalid-input");let f=wc(e.charCodeAt(u++));f>=36&&ke("invalid-input"),f>ne((2147483647-r)/c)&&ke("overflow"),r+=f*c;let m=l<=a?1:l>=a+26?26:l-a;if(f<m)break;let p=36-m;c>ne(2147483647/p)&&ke("overflow"),c*=p}let d=t.length+1;a=to(r-s,d,s==0),ne(r/d)>2147483647-i&&ke("overflow"),i+=ne(r/d),r%=d,t.splice(r++,0,i)}return String.fromCodePoint(...t)},ro=function(e){let t=[];e=eo(e);let n=e.length,r=128,i=0,a=72;for(let s of e)s<128&&t.push(Vr(s));let o=t.length,u=o;for(o&&t.push("-");u<n;){let s=2147483647;for(let c of e)c>=r&&c<s&&(s=c);let d=u+1;s-r>ne((2147483647-i)/d)&&ke("overflow"),i+=(s-r)*d,r=s;for(let c of e)if(c<r&&++i>2147483647&&ke("overflow"),c===r){let l=i;for(let f=36;;f+=36){let m=f<=a?1:f>=a+26?26:f-a;if(l<m)break;let p=l-m,F=36-m;t.push(Vr(Xa(m+p%F,0))),l=ne(p/F)}t.push(Vr(Xa(l,0))),a=to(i,d,u===o),i=0,++u}++i,++r}return t.join("")},vc=function(e){return Ja(e,function(t){return yc.test(t)?no(t.slice(4).toLowerCase()):t})},Tc=function(e){return Ja(e,function(t){return xc.test(t)?"xn--"+ro(t):t})},Dc={version:"2.3.1",ucs2:{decode:eo,encode:Mc},decode:no,encode:ro,toASCII:Tc,toUnicode:vc};var jr=Dc;var io={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}};var ao={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","fragments_join"]}}};var oo={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","fragments_join"]}}};var Ac={default:io,zero:ao,commonmark:oo},Ec=/^(vbscript|javascript|file|data):/,_c=/^data:image\/(gif|png|jpeg|webp);/;function Lc(e){let t=e.trim().toLowerCase();return Ec.test(t)?_c.test(t):!0}var uo=["http:","https:","mailto:"];function Ic(e){let t=nt(e,!0);if(t.hostname&&(!t.protocol||uo.indexOf(t.protocol)>=0))try{t.hostname=jr.toASCII(t.hostname)}catch{}return en(Re(t))}function Nc(e){let t=nt(e,!0);if(t.hostname&&(!t.protocol||uo.indexOf(t.protocol)>=0))try{t.hostname=jr.toUnicode(t.hostname)}catch{}return tt(Re(t),tt.defaultChars+"%")}function j(e,t){if(!(this instanceof j))return new j(e,t);t||cn(e)||(t=e||{},e="default"),this.inline=new Qa,this.block=new Ha,this.core=new _a,this.renderer=new wa,this.linkify=new Ya,this.validateLink=Lc,this.normalizeLink=Ic,this.normalizeLinkText=Nc,this.utils=tr,this.helpers=Ge({},ar),this.options={},this.configure(e),t&&this.set(t)}j.prototype.set=function(e){return Ge(this.options,e),this};j.prototype.configure=function(e){let t=this;if(cn(e)){let n=e;if(e=Ac[n],!e)throw new Error('Wrong `markdown-it` preset "'+n+'", check name')}if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach(function(n){e.components[n].rules&&t[n].ruler.enableOnly(e.components[n].rules),e.components[n].rules2&&t[n].ruler2.enableOnly(e.components[n].rules2)}),this};j.prototype.enable=function(e,t){let n=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(i){n=n.concat(this[i].ruler.enable(e,!0))},this),n=n.concat(this.inline.ruler2.enable(e,!0));let r=e.filter(function(i){return n.indexOf(i)<0});if(r.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+r);return this};j.prototype.disable=function(e,t){let n=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(i){n=n.concat(this[i].ruler.disable(e,!0))},this),n=n.concat(this.inline.ruler2.disable(e,!0));let r=e.filter(function(i){return n.indexOf(i)<0});if(r.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+r);return this};j.prototype.use=function(e){let t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this};j.prototype.parse=function(e,t){if(typeof e!="string")throw new Error("Input data should be a String");let n=new this.core.State(e,this,t);return this.core.process(n),n.tokens};j.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)};j.prototype.parseInline=function(e,t){let n=new this.core.State(e,this,t);return n.inlineMode=!0,this.core.process(n),n.tokens};j.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)};var ot=j;var Pc=/^#[^\s#.,,。;:!?()[\]{}<>]+(?:\/[^\s#.,,。;:!?()[\]{}<>]+)*$/u;function kn(e,t){if(t||e.length===0)return e;let n=e.split(/\r?\n/),r=n.filter(i=>!Rc(i));return r.length===n.length?e:Gc(Bc(r)).join(`
`)}function Rc(e){let t=e.trim();return t?t.split(/\s+/).every(n=>Pc.test(n)):!1}function Bc(e){let t=0,n=e.length;for(;t<n&&!e[t].trim();)t+=1;for(;n>t&&!e[n-1].trim();)n-=1;return e.slice(t,n)}function Gc(e){let t=[];for(let n of e){let r=n.trim().length===0,i=t[t.length-1],a=i!==void 0&&i.trim().length===0;r&&a||t.push(r?"":n)}return t}var qc="#[^\\s#.,\uFF0C\u3002;\uFF1B:\uFF1A!?\uFF01\uFF1F()[\\]{}<>]+(?:\\/[^\\s#.,\uFF0C\u3002;\uFF1B:\uFF1A!?\uFF01\uFF1F()[\\]{}<>]+)*";var zc=/[\p{L}\p{N}_/#]/u,Hc=new Set(["code","pre"]),Oc="ahs-ob-tag";function bn(e){if(!e||!e.includes("#"))return e;let t="",n=0,r=[];for(;n<e.length;){let i=e.indexOf("<",n),a=i===-1?e.length:i;if(a>n){let s=e.slice(n,a);t+=r.length===0?so(s):s,n=a}if(n>=e.length)break;let o=e.indexOf(">",n);if(o===-1){let s=e.slice(n);t+=r.length===0?so(s):s;break}let u=e.slice(n,o+1);Uc(u,r),t+=u,n=o+1}return t}function so(e){let t=new RegExp(qc,"gu"),n="",r=0,i;for(;(i=t.exec(e))!==null;){let a=i[0],o=i.index,u=o+a.length;if(!Wc(e,o))continue;let s=Tt([a])[0];s&&(n+=e.slice(r,o),n+=$c(a,s),r=u)}return r===0?e:n+e.slice(r)}function Wc(e,t){return t===0?!0:!zc.test(e[t-1]??"")}function $c(e,t){return`<span class="${Oc}" data-tag="${co(t)}">${co(e)}</span>`}function Uc(e,t){let n=/^<\s*(\/)?\s*([a-zA-Z0-9-]+)/.exec(e);if(!n)return;let r=!!n[1],i=n[2]?.toLowerCase();if(!(!i||!Hc.has(i))){if(r){for(let a=t.length-1;a>=0;a-=1)if(t[a]===i){t.splice(a,1);break}return}/\/\s*>$/.test(e)||t.push(i)}}function co(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}var yn=class{constructor(t=new Z){this.deckNormalizationService=t}mapFilePathToDeck(t,n,r=[]){let i=Qc(t,n,r);if(i==="off")return{warnings:[]};let a=lo(t),o=a.lastIndexOf("/");if(o<0)return{warnings:[]};let u=a.slice(0,o);if(!u.trim())return{warnings:[]};let s=u.split("/").filter(Boolean);if(i==="folder-and-file"){let d=a.slice(o+1).replace(/\.[^.]+$/,"").trim();d&&s.push(d)}return s.some(d=>d.includes("::"))?{warnings:[{filePath:t,code:"deck_invalid_folder_segment"}]}:{deck:this.deckNormalizationService.normalize(s.join("/")),warnings:[]}}};function Qc(e,t,n){if(t==="off")return"off";let r=lo(e);return n.some(a=>{let o=Vc(a);return o.length>0&&jc(r,o)})?t==="folder"?"folder-and-file":"folder":t}function Vc(e){return e.trim().replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}function lo(e){return e.trim().replace(/\\/g,"/").replace(/^\/+/,"")}function jc(e,t){return e===t||e.startsWith(`${t}/`)}var Oe=class{constructor(t=new yn,n=new Z){this.folderDeckMappingService=t;this.deckNormalizationService=n}resolve(t,n){if(t.deckHint)return{resolvedDeck:{value:this.deckNormalizationService.normalize(t.deckHint),source:t.deckHintSource??"body"},warnings:[...t.deckWarnings]};let r=this.folderDeckMappingService.mapFilePathToDeck(t.filePath,n.folderDeckMode,n.alternateFolderDeckModeFolders);return r.deck?{resolvedDeck:{value:r.deck,source:"folder"},warnings:[...t.deckWarnings,...r.warnings]}:{resolvedDeck:{value:this.deckNormalizationService.normalize(n.defaultDeck),source:"default"},warnings:[...t.deckWarnings,...r.warnings,{filePath:t.filePath,code:"deck_fallback_default"}]}}};function We(e){return`${e.filePath}\0${e.code}\0${Kr(e.params)}`}function Kr(e){return e===void 0?"":e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(n=>Kr(n)).join(",")}]`:`{${Object.entries(e).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>`${JSON.stringify(n)}:${Kr(r)}`).join(",")}}`}function xn({href:e,label:t,escapeHref:n=!0}){return`<a class="anki-heading-sync-backlink" href="${n?po(e):e}">${po(t)}</a>`}function ut(e,t,n){if(n==="question-last-line")return{title:e.title?`${e.title}<br>${t}`:t,body:e.body};let r=`<p>${t}</p>`;return n==="answer-first-line"?{title:e.title,body:e.body?`${r}${e.body}`:r}:{title:e.title,body:e.body?`${e.body}${r}`:r}}function po(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}var Kc=new ot({breaks:!0,html:!0,linkify:!0}),Zc=/`[^`\n]+`/g,Yc=/==(.+?)==/g,Cn=class{constructor(t,n=new ce,r=new Oe,i=new X,a=()=>Date.now(),o=()=>`g_${Q(`${Date.now()}_${Math.random()}_${Date.now()}`).slice(0,12)}`,u=()=>(this.sequence+=1,`i_${Q(`${Date.now()}_${this.sequence}_${Math.random()}`).slice(0,10)}`),s){this.ankiGateway=t;this.qaGroupFieldMappingService=n;this.deckResolutionService=r;this.groupMarkerService=i;this.now=a;this.createGroupId=o;this.createItemId=u;this.createBacklink=s;this.sequence=0}async sync(t,n,r){if(t.length===0)return{created:0,updated:0,migratedNoteTypes:0,migratedDecks:0,markerWrites:[],resolvedNoteIds:new Map,touchedSyncKeys:[],syncedGroupBlocks:[],warnings:[]};let{modelName:i,mapping:a,availableSlots:o,legacyInternalFields:u}=await this.resolveQaGroupModel(r),s=Jc(n.groupBlocks??{}),d=new Set,c=new Map,l=[],f=new Map,m=new Set,p=[],F=0,k=0,b=0,x=0,C=this.buildGroupBacklinkAnchor(t[0]??null,r);for(let h of t){if(h.items.length>o.length)throw new S("errors.noteFieldMapping.qaGroupSlotCapacityExceeded",{modelName:i,capacity:o.length,itemCount:h.items.length,filePath:h.filePath,blockStartLine:h.blockStartLine});let M=await this.resolveRecoveredGroup(h,s,i,a,o),T=M.groupId??h.groupId??this.createGroupId(),D=ul(M.items,o),I=tl(h.items,D,this.createItemId,o);if(I.length>o.length)throw new S("errors.noteFieldMapping.qaGroupSlotCapacityExceeded",{modelName:i,capacity:o.length,itemCount:I.length,filePath:h.filePath,blockStartLine:h.blockStartLine});let A=nl(I,o),R=this.deckResolutionService.resolve({filePath:h.filePath,deckHint:h.deckHint,deckHintSource:h.deckHintSource,deckWarnings:h.deckWarnings},r);for(let N of R.warnings)c.set(We(N),N);let y=R.resolvedDeck.value;d.has(y)||(await this.ankiGateway.ensureDeckExists(y),d.add(y));let v=I.map(N=>({...N,title:Zr(N.title,!1),answer:Zr(kn(N.answer,r.keepPureTagLinesInCardBody),!0)})),_=Xc(a,Zr(h.stem,!1),v,this.buildGroupBacklinkAnchor(h,r)||C,r.obsidianBacklinkPlacement,u),L=M.noteId??h.noteId,P=M.loadedNote;if(L===void 0)L=await this.ankiGateway.addNote({deckName:y,modelName:i,fields:_,tags:h.tagsHint??[]}),F+=1,m.add(h.syncKey);else{if(P??(P=await this.tryLoadQaGroupNote(L,h,i)),P.kind==="missing"&&(L=await this.ankiGateway.addNote({deckName:y,modelName:i,fields:_,tags:h.tagsHint??[]}),F+=1,m.add(h.syncKey)),P.kind==="matching"){let N=P.note,re=!al(N.fields,_),Ee=!(N.deckNames??[]).includes(y),_e=et(h.tagsHint,N.tags),vn=_e.addTags.length>0||_e.removeTags.length>0;if(!re&&!Ee&&!vn){f.set(h.syncKey,L);let ko=this.now();p.push({groupId:T,noteId:L,filePath:h.filePath,headingText:h.headingText,backlinkHeadingText:h.backlinkHeadingText,headingLevel:h.headingLevel,stem:h.stem,src:h.src||Fe(h.filePath,h.backlinkHeadingText),blockStartOffset:h.blockStartOffset,blockEndOffset:h.blockEndOffset,blockStartLine:h.blockStartLine,bodyStartLine:h.bodyStartLine,blockEndLine:h.blockEndLine,contentEndLine:h.contentEndLine,markerLine:h.markerLine,markerIndent:h.markerIndent,rawBlockText:h.rawBlockText,rawBlockHash:h.rawBlockHash,deck:y,deckHint:h.deckHint,deckHintSource:h.deckHintSource,deckWarnings:[...R.warnings],tagsHint:h.tagsHint?[...h.tagsHint]:[],items:I,freeSlots:A,lastSyncedAt:M.stateRecord?.lastSyncedAt??ko,orphan:!1});continue}(re||Ee)&&await this.ankiGateway.updateNote({noteId:L,fields:_,deckName:Ee?y:void 0}),re&&(k+=1),!re&&vn&&(k+=1),Ee&&(x+=1),vn&&await this.ankiGateway.syncNoteTags([{noteId:L,addTags:_e.addTags,removeTags:_e.removeTags}]),m.add(h.syncKey)}if(P.kind==="model-mismatch"){let N=!(P.note.deckNames??[]).includes(y),re=et(h.tagsHint,P.note.tags),Ee=re.addTags.length>0||re.removeTags.length>0;try{await this.ankiGateway.updateNoteModel({noteId:L,modelName:i,fields:_})}catch(_e){throw qt({noteId:L,fromModel:P.actualModelName,toModel:P.expectedModelName,error:_e,location:`${h.filePath}:${h.blockStartLine}`})}N&&P.note.cardIds.length>0&&(await this.ankiGateway.changeDecks([{deckName:y,cardIds:P.note.cardIds}]),x+=1),Ee&&await this.ankiGateway.syncNoteTags([{noteId:L,addTags:re.addTags,removeTags:re.removeTags}]),k+=1,b+=1,m.add(h.syncKey)}}f.set(h.syncKey,L);let q=Object.fromEntries(I.filter(N=>N.itemId&&N.slot).map(N=>[N.itemId,N.slot]));(h.markerState!=="present-valid"||!this.groupMarkerService.isEquivalent(h.groupMarker,L,q,A)||ol(h))&&l.push({syncKey:h.syncKey,filePath:h.filePath,blockStartLine:h.blockStartLine,contentEndLine:h.contentEndLine,blockEndLine:h.blockEndLine,markerLine:h.markerLine,markerIndent:h.markerIndent,noteId:L,groupId:T,itemToSlot:q,freeSlots:A,sourceContent:h.sourceContent??""});let be=this.now();p.push({groupId:T,noteId:L,filePath:h.filePath,headingText:h.headingText,backlinkHeadingText:h.backlinkHeadingText,headingLevel:h.headingLevel,stem:h.stem,src:h.src||Fe(h.filePath,h.backlinkHeadingText),blockStartOffset:h.blockStartOffset,blockEndOffset:h.blockEndOffset,blockStartLine:h.blockStartLine,bodyStartLine:h.bodyStartLine,blockEndLine:h.blockEndLine,contentEndLine:h.contentEndLine,markerLine:h.markerLine,markerIndent:h.markerIndent,rawBlockText:h.rawBlockText,rawBlockHash:h.rawBlockHash,deck:y,deckHint:h.deckHint,deckHintSource:h.deckHintSource,deckWarnings:[...R.warnings],tagsHint:h.tagsHint?[...h.tagsHint]:[],items:I,freeSlots:A,lastSyncedAt:m.has(h.syncKey)?be:M.stateRecord?.lastSyncedAt??be,orphan:!1})}return{created:F,updated:k,migratedNoteTypes:b,migratedDecks:x,markerWrites:l,resolvedNoteIds:f,touchedSyncKeys:[...m],syncedGroupBlocks:p,warnings:[...c.values()]}}async resolveRecoveredGroup(t,n,r,i,a){let o=(t.groupId?n.byGroupId.get(t.groupId):void 0)??(t.noteId!==void 0?n.byNoteId.get(t.noteId):void 0)??il(n.bySrc.get(t.src));if(o)return{noteId:o.noteId,groupId:o.groupId,items:o.items.map(u=>({...u})),freeSlots:[...o.freeSlots],stateRecord:o};if(t.noteId!==void 0){let u=await this.tryLoadQaGroupNote(t.noteId,t,r);return u.kind==="matching"?{...el(u.note,i,a,t.groupId),loadedNote:u}:u.kind==="model-mismatch"?{noteId:u.note.noteId,groupId:t.groupId,items:[],freeSlots:[...a],loadedNote:u}:{noteId:t.noteId,groupId:t.groupId,items:[],freeSlots:[...a],loadedNote:u}}return{items:[],freeSlots:[...a]}}async tryLoadQaGroupNote(t,n,r){let i=(await this.ankiGateway.getNoteDetails([t]))[0];return i?i.modelName!==r?{kind:"model-mismatch",note:i,actualModelName:i.modelName,expectedModelName:r}:{kind:"matching",note:i}:{kind:"missing"}}buildGroupBacklinkAnchor(t,n){return!t||!n.addObsidianBacklink||!this.createBacklink?"":xn({href:this.createBacklink({filePath:t.filePath,sourceContent:t.sourceContent,headingLine:t.blockStartLine,blockStartLine:t.blockStartLine,bodyStartLine:t.bodyStartLine,blockEndLine:t.blockEndLine,contentEndLine:t.contentEndLine,markerLine:t.markerLine,headingLevel:t.headingLevel,headingText:t.backlinkHeadingText}),label:n.obsidianBacklinkLabel})}async resolveQaGroupModel(t){let n=t.cardTypeConfigs["qa-group"].noteType.trim();if(!n)throw new S("errors.noteFieldMapping.noteTypeNotSelected.qaGroup");let r=t.noteFieldMappings[B("qa-group",n)];if(!O(r))throw new S("errors.noteFieldMapping.missingSavedMapping.qaGroup",{modelName:n});let i=await this.ankiGateway.getModelFieldNames(n),a={...r,modelName:n,loadedFieldNames:[...i],slots:r.slots.map(o=>({...o})),warnings:[...r.warnings],acceptedWarnings:r.acceptedWarnings?[...r.acceptedWarnings]:void 0,loadedAt:this.now()};return this.qaGroupFieldMappingService.validateMapping(a,i),{modelName:n,mapping:a,availableSlots:a.slots.map(o=>o.index),legacyInternalFields:sl(i)}}};function Xc(e,t,n,r,i,a){if(!e.titleField)throw new S("errors.noteFieldMapping.qaGroupMissingTitle",{modelName:e.modelName});let o=r&&i==="question-last-line"?ut({title:t,body:""},r,i).title:t,u={[e.titleField]:o};for(let d of e.slots)u[d.questionField]="",u[d.answerField]="";for(let d of a)u[d]="";let s=new Map(e.slots.map(d=>[d.index,d]));for(let d of n){if(d.slot===void 0)continue;let c=s.get(d.slot);if(!c)continue;let l=r&&i!=="question-last-line"?ut({title:d.title,body:d.answer},r,i).body:d.answer;u[c.questionField]=d.title,u[c.answerField]=l}return u}function Jc(e){let t=new Map,n=new Map,r=new Map;for(let i of Object.values(e)){if(i.orphan)continue;t.set(i.groupId,i),n.set(i.noteId,i);let a=r.get(i.src);if(a){a.push(i);continue}r.set(i.src,[i])}return{byGroupId:t,byNoteId:n,bySrc:r}}function el(e,t,n,r){let i=[],a=new Set;for(let o of t.slots){let u=go(e.fields[o.questionField]??""),s=go(e.fields[o.answerField]??"");!u&&!s||(a.add(o.index),i.push({itemId:`recovered-slot-${String(o.index).padStart(2,"0")}`,title:u,answer:s,slot:o.index,ordinalInMarkdown:o.index}))}return{noteId:e.noteId,groupId:r,items:i,freeSlots:n.filter(o=>!a.has(o))}}function tl(e,t,n,r){let i=new Map,a=[];for(let l of t){let f=fo(l.title,l.answer),m=i.get(f);m?m.push(l):i.set(f,[l]),a.push(l)}let o=[],u=[];for(let l=0;l<e.length;l+=1){let f=e[l],p=i.get(fo(f.title,f.answer))?.shift();if(!p){u.push(l);continue}rl(a,p),o[l]={...f,itemId:p.itemId,slot:p.slot}}let s=[...a].sort((l,f)=>l.ordinalInMarkdown-f.ordinalInMarkdown||(l.slot??999)-(f.slot??999));for(let l of u){let f=e[l],m=s.shift();if(m){o[l]={...f,itemId:m.itemId,slot:m.slot};continue}o[l]={...f,itemId:n()}}let d=new Set(o.map(l=>l.slot).filter(l=>typeof l=="number")),c=[...r].filter(l=>!d.has(l));for(let l of o){if(l.slot!==void 0)continue;let f=c.shift();if(f===void 0)throw new Error("No free QA Group slots are available.");l.slot=f}return o.map((l,f)=>({...l,ordinalInMarkdown:f+1}))}function nl(e,t){let n=new Set(e.map(r=>r.slot).filter(r=>typeof r=="number"));return t.filter(r=>!n.has(r))}function fo(e,t){return`${e}\0${t}`}function rl(e,t){let n=e.findIndex(r=>r.itemId===t.itemId&&r.slot===t.slot&&r.title===t.title&&r.answer===t.answer);n>=0&&e.splice(n,1)}function il(e){if(!(!e||e.length!==1))return e[0]}function al(e,t){let n=Object.keys(t).sort();for(let r of n)if((e[r]??"")!==(t[r]??""))return!1;return!0}function ol(e){if(!e.sourceContent)return!1;let t=e.sourceContent.split(/\r?\n/);for(let n=e.blockStartLine;n<e.blockEndLine;n+=1)if(/^\s*<!--\s*ID:/i.test(t[n]??""))return!0;return!1}function Zr(e,t){let n=dl(e),r=n.text.replace(Yc,"<mark>$1</mark>"),i=n.restore(r),a=Kc.renderInline(i).trim();return t?bn(a):a}function ul(e,t){let n=new Set(t);return e.map(r=>({...r,slot:typeof r.slot=="number"&&n.has(r.slot)?r.slot:void 0}))}function go(e){return e.replace(/<p><a class="anki-heading-sync-backlink"[^>]*>.*?<\/a><\/p>/g,"").replace(/<br><a class="anki-heading-sync-backlink"[^>]*>.*?<\/a>/g,"").trim()}function sl(e){return e.includes("GroupId")&&e.includes("Src")&&e.some(n=>/^S\d+_Id$/i.test(n))&&e.some(n=>/^S\d+_Q$/i.test(n))&&e.some(n=>/^S\d+_A$/i.test(n))?e.filter(n=>n==="GroupId"||n==="Src"||/^S\d+_Id$/i.test(n)):[]}function dl(e){let t=[];return{text:e.replace(Zc,r=>{let i=`@@QA_GROUP_INLINE_CODE_${t.length}@@`;return t.push(r),i}),restore:r=>t.reduce((i,a,o)=>i.split(`@@QA_GROUP_INLINE_CODE_${o}@@`).join(a),r)}}var cl="manual-render-v3",Ae=class{constructor(t=new Oe){this.deckResolutionService=t}resolve(t,n){let r=ll(t.cardType,n),i=this.deckResolutionService.resolve(t,n),a=i.resolvedDeck.value,o=n.noteFieldMappings[B(t.cardType,r)]??null,u=t.cardType==="cloze"&&t.clozeMode==="all"?"all":void 0,s={version:cl,cardType:t.cardType,clozeMode:u,noteModel:r,mapping:o,addObsidianBacklink:n.addObsidianBacklink,obsidianBacklinkLabel:n.obsidianBacklinkLabel,obsidianBacklinkPlacement:n.obsidianBacklinkPlacement,convertHighlightsToCloze:n.convertHighlightsToCloze,keepPureTagLinesInCardBody:n.keepPureTagLinesInCardBody},d=Q(JSON.stringify(s));return{deck:a,noteModel:r,renderConfigHash:d,warnings:i.warnings}}};function ll(e,t){if(Ei(e)){if(!t.clozeNoteType.trim())throw new S("errors.noteFieldMapping.noteTypeNotSelected.cloze");return t.clozeNoteType}if(!t.qaNoteType.trim())throw new S("errors.noteFieldMapping.noteTypeNotSelected.basic");return t.qaNoteType}var Yr=/`[^`\n]+`/g,Xr=/```[\s\S]*?```|~~~[\s\S]*?~~~/g,Sn=/==(.+?)==/g,Jr=/(?:(?<!{){(?:c?(\d+)[:|])?(?!{))((?:[^\n][\n]?)+?)(?:(?<!})}(?!}))/g,pl=/\{\{c(\d+)::[\s\S]+?\}\}/g;function ei(e){let t=e.convertHighlightsToCloze?e.bodyMarkdown.replace(Sn,"{$1}"):e.bodyMarkdown,n=$e(t,Xr,"FENCED_CODE"),r=$e(n.text,Yr,"INLINE_CODE"),i=new Set,a=1;for(let o of r.text.matchAll(pl)){let u=Number(o[1]);Number.isInteger(u)&&u>0&&i.add(u)}for(let o of r.text.matchAll(Jr)){let u=o[1],s=u?Number(u):e.clozeMode==="all"?1:a++;Number.isInteger(s)&&s>0&&i.add(s)}return i}function $e(e,t,n){let r=[];return{text:e.replace(t,a=>{let o=`@@${n}_${r.length}@@`;return r.push(a),o}),restore:(a,o=u=>u)=>r.reduce((u,s,d)=>u.split(`@@${n}_${d}@@`).join(o(s)),a)}}var Fn=class{constructor(t=new Ae){this.renderConfigService=t}plan(t,n,r,i){let a=new Map,o=new Set(n.pendingWriteBack.filter(x=>x.markerKind!=="group-gi").map(x=>Ie(x.filePath,x.blockStartLine,x.rawBlockHash))),u=new Set,s=[],d=[],c=[],l=[],f=[],m=[],p=new Map,F=0;for(let x of t){if(a.has(x.syncKey))throw new Error(`Duplicate syncKey detected in current scan: ${x.syncKey}`);if(a.set(x.syncKey,x),x.noteId!==void 0){let R=z(x.noteId);if(u.has(R))throw new Error(`Duplicate noteId detected in current scan: ${x.noteId}`);u.add(R)}let C=x.noteId!==void 0?n.cards[z(x.noteId)]:void 0,h=this.renderConfigService.resolve(x,i);for(let R of h.warnings)p.set(We(R),R);let M=x.noteId,T=Ie(x.filePath,x.blockStartLine,x.rawBlockHash),D={card:{...x,noteId:M},noteId:M,deck:h.deck,noteModel:h.noteModel,renderConfigHash:h.renderConfigHash};if(!M){s.push(D);continue}if(fl(C,x,i)){d.push(D);continue}if(l.push(D),(x.idMarkerState!=="present-valid"||x.noteIdSource!=="marker"||o.has(T))&&m.push(D),!C){c.push(D);continue}let I=C.rawBlockHash!==x.rawBlockHash||C.renderConfigHash!==h.renderConfigHash||!ji(C.tagsHint,x.tagsHint)||C.orphan,A=C.deck!==h.deck;I&&c.push(D),A&&f.push(D),!I&&!A&&(F+=1)}let k=new Set(r),b=Object.values(n.cards).filter(x=>k.has(x.filePath)&&!u.has(z(x.noteId)));return{toCreate:s,toRebuild:d,toUpdate:c,toVerifyDeck:l,toChangeDeck:f,toRewriteMarker:m,toOrphan:b,unchangedCards:F,warnings:Array.from(p.values())}}};function fl(e,t,n){if(!e||e.cardType!=="cloze"||t.cardType!=="cloze")return!1;let r=Se(e.cardType,e.clozeMode);if(r!=="sequential"||t.clozeMode!=="all")return!1;let i=ei({bodyMarkdown:e.bodyMarkdown,clozeMode:r,convertHighlightsToCloze:n.convertHighlightsToCloze}),a=ei({bodyMarkdown:t.bodyMarkdown,clozeMode:t.clozeMode,convertHighlightsToCloze:n.convertHighlightsToCloze});return i.size>a.size}var mo=new ot({breaks:!0,html:!0,linkify:!0}),gl=/(?<!\\)\$\$([\s\S]+?)(?<!\\)\$\$/g,ml=/(?<!\\)\$(?!\s)([^$\n]+?)(?<!\s)\$/g,hl=/(\\\[[\s\S]*?\\\])|(\\\([\s\S]*?\\\))/g,kl=/!\[\[([^\]]+)\]\]/g,bl=/(?<!!)\[\[([^\]]+)\]\]/g,Mn=class{render(t,n){let r=this.renderMarkdown(t.card.heading,t,n,!1,!0),i=this.renderMarkdown(t.card.bodyMarkdown,t,n,t.card.cardType==="cloze",!1),a=n.addObsidianBacklink?xn({href:n.resourceResolver.createBacklink({filePath:t.card.filePath,sourceContent:t.card.sourceContent,headingLine:t.card.blockStartLine,blockStartLine:t.card.blockStartLine,bodyStartLine:t.card.bodyStartLine,blockEndLine:t.card.blockEndLine,contentEndLine:t.card.contentEndLine,markerLine:t.card.markerLine,headingLevel:t.card.headingLevel,headingText:t.card.backlinkHeadingText}),label:n.obsidianBacklinkLabel}):"",o=a?ut({title:r.html,body:i.html},a,n.obsidianBacklinkPlacement):{title:r.html,body:i.html};return{card:t.card,noteId:t.noteId,deck:t.deck,noteModel:t.noteModel,renderConfigHash:t.renderConfigHash,renderedFields:o,media:yl([...r.media,...i.media])}}renderMarkdown(t,n,r,i,a){let o=a?t:kn(t,r.keepPureTagLinesInCardBody),u=$e(o,Xr,"FENCED_CODE"),s=$e(u.text,Yr,"INLINE_CODE"),d=s.text,c=[],l=1;d=d.replace(gl,(F,k)=>`\\[${k.trim()}\\]`),d=d.replace(ml,(F,k)=>`\\(${k.trim()}\\)`),i&&r.convertHighlightsToCloze&&(d=d.replace(Sn,"{$1}")),i&&(d=d.replace(Jr,(F,k,b)=>`{{c${k?Number(k):n.card.clozeMode==="all"?1:l++}::${b}}}`)),d=d.replace(kl,(F,k)=>{let b=r.resourceResolver.resolveEmbed(k,n.card.filePath);return b?(c.push({kind:b.kind,fileName:b.fileName,absolutePath:b.absolutePath,altText:b.altText}),b.kind==="audio"?`[sound:${b.fileName}]`:`<img src="${st(b.fileName)}" alt="${st(b.altText??b.fileName)}">`):F}),d=d.replace(bl,(F,k)=>{let b=r.resourceResolver.resolveWikiLink(k,n.card.filePath);return b?`<a href="${st(b.url)}">${st(b.displayText)}</a>`:F}),d=d.replace(Sn,"<mark>$1</mark>");let f=$e(d,hl,"MATH");d=f.text,d=s.restore(d),d=u.restore(d);let m=(a?mo.renderInline(d):mo.render(d)).trim(),p=f.restore(m,st);return{html:a?p:bn(p),media:c}}};function yl(e){let t=new Set;return e.filter(n=>{let r=`${n.kind}:${n.absolutePath}:${n.fileName}`;return t.has(r)?!1:(t.add(r),!0)})}function st(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}var dt=class extends S{constructor(t){super("errors.currentFileOutOfScope",{filePath:t}),this.name="CurrentFileOutOfScopeError"}},Ue=class extends S{constructor(){super("errors.runScopeNotConfigured"),this.name="RunScopeNotConfiguredError"}},wn=class{constructor(t,n,r,i=new Zt(t),a=new Fn,o=new Mn,u=new Ot(r),s=new Yt(t),d=new Ae,c=()=>Date.now()){this.vaultGateway=t;this.pluginStateRepository=n;this.ankiGateway=r;this.fileIndexerService=i;this.diffPlannerService=a;this.renderer=o;this.ankiBatchExecutor=u;this.markdownWriteBackService=s;this.scanScopeService=new Pe;if(this.qaGroupSyncService=new Cn(r,void 0,void 0,void 0,void 0,void 0,void 0,this.vaultGateway.createBacklink.bind(this.vaultGateway)),xl(d)){this.renderConfigService=d,this.now=c;return}this.renderConfigService=new Ae,this.now=d}async syncVault(t){pe(t),this.assertRunScopeConfigured(t);let n=await this.pluginStateRepository.load(),r=await this.fileIndexerService.indexVault(t,n);return this.syncIndexedResult(r,n,t)}async syncFile(t,n){if(pe(n),this.assertRunScopeConfigured(n),!this.scanScopeService.isPathInScope(t,n.scopeMode,n.includeFolders,n.excludeFolders))throw new dt(t);let r=await this.pluginStateRepository.load(),i=await this.fileIndexerService.indexFile(t,n,r);return this.syncIndexedResult(i,r,n)}assertRunScopeConfigured(t){if(!gt(t.scopeMode,t.includeFolders))throw new Ue}async syncIndexedResult(t,n,r){let i=this.diffPlannerService.plan(t.cards,n,t.scopedFilePaths,r),a={addObsidianBacklink:r.addObsidianBacklink,obsidianBacklinkLabel:r.obsidianBacklinkLabel,obsidianBacklinkPlacement:r.obsidianBacklinkPlacement,convertHighlightsToCloze:r.convertHighlightsToCloze,keepPureTagLinesInCardBody:r.keepPureTagLinesInCardBody,resourceResolver:this.vaultGateway},o=new Map;for(let m of[...i.toCreate,...i.toRebuild,...i.toUpdate])o.has(m.card.syncKey)||o.set(m.card.syncKey,this.renderer.render(m,a));let u=await this.ankiBatchExecutor.execute(i,o,m=>Promise.resolve(this.renderer.render(m,a)),r.noteFieldMappings),s=await this.qaGroupSyncService.sync(t.groupBlocks,n,r),d=new Map(t.indexedFiles.map(m=>[m.filePath,m])),c=await this.markdownWriteBackService.write(u.markerWrites,d,s.markerWrites),l=Cl(n,t.scopedFilePaths,s.syncedGroupBlocks),f=this.buildNextState(n,t.cards,t.indexedFiles,s.syncedGroupBlocks,r,new Set([...u.touchedSyncKeys,...s.touchedSyncKeys,...c.writtenSyncKeys]),u.resolvedNoteIds,i.toOrphan,l);if(f.pendingWriteBack=[...n.pendingWriteBack.filter(m=>!new Set(t.scopedFilePaths).has(m.filePath)),...c.pendingEntries],this.markFilesDirty(f,[...c.failureFiles.map(m=>m.filePath),...c.conflictFiles]),await this.pluginStateRepository.save(f),c.failureFiles.length>0)throw this.createWriteBackFailureError(c.failureFiles);return{scannedFiles:t.scannedFiles,scannedCards:t.cards.length+t.groupBlocks.length,created:u.created+s.created,rebuilt:u.rebuilt,updated:u.updated+s.updated,migratedNoteTypes:u.migratedNoteTypes+s.migratedNoteTypes,migratedDecks:u.migratedDecks+s.migratedDecks,orphaned:i.toOrphan.length+l.length,uploadedMedia:u.uploadedMedia,skippedUnchangedCards:t.skippedUnchangedCards,rewrittenMarkers:c.writtenSyncKeys.length,markerWriteConflictFiles:c.conflictFiles,warnings:Sl(i.warnings,s.warnings)}}buildNextState(t,n,r,i,a,o,u,s,d){let c=this.now(),l=Qn(a),f=new Set(r.filter(k=>k.content!==void 0).map(k=>k.filePath)),m=new Map;for(let k of i){let b=m.get(k.filePath);b?b.push(k):m.set(k.filePath,[k])}let p={files:{...t.files},cards:{...t.cards},groupBlocks:{...t.groupBlocks??{}},pendingWriteBack:[...t.pendingWriteBack]};for(let k of f)delete p.files[k];for(let[k,b]of Object.entries(p.cards))f.has(b.filePath)&&delete p.cards[k];for(let[k,b]of Object.entries(p.groupBlocks??{}))f.has(b.filePath)&&delete p.groupBlocks?.[k];let F=new Map;for(let k of n){let b=u.get(k.syncKey)??k.noteId;b!==void 0&&F.set(k.syncKey,b)}for(let k of r){if(k.content===void 0)continue;let b=Array.from(new Set(k.cards.map(x=>F.get(x.syncKey)).filter(x=>x!==void 0)));p.files[k.filePath]={filePath:k.filePath,fileHash:k.fileHash,fileStamp:k.fileStamp,deckRulesFingerprint:l,lastIndexedAt:c,noteIds:b,groupIds:(m.get(k.filePath)??[]).map(x=>x.groupId)}}for(let k of n){let b=F.get(k.syncKey);if(b===void 0)continue;let x=t.cards[z(b)]??(k.noteId!==void 0?t.cards[z(k.noteId)]:void 0),C=this.renderConfigService.resolve(k,a);p.cards[z(b)]={noteId:b,filePath:k.filePath,heading:k.heading,backlinkHeadingText:k.backlinkHeadingText,headingLevel:k.headingLevel,bodyMarkdown:k.bodyMarkdown,cardType:k.cardType,clozeMode:k.clozeMode,blockStartOffset:k.blockStartOffset,blockEndOffset:k.blockEndOffset,blockStartLine:k.blockStartLine,bodyStartLine:k.bodyStartLine,blockEndLine:k.blockEndLine,contentEndLine:k.contentEndLine,markerLine:k.markerLine,rawBlockText:k.rawBlockText,rawBlockHash:k.rawBlockHash,renderConfigHash:C.renderConfigHash,deck:C.deck,deckHint:k.deckHint,deckHintSource:k.deckHintSource,deckWarnings:[...k.deckWarnings],tagsHint:k.tagsHint,lastSyncedAt:o.has(k.syncKey)?c:x?.lastSyncedAt??0,orphan:!1}}for(let k of s)p.cards[z(k.noteId)]={...k,orphan:!0};for(let k of i)p.groupBlocks??(p.groupBlocks={}),p.groupBlocks[k.groupId]=k;for(let k of d)p.groupBlocks??(p.groupBlocks={}),p.groupBlocks[k.groupId]={...k,orphan:!0};return p}markFilesDirty(t,n){for(let r of new Set(n))t.files[r]&&(t.files[r]={...t.files[r],fileHash:"",fileStamp:""})}createWriteBackFailureError(t){return new S("errors.writeBack.summary",{fileCount:t.length},{failures:t})}};function xl(e){return typeof e=="object"&&e!==null&&"resolve"in e}function Cl(e,t,n){let r=new Set(t),i=new Set(n.map(a=>a.groupId));return Object.values(e.groupBlocks??{}).filter(a=>r.has(a.filePath)&&!i.has(a.groupId)).map(a=>({...a,orphan:!0}))}function Sl(...e){let t=new Map;for(let n of e)for(let r of n)t.set(We(r),r);return[...t.values()]}var ct=class extends ho.Plugin{constructor(){super(...arguments);this.settings=H;this.noticeService=new Nt;this.ankiGateway=new wt(()=>this.settings.ankiConnectUrl);this.deckTemplateInsertionService=new mt}async onload(){let n=new vt(this);this.pluginConfigRepository=new Et(n);let r=new Lt(n),i=new At(this.app);this.vaultGateway=i;try{this.settings=await this.pluginConfigRepository.load()}catch(o){console.error("Failed to load plugin settings, falling back to defaults.",o),this.settings=H,this.noticeService.error(g("notice.invalidSettingsRestored"))}let a=new wn(i,r,this.ankiGateway);this.syncCurrentFileUseCase=new Ft(a),this.syncVaultUseCase=new Mt(a),this.clearCurrentFileSyncedCardsUseCase=new St(r,this.ankiGateway,i),this.cleanupEmptyDecksUseCase=new ht(this.ankiGateway),Ai(this),this.addSettingTab(new Gt(this))}async updateSettings(n){if(!this.pluginConfigRepository)return;let r=Ce({...this.settings,...n});try{await this.pluginConfigRepository.save(r),this.settings=r}catch(i){this.noticeService.error(xe(i,"notice.failedSavePluginSettings"))}}async listNoteModels(){return this.ankiGateway.listNoteModels()}async getModelFieldNamesByModelNames(n){return this.ankiGateway.getModelFieldNamesByModelNames(n)}async getNoteModelDetails(n){return this.ankiGateway.getModelDetails(n)}async listFolderTree(){return this.vaultGateway?this.vaultGateway.listFolderTree():[]}async runSyncCurrentFile(){let n=this.app.workspace.getActiveFile();if(!n||n.extension.toLowerCase()!=="md"){this.noticeService.error(g("notice.noActiveMarkdownForSync"));return}if(!this.syncCurrentFileUseCase){this.noticeService.error(g("notice.syncUseCaseNotInitialized"));return}try{let r=await this.syncCurrentFileUseCase.execute(n.path,this.settings);this.noticeService.showSyncSummary("currentFile",r)}catch(r){if(r instanceof dt||r instanceof Ue){this.noticeService.info(lt(r));return}console.error("Current file sync failed.",r),this.noticeService.error(xe(r,"notice.currentFileSyncFailed"))}}async runSyncVault(){if(!this.syncVaultUseCase){this.noticeService.error(g("notice.syncUseCaseNotInitialized"));return}try{let n=await this.syncVaultUseCase.execute(this.settings);this.noticeService.showSyncSummary("vault",n)}catch(n){if(n instanceof Ue){this.noticeService.info(lt(n));return}console.error("Vault sync failed.",n),this.noticeService.error(xe(n,"notice.vaultSyncFailed"))}}async insertDeckTemplateToCurrentFile(){let n=this.app.workspace.getActiveFile();if(!n||n.extension.toLowerCase()!=="md"){this.noticeService.error(g("notice.noActiveMarkdownForDeckTemplateInsertion"));return}if(!this.vaultGateway){this.noticeService.error(g("notice.vaultGatewayNotInitialized"));return}try{let r=await this.vaultGateway.readMarkdownFile(n.path);if(!r){this.noticeService.error(g("notice.markdownFileNotFound",{filePath:n.path}));return}let i=this.deckTemplateInsertionService.insert(r,this.settings.fileDeckMarker,this.settings.fileDeckTemplate,this.settings.fileDeckInsertLocation);if(i.nextContent===i.expectedContent){this.noticeService.info(g("notice.deckTemplateAlreadyCurrent"));return}await this.vaultGateway.replaceMarkdownFile(n.path,i.expectedContent,i.nextContent),this.noticeService.info(g("notice.deckTemplateInserted",{deck:i.insertedDeck}))}catch(r){console.error("Deck template insertion failed.",r),this.noticeService.error(xe(r,"notice.deckTemplateInsertionFailed"))}}async runClearCurrentFileSyncedCards(){let n=this.app.workspace.getActiveFile();if(!n||n.extension.toLowerCase()!=="md"){this.noticeService.error(g("notice.noActiveMarkdownForReset"));return}if(!this.clearCurrentFileSyncedCardsUseCase){this.noticeService.error(g("notice.clearCurrentFileUseCaseNotInitialized"));return}try{if(!await this.clearCurrentFileSyncedCardsUseCase.hasTrackedCards(n.path)){this.noticeService.info(g("notice.noTrackedCardsInCurrentFile"));return}let i=await this.clearCurrentFileSyncedCardsUseCase.execute(n.path);this.noticeService.showClearCurrentFileSummary(i)}catch(r){console.error("Clear current file synced cards failed.",r),this.noticeService.error(xe(r,"notice.clearCurrentFileFailed"))}}async runCleanupEmptyDecks(){if(!this.cleanupEmptyDecksUseCase){this.noticeService.error(g("notice.cleanupEmptyDecksUseCaseNotInitialized"));return}try{let n=await this.cleanupEmptyDecksUseCase.listCandidates();if(n.length===0){this.noticeService.info(g("notice.noEmptyDeckCandidates"));return}let r=await new It(this.app,n).openAndGetSelection();if(r===null){this.noticeService.info(g("notice.cleanupEmptyDecksCancelled"));return}let i=await this.cleanupEmptyDecksUseCase.execute(r,n);this.noticeService.showCleanupEmptyDecksSummary(i)}catch(n){console.error("Cleanup empty decks failed.",n),this.noticeService.error(xe(n,"notice.cleanupEmptyDecksFailed"))}}};var Fl=ct;