From 671e8fe727be08651992bb5f49b2680731543fc6 Mon Sep 17 00:00:00 2001
From: trphoenix <spd260@126.com>
Date: 星期四, 27 十一月 2025 16:05:13 +0800
Subject: [PATCH] vault backup: 2025-11-27 16:05:13
---
.obsidian/plugins/obsidian-enhancing-export/data.json | 59 +
.obsidian/plugins/obsidian-enhancing-export/lua/citefilter.lua | 6
.obsidian/community-plugins.json | 3
.obsidian/plugins/obsidian-enhancing-export/main.js | 32
.obsidian/workspace.json | 22
.obsidian/plugins/obsidian-enhancing-export/textemplate/dissertation.tex | 1210 ++++++++++++++++++++++++++++++
.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua | 237 +++++
.obsidian/plugins/obsidian-enhancing-export/lua/markdown+hugo.lua | 5
.obsidian/plugins/obsidian-enhancing-export/lua/url.lua | 18
.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.sty | 373 +++++++++
.obsidian/app.json | 8
.obsidian/plugins/obsidian-enhancing-export/styles.css | 1
.obsidian/plugins/obsidian-enhancing-export/lua/math_block.lua | 68 +
.obsidian/plugins/obsidian-enhancing-export/lua/polyfill.lua | 61 +
.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.tex | 187 ++++
.obsidian/plugins/obsidian-enhancing-export/manifest.json | 10
.obsidian/plugins/obsidian-enhancing-export/lua/pdf.lua | 50 +
17 files changed, 2,341 insertions(+), 9 deletions(-)
diff --git a/.obsidian/app.json b/.obsidian/app.json
index 196910f..ba3206f 100644
--- a/.obsidian/app.json
+++ b/.obsidian/app.json
@@ -1,3 +1,9 @@
{
- "useMarkdownLinks": true
+ "useMarkdownLinks": true,
+ "pdfExportSettings": {
+ "pageSize": "A4",
+ "landscape": false,
+ "margin": "0",
+ "downscalePercent": 100
+ }
}
\ No newline at end of file
diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json
index 5a1b515..eee5170 100644
--- a/.obsidian/community-plugins.json
+++ b/.obsidian/community-plugins.json
@@ -1,4 +1,5 @@
[
"obsidian-git",
- "obsidian-custom-attachment-location"
+ "obsidian-custom-attachment-location",
+ "obsidian-enhancing-export"
]
\ No newline at end of file
diff --git a/.obsidian/plugins/obsidian-enhancing-export/data.json b/.obsidian/plugins/obsidian-enhancing-export/data.json
new file mode 100644
index 0000000..6fcceb8
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/data.json
@@ -0,0 +1,59 @@
+{
+ "items": [
+ {
+ "name": "Markdown"
+ },
+ {
+ "name": "Markdown (Hugo)"
+ },
+ {
+ "name": "Html"
+ },
+ {
+ "name": "TextBundle"
+ },
+ {
+ "name": "Typst"
+ },
+ {
+ "name": "PDF"
+ },
+ {
+ "name": "Word (.docx)"
+ },
+ {
+ "name": "OpenOffice"
+ },
+ {
+ "name": "RTF"
+ },
+ {
+ "name": "Epub"
+ },
+ {
+ "name": "Latex"
+ },
+ {
+ "name": "Media Wiki"
+ },
+ {
+ "name": "reStructuredText"
+ },
+ {
+ "name": "Textile"
+ },
+ {
+ "name": "OPML"
+ },
+ {
+ "name": "Bibliography"
+ },
+ {
+ "name": "PowerPoint (.pptx)"
+ }
+ ],
+ "defaultExportDirectoryMode": "Auto",
+ "openExportedFile": true,
+ "env": {},
+ "showExportProgressBar": true
+}
\ No newline at end of file
diff --git a/.obsidian/plugins/obsidian-enhancing-export/lua/citefilter.lua b/.obsidian/plugins/obsidian-enhancing-export/lua/citefilter.lua
new file mode 100644
index 0000000..01700ed
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/lua/citefilter.lua
@@ -0,0 +1,6 @@
+-- credits to tarleb — StackExchange: https://tex.stackexchange.com/questions/392070/pandoc-markdown-create-self-contained-bib-file-from-cited-references
+function Pandoc(d)
+ d.meta.references = pandoc.utils.references(d)
+ d.meta.bibliography = nil
+ return d
+end
diff --git a/.obsidian/plugins/obsidian-enhancing-export/lua/markdown+hugo.lua b/.obsidian/plugins/obsidian-enhancing-export/lua/markdown+hugo.lua
new file mode 100644
index 0000000..9341fd9
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/lua/markdown+hugo.lua
@@ -0,0 +1,5 @@
+package.path=package.path..";" ..debug.getinfo(1).source:match("(.*[/\\])"):sub(2) .. "?.lua"
+
+Mode='hugo'
+
+require('markdown')
\ No newline at end of file
diff --git a/.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua b/.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua
new file mode 100644
index 0000000..6071148
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/lua/markdown.lua
@@ -0,0 +1,237 @@
+package.path=debug.getinfo(1).source:gsub('@',''):sub(0):match('(.*[/\\])'):sub(0) .. '?.lua' .. ';' .. package.path
+
+require("polyfill")
+local url = require('url')
+
+local pandoc=pandoc
+local PANDOC_STATE=PANDOC_STATE
+
+PANDOC_VERSION:must_be_at_least '3.1.7'
+
+os.text = pandoc.text
+
+local PATH = pandoc.path
+local doc_dir = nil
+local media_dir = nil
+
+if Mode == nil then
+ Mode = 'default'
+end
+
+-- print("Mode: "..Mode)
+
+if PANDOC_STATE.output_file then
+ local output_file = PANDOC_STATE.output_file
+ doc_dir = PATH.directory(output_file)
+ if PANDOC_WRITER_OPTIONS.variables["media_dir"] then
+ media_dir = tostring(PANDOC_WRITER_OPTIONS.variables["media_dir"])
+ else
+ media_dir = PATH.split_extension(output_file)
+ if Mode ~= 'hugo' then
+ media_dir = media_dir .. '-media'
+ end
+ end
+end
+assert(doc_dir, "doc_dir is nil")
+assert(media_dir, "media_dir is nil")
+
+
+local function get_absolute_path(file_path)
+ if PATH.is_absolute(file_path) then
+ return file_path
+ end
+ for _, dir in pairs(PANDOC_STATE.resource_path) do
+ local full_path = PATH.join({dir, file_path})
+ if os.exists(full_path) then
+ return full_path
+ end
+ end
+ for _, file in pairs(PANDOC_STATE.input_files) do
+ if not PATH.is_absolute(file) then
+ file = PATH.join({pandoc.system.get_working_directory(), file_path})
+ end
+ local dir = PATH.directory(file)
+ local full_path = PATH.join({dir, file_path})
+ if os.exists(full_path) then
+ return full_path
+ end
+ end
+ return nil
+end
+
+local function get_output_file(file_path)
+ if media_dir then
+ local new_file_name = pandoc.utils.sha1(file_path)
+ local _, new_file_ext = PATH.split_extension(file_path)
+ file_path = new_file_name .. new_file_ext
+ local full_path = PATH.join({media_dir, file_path})
+ return full_path
+ else
+ return nil
+ end
+end
+
+local function extract_media(file_path)
+ os.mkdir(media_dir)
+ file_path = url.decode(file_path)
+ local abs_path = get_absolute_path(file_path)
+ local file = get_output_file(file_path)
+ if abs_path and file then
+ if not os.exists(file) then
+ os.copy(abs_path, file)
+ end
+ local rel_path = PATH.make_relative(file, doc_dir, false)
+ local parts = PATH.split(rel_path)
+ for i,v in ipairs(parts) do
+ parts[i] = url.encode(v)
+ end
+ local encoded_rel_path = table.concat(parts, "/")
+ if Mode == 'hugo' then
+ encoded_rel_path = '../' .. encoded_rel_path
+ end
+ return encoded_rel_path
+ end
+end
+
+local function raw(s)
+ return pandoc.RawInline('markdown', s)
+end
+
+function Image(el)
+ local src = extract_media(el.src)
+ if src then
+ el.src = src
+ end
+ return el
+end
+
+function Space()
+ return raw(' ')
+end
+
+function SoftBreak()
+ return raw('\n')
+end
+
+function RawInline(el)
+ if el.format == "html" then
+ el.format = 'markdown'
+ el.text = string.gsub(el.text, '<img[^>]+>', function(img)
+ return string.gsub(img, 'src="([^"]+)"', function(url)
+ if string.find(url, '^[Hh][Tt][Tt][Pp][Ss]?://') == nil then
+ local extract_media_url = extract_media(url)
+ if extract_media_url then
+ return 'src="' .. extract_media_url .. '"'
+ end
+ return '123'
+ end
+ return 'src="' .. url .. '"'
+ end)
+ end)
+ end
+ return el
+end
+
+function RawBlock(el)
+ if el.format == "html" then
+ el.format = 'markdown'
+ end
+ return el
+end
+
+function Math(el)
+ if Mode == 'hugo' then
+ if el.mathtype == 'DisplayMath' then
+ return raw('{{< mathjax >}}\n$$' .. el.text .. '$$\n{{</mathjax >}}')
+ else
+ el.text = string.gsub(el.text, '\\[\\{\\}]', function (v)
+ return '\\' .. v
+ end)
+ el.text = string.gsub(el.text, '_', function (v)
+ return '\\' .. v
+ end)
+ end
+ end
+ return el
+end
+
+local function headerLink(input)
+ -- github style section link
+ return "#"..input:gsub(' ', '-')
+end
+
+
+local function insertLink(content, linkDescription)
+ local descriptionText = table.concat(linkDescription, "")
+
+ if string.find(descriptionText, '|') then
+ local target, desc = descriptionText:match("(.*)|(.*)")
+ table.insert(content, pandoc.Link(desc, headerLink(target)))
+ else
+ table.insert(content, pandoc.Link(descriptionText, headerLink(descriptionText)))
+ end
+end
+
+function Para(el)
+ local content = el.content
+ content = ProcessMath(content)
+ content = ProcessInternalLinks(content)
+ el.content = content
+ return el
+end
+
+function ProcessMath(elements)
+ local content = {}
+ local in_display_math = false
+ for _, item in pairs(elements) do
+ if item.t == 'Str'and item.text == "$$" then
+ in_display_math = not in_display_math
+ else
+ if in_display_math then
+ if item.t == 'RawInline' and item.format == 'tex' then
+ local n = pandoc.Math('DisplayMath', '\n' .. item.text .. '\n')
+ table.insert(content, Math(n))
+ else
+ table.insert(content, item)
+ end
+ else
+ table.insert(content, item)
+ end
+ end
+ end
+ return content
+end
+
+function ProcessInternalLinks(elements)
+ local content = {}
+ local in_section_link = false
+ local linkDescription = {}
+
+ for _, item in pairs(elements) do
+ if item.t == 'Str' and string.starts_with(item.text, '[[#') then
+ in_section_link = true
+ table.insert(linkDescription, string.sub(item.text, 4))
+ elseif in_section_link then
+ if string.ends_with(item.text, ']]') then
+ table.insert(linkDescription, string.sub(item.text, 1, -3))
+ insertLink(content, linkDescription)
+ in_section_link = false
+ linkDescription = {}
+ else
+ table.insert(linkDescription, item.text)
+ end
+ else
+ table.insert(content, item)
+ end
+ end
+ return content
+end
+
+function Plain(el)
+ el.content = ProcessInternalLinks(el.content)
+ return el
+end
+
+function Pandoc(el)
+ return el
+end
diff --git a/.obsidian/plugins/obsidian-enhancing-export/lua/math_block.lua b/.obsidian/plugins/obsidian-enhancing-export/lua/math_block.lua
new file mode 100644
index 0000000..380d96a
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/lua/math_block.lua
@@ -0,0 +1,68 @@
+traverse = 'topdown'
+
+math_block_text = nil
+function process(el)
+
+ -- MathBlock start or end
+ if el.t == 'Str' and el.text == '$$' then
+ if math_block_text == nil then -- start
+ math_block_text = ''
+ else -- end
+ local math_block = pandoc.Math('DisplayMath', '\n' .. math_block_text .. '\n')
+ math_block_text = nil
+ return math_block
+ end
+ return {}
+ end
+
+ if math_block_text then
+ if (el.t == 'RawInline' or el.t == 'RawBlock') and el.format == 'tex' then
+ math_block_text = math_block_text .. el.text
+ return {}
+ elseif el.t == 'Str' then
+ math_block_text = math_block_text .. el.text
+ return {}
+ elseif el.t == 'SoftBreak' or el.t == 'BulletList' then
+ return {}
+ end
+ end
+ return el
+end
+
+function RawInline(el)
+ return process(el)
+end
+
+function RawBlock(el)
+ return process(el)
+end
+
+function Str(el)
+ return process(el)
+end
+
+function SoftBreak(el)
+ return process(el)
+end
+
+function Header(el)
+ return process(el)
+end
+
+function Para(el)
+ return process(el)
+end
+
+function Plain(el)
+ return process(el)
+end
+
+function BulletList(el)
+ return process(el)
+end
+
+
+
+
+
+
diff --git a/.obsidian/plugins/obsidian-enhancing-export/lua/pdf.lua b/.obsidian/plugins/obsidian-enhancing-export/lua/pdf.lua
new file mode 100644
index 0000000..bf4276f
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/lua/pdf.lua
@@ -0,0 +1,50 @@
+-- minimum supported version for full environment
+-- support is 3.8.unkown yet to be released but probably 3
+local environment_fully_supported_version = pandoc.types.Version('3.8.3')
+local environment_partially_supported_version = pandoc.types.Version('3.8.0')
+local is_partially_supported = PANDOC_VERSION >= environment_partially_supported_version
+local problamatic_environments = {
+ displaymath = true,
+ math = true,
+ equation = true,
+ ["equation*"] = true,
+ gather = true,
+ ["gather*"] = true,
+ multline = true,
+ ["multline*"] = true,
+ eqnarray = true,
+ ["eqnarray*"] = true,
+ align = true,
+ ["align*"] = true,
+ alignat = true,
+ ["alignat*"] = true,
+ flalign = true,
+ ["flalign*"] = true,
+}
+if is_partially_supported then
+ return {
+ {
+ Math = function(elem)
+ if elem.text:find("^%s*\\begin{") ~= nil then
+ local replacement = pandoc.text:gsub(elem.text, "^%s*\\begin{(.-)}", "\\begin{%1}"):gsub("\\end{(.-)}%s*$", "\\end{%1}")
+ return pandoc.Math(replacement, elem.mathtype)
+ else
+ return elem
+ end
+ end,
+ }
+ }
+elseif not environment_fully_supported_version then
+ return {
+ {
+ Math = function(elem)
+ local result = elem.text:match("^%s*\\begin{(%a+%*?)}")
+ if result ~= nil and problamatic_environments[result] ~= nil then
+ return pandoc.RawInline('tex', elem.text)
+ else
+ return elem
+ end
+ end,
+ }
+ }
+end
diff --git a/.obsidian/plugins/obsidian-enhancing-export/lua/polyfill.lua b/.obsidian/plugins/obsidian-enhancing-export/lua/polyfill.lua
new file mode 100644
index 0000000..1e8f3e5
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/lua/polyfill.lua
@@ -0,0 +1,61 @@
+os.platform = nil
+if os.platform == nil then
+ local libExt = package.cpath:match("%p[\\|/]?\\.%p(%a+)")
+ if libExt == 'dll' then
+ os.platform = "Windows"
+ elseif libExt == 'so' then
+ os.platform = "Linux"
+ elseif libExt == 'dylib' then
+ os.platform = "MacOS"
+ end
+end
+
+
+os.copy = function(src, dest)
+ if os.platform == "Windows" then
+ src = string.gsub(src, "/", "\\")
+ src = os.text.toencoding(src)
+ dest = os.text.toencoding(dest)
+ os.execute('copy "' .. src .. '" "' .. dest .. '" >NUL')
+ else
+ os.execute('cp "' .. src .. '" "' .. dest .. '"')
+ end
+end
+
+os.mkdir = function(dir)
+ if os.exists(dir) then
+ return
+ end
+ if os.platform == "Windows" then
+ dir = os.text.toencoding(dir)
+ os.execute('mkdir "' .. dir .. '"')
+ else
+ os.execute('mkdir -p "' .. dir .. '"')
+ end
+end
+
+os.exists = function(path)
+ if os.platform == "Windows" then
+ path = string.gsub(path, "/", "\\")
+ path = os.text.toencoding(path)
+ local _, _, code = os.execute('if exist "' .. path .. '" (exit 0) else (exit 1)')
+ return code == 0
+ else
+ local _, _, code = os.execute('test -e "' .. path .. '"')
+ return code == 0
+ end
+end
+
+string.starts_with = function(str, start)
+ return str:sub(1, #start) == start
+end
+
+string.ends_with = function(str, ending)
+ return ending == "" or str:sub(-#ending) == ending
+end
+
+
+return {
+ os = os,
+ string = string
+}
\ No newline at end of file
diff --git a/.obsidian/plugins/obsidian-enhancing-export/lua/url.lua b/.obsidian/plugins/obsidian-enhancing-export/lua/url.lua
new file mode 100644
index 0000000..4798146
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/lua/url.lua
@@ -0,0 +1,18 @@
+local function encode (str)
+ str = string.gsub (str, "([^0-9a-zA-Z !'()*._~-])", -- locale independent
+ function (c) return string.format ("%%%02X", string.byte(c)) end)
+ str = string.gsub (str, " ", "%%20")
+ return str
+ end
+
+
+local function decode (str)
+ str = string.gsub (str, "%%20", " ")
+ str = string.gsub (str, "%%(%x%x)", function(h) return string.char(tonumber(h,16)) end)
+ return str
+end
+
+return {
+ encode = encode,
+ decode = decode
+}
\ No newline at end of file
diff --git a/.obsidian/plugins/obsidian-enhancing-export/main.js b/.obsidian/plugins/obsidian-enhancing-export/main.js
new file mode 100644
index 0000000..1e5152a
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/main.js
@@ -0,0 +1,32 @@
+"use strict";var Zl=e=>{throw TypeError(e)};var bl=(e,l,t)=>l.has(e)||Zl("Cannot "+t);var ml=(e,l,t)=>(bl(e,l,"read from private field"),t?t.call(e):l.get(e)),ul=(e,l,t)=>l.has(e)?Zl("Cannot add the same private member more than once"):l instanceof WeakSet?l.add(e):l.set(e,t),Gl=(e,l,t,n)=>(bl(e,l,"write to private field"),n?n.call(e,t):l.set(e,t),t);/*!
+THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
+if you want to view the source, please visit the github repository https://github.com/mokeyish/obsidian-enhancing-export .
+*/Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const ue=require("obsidian"),wn=require("child_process"),Xt=require("process"),_l=require("electron"),ql=require("fs"),ce=require("path"),Sn=require("util");function qt(e){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(l,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return l.default=e,Object.freeze(l)}const Kn=qt(ue),ye=qt(_l),Ft=qt(ql),gt={Markdown:{name:"Markdown",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/markdown.lua" -s -o "${outputPath}" -t commonmark_x-attributes',extension:".md"},"Markdown (Hugo)":{name:"Markdown (Hugo)",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/markdown+hugo.lua" -s -o "${outputPath}" -t commonmark_x-attributes',extension:".md"},Html:{name:"Html",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/math_block.lua" --embed-resources --standalone --metadata title="${currentFileName}" -s -o "${outputPath}" -t html',customArguments:'--mathjax="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg-full.js"',extension:".html"},TextBundle:{name:"TextBundle",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/markdown.lua" -V media_dir="${outputDir}/${outputFileName}.textbundle/assets" -s -o "${outputDir}/${outputFileName}.textbundle/text.md" -t commonmark_x-attributes',extension:".md"},Typst:{name:"Typst",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/markdown.lua" -s -o "${outputPath}" -t typst',extension:".typ"},PDF:{name:"PDF",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/pdf.lua" ${ options.textemplate ? `--resource-path="${pluginDir}/textemplate" --template="${options.textemplate}"` : ` ` } -o "${outputPath}" -t pdf',customArguments:"--pdf-engine=pdflatex",optionsMeta:{textemplate:"preset:textemplate"},extension:".pdf"},"Word (.docx)":{name:"Word (.docx)",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -o "${outputPath}" -t docx',extension:".docx"},OpenOffice:{name:"OpenOffice",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -o "${outputPath}" -t odt',extension:".odt"},RTF:{name:"RTF",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -s -o "${outputPath}" -t rtf',extension:".rtf"},Epub:{name:"Epub",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -o "${outputPath}" -t epub',extension:".epub"},Latex:{name:"Latex",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" ${ options.textemplate ? `--resource-path="${pluginDir}/textemplate" --template="${options.textemplate}"` : ` ` } --extract-media="${outputDir}" -s -o "${outputPath}" -t latex',optionsMeta:{textemplate:"preset:textemplate"},extension:".tex"},"Media Wiki":{name:"Media Wiki",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -s -o "${outputPath}" -t mediawiki',extension:".mediawiki"},reStructuredText:{name:"reStructuredText",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -s -o "${outputPath}" -t rst',extension:".rst"},Textile:{name:"Textile",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -s -o "${outputPath}" -t textile',extension:".textile"},OPML:{name:"OPML",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -s -o "${outputPath}" -t opml',extension:".opml"},"Bibliography (.bib)":{name:"Bibliography",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" --lua-filter="${luaDir}/citefilter.lua" -o "${outputPath}" --to=bibtex "${currentPath}"',extension:".bib"},"PowerPoint (.pptx)":{name:"PowerPoint (.pptx)",type:"pandoc",arguments:'-f ${fromFormat} --resource-path="${currentDir}" --resource-path="${attachmentFolderPath}" -o "${outputPath}" -t pptx',extension:".pptx"},Custom:{name:"Custom",type:"custom",command:"your command",targetFileExtensions:".ext"}};function Ae(e,l,t){return typeof l=="string"&&l.trim()===""&&(l=void 0),t instanceof Array?t.reduce((n,c)=>Ae(n,l,c),e):(t??(t=Xt.platform),{...e??{},[t]:l})}function Ze(e,l){e??(e={});const t=e[l??Xt.platform],n=e["*"];return n&&typeof n=="object"?Object.assign({},n,t):t??n}function M(e,...l){return function(...t){const n=t[t.length-1]||{},c=[e[0]];return l.forEach(function(i,o){const s=Number.isInteger(i)?t[i]:n[i];c.push(s,e[o+1])}),c.join("")}}function jt(e,l){return l=l??{},new Promise((t,n)=>{wn.exec(e,l,(c,i,o)=>{if(c){n(c),console.error(i,c);return}if(o&&o!==""){n(o),console.error(i,c);return}(i==null?void 0:i.trim().length)===0&&localStorage.getItem("debug-plugin")==="1"&&console.log(i),t(i)})})}function En(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.substring(1,e.length-1):e}function Lt(e,l={}){for(;;)try{const t=Object.keys(l).filter(Qn),n=t.map(c=>l[c]);return new Function(...t,`{ return \`${e.replaceAll("\\","\\\\")}\` }`).bind(l)(...n)}catch(t){if(t instanceof ReferenceError&&t.message.endsWith("is not defined")){const n=t.message.substring(0,t.message.indexOf(" ")),c=Object.keys(l).filter(i=>i.toLowerCase()===n.toLowerCase()).map(i=>l[i])[0]??`\${${n}}`;l[n]=c}else throw t}}const Qn=e=>{if(typeof e!="string"||e.trim()!==e)return!1;try{new Function(e,"var "+e)}catch{return!1}return!0},zn={textemplate:{title:"Latex Template",type:"dropdown",options:[{name:"None",value:null},{name:"Dissertation",value:"dissertation.tex"},{name:"Academic Paper",value:"neurips.tex"}]}},_e=(()=>{let e={};return e=Ae(e,{HOME:"${HOME}",PATH:"${PATH}",TEXINPUTS:"${pluginDir}/textemplate/:"},"*"),e=Ae(e,{TEXINPUTS:"${pluginDir}/textemplate/;",PATH:"${HOME}\\AppData\\Local\\Pandoc;${PATH}"},"win32"),e=Ae(e,{PATH:"/opt/homebrew/bin:/usr/local/bin:/Library/TeX/texbin:${PATH}"},"darwin"),e})(),Me={items:Object.values(gt).filter(e=>e.type!=="custom"),pandocPath:void 0,defaultExportDirectoryMode:"Auto",openExportedFile:!0,env:_e,showExportProgressBar:!0};function en(e){var l;return e.type==="pandoc"?e.extension:e.type==="custom"?(l=e.targetFileExtensions)==null?void 0:l.split(",")[0]:""}function tn(e,l){return e=Object.assign({},Ze(_e),e),l=Object.assign({HOME:process.env.HOME??process.env.USERPROFILE},process.env,l??{}),Object.fromEntries(Object.entries(e).map(([t,n])=>[t,Lt(n,l)]))}function Un(e){return e?Object.fromEntries(Object.entries(e).map(([l,t])=>[l,typeof t=="string"?zn[t.startsWith("preset:")?t.substring(7):""]:t])):{}}const jn=(e,l)=>e===l,Xe=Symbol("solid-proxy"),Mt=Symbol("solid-track"),ut={equals:jn};let ln=rn;const Fe=1,Gt=2,nn={owned:null,cleanups:null,context:null,owner:null};var $=null;let Ht=null,Ln=null,O=null,ie=null,Je=null,ft=0;function we(e,l){const t=O,n=$,c=e.length===0,i=n,o=c?nn:{owned:null,cleanups:null,context:i?i.context:null,owner:i},s=c?e:()=>e(()=>P(()=>Rt(o)));$=o,O=null;try{return Ue(s,!0)}finally{O=t,$=n}}function de(e,l){l=l?Object.assign({},ut,l):ut;const t={value:e,observers:null,observerSlots:null,comparator:l.equals||void 0},n=c=>(typeof c=="function"&&(c=c(t.value)),an(t,c));return[on.bind(t),n]}function ne(e,l,t){const n=el(e,l,!1,Fe);lt(n)}function Ye(e,l,t){ln=Pn;const n=el(e,l,!1,Fe);n.user=!0,Je?Je.push(n):lt(n)}function le(e,l,t){t=t?Object.assign({},ut,t):ut;const n=el(e,l,!0,0);return n.observers=null,n.observerSlots=null,n.comparator=t.equals||void 0,lt(n),on.bind(n)}function Zt(e){return Ue(e,!1)}function P(e){if(O===null)return e();const l=O;O=null;try{return e()}finally{O=l}}function cn(e){Ye(()=>P(e))}function ze(e){return $===null||($.cleanups===null?$.cleanups=[e]:$.cleanups.push(e)),e}function Tt(){return O}function Mn(e,l){const t=Symbol("context");return{id:t,Provider:_n(t),defaultValue:e}}function Tn(e){let l;return $&&$.context&&(l=$.context[e.id])!==void 0?l:e.defaultValue}function sn(e){const l=le(e),t=le(()=>$t(l()));return t.toArray=()=>{const n=t();return Array.isArray(n)?n:n!=null?[n]:[]},t}function on(){if(this.sources&&this.state)if(this.state===Fe)lt(this);else{const e=ie;ie=null,Ue(()=>Ct(this),!1),ie=e}if(O){const e=this.observers?this.observers.length:0;O.sources?(O.sources.push(this),O.sourceSlots.push(e)):(O.sources=[this],O.sourceSlots=[e]),this.observers?(this.observers.push(O),this.observerSlots.push(O.sources.length-1)):(this.observers=[O],this.observerSlots=[O.sources.length-1])}return this.value}function an(e,l,t){let n=e.value;return(!e.comparator||!e.comparator(n,l))&&(e.value=l,e.observers&&e.observers.length&&Ue(()=>{for(let c=0;c<e.observers.length;c+=1){const i=e.observers[c],o=Ht&&Ht.running;o&&Ht.disposed.has(i),(o?!i.tState:!i.state)&&(i.pure?ie.push(i):Je.push(i),i.observers&&dn(i)),o||(i.state=Fe)}if(ie.length>1e6)throw ie=[],new Error},!1)),l}function lt(e){if(!e.fn)return;Rt(e);const l=ft;$n(e,e.value,l)}function $n(e,l,t){let n;const c=$,i=O;O=$=e;try{n=e.fn(l)}catch(o){return e.pure&&(e.state=Fe,e.owned&&e.owned.forEach(Rt),e.owned=null),e.updatedAt=t+1,gn(o)}finally{O=i,$=c}(!e.updatedAt||e.updatedAt<=t)&&(e.updatedAt!=null&&"observers"in e?an(e,n):e.value=n,e.updatedAt=t)}function el(e,l,t,n=Fe,c){const i={fn:e,state:n,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:l,owner:$,context:$?$.context:null,pure:t};return $===null||$!==nn&&($.owned?$.owned.push(i):$.owned=[i]),i}function It(e){if(e.state===0)return;if(e.state===Gt)return Ct(e);if(e.suspense&&P(e.suspense.inFallback))return e.suspense.effects.push(e);const l=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<ft);)e.state&&l.push(e);for(let t=l.length-1;t>=0;t--)if(e=l[t],e.state===Fe)lt(e);else if(e.state===Gt){const n=ie;ie=null,Ue(()=>Ct(e,l[0]),!1),ie=n}}function Ue(e,l){if(ie)return e();let t=!1;l||(ie=[]),Je?t=!0:Je=[],ft++;try{const n=e();return On(t),n}catch(n){t||(Je=null),ie=null,gn(n)}}function On(e){if(ie&&(rn(ie),ie=null),e)return;const l=Je;Je=null,l.length&&Ue(()=>ln(l),!1)}function rn(e){for(let l=0;l<e.length;l++)It(e[l])}function Pn(e){let l,t=0;for(l=0;l<e.length;l++){const n=e[l];n.user?e[t++]=n:It(n)}for(l=0;l<t;l++)It(e[l])}function Ct(e,l){e.state=0;for(let t=0;t<e.sources.length;t+=1){const n=e.sources[t];if(n.sources){const c=n.state;c===Fe?n!==l&&(!n.updatedAt||n.updatedAt<ft)&&It(n):c===Gt&&Ct(n,l)}}}function dn(e){for(let l=0;l<e.observers.length;l+=1){const t=e.observers[l];t.state||(t.state=Gt,t.pure?ie.push(t):Je.push(t),t.observers&&dn(t))}}function Rt(e){let l;if(e.sources)for(;e.sources.length;){const t=e.sources.pop(),n=e.sourceSlots.pop(),c=t.observers;if(c&&c.length){const i=c.pop(),o=t.observerSlots.pop();n<c.length&&(i.sourceSlots[o]=n,c[n]=i,t.observerSlots[n]=o)}}if(e.owned){for(l=e.owned.length-1;l>=0;l--)Rt(e.owned[l]);e.owned=null}if(e.cleanups){for(l=e.cleanups.length-1;l>=0;l--)e.cleanups[l]();e.cleanups=null}e.state=0}function Dn(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function gn(e,l=$){throw Dn(e)}function $t(e){if(typeof e=="function"&&!e.length)return $t(e());if(Array.isArray(e)){const l=[];for(let t=0;t<e.length;t++){const n=$t(e[t]);Array.isArray(n)?l.push.apply(l,n):l.push(n)}return l}return e}function _n(e,l){return function(n){let c;return ne(()=>c=P(()=>($.context={...$.context,[e]:n.value},sn(()=>n.children))),void 0),c}}const qn=Symbol("fallback");function Il(e){for(let l=0;l<e.length;l++)e[l]()}function ec(e,l,t={}){let n=[],c=[],i=[],o=0,s=l.length>1?[]:null;return ze(()=>Il(i)),()=>{let a=e()||[],Z=a.length,u,b;return a[Mt],P(()=>{let f,J,U,m,E,S,K,T,Q;if(Z===0)o!==0&&(Il(i),i=[],n=[],c=[],o=0,s&&(s=[])),t.fallback&&(n=[qn],c[0]=we(be=>(i[0]=be,t.fallback())),o=1);else if(o===0){for(c=new Array(Z),b=0;b<Z;b++)n[b]=a[b],c[b]=we(N);o=Z}else{for(U=new Array(Z),m=new Array(Z),s&&(E=new Array(Z)),S=0,K=Math.min(o,Z);S<K&&n[S]===a[S];S++);for(K=o-1,T=Z-1;K>=S&&T>=S&&n[K]===a[T];K--,T--)U[T]=c[K],m[T]=i[K],s&&(E[T]=s[K]);for(f=new Map,J=new Array(T+1),b=T;b>=S;b--)Q=a[b],u=f.get(Q),J[b]=u===void 0?-1:u,f.set(Q,b);for(u=S;u<=K;u++)Q=n[u],b=f.get(Q),b!==void 0&&b!==-1?(U[b]=c[u],m[b]=i[u],s&&(E[b]=s[u]),b=J[b],f.set(Q,b)):i[u]();for(b=S;b<Z;b++)b in U?(c[b]=U[b],i[b]=m[b],s&&(s[b]=E[b],s[b](b))):c[b]=we(N);c=c.slice(0,o=Z),n=a.slice(0)}return c});function N(f){if(i[b]=f,s){const[J,U]=de(b);return s[b]=U,l(a[b],J)}return l(a[b])}}}function I(e,l){return P(()=>e(l||{}))}function it(){return!0}const Cl={get(e,l,t){return l===Xe?t:e.get(l)},has(e,l){return l===Xe?!0:e.has(l)},set:it,deleteProperty:it,getOwnPropertyDescriptor(e,l){return{configurable:!0,enumerable:!0,get(){return e.get(l)},set:it,deleteProperty:it}},ownKeys(e){return e.keys()}};function tc(e,...l){if(Xe in e){const c=new Set(l.length>1?l.flat():l[0]),i=l.map(o=>new Proxy({get(s){return o.includes(s)?e[s]:void 0},has(s){return o.includes(s)&&s in e},keys(){return o.filter(s=>s in e)}},Cl));return i.push(new Proxy({get(o){return c.has(o)?void 0:e[o]},has(o){return c.has(o)?!1:o in e},keys(){return Object.keys(e).filter(o=>!c.has(o))}},Cl)),i}const t={},n=l.map(()=>({}));for(const c of Object.getOwnPropertyNames(e)){const i=Object.getOwnPropertyDescriptor(e,c),o=!i.get&&!i.set&&i.enumerable&&i.writable&&i.configurable;let s=!1,a=0;for(const Z of l)Z.includes(c)&&(s=!0,o?n[a][c]=i.value:Object.defineProperty(n[a],c,i)),++a;s||(o?t[c]=i.value:Object.defineProperty(t,c,i))}return[...n,t]}const Zn=e=>`Stale read from <${e}>.`;function bn(e){const l="fallback"in e&&{fallback:()=>e.fallback};return le(ec(()=>e.each,e.children,l||void 0))}function bt(e){const l=e.keyed,t=le(()=>e.when,void 0,{equals:(n,c)=>l?n===c:!n==!c});return le(()=>{const n=t();if(n){const c=e.children;return typeof c=="function"&&c.length>0?P(()=>c(l?n:()=>{if(!P(t))throw Zn("Show");return e.when})):c}return e.fallback},void 0,void 0)}function lc(e){let l=!1;const t=(i,o)=>(l?i[1]===o[1]:!i[1]==!o[1])&&i[2]===o[2],n=sn(()=>e.children),c=le(()=>{let i=n();Array.isArray(i)||(i=[i]);for(let o=0;o<i.length;o++){const s=i[o].when;if(s)return l=!!i[o].keyed,[o,s,i[o]]}return[-1]},void 0,{equals:t});return le(()=>{const[i,o,s]=c();if(i<0)return e.fallback;const a=s.children;return typeof a=="function"&&a.length>0?P(()=>a(l?o:()=>{if(P(c)[0]!==i)throw Zn("Match");return s.when})):a},void 0,void 0)}function Wl(e){return e}const nc=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],cc=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...nc]),ic=new Set(["innerHTML","textContent","innerText","children"]),sc=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),oc=Object.assign(Object.create(null),{class:"className",formnovalidate:{$:"formNoValidate",BUTTON:1,INPUT:1},ismap:{$:"isMap",IMG:1},nomodule:{$:"noModule",SCRIPT:1},playsinline:{$:"playsInline",VIDEO:1},readonly:{$:"readOnly",INPUT:1,TEXTAREA:1}});function ac(e,l){const t=oc[e];return typeof t=="object"?t[l]?t.$:void 0:t}const rc=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]),dc=new Set(["altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","svg","switch","symbol","text","textPath","tref","tspan","use","view","vkern"]),gc={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"};function Zc(e,l,t){let n=t.length,c=l.length,i=n,o=0,s=0,a=l[c-1].nextSibling,Z=null;for(;o<c||s<i;){if(l[o]===t[s]){o++,s++;continue}for(;l[c-1]===t[i-1];)c--,i--;if(c===o){const u=i<n?s?t[s-1].nextSibling:t[i-s]:a;for(;s<i;)e.insertBefore(t[s++],u)}else if(i===s)for(;o<c;)(!Z||!Z.has(l[o]))&&l[o].remove(),o++;else if(l[o]===t[i-1]&&t[s]===l[c-1]){const u=l[--c].nextSibling;e.insertBefore(t[s++],l[o++].nextSibling),e.insertBefore(t[--i],u),l[c]=t[i]}else{if(!Z){Z=new Map;let b=s;for(;b<i;)Z.set(t[b],b++)}const u=Z.get(l[o]);if(u!=null)if(s<u&&u<i){let b=o,N=1,f;for(;++b<c&&b<i&&!((f=Z.get(l[b]))==null||f!==u+N);)N++;if(N>u-s){const J=l[o];for(;s<u;)e.insertBefore(t[s++],J)}else e.replaceChild(t[s++],l[o++])}else o++;else l[o++].remove()}}}const hl="_$DX_DELEGATE";function Ge(e,l,t){let n;const c=()=>{const o=document.createElement("template");return o.innerHTML=e,o.content.firstChild},i=()=>(n||(n=c())).cloneNode(!0);return i.cloneNode=i,i}function tl(e,l=window.document){const t=l[hl]||(l[hl]=new Set);for(let n=0,c=e.length;n<c;n++){const i=e[n];t.has(i)||(t.add(i),l.addEventListener(i,Cc))}}function xe(e,l,t){t==null?e.removeAttribute(l):e.setAttribute(l,t)}function bc(e,l,t,n){n==null?e.removeAttributeNS(l,t):e.setAttributeNS(l,t,n)}function mn(e,l){l==null?e.removeAttribute("class"):e.className=l}function ll(e,l,t,n){if(n)Array.isArray(t)?(e[`$$${l}`]=t[0],e[`$$${l}Data`]=t[1]):e[`$$${l}`]=t;else if(Array.isArray(t)){const c=t[0];e.addEventListener(l,t[0]=i=>c.call(e,t[1],i))}else e.addEventListener(l,t)}function mc(e,l,t={}){const n=Object.keys(l||{}),c=Object.keys(t);let i,o;for(i=0,o=c.length;i<o;i++){const s=c[i];!s||s==="undefined"||l[s]||(pl(e,s,!1),delete t[s])}for(i=0,o=n.length;i<o;i++){const s=n[i],a=!!l[s];!s||s==="undefined"||t[s]===a||!a||(pl(e,s,!0),t[s]=a)}return t}function nl(e,l,t){if(!l)return t?xe(e,"style"):l;const n=e.style;if(typeof l=="string")return n.cssText=l;typeof t=="string"&&(n.cssText=t=void 0),t||(t={}),l||(l={});let c,i;for(i in t)l[i]==null&&n.removeProperty(i),delete t[i];for(i in l)c=l[i],c!==t[i]&&(n.setProperty(i,c),t[i]=c);return t}function uc(e,l={},t,n){const c={};return ne(()=>c.children=qe(e,l.children,c.children)),ne(()=>typeof l.ref=="function"&&Vt(l.ref,e)),ne(()=>Gc(e,l,t,!0,c,!0)),c}function Vt(e,l,t){return P(()=>e(l,t))}function se(e,l,t,n){if(t!==void 0&&!n&&(n=[]),typeof l!="function")return qe(e,l,n,t);ne(c=>qe(e,l(),c,t),n)}function Gc(e,l,t,n,c={},i=!1){l||(l={});for(const o in c)if(!(o in l)){if(o==="children")continue;c[o]=Xl(e,o,null,c[o],t,i)}for(const o in l){if(o==="children")continue;const s=l[o];c[o]=Xl(e,o,s,c[o],t,i)}}function Ic(e){return e.toLowerCase().replace(/-([a-z])/g,(l,t)=>t.toUpperCase())}function pl(e,l,t){const n=l.trim().split(/\s+/);for(let c=0,i=n.length;c<i;c++)e.classList.toggle(n[c],t)}function Xl(e,l,t,n,c,i){let o,s,a,Z,u;if(l==="style")return nl(e,t,n);if(l==="classList")return mc(e,t,n);if(t===n)return n;if(l==="ref")i||t(e);else if(l.slice(0,3)==="on:"){const b=l.slice(3);n&&e.removeEventListener(b,n),t&&e.addEventListener(b,t)}else if(l.slice(0,10)==="oncapture:"){const b=l.slice(10);n&&e.removeEventListener(b,n,!0),t&&e.addEventListener(b,t,!0)}else if(l.slice(0,2)==="on"){const b=l.slice(2).toLowerCase(),N=rc.has(b);if(!N&&n){const f=Array.isArray(n)?n[0]:n;e.removeEventListener(b,f)}(N||t)&&(ll(e,b,t,N),N&&tl([b]))}else if(l.slice(0,5)==="attr:")xe(e,l.slice(5),t);else if((u=l.slice(0,5)==="prop:")||(a=ic.has(l))||!c&&((Z=ac(l,e.tagName))||(s=cc.has(l)))||(o=e.nodeName.includes("-")))u&&(l=l.slice(5),s=!0),l==="class"||l==="className"?mn(e,t):o&&!s&&!a?e[Ic(l)]=t:e[Z||l]=t;else{const b=c&&l.indexOf(":")>-1&&gc[l.split(":")[0]];b?bc(e,b,l,t):xe(e,sc[l]||l,t)}return t}function Cc(e){const l=`$$${e.type}`;let t=e.composedPath&&e.composedPath()[0]||e.target;for(e.target!==t&&Object.defineProperty(e,"target",{configurable:!0,value:t}),Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}});t;){const n=t[l];if(n&&!t.disabled){const c=t[`${l}Data`];if(c!==void 0?n.call(t,c,e):n.call(t,e),e.cancelBubble)return}t=t._$host||t.parentNode||t.host}}function qe(e,l,t,n,c){for(;typeof t=="function";)t=t();if(l===t)return t;const i=typeof l,o=n!==void 0;if(e=o&&t[0]&&t[0].parentNode||e,i==="string"||i==="number"){if(i==="number"&&(l=l.toString(),l===t))return t;if(o){let s=t[0];s&&s.nodeType===3?s.data!==l&&(s.data=l):s=document.createTextNode(l),t=ve(e,t,n,s)}else t!==""&&typeof t=="string"?t=e.firstChild.data=l:t=e.textContent=l}else if(l==null||i==="boolean")t=ve(e,t,n);else{if(i==="function")return ne(()=>{let s=l();for(;typeof s=="function";)s=s();t=qe(e,s,t,n)}),()=>t;if(Array.isArray(l)){const s=[],a=t&&Array.isArray(t);if(Ot(s,l,t,c))return ne(()=>t=qe(e,s,t,n,!0)),()=>t;if(s.length===0){if(t=ve(e,t,n),o)return t}else a?t.length===0?fl(e,s,n):Zc(e,t,s):(t&&ve(e),fl(e,s));t=s}else if(l.nodeType){if(Array.isArray(t)){if(o)return t=ve(e,t,n,l);ve(e,t,null,l)}else t==null||t===""||!e.firstChild?e.appendChild(l):e.replaceChild(l,e.firstChild);t=l}}return t}function Ot(e,l,t,n){let c=!1;for(let i=0,o=l.length;i<o;i++){let s=l[i],a=t&&t[e.length],Z;if(!(s==null||s===!0||s===!1))if((Z=typeof s)=="object"&&s.nodeType)e.push(s);else if(Array.isArray(s))c=Ot(e,s,a)||c;else if(Z==="function")if(n){for(;typeof s=="function";)s=s();c=Ot(e,Array.isArray(s)?s:[s],Array.isArray(a)?a:[a])||c}else e.push(s),c=!0;else{const u=String(s);a&&a.nodeType===3&&a.data===u?e.push(a):e.push(document.createTextNode(u))}}return c}function fl(e,l,t=null){for(let n=0,c=l.length;n<c;n++)e.insertBefore(l[n],t)}function ve(e,l,t,n){if(t===void 0)return e.textContent="";const c=n||document.createTextNode("");if(l.length){let i=!1;for(let o=l.length-1;o>=0;o--){const s=l[o];if(c!==s){const a=s.parentNode===e;!i&&!o?a?e.replaceChild(c,s):e.insertBefore(c,t):a&&s.remove()}else i=!0}}else e.insertBefore(c,t);return[c]}const Wc="http://www.w3.org/2000/svg";function hc(e,l=!1){return l?document.createElementNS(Wc,e):document.createElement(e)}function pc(e){const[l,t]=tc(e,["component"]),n=le(()=>l.component);return le(()=>{const c=n();switch(typeof c){case"function":return P(()=>c(t));case"string":const i=dc.has(c),o=hc(c,i);return uc(o,t,i),o}})}/**
+ * @license
+ * Copyright (c) 2016, Contributors
+ * SPDX-License-Identifier: ISC
+ */function $e(e){if(e!==e.toLowerCase()&&e!==e.toUpperCase()||(e=e.toLowerCase()),e.indexOf("-")===-1&&e.indexOf("_")===-1)return e;{let t="",n=!1;const c=e.match(/^-+/);for(let i=c?c[0].length:0;i<e.length;i++){let o=e.charAt(i);n&&(n=!1,o=o.toUpperCase()),i!==0&&(o==="-"||o==="_")?n=!0:o!=="-"&&o!=="_"&&(t+=o)}return t}}function un(e,l){const t=e.toLowerCase();l=l||"-";let n="";for(let c=0;c<e.length;c++){const i=t.charAt(c),o=e.charAt(c);i!==o&&c>0?n+=`${l}${t.charAt(c)}`:n+=o}return n}function Gn(e){return e==null?!1:typeof e=="number"||/^0x[0-9a-f]+$/i.test(e)?!0:/^0[^.]/.test(e)?!1:/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)}/**
+ * @license
+ * Copyright (c) 2016, Contributors
+ * SPDX-License-Identifier: ISC
+ */function Xc(e){if(Array.isArray(e))return e.map(o=>typeof o!="string"?o+"":o);e=e.trim();let l=0,t=null,n=null,c=null;const i=[];for(let o=0;o<e.length;o++){if(t=n,n=e.charAt(o),n===" "&&!c){t!==" "&&l++;continue}n===c?c=null:(n==="'"||n==='"')&&!c&&(c=n),i[l]||(i[l]=""),i[l]+=n}return i}/**
+ * @license
+ * Copyright (c) 2016, Contributors
+ * SPDX-License-Identifier: ISC
+ */var Ie;(function(e){e.BOOLEAN="boolean",e.STRING="string",e.NUMBER="number",e.ARRAY="array"})(Ie||(Ie={}));/**
+ * @license
+ * Copyright (c) 2016, Contributors
+ * SPDX-License-Identifier: ISC
+ */let Re;class fc{constructor(l){Re=l}parse(l,t){const n=Object.assign({alias:void 0,array:void 0,boolean:void 0,config:void 0,configObjects:void 0,configuration:void 0,coerce:void 0,count:void 0,default:void 0,envPrefix:void 0,narg:void 0,normalize:void 0,string:void 0,number:void 0,__:void 0,key:void 0},t),c=Xc(l),i=typeof l=="string",o=Rc(Object.assign(Object.create(null),n.alias)),s=Object.assign({"boolean-negation":!0,"camel-case-expansion":!0,"combine-arrays":!1,"dot-notation":!0,"duplicate-arguments-array":!0,"flatten-duplicate-arrays":!0,"greedy-arrays":!0,"halt-at-non-option":!1,"nargs-eats-options":!1,"negation-prefix":"no-","parse-numbers":!0,"parse-positional-numbers":!0,"populate--":!1,"set-placeholder-key":!1,"short-option-groups":!0,"strip-aliased":!1,"strip-dashed":!1,"unknown-options-as-args":!1},n.configuration),a=Object.assign(Object.create(null),n.default),Z=n.configObjects||[],u=n.envPrefix,b=s["populate--"],N=b?"--":"_",f=Object.create(null),J=Object.create(null),U=n.__||Re.format,m={aliases:Object.create(null),arrays:Object.create(null),bools:Object.create(null),strings:Object.create(null),numbers:Object.create(null),counts:Object.create(null),normalize:Object.create(null),configs:Object.create(null),nargs:Object.create(null),coercions:Object.create(null),keys:[]},E=/^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/,S=new RegExp("^--"+s["negation-prefix"]+"(.+)");[].concat(n.array||[]).filter(Boolean).forEach(function(r){const g=typeof r=="object"?r.key:r,X=Object.keys(r).map(function(G){return{boolean:"bools",string:"strings",number:"numbers"}[G]}).filter(Boolean).pop();X&&(m[X][g]=!0),m.arrays[g]=!0,m.keys.push(g)}),[].concat(n.boolean||[]).filter(Boolean).forEach(function(r){m.bools[r]=!0,m.keys.push(r)}),[].concat(n.string||[]).filter(Boolean).forEach(function(r){m.strings[r]=!0,m.keys.push(r)}),[].concat(n.number||[]).filter(Boolean).forEach(function(r){m.numbers[r]=!0,m.keys.push(r)}),[].concat(n.count||[]).filter(Boolean).forEach(function(r){m.counts[r]=!0,m.keys.push(r)}),[].concat(n.normalize||[]).filter(Boolean).forEach(function(r){m.normalize[r]=!0,m.keys.push(r)}),typeof n.narg=="object"&&Object.entries(n.narg).forEach(([r,g])=>{typeof g=="number"&&(m.nargs[r]=g,m.keys.push(r))}),typeof n.coerce=="object"&&Object.entries(n.coerce).forEach(([r,g])=>{typeof g=="function"&&(m.coercions[r]=g,m.keys.push(r))}),typeof n.config<"u"&&(Array.isArray(n.config)||typeof n.config=="string"?[].concat(n.config).filter(Boolean).forEach(function(r){m.configs[r]=!0}):typeof n.config=="object"&&Object.entries(n.config).forEach(([r,g])=>{(typeof g=="boolean"||typeof g=="function")&&(m.configs[r]=g)})),D(n.key,o,n.default,m.arrays),Object.keys(a).forEach(function(r){(m.aliases[r]||[]).forEach(function(g){a[g]=a[r]})});let K=null;kn();let T=[];const Q=Object.assign(Object.create(null),{_:[]}),be={};for(let r=0;r<c.length;r++){const g=c[r],X=g.replace(/^-{3,}/,"---");let G,d,x,A,y,ee;if(g!=="--"&&/^-/.test(g)&&He(g))me(g);else if(X.match(/^---+(=|$)/)){me(g);continue}else if(g.match(/^--.+=/)||!s["short-option-groups"]&&g.match(/^-.+=/))A=g.match(/^--?([^=]+)=([\s\S]*)$/),A!==null&&Array.isArray(A)&&A.length>=3&&(Y(A[1],m.arrays)?r=W(r,A[1],c,A[2]):Y(A[1],m.nargs)!==!1?r=h(r,A[1],c,A[2]):R(A[1],A[2],!0));else if(g.match(S)&&s["boolean-negation"])A=g.match(S),A!==null&&Array.isArray(A)&&A.length>=2&&(d=A[1],R(d,Y(d,m.arrays)?[!1]:!1));else if(g.match(/^--.+/)||!s["short-option-groups"]&&g.match(/^-[^-]+/))A=g.match(/^--?(.+)/),A!==null&&Array.isArray(A)&&A.length>=2&&(d=A[1],Y(d,m.arrays)?r=W(r,d,c):Y(d,m.nargs)!==!1?r=h(r,d,c):(y=c[r+1],y!==void 0&&(!y.match(/^-/)||y.match(E))&&!Y(d,m.bools)&&!Y(d,m.counts)||/^(true|false)$/.test(y)?(R(d,y),r++):R(d,te(d))));else if(g.match(/^-.\..+=/))A=g.match(/^-([^=]+)=([\s\S]*)$/),A!==null&&Array.isArray(A)&&A.length>=3&&R(A[1],A[2]);else if(g.match(/^-.\..+/)&&!g.match(E))y=c[r+1],A=g.match(/^-(.\..+)/),A!==null&&Array.isArray(A)&&A.length>=2&&(d=A[1],y!==void 0&&!y.match(/^-/)&&!Y(d,m.bools)&&!Y(d,m.counts)?(R(d,y),r++):R(d,te(d)));else if(g.match(/^-[^-]+/)&&!g.match(E)){x=g.slice(1,-1).split(""),G=!1;for(let oe=0;oe<x.length;oe++){if(y=g.slice(oe+2),x[oe+1]&&x[oe+1]==="="){ee=g.slice(oe+3),d=x[oe],Y(d,m.arrays)?r=W(r,d,c,ee):Y(d,m.nargs)!==!1?r=h(r,d,c,ee):R(d,ee),G=!0;break}if(y==="-"){R(x[oe],y);continue}if(/[A-Za-z]/.test(x[oe])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(y)&&Y(y,m.bools)===!1){R(x[oe],y),G=!0;break}if(x[oe+1]&&x[oe+1].match(/\W/)){R(x[oe],y),G=!0;break}else R(x[oe],te(x[oe]))}d=g.slice(-1)[0],!G&&d!=="-"&&(Y(d,m.arrays)?r=W(r,d,c):Y(d,m.nargs)!==!1?r=h(r,d,c):(y=c[r+1],y!==void 0&&(!/^(-|--)[^-]/.test(y)||y.match(E))&&!Y(d,m.bools)&&!Y(d,m.counts)||/^(true|false)$/.test(y)?(R(d,y),r++):R(d,te(d))))}else if(g.match(/^-[0-9]$/)&&g.match(E)&&Y(g.slice(1),m.bools))d=g.slice(1),R(d,te(d));else if(g==="--"){T=c.slice(r+1);break}else if(s["halt-at-non-option"]){T=c.slice(r);break}else me(g)}V(Q,!0),V(Q,!1),p(Q),H(),j(Q,m.aliases,a,!0),B(Q),s["set-placeholder-key"]&&w(Q),Object.keys(m.counts).forEach(function(r){k(Q,r.split("."))||R(r,0)}),b&&T.length&&(Q[N]=[]),T.forEach(function(r){Q[N].push(r)}),s["camel-case-expansion"]&&s["strip-dashed"]&&Object.keys(Q).filter(r=>r!=="--"&&r.includes("-")).forEach(r=>{delete Q[r]}),s["strip-aliased"]&&[].concat(...Object.keys(o).map(r=>o[r])).forEach(r=>{s["camel-case-expansion"]&&r.includes("-")&&delete Q[r.split(".").map(g=>$e(g)).join(".")],delete Q[r]});function me(r){const g=C("_",r);(typeof g=="string"||typeof g=="number")&&Q._.push(g)}function h(r,g,X,G){let d,x=Y(g,m.nargs);if(x=typeof x!="number"||isNaN(x)?1:x,x===0)return fe(G)||(K=Error(U("Argument unexpected for: %s",g))),R(g,te(g)),r;let A=fe(G)?0:1;if(s["nargs-eats-options"])X.length-(r+1)+A<x&&(K=Error(U("Not enough arguments following: %s",g))),A=x;else{for(d=r+1;d<X.length&&(!X[d].match(/^-[^0-9]/)||X[d].match(E)||He(X[d]));d++)A++;A<x&&(K=Error(U("Not enough arguments following: %s",g)))}let y=Math.min(A,x);for(!fe(G)&&y>0&&(R(g,G),y--),d=r+1;d<y+r+1;d++)R(g,X[d]);return r+y}function W(r,g,X,G){let d=[],x=G||X[r+1];const A=Y(g,m.nargs);if(Y(g,m.bools)&&!/^(true|false)$/.test(x))d.push(!0);else if(fe(x)||fe(G)&&/^-/.test(x)&&!E.test(x)&&!He(x)){if(a[g]!==void 0){const y=a[g];d=Array.isArray(y)?y:[y]}}else{fe(G)||d.push(q(g,G,!0));for(let y=r+1;y<X.length&&!(!s["greedy-arrays"]&&d.length>0||A&&typeof A=="number"&&d.length>=A||(x=X[y],/^-/.test(x)&&!E.test(x)&&!He(x)));y++)r=y,d.push(q(g,x,i))}return typeof A=="number"&&(A&&d.length<A||isNaN(A)&&d.length===0)&&(K=Error(U("Not enough arguments following: %s",g))),R(g,d),r}function R(r,g,X=i){if(/-/.test(r)&&s["camel-case-expansion"]){const x=r.split(".").map(function(A){return $e(A)}).join(".");v(r,x)}const G=q(r,g,X),d=r.split(".");L(Q,d,G),m.aliases[r]&&m.aliases[r].forEach(function(x){const A=x.split(".");L(Q,A,G)}),d.length>1&&s["dot-notation"]&&(m.aliases[d[0]]||[]).forEach(function(x){let A=x.split(".");const y=[].concat(d);y.shift(),A=A.concat(y),(m.aliases[r]||[]).includes(A.join("."))||L(Q,A,G)}),Y(r,m.normalize)&&!Y(r,m.arrays)&&[r].concat(m.aliases[r]||[]).forEach(function(A){Object.defineProperty(be,A,{enumerable:!0,get(){return g},set(y){g=typeof y=="string"?Re.normalize(y):y}})})}function v(r,g){m.aliases[r]&&m.aliases[r].length||(m.aliases[r]=[g],f[g]=!0),m.aliases[g]&&m.aliases[g].length||v(g,r)}function q(r,g,X){X&&(g=Vc(g)),(Y(r,m.bools)||Y(r,m.counts))&&typeof g=="string"&&(g=g==="true");let G=Array.isArray(g)?g.map(function(d){return C(r,d)}):C(r,g);return Y(r,m.counts)&&(fe(G)||typeof G=="boolean")&&(G=Nt()),Y(r,m.normalize)&&Y(r,m.arrays)&&(Array.isArray(g)?G=g.map(d=>Re.normalize(d)):G=Re.normalize(g)),G}function C(r,g){return!s["parse-positional-numbers"]&&r==="_"||!Y(r,m.strings)&&!Y(r,m.bools)&&!Array.isArray(g)&&(Gn(g)&&s["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${g}`)))||!fe(g)&&Y(r,m.numbers))&&(g=Number(g)),g}function p(r){const g=Object.create(null);j(g,m.aliases,a),Object.keys(m.configs).forEach(function(X){const G=r[X]||g[X];if(G)try{let d=null;const x=Re.resolve(Re.cwd(),G),A=m.configs[X];if(typeof A=="function"){try{d=A(x)}catch(y){d=y}if(d instanceof Error){K=d;return}}else d=Re.require(x);F(d)}catch(d){d.name==="PermissionDenied"?K=d:r[X]&&(K=Error(U("Invalid JSON config file: %s",G)))}})}function F(r,g){Object.keys(r).forEach(function(X){const G=r[X],d=g?g+"."+X:X;typeof G=="object"&&G!==null&&!Array.isArray(G)&&s["dot-notation"]?F(G,d):(!k(Q,d.split("."))||Y(d,m.arrays)&&s["combine-arrays"])&&R(d,G)})}function H(){typeof Z<"u"&&Z.forEach(function(r){F(r)})}function V(r,g){if(typeof u>"u")return;const X=typeof u=="string"?u:"",G=Re.env();Object.keys(G).forEach(function(d){if(X===""||d.lastIndexOf(X,0)===0){const x=d.split("__").map(function(A,y){return y===0&&(A=A.substring(X.length)),$e(A)});(g&&m.configs[x.join(".")]||!g)&&!k(r,x)&&R(x.join("."),G[d])}})}function B(r){let g;const X=new Set;Object.keys(r).forEach(function(G){if(!X.has(G)&&(g=Y(G,m.coercions),typeof g=="function"))try{const d=C(G,g(r[G]));[].concat(m.aliases[G]||[],G).forEach(x=>{X.add(x),r[x]=d})}catch(d){K=d}})}function w(r){return m.keys.forEach(g=>{~g.indexOf(".")||typeof r[g]>"u"&&(r[g]=void 0)}),r}function j(r,g,X,G=!1){Object.keys(X).forEach(function(d){k(r,d.split("."))||(L(r,d.split("."),X[d]),G&&(J[d]=!0),(g[d]||[]).forEach(function(x){k(r,x.split("."))||L(r,x.split("."),X[d])}))})}function k(r,g){let X=r;s["dot-notation"]||(g=[g.join(".")]),g.slice(0,-1).forEach(function(d){X=X[d]||{}});const G=g[g.length-1];return typeof X!="object"?!1:G in X}function L(r,g,X){let G=r;s["dot-notation"]||(g=[g.join(".")]),g.slice(0,-1).forEach(function(ee){ee=Rl(ee),typeof G=="object"&&G[ee]===void 0&&(G[ee]={}),typeof G[ee]!="object"||Array.isArray(G[ee])?(Array.isArray(G[ee])?G[ee].push({}):G[ee]=[G[ee],{}],G=G[ee][G[ee].length-1]):G=G[ee]});const d=Rl(g[g.length-1]),x=Y(g.join("."),m.arrays),A=Array.isArray(X);let y=s["duplicate-arguments-array"];!y&&Y(d,m.nargs)&&(y=!0,(!fe(G[d])&&m.nargs[d]===1||Array.isArray(G[d])&&G[d].length===m.nargs[d])&&(G[d]=void 0)),X===Nt()?G[d]=Nt(G[d]):Array.isArray(G[d])?y&&x&&A?G[d]=s["flatten-duplicate-arrays"]?G[d].concat(X):(Array.isArray(G[d][0])?G[d]:[G[d]]).concat([X]):!y&&!!x==!!A?G[d]=X:G[d]=G[d].concat([X]):G[d]===void 0&&x?G[d]=A?X:[X]:y&&!(G[d]===void 0||Y(d,m.counts)||Y(d,m.bools))?G[d]=[G[d],X]:G[d]=X}function D(...r){r.forEach(function(g){Object.keys(g||{}).forEach(function(X){m.aliases[X]||(m.aliases[X]=[].concat(o[X]||[]),m.aliases[X].concat(X).forEach(function(G){if(/-/.test(G)&&s["camel-case-expansion"]){const d=$e(G);d!==X&&m.aliases[X].indexOf(d)===-1&&(m.aliases[X].push(d),f[d]=!0)}}),m.aliases[X].concat(X).forEach(function(G){if(G.length>1&&/[A-Z]/.test(G)&&s["camel-case-expansion"]){const d=un(G,"-");d!==X&&m.aliases[X].indexOf(d)===-1&&(m.aliases[X].push(d),f[d]=!0)}}),m.aliases[X].forEach(function(G){m.aliases[G]=[X].concat(m.aliases[X].filter(function(d){return G!==d}))}))})})}function Y(r,g){const X=[].concat(m.aliases[r]||[],r),G=Object.keys(g),d=X.find(x=>G.includes(x));return d?g[d]:!1}function re(r){const g=Object.keys(m);return[].concat(g.map(G=>m[G])).some(function(G){return Array.isArray(G)?G.includes(r):G[r]})}function yt(r,...g){return[].concat(...g).some(function(G){const d=r.match(G);return d&&re(d[1])})}function Le(r){if(r.match(E)||!r.match(/^-[^-]+/))return!1;let g=!0,X;const G=r.slice(1).split("");for(let d=0;d<G.length;d++){if(X=r.slice(d+2),!re(G[d])){g=!1;break}if(G[d+1]&&G[d+1]==="="||X==="-"||/[A-Za-z]/.test(G[d])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(X)||G[d+1]&&G[d+1].match(/\W/))break}return g}function He(r){return s["unknown-options-as-args"]&&_(r)}function _(r){return r=r.replace(/^-{3,}/,"--"),r.match(E)||Le(r)?!1:!yt(r,/^-+([^=]+?)=[\s\S]*$/,S,/^-+([^=]+?)$/,/^-+([^=]+?)-$/,/^-+([^=]+?\d+)$/,/^-+([^=]+?)\W+.*$/)}function te(r){return!Y(r,m.bools)&&!Y(r,m.counts)&&`${r}`in a?a[r]:Ne(vn(r))}function Ne(r){return{[Ie.BOOLEAN]:!0,[Ie.STRING]:"",[Ie.NUMBER]:void 0,[Ie.ARRAY]:[]}[r]}function vn(r){let g=Ie.BOOLEAN;return Y(r,m.strings)?g=Ie.STRING:Y(r,m.numbers)?g=Ie.NUMBER:Y(r,m.bools)?g=Ie.BOOLEAN:Y(r,m.arrays)&&(g=Ie.ARRAY),g}function fe(r){return r===void 0}function kn(){Object.keys(m.counts).find(r=>Y(r,m.arrays)?(K=Error(U("Invalid configuration: %s, opts.count excludes opts.array.",r)),!0):Y(r,m.nargs)?(K=Error(U("Invalid configuration: %s, opts.count excludes opts.narg.",r)),!0):!1)}return{aliases:Object.assign({},m.aliases),argv:Object.assign(be,Q),configuration:s,defaulted:Object.assign({},J),error:K,newAliases:Object.assign({},f)}}}function Rc(e){const l=[],t=Object.create(null);let n=!0;for(Object.keys(e).forEach(function(c){l.push([].concat(e[c],c))});n;){n=!1;for(let c=0;c<l.length;c++)for(let i=c+1;i<l.length;i++)if(l[c].filter(function(s){return l[i].indexOf(s)!==-1}).length){l[c]=l[c].concat(l[i]),l.splice(i,1),n=!0;break}}return l.forEach(function(c){c=c.filter(function(o,s,a){return a.indexOf(o)===s});const i=c.pop();i!==void 0&&typeof i=="string"&&(t[i]=c)}),t}function Nt(e){return e!==void 0?e+1:1}function Rl(e){return e==="__proto__"?"___proto___":e}function Vc(e){return typeof e=="string"&&(e[0]==="'"||e[0]==='"')&&e[e.length-1]===e[0]?e.substring(1,e.length-1):e}/**
+ * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js
+ * CJS and ESM environments.
+ *
+ * @license
+ * Copyright (c) 2016, Contributors
+ * SPDX-License-Identifier: ISC
+ */var vt,kt,wt;const Vl=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):12,Al=(kt=(vt=process==null?void 0:process.versions)===null||vt===void 0?void 0:vt.node)!==null&&kt!==void 0?kt:(wt=process==null?void 0:process.version)===null||wt===void 0?void 0:wt.slice(1);if(Al&&Number(Al.match(/^([^.]+)/)[1])<Vl)throw Error(`yargs parser supports a minimum Node.js version of ${Vl}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);const Ac=process?process.env:{},In=new fc({cwd:process.cwd,env:()=>Ac,format:Sn.format,normalize:ce.normalize,resolve:ce.resolve,require:e=>{if(typeof require<"u")return require(e);if(e.match(/\.json$/))return JSON.parse(ql.readFileSync(e,"utf8"));throw Error("only .json config files are supported in ESM")}}),nt=function(l,t){return In.parse(l.slice(),t).argv};nt.detailed=function(e,l){return In.parse(e.slice(),l)};nt.camelCase=$e;nt.decamelize=un;nt.looksLikeNumber=Gn;const Yc={exportToOo:"导出为......",exportWithPrevious:"使用上一次设置导出",exportSuccessNotice:M`导出文件 ${0} 成功!`,exportCommandOutputMessage:M`命令:${0}`,exportErrorOutputMessage:M`命令 ${0},错误:${1}`,pleaseOpenFile:"请打开一个文件先。",preparing:M`正在生成 "${0}" ......`,exportDialog:{fileName:"文件名",type:"类型",exportTo:"导出到",title:M`导出为 ${0}`,export:"导出",selectExportFolder:"请选择导出文件夹",overwriteConfirmation:"覆盖提示"},messageBox:{yes:"是",no:"否",ok:"确认",cancel:"取消"},overwriteConfirmationDialog:{replace:"替换",title:M`"${0}" 已经存在。您要替换它吗?`,message:M`"${0}" 文件夹中已有相同的文件或文件夹,若替换,则会覆盖其当前内容。`},settingTab:{title:"导出设置",general:"通用",name:"名称",customLocation:"自定义",pandocVersion:M`版本: ${0}`,pandocVersionWithWarning:M`Version: ${0}, 请升级版本到 ${1}`,pandocNotFound:"找不到 Pandoc,请填写 Pandoc 文件路径,或者将其添加到系统环境变量中。",pandocPath:"Pandoc 路径",defaultFolderForExportedFile:"默认的导出文件夹",openExportedFileLocation:"打开导出文件所在目录",sameFolderWithCurrentFile:"与原文件同一目录下",openExportedFile:"打开导出文件",pandocPathPlaceholder:"(自动检测)",editCommandTemplate:"编辑命令模板",chooseCommandTemplate:"选择模板",afterExport:"导出后",command:"命令",arguments:"参数",auto:"自动",reset:"重置",add:"添加",remove:"移除",rename:"重命名",targetFileExtensions:"目标文件扩展名",targetFileExtensionsTip:"(用空格分开)",showCommandOutput:"显示命令行输出",runCommand:"运行自定义命令",extraArguments:"自定义参数",save:"保存",new:"新建",template:"模板",advanced:"高级",environmentVariables:"环境变量",environmentVariablesDesc:"定义导出的环境变量.",ShowExportProgressBar:"显示导出进度条"}},Jc={exportToOo:"Export to...",exportSuccessNotice:M`Export file ${0} success!`,exportCommandOutputMessage:M`Command: ${0}`,exportErrorOutputMessage:M`Command: ${0},Error:${1}`,exportWithPrevious:"Export with Previous",pleaseOpenFile:"Please open a file first.",preparing:M`generating "${0}"...`,exportDialog:{exportTo:"Export to",fileName:"File Name",title:M`Export to ${0}`,export:"Export",selectExportFolder:"Please select an export folder.",overwriteConfirmation:"Overwrite confirmation",type:"Type"},messageBox:{yes:"Yes",no:"No",ok:"Ok",cancel:"Cancel"},overwriteConfirmationDialog:{replace:"Replace",title:M`"${0}" already exists. Do you want to replace it?`,message:M`A file or folder with the same name already exists in the folder "${0}". Replacing it will overwrite its current contents.`},settingTab:{general:"General",name:"Name",title:"Export Settings",pandocVersion:M`Version: ${0}`,pandocVersionWithWarning:M`Version: ${0}, please upgrade version to ${1}`,pandocNotFound:"Pandoc not found, please fill in the Pandoc file path, or add it to the system environment variables.",defaultFolderForExportedFile:"Default Folder for Exported File",openExportedFileLocation:"Open exported file location",ShowExportProgressBar:"Show export progress bar",openExportedFile:"Open exported file",pandocPath:"Pandoc path",pandocPathPlaceholder:"(Auto Detect)",editCommandTemplate:"Edit Command Template",chooseCommandTemplate:"Choose template",customLocation:"Custom location",template:"Template",command:"Command",reset:"Reset",auto:"Auto",add:"Add",remove:"Remove",rename:"Rename",sameFolderWithCurrentFile:"Same folder with current file",afterExport:"After Export",targetFileExtensions:"Target file extensions",targetFileExtensionsTip:"(Separated by whitespace)",showCommandOutput:"Show command output",runCommand:"Run command",extraArguments:"Extra arguments",save:"Save",new:"New",arguments:"Arguments",advanced:"Advanced",environmentVariables:"Environment Variables",environmentVariablesDesc:"Define the Environment Variables for exporting."}},xc={exportToOo:"Export to...",exportSuccessNotice:M`Export der Datei ${0} erfolgreich!`,exportCommandOutputMessage:M`Command: ${0}`,exportErrorOutputMessage:M`Command: ${0},Fehler:${1}`,exportWithPrevious:"Exportiere mit Vorherigem",pleaseOpenFile:"Bitte öffne zunächst eine Datei.",preparing:M`generating "${0}"...`,exportDialog:{exportTo:"Exportiere nach",fileName:"Dateiname",title:M`Export to ${0}`,export:"Export",selectExportFolder:"Zielordner auswählen",overwriteConfirmation:"Überschreibe den Zielordner",type:"Typ"},messageBox:{yes:"Ja",no:"Nein",ok:"Ok",cancel:"Abbrechen"},overwriteConfirmationDialog:{replace:"Ersetze",title:M`"${0}" existiert bereits. Soll er ersetzt werden?`,message:M`Eine Datei oder ein Ordner mit dem gleichen Namen existiert bereits im Ordner "${0}". Das Ersetzen wird die jetzigen Inhalte überschreiben.`},settingTab:{general:"Allgemein",name:"Name",title:"Export-Einstellungen",pandocVersion:M`Version: ${0}`,pandocVersionWithWarning:M`Version: ${0}, please upgrade version to ${1}`,pandocNotFound:"Pandoc.exe wurde nicht gefunden. Bitte geben Sie den Pfad zur Pandoc.exe ein oder fügen Sie ihn den Window Systemumgebungsvariablen hinzu.",defaultFolderForExportedFile:"Standardordner für exportierte Dateien",openExportedFileLocation:"Speicherort der exportierten Datei öffnen",openExportedFile:"Exportierte Datei öffnen",pandocPath:"Pfad zur Datei Pandoc.exe",pandocPathPlaceholder:"(Automatische Erkennung)",editCommandTemplate:"‘Befehlsvorlage bearbeiten",chooseCommandTemplate:"Vorlage auswählen",customLocation:"Benutzerdefinierter Speicherort",template:"Vorlage",command:"Befehl",reset:"Zurücksetzen",auto:"Auto",add:"Hinzufügen",remove:"Entfernen",rename:"Umbenennen",sameFolderWithCurrentFile:"Der gleiche Ordner mit der aktuellen Datei",afterExport:"Nach dem Export",targetFileExtensions:"Dateinamenserweiterung der Zieldatei",targetFileExtensionsTip:"(Mit Leerzeichen getrennt)",showCommandOutput:"Zeige die Ausgabe des Befehls",runCommand:"Starte den Befehl",extraArguments:"Zusätzliche Parameter",save:"Speichern",new:"Neu",arguments:"Parameter",advanced:"Advanced",environmentVariables:"Environment Variables",environmentVariablesDesc:"Define the Environment Variables for exporting.",ShowExportProgressBar:"Show export progressBar"}},Cn={"de-DE":xc,"en-US":Jc,"zh-CN":Yc,get current(){const e=Object.keys(this),l=ue.moment.locale().toLowerCase();let t=e.find(c=>c.toLowerCase()===l.toLowerCase());if(t)return this[t];const n=l.split("-")[0];return t=e.find(c=>c.toLowerCase().startsWith(n)),t?this[t]:this["en-US"]}};class Yl extends ue.Modal{constructor(l,t,n){super(l),this.options=typeof t=="string"?{message:t,buttons:"Ok",title:n}:t,this.lang=Cn.current}onOpen(){const{titleEl:l,contentEl:t,lang:n,options:{message:c,title:i,buttons:o,callback:s,buttonsLabel:a,buttonsClass:Z}}=this;switch(i&&l.setText(i),t.createDiv({text:c}),o){case"Yes":t.createEl("div",{cls:["modal-button-container"],parent:t},u=>{u.createEl("button",{text:(a==null?void 0:a.yes)??n.messageBox.yes,cls:["mod-cta",Z==null?void 0:Z.yes],parent:u}).onclick=()=>this.call(s==null?void 0:s.yes)});break;case"YesNo":t.createEl("div",{cls:["modal-button-container"],parent:t},u=>{u.createEl("button",{text:(a==null?void 0:a.yes)??n.messageBox.yes,cls:["mod-cta",Z==null?void 0:Z.yes],parent:u}).onclick=()=>this.call(s==null?void 0:s.yes),u.createEl("button",{text:(a==null?void 0:a.no)??n.messageBox.no,cls:["mod-cta",Z==null?void 0:Z.no],parent:u}).onclick=()=>this.call(s==null?void 0:s.no)});break;case"Ok":t.createEl("div",{cls:["modal-button-container"],parent:t},u=>{u.createEl("button",{text:(a==null?void 0:a.ok)??n.messageBox.ok,cls:["mod-cta",Z==null?void 0:Z.no],parent:u}).onclick=()=>this.call(s==null?void 0:s.ok)});break;case"OkCancel":t.createEl("div",{cls:["modal-button-container"],parent:t},u=>{u.createEl("button",{text:(a==null?void 0:a.ok)??n.messageBox.ok,cls:["mod-cta",Z==null?void 0:Z.ok],parent:u}).onclick=()=>this.call(s==null?void 0:s.ok),u.createEl("button",{text:(a==null?void 0:a.cancel)??n.messageBox.cancel,cls:["mod-cta",Z==null?void 0:Z.cancel],parent:u}).onclick=()=>this.call(s==null?void 0:s.cancel)});break}}call(l){l&&l(),this.close()}onClose(){const{contentEl:l}=this;l.empty()}}var Bc=Ge('<div class=progress-bar><div class="progress-bar-message u-center-text"></div><div class=progress-bar-indicator><div class=progress-bar-line></div><div class=progress-bar-subline style=display:none;></div><div class="progress-bar-subline mod-increase"></div><div class="progress-bar-subline mod-decrease">');const yc=e=>(()=>{var l=Bc(),t=l.firstChild,n=e.ref;return typeof n=="function"?Vt(n,l):e.ref=l,se(t,()=>e.message),l})(),Fc=e=>we(l=>{let t=!1;const n=()=>{t||(t=!0,l())};let c;return se(document.body,()=>I(yc,{ref(i){var o=c;typeof o=="function"?o(i):c=i},message:e})),ze(()=>{c instanceof Node&&document.body.contains(c)&&document.body.removeChild(c)}),n}),Hc={show:Fc};function Nc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Pt={exports:{}};const vc="2.0.0",Wn=256,kc=Number.MAX_SAFE_INTEGER||9007199254740991,wc=16,Sc=Wn-6,Kc=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var At={MAX_LENGTH:Wn,MAX_SAFE_COMPONENT_LENGTH:wc,MAX_SAFE_BUILD_LENGTH:Sc,MAX_SAFE_INTEGER:kc,RELEASE_TYPES:Kc,SEMVER_SPEC_VERSION:vc,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const Ec=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};var Yt=Ec;(function(e,l){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:c}=At,i=Yt;l=e.exports={};const o=l.re=[],s=l.safeRe=[],a=l.src=[],Z=l.t={};let u=0;const b="[a-zA-Z0-9-]",N=[["\\s",1],["\\d",c],[b,n]],f=U=>{for(const[m,E]of N)U=U.split(`${m}*`).join(`${m}{0,${E}}`).split(`${m}+`).join(`${m}{1,${E}}`);return U},J=(U,m,E)=>{const S=f(m),K=u++;i(U,K,m),Z[U]=K,a[K]=m,o[K]=new RegExp(m,E?"g":void 0),s[K]=new RegExp(S,E?"g":void 0)};J("NUMERICIDENTIFIER","0|[1-9]\\d*"),J("NUMERICIDENTIFIERLOOSE","\\d+"),J("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${b}*`),J("MAINVERSION",`(${a[Z.NUMERICIDENTIFIER]})\\.(${a[Z.NUMERICIDENTIFIER]})\\.(${a[Z.NUMERICIDENTIFIER]})`),J("MAINVERSIONLOOSE",`(${a[Z.NUMERICIDENTIFIERLOOSE]})\\.(${a[Z.NUMERICIDENTIFIERLOOSE]})\\.(${a[Z.NUMERICIDENTIFIERLOOSE]})`),J("PRERELEASEIDENTIFIER",`(?:${a[Z.NUMERICIDENTIFIER]}|${a[Z.NONNUMERICIDENTIFIER]})`),J("PRERELEASEIDENTIFIERLOOSE",`(?:${a[Z.NUMERICIDENTIFIERLOOSE]}|${a[Z.NONNUMERICIDENTIFIER]})`),J("PRERELEASE",`(?:-(${a[Z.PRERELEASEIDENTIFIER]}(?:\\.${a[Z.PRERELEASEIDENTIFIER]})*))`),J("PRERELEASELOOSE",`(?:-?(${a[Z.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${a[Z.PRERELEASEIDENTIFIERLOOSE]})*))`),J("BUILDIDENTIFIER",`${b}+`),J("BUILD",`(?:\\+(${a[Z.BUILDIDENTIFIER]}(?:\\.${a[Z.BUILDIDENTIFIER]})*))`),J("FULLPLAIN",`v?${a[Z.MAINVERSION]}${a[Z.PRERELEASE]}?${a[Z.BUILD]}?`),J("FULL",`^${a[Z.FULLPLAIN]}$`),J("LOOSEPLAIN",`[v=\\s]*${a[Z.MAINVERSIONLOOSE]}${a[Z.PRERELEASELOOSE]}?${a[Z.BUILD]}?`),J("LOOSE",`^${a[Z.LOOSEPLAIN]}$`),J("GTLT","((?:<|>)?=?)"),J("XRANGEIDENTIFIERLOOSE",`${a[Z.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),J("XRANGEIDENTIFIER",`${a[Z.NUMERICIDENTIFIER]}|x|X|\\*`),J("XRANGEPLAIN",`[v=\\s]*(${a[Z.XRANGEIDENTIFIER]})(?:\\.(${a[Z.XRANGEIDENTIFIER]})(?:\\.(${a[Z.XRANGEIDENTIFIER]})(?:${a[Z.PRERELEASE]})?${a[Z.BUILD]}?)?)?`),J("XRANGEPLAINLOOSE",`[v=\\s]*(${a[Z.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[Z.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[Z.XRANGEIDENTIFIERLOOSE]})(?:${a[Z.PRERELEASELOOSE]})?${a[Z.BUILD]}?)?)?`),J("XRANGE",`^${a[Z.GTLT]}\\s*${a[Z.XRANGEPLAIN]}$`),J("XRANGELOOSE",`^${a[Z.GTLT]}\\s*${a[Z.XRANGEPLAINLOOSE]}$`),J("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),J("COERCE",`${a[Z.COERCEPLAIN]}(?:$|[^\\d])`),J("COERCEFULL",a[Z.COERCEPLAIN]+`(?:${a[Z.PRERELEASE]})?(?:${a[Z.BUILD]})?(?:$|[^\\d])`),J("COERCERTL",a[Z.COERCE],!0),J("COERCERTLFULL",a[Z.COERCEFULL],!0),J("LONETILDE","(?:~>?)"),J("TILDETRIM",`(\\s*)${a[Z.LONETILDE]}\\s+`,!0),l.tildeTrimReplace="$1~",J("TILDE",`^${a[Z.LONETILDE]}${a[Z.XRANGEPLAIN]}$`),J("TILDELOOSE",`^${a[Z.LONETILDE]}${a[Z.XRANGEPLAINLOOSE]}$`),J("LONECARET","(?:\\^)"),J("CARETTRIM",`(\\s*)${a[Z.LONECARET]}\\s+`,!0),l.caretTrimReplace="$1^",J("CARET",`^${a[Z.LONECARET]}${a[Z.XRANGEPLAIN]}$`),J("CARETLOOSE",`^${a[Z.LONECARET]}${a[Z.XRANGEPLAINLOOSE]}$`),J("COMPARATORLOOSE",`^${a[Z.GTLT]}\\s*(${a[Z.LOOSEPLAIN]})$|^$`),J("COMPARATOR",`^${a[Z.GTLT]}\\s*(${a[Z.FULLPLAIN]})$|^$`),J("COMPARATORTRIM",`(\\s*)${a[Z.GTLT]}\\s*(${a[Z.LOOSEPLAIN]}|${a[Z.XRANGEPLAIN]})`,!0),l.comparatorTrimReplace="$1$2$3",J("HYPHENRANGE",`^\\s*(${a[Z.XRANGEPLAIN]})\\s+-\\s+(${a[Z.XRANGEPLAIN]})\\s*$`),J("HYPHENRANGELOOSE",`^\\s*(${a[Z.XRANGEPLAINLOOSE]})\\s+-\\s+(${a[Z.XRANGEPLAINLOOSE]})\\s*$`),J("STAR","(<|>)?=?\\s*\\*"),J("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),J("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Pt,Pt.exports);var ct=Pt.exports;const Qc=Object.freeze({loose:!0}),zc=Object.freeze({}),Uc=e=>e?typeof e!="object"?Qc:e:zc;var cl=Uc;const Jl=/^[0-9]+$/,hn=(e,l)=>{const t=Jl.test(e),n=Jl.test(l);return t&&n&&(e=+e,l=+l),e===l?0:t&&!n?-1:n&&!t?1:e<l?-1:1},jc=(e,l)=>hn(l,e);var pn={compareIdentifiers:hn,rcompareIdentifiers:jc};const st=Yt,{MAX_LENGTH:xl,MAX_SAFE_INTEGER:ot}=At,{safeRe:Bl,t:yl}=ct,Lc=cl,{compareIdentifiers:ke}=pn;let Mc=class pe{constructor(l,t){if(t=Lc(t),l instanceof pe){if(l.loose===!!t.loose&&l.includePrerelease===!!t.includePrerelease)return l;l=l.version}else if(typeof l!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof l}".`);if(l.length>xl)throw new TypeError(`version is longer than ${xl} characters`);st("SemVer",l,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const n=l.trim().match(t.loose?Bl[yl.LOOSE]:Bl[yl.FULL]);if(!n)throw new TypeError(`Invalid Version: ${l}`);if(this.raw=l,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>ot||this.major<0)throw new TypeError("Invalid major version");if(this.minor>ot||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>ot||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(c=>{if(/^[0-9]+$/.test(c)){const i=+c;if(i>=0&&i<ot)return i}return c}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(l){if(st("SemVer.compare",this.version,this.options,l),!(l instanceof pe)){if(typeof l=="string"&&l===this.version)return 0;l=new pe(l,this.options)}return l.version===this.version?0:this.compareMain(l)||this.comparePre(l)}compareMain(l){return l instanceof pe||(l=new pe(l,this.options)),ke(this.major,l.major)||ke(this.minor,l.minor)||ke(this.patch,l.patch)}comparePre(l){if(l instanceof pe||(l=new pe(l,this.options)),this.prerelease.length&&!l.prerelease.length)return-1;if(!this.prerelease.length&&l.prerelease.length)return 1;if(!this.prerelease.length&&!l.prerelease.length)return 0;let t=0;do{const n=this.prerelease[t],c=l.prerelease[t];if(st("prerelease compare",t,n,c),n===void 0&&c===void 0)return 0;if(c===void 0)return 1;if(n===void 0)return-1;if(n===c)continue;return ke(n,c)}while(++t)}compareBuild(l){l instanceof pe||(l=new pe(l,this.options));let t=0;do{const n=this.build[t],c=l.build[t];if(st("build compare",t,n,c),n===void 0&&c===void 0)return 0;if(c===void 0)return 1;if(n===void 0)return-1;if(n===c)continue;return ke(n,c)}while(++t)}inc(l,t,n){switch(l){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,n),this.inc("pre",t,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,n),this.inc("pre",t,n);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const c=Number(n)?1:0;if(!t&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(this.prerelease.length===0)this.prerelease=[c];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);if(i===-1){if(t===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(c)}}if(t){let i=[t,c];n===!1&&(i=[t]),ke(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=i):this.prerelease=i}break}default:throw new Error(`invalid increment argument: ${l}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};var ae=Mc;const Fl=ae,Tc=(e,l,t=!1)=>{if(e instanceof Fl)return e;try{return new Fl(e,l)}catch(n){if(!t)return null;throw n}};var je=Tc;const $c=je,Oc=(e,l)=>{const t=$c(e,l);return t?t.version:null};var Pc=Oc;const Dc=je,_c=(e,l)=>{const t=Dc(e.trim().replace(/^[=v]+/,""),l);return t?t.version:null};var qc=_c;const Hl=ae,ei=(e,l,t,n,c)=>{typeof t=="string"&&(c=n,n=t,t=void 0);try{return new Hl(e instanceof Hl?e.version:e,t).inc(l,n,c).version}catch{return null}};var ti=ei;const Nl=je,li=(e,l)=>{const t=Nl(e,null,!0),n=Nl(l,null,!0),c=t.compare(n);if(c===0)return null;const i=c>0,o=i?t:n,s=i?n:t,a=!!o.prerelease.length;if(!!s.prerelease.length&&!a)return!s.patch&&!s.minor?"major":o.patch?"patch":o.minor?"minor":"major";const u=a?"pre":"";return t.major!==n.major?u+"major":t.minor!==n.minor?u+"minor":t.patch!==n.patch?u+"patch":"prerelease"};var ni=li;const ci=ae,ii=(e,l)=>new ci(e,l).major;var si=ii;const oi=ae,ai=(e,l)=>new oi(e,l).minor;var ri=ai;const di=ae,gi=(e,l)=>new di(e,l).patch;var Zi=gi;const bi=je,mi=(e,l)=>{const t=bi(e,l);return t&&t.prerelease.length?t.prerelease:null};var ui=mi;const vl=ae,Gi=(e,l,t)=>new vl(e,t).compare(new vl(l,t));var We=Gi;const Ii=We,Ci=(e,l,t)=>Ii(l,e,t);var Wi=Ci;const hi=We,pi=(e,l)=>hi(e,l,!0);var Xi=pi;const kl=ae,fi=(e,l,t)=>{const n=new kl(e,t),c=new kl(l,t);return n.compare(c)||n.compareBuild(c)};var il=fi;const Ri=il,Vi=(e,l)=>e.sort((t,n)=>Ri(t,n,l));var Ai=Vi;const Yi=il,Ji=(e,l)=>e.sort((t,n)=>Yi(n,t,l));var xi=Ji;const Bi=We,yi=(e,l,t)=>Bi(e,l,t)>0;var Jt=yi;const Fi=We,Hi=(e,l,t)=>Fi(e,l,t)<0;var sl=Hi;const Ni=We,vi=(e,l,t)=>Ni(e,l,t)===0;var Xn=vi;const ki=We,wi=(e,l,t)=>ki(e,l,t)!==0;var fn=wi;const Si=We,Ki=(e,l,t)=>Si(e,l,t)>=0;var ol=Ki;const Ei=We,Qi=(e,l,t)=>Ei(e,l,t)<=0;var al=Qi;const zi=Xn,Ui=fn,ji=Jt,Li=ol,Mi=sl,Ti=al,$i=(e,l,t,n)=>{switch(l){case"===":return typeof e=="object"&&(e=e.version),typeof t=="object"&&(t=t.version),e===t;case"!==":return typeof e=="object"&&(e=e.version),typeof t=="object"&&(t=t.version),e!==t;case"":case"=":case"==":return zi(e,t,n);case"!=":return Ui(e,t,n);case">":return ji(e,t,n);case">=":return Li(e,t,n);case"<":return Mi(e,t,n);case"<=":return Ti(e,t,n);default:throw new TypeError(`Invalid operator: ${l}`)}};var Rn=$i;const Oi=ae,Pi=je,{safeRe:at,t:rt}=ct,Di=(e,l)=>{if(e instanceof Oi)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;l=l||{};let t=null;if(!l.rtl)t=e.match(l.includePrerelease?at[rt.COERCEFULL]:at[rt.COERCE]);else{const a=l.includePrerelease?at[rt.COERCERTLFULL]:at[rt.COERCERTL];let Z;for(;(Z=a.exec(e))&&(!t||t.index+t[0].length!==e.length);)(!t||Z.index+Z[0].length!==t.index+t[0].length)&&(t=Z),a.lastIndex=Z.index+Z[1].length+Z[2].length;a.lastIndex=-1}if(t===null)return null;const n=t[2],c=t[3]||"0",i=t[4]||"0",o=l.includePrerelease&&t[5]?`-${t[5]}`:"",s=l.includePrerelease&&t[6]?`+${t[6]}`:"";return Pi(`${n}.${c}.${i}${o}${s}`,l)};var _i=Di;class qi{constructor(){this.max=1e3,this.map=new Map}get(l){const t=this.map.get(l);if(t!==void 0)return this.map.delete(l),this.map.set(l,t),t}delete(l){return this.map.delete(l)}set(l,t){if(!this.delete(l)&&t!==void 0){if(this.map.size>=this.max){const c=this.map.keys().next().value;this.delete(c)}this.map.set(l,t)}return this}}var es=qi,St,wl;function he(){if(wl)return St;wl=1;class e{constructor(p,F){if(F=n(F),p instanceof e)return p.loose===!!F.loose&&p.includePrerelease===!!F.includePrerelease?p:new e(p.raw,F);if(p instanceof c)return this.raw=p.value,this.set=[[p]],this.format(),this;if(this.options=F,this.loose=!!F.loose,this.includePrerelease=!!F.includePrerelease,this.raw=p.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(H=>this.parseRange(H.trim())).filter(H=>H.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const H=this.set[0];if(this.set=this.set.filter(V=>!J(V[0])),this.set.length===0)this.set=[H];else if(this.set.length>1){for(const V of this.set)if(V.length===1&&U(V[0])){this.set=[V];break}}}this.format()}format(){return this.range=this.set.map(p=>p.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(p){const H=((this.options.includePrerelease&&N)|(this.options.loose&&f))+":"+p,V=t.get(H);if(V)return V;const B=this.options.loose,w=B?s[a.HYPHENRANGELOOSE]:s[a.HYPHENRANGE];p=p.replace(w,v(this.options.includePrerelease)),i("hyphen replace",p),p=p.replace(s[a.COMPARATORTRIM],Z),i("comparator trim",p),p=p.replace(s[a.TILDETRIM],u),i("tilde trim",p),p=p.replace(s[a.CARETTRIM],b),i("caret trim",p);let j=p.split(" ").map(Y=>E(Y,this.options)).join(" ").split(/\s+/).map(Y=>R(Y,this.options));B&&(j=j.filter(Y=>(i("loose invalid filter",Y,this.options),!!Y.match(s[a.COMPARATORLOOSE])))),i("range list",j);const k=new Map,L=j.map(Y=>new c(Y,this.options));for(const Y of L){if(J(Y))return[Y];k.set(Y.value,Y)}k.size>1&&k.has("")&&k.delete("");const D=[...k.values()];return t.set(H,D),D}intersects(p,F){if(!(p instanceof e))throw new TypeError("a Range is required");return this.set.some(H=>m(H,F)&&p.set.some(V=>m(V,F)&&H.every(B=>V.every(w=>B.intersects(w,F)))))}test(p){if(!p)return!1;if(typeof p=="string")try{p=new o(p,this.options)}catch{return!1}for(let F=0;F<this.set.length;F++)if(q(this.set[F],p,this.options))return!0;return!1}}St=e;const l=es,t=new l,n=cl,c=xt(),i=Yt,o=ae,{safeRe:s,t:a,comparatorTrimReplace:Z,tildeTrimReplace:u,caretTrimReplace:b}=ct,{FLAG_INCLUDE_PRERELEASE:N,FLAG_LOOSE:f}=At,J=C=>C.value==="<0.0.0-0",U=C=>C.value==="",m=(C,p)=>{let F=!0;const H=C.slice();let V=H.pop();for(;F&&H.length;)F=H.every(B=>V.intersects(B,p)),V=H.pop();return F},E=(C,p)=>(i("comp",C,p),C=Q(C,p),i("caret",C),C=K(C,p),i("tildes",C),C=me(C,p),i("xrange",C),C=W(C,p),i("stars",C),C),S=C=>!C||C.toLowerCase()==="x"||C==="*",K=(C,p)=>C.trim().split(/\s+/).map(F=>T(F,p)).join(" "),T=(C,p)=>{const F=p.loose?s[a.TILDELOOSE]:s[a.TILDE];return C.replace(F,(H,V,B,w,j)=>{i("tilde",C,H,V,B,w,j);let k;return S(V)?k="":S(B)?k=`>=${V}.0.0 <${+V+1}.0.0-0`:S(w)?k=`>=${V}.${B}.0 <${V}.${+B+1}.0-0`:j?(i("replaceTilde pr",j),k=`>=${V}.${B}.${w}-${j} <${V}.${+B+1}.0-0`):k=`>=${V}.${B}.${w} <${V}.${+B+1}.0-0`,i("tilde return",k),k})},Q=(C,p)=>C.trim().split(/\s+/).map(F=>be(F,p)).join(" "),be=(C,p)=>{i("caret",C,p);const F=p.loose?s[a.CARETLOOSE]:s[a.CARET],H=p.includePrerelease?"-0":"";return C.replace(F,(V,B,w,j,k)=>{i("caret",C,V,B,w,j,k);let L;return S(B)?L="":S(w)?L=`>=${B}.0.0${H} <${+B+1}.0.0-0`:S(j)?B==="0"?L=`>=${B}.${w}.0${H} <${B}.${+w+1}.0-0`:L=`>=${B}.${w}.0${H} <${+B+1}.0.0-0`:k?(i("replaceCaret pr",k),B==="0"?w==="0"?L=`>=${B}.${w}.${j}-${k} <${B}.${w}.${+j+1}-0`:L=`>=${B}.${w}.${j}-${k} <${B}.${+w+1}.0-0`:L=`>=${B}.${w}.${j}-${k} <${+B+1}.0.0-0`):(i("no pr"),B==="0"?w==="0"?L=`>=${B}.${w}.${j}${H} <${B}.${w}.${+j+1}-0`:L=`>=${B}.${w}.${j}${H} <${B}.${+w+1}.0-0`:L=`>=${B}.${w}.${j} <${+B+1}.0.0-0`),i("caret return",L),L})},me=(C,p)=>(i("replaceXRanges",C,p),C.split(/\s+/).map(F=>h(F,p)).join(" ")),h=(C,p)=>{C=C.trim();const F=p.loose?s[a.XRANGELOOSE]:s[a.XRANGE];return C.replace(F,(H,V,B,w,j,k)=>{i("xRange",C,H,V,B,w,j,k);const L=S(B),D=L||S(w),Y=D||S(j),re=Y;return V==="="&&re&&(V=""),k=p.includePrerelease?"-0":"",L?V===">"||V==="<"?H="<0.0.0-0":H="*":V&&re?(D&&(w=0),j=0,V===">"?(V=">=",D?(B=+B+1,w=0,j=0):(w=+w+1,j=0)):V==="<="&&(V="<",D?B=+B+1:w=+w+1),V==="<"&&(k="-0"),H=`${V+B}.${w}.${j}${k}`):D?H=`>=${B}.0.0${k} <${+B+1}.0.0-0`:Y&&(H=`>=${B}.${w}.0${k} <${B}.${+w+1}.0-0`),i("xRange return",H),H})},W=(C,p)=>(i("replaceStars",C,p),C.trim().replace(s[a.STAR],"")),R=(C,p)=>(i("replaceGTE0",C,p),C.trim().replace(s[p.includePrerelease?a.GTE0PRE:a.GTE0],"")),v=C=>(p,F,H,V,B,w,j,k,L,D,Y,re)=>(S(H)?F="":S(V)?F=`>=${H}.0.0${C?"-0":""}`:S(B)?F=`>=${H}.${V}.0${C?"-0":""}`:w?F=`>=${F}`:F=`>=${F}${C?"-0":""}`,S(L)?k="":S(D)?k=`<${+L+1}.0.0-0`:S(Y)?k=`<${L}.${+D+1}.0-0`:re?k=`<=${L}.${D}.${Y}-${re}`:C?k=`<${L}.${D}.${+Y+1}-0`:k=`<=${k}`,`${F} ${k}`.trim()),q=(C,p,F)=>{for(let H=0;H<C.length;H++)if(!C[H].test(p))return!1;if(p.prerelease.length&&!F.includePrerelease){for(let H=0;H<C.length;H++)if(i(C[H].semver),C[H].semver!==c.ANY&&C[H].semver.prerelease.length>0){const V=C[H].semver;if(V.major===p.major&&V.minor===p.minor&&V.patch===p.patch)return!0}return!1}return!0};return St}var Kt,Sl;function xt(){if(Sl)return Kt;Sl=1;const e=Symbol("SemVer ANY");class l{static get ANY(){return e}constructor(u,b){if(b=t(b),u instanceof l){if(u.loose===!!b.loose)return u;u=u.value}u=u.trim().split(/\s+/).join(" "),o("comparator",u,b),this.options=b,this.loose=!!b.loose,this.parse(u),this.semver===e?this.value="":this.value=this.operator+this.semver.version,o("comp",this)}parse(u){const b=this.options.loose?n[c.COMPARATORLOOSE]:n[c.COMPARATOR],N=u.match(b);if(!N)throw new TypeError(`Invalid comparator: ${u}`);this.operator=N[1]!==void 0?N[1]:"",this.operator==="="&&(this.operator=""),N[2]?this.semver=new s(N[2],this.options.loose):this.semver=e}toString(){return this.value}test(u){if(o("Comparator.test",u,this.options.loose),this.semver===e||u===e)return!0;if(typeof u=="string")try{u=new s(u,this.options)}catch{return!1}return i(u,this.operator,this.semver,this.options)}intersects(u,b){if(!(u instanceof l))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new a(u.value,b).test(this.value):u.operator===""?u.value===""?!0:new a(this.value,b).test(u.semver):(b=t(b),b.includePrerelease&&(this.value==="<0.0.0-0"||u.value==="<0.0.0-0")||!b.includePrerelease&&(this.value.startsWith("<0.0.0")||u.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&u.operator.startsWith(">")||this.operator.startsWith("<")&&u.operator.startsWith("<")||this.semver.version===u.semver.version&&this.operator.includes("=")&&u.operator.includes("=")||i(this.semver,"<",u.semver,b)&&this.operator.startsWith(">")&&u.operator.startsWith("<")||i(this.semver,">",u.semver,b)&&this.operator.startsWith("<")&&u.operator.startsWith(">")))}}Kt=l;const t=cl,{safeRe:n,t:c}=ct,i=Rn,o=Yt,s=ae,a=he();return Kt}const ts=he(),ls=(e,l,t)=>{try{l=new ts(l,t)}catch{return!1}return l.test(e)};var Bt=ls;const ns=he(),cs=(e,l)=>new ns(e,l).set.map(t=>t.map(n=>n.value).join(" ").trim().split(" "));var is=cs;const ss=ae,os=he(),as=(e,l,t)=>{let n=null,c=null,i=null;try{i=new os(l,t)}catch{return null}return e.forEach(o=>{i.test(o)&&(!n||c.compare(o)===-1)&&(n=o,c=new ss(n,t))}),n};var rs=as;const ds=ae,gs=he(),Zs=(e,l,t)=>{let n=null,c=null,i=null;try{i=new gs(l,t)}catch{return null}return e.forEach(o=>{i.test(o)&&(!n||c.compare(o)===1)&&(n=o,c=new ds(n,t))}),n};var bs=Zs;const Et=ae,ms=he(),Kl=Jt,us=(e,l)=>{e=new ms(e,l);let t=new Et("0.0.0");if(e.test(t)||(t=new Et("0.0.0-0"),e.test(t)))return t;t=null;for(let n=0;n<e.set.length;++n){const c=e.set[n];let i=null;c.forEach(o=>{const s=new Et(o.semver.version);switch(o.operator){case">":s.prerelease.length===0?s.patch++:s.prerelease.push(0),s.raw=s.format();case"":case">=":(!i||Kl(s,i))&&(i=s);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),i&&(!t||Kl(t,i))&&(t=i)}return t&&e.test(t)?t:null};var Gs=us;const Is=he(),Cs=(e,l)=>{try{return new Is(e,l).range||"*"}catch{return null}};var Ws=Cs;const hs=ae,Vn=xt(),{ANY:ps}=Vn,Xs=he(),fs=Bt,El=Jt,Ql=sl,Rs=al,Vs=ol,As=(e,l,t,n)=>{e=new hs(e,n),l=new Xs(l,n);let c,i,o,s,a;switch(t){case">":c=El,i=Rs,o=Ql,s=">",a=">=";break;case"<":c=Ql,i=Vs,o=El,s="<",a="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fs(e,l,n))return!1;for(let Z=0;Z<l.set.length;++Z){const u=l.set[Z];let b=null,N=null;if(u.forEach(f=>{f.semver===ps&&(f=new Vn(">=0.0.0")),b=b||f,N=N||f,c(f.semver,b.semver,n)?b=f:o(f.semver,N.semver,n)&&(N=f)}),b.operator===s||b.operator===a||(!N.operator||N.operator===s)&&i(e,N.semver))return!1;if(N.operator===a&&o(e,N.semver))return!1}return!0};var rl=As;const Ys=rl,Js=(e,l,t)=>Ys(e,l,">",t);var xs=Js;const Bs=rl,ys=(e,l,t)=>Bs(e,l,"<",t);var Fs=ys;const zl=he(),Hs=(e,l,t)=>(e=new zl(e,t),l=new zl(l,t),e.intersects(l,t));var Ns=Hs;const vs=Bt,ks=We;var ws=(e,l,t)=>{const n=[];let c=null,i=null;const o=e.sort((u,b)=>ks(u,b,t));for(const u of o)vs(u,l,t)?(i=u,c||(c=u)):(i&&n.push([c,i]),i=null,c=null);c&&n.push([c,null]);const s=[];for(const[u,b]of n)u===b?s.push(u):!b&&u===o[0]?s.push("*"):b?u===o[0]?s.push(`<=${b}`):s.push(`${u} - ${b}`):s.push(`>=${u}`);const a=s.join(" || "),Z=typeof l.raw=="string"?l.raw:String(l);return a.length<Z.length?a:l};const Ul=he(),dl=xt(),{ANY:Qt}=dl,Te=Bt,gl=We,Ss=(e,l,t={})=>{if(e===l)return!0;e=new Ul(e,t),l=new Ul(l,t);let n=!1;e:for(const c of e.set){for(const i of l.set){const o=Es(c,i,t);if(n=n||o!==null,o)continue e}if(n)return!1}return!0},Ks=[new dl(">=0.0.0-0")],jl=[new dl(">=0.0.0")],Es=(e,l,t)=>{if(e===l)return!0;if(e.length===1&&e[0].semver===Qt){if(l.length===1&&l[0].semver===Qt)return!0;t.includePrerelease?e=Ks:e=jl}if(l.length===1&&l[0].semver===Qt){if(t.includePrerelease)return!0;l=jl}const n=new Set;let c,i;for(const f of e)f.operator===">"||f.operator===">="?c=Ll(c,f,t):f.operator==="<"||f.operator==="<="?i=Ml(i,f,t):n.add(f.semver);if(n.size>1)return null;let o;if(c&&i){if(o=gl(c.semver,i.semver,t),o>0)return null;if(o===0&&(c.operator!==">="||i.operator!=="<="))return null}for(const f of n){if(c&&!Te(f,String(c),t)||i&&!Te(f,String(i),t))return null;for(const J of l)if(!Te(f,String(J),t))return!1;return!0}let s,a,Z,u,b=i&&!t.includePrerelease&&i.semver.prerelease.length?i.semver:!1,N=c&&!t.includePrerelease&&c.semver.prerelease.length?c.semver:!1;b&&b.prerelease.length===1&&i.operator==="<"&&b.prerelease[0]===0&&(b=!1);for(const f of l){if(u=u||f.operator===">"||f.operator===">=",Z=Z||f.operator==="<"||f.operator==="<=",c){if(N&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===N.major&&f.semver.minor===N.minor&&f.semver.patch===N.patch&&(N=!1),f.operator===">"||f.operator===">="){if(s=Ll(c,f,t),s===f&&s!==c)return!1}else if(c.operator===">="&&!Te(c.semver,String(f),t))return!1}if(i){if(b&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===b.major&&f.semver.minor===b.minor&&f.semver.patch===b.patch&&(b=!1),f.operator==="<"||f.operator==="<="){if(a=Ml(i,f,t),a===f&&a!==i)return!1}else if(i.operator==="<="&&!Te(i.semver,String(f),t))return!1}if(!f.operator&&(i||c)&&o!==0)return!1}return!(c&&Z&&!i&&o!==0||i&&u&&!c&&o!==0||N||b)},Ll=(e,l,t)=>{if(!e)return l;const n=gl(e.semver,l.semver,t);return n>0?e:n<0||l.operator===">"&&e.operator===">="?l:e},Ml=(e,l,t)=>{if(!e)return l;const n=gl(e.semver,l.semver,t);return n<0?e:n>0||l.operator==="<"&&e.operator==="<="?l:e};var Qs=Ss;const zt=ct,Tl=At,zs=ae,$l=pn,Us=je,js=Pc,Ls=qc,Ms=ti,Ts=ni,$s=si,Os=ri,Ps=Zi,Ds=ui,_s=We,qs=Wi,eo=Xi,to=il,lo=Ai,no=xi,co=Jt,io=sl,so=Xn,oo=fn,ao=ol,ro=al,go=Rn,Zo=_i,bo=xt(),mo=he(),uo=Bt,Go=is,Io=rs,Co=bs,Wo=Gs,ho=Ws,po=rl,Xo=xs,fo=Fs,Ro=Ns,Vo=ws,Ao=Qs;var Yo={parse:Us,valid:js,clean:Ls,inc:Ms,diff:Ts,major:$s,minor:Os,patch:Ps,prerelease:Ds,compare:_s,rcompare:qs,compareLoose:eo,compareBuild:to,sort:lo,rsort:no,gt:co,lt:io,eq:so,neq:oo,gte:ao,lte:ro,cmp:go,coerce:Zo,Comparator:bo,Range:mo,satisfies:uo,toComparators:Go,maxSatisfying:Io,minSatisfying:Co,minVersion:Wo,validRange:ho,outside:po,gtr:Xo,ltr:fo,intersects:Ro,simplifyRange:Vo,subset:Ao,SemVer:zs,re:zt.re,src:zt.src,tokens:zt.t,SEMVER_SPEC_VERSION:Tl.SEMVER_SPEC_VERSION,RELEASE_TYPES:Tl.RELEASE_TYPES,compareIdentifiers:$l.compareIdentifiers,rcompareIdentifiers:$l.rcompareIdentifiers},Jo=Yo;const xo=Nc(Jo),An=e=>e!=null&&e.includes(" ")?`"${e}"`:`${e??"pandoc"}`;async function Bo(e,l){e=An(e);let t=await jt(`${e} --version`,{env:l});t=t.substring(0,t.indexOf(`
+`)).replace("pandoc.exe","").replace("pandoc","").trim();let n=[...t].filter(c=>c===".").length;if(n===1)t=`${t}.0`;else for(;n>2;)t=t.substring(0,t.lastIndexOf(".")),n-=1;return xo.parse(t,!0)}const yo="3.1.7",mt={normalizePath:An,getVersion:Bo,requiredVersion:yo};async function Yn(e,l,t,n,c,i,o,s,a,Z){const{settings:u,lang:b,manifest:N,app:{vault:{adapter:f,config:J},metadataCache:U}}=e;if(!n){const _=en(c);n=`${l.basename}${_}`}i==null&&(i=u.showOverwriteConfirmation);const m=u.showExportProgressBar,E=f.getBasePath(),S=`${E}/${N.dir}`,K=`${S}/lua`,T=t,Q=`${T}/${n}`,be=n.substring(0,n.lastIndexOf(".")),me=n,h=f.getFullPath(l.path),W=ce.dirname(h),R=l.basename,v=l.name;let q=J.attachmentFolderPath??"/";q==="/"?q=E:q.startsWith(".")?q=ce.join(W,q.substring(1)):q=ce.join(E,q);let C=null;try{C=U.getCache(l.path).frontmatter}catch(_){console.error(_)}let p=null;try{p=U.getCache(l.path).embeds}catch(_){console.error(_)}let F=[];for(const _ of p){const te=_.link,Ne=U.getFirstLinkpathDest(te,l.path);Ne instanceof ue.TFile?F.push(ce.join(E,ce.dirname(Ne.path))):Ne===null&&console.warn(`Could not resolve embedded file: ${te}`)}F=[...new Set(F)];const H=F.join(ce.delimiter),V={pluginDir:S,luaDir:K,outputDir:T,outputPath:Q,outputFileName:be,outputFileFullName:me,currentDir:W,currentPath:h,currentFileName:R,currentFileFullName:v,attachmentFolderPath:q,vaultDir:E,metadata:C,embedDirs:H,options:o,fromFormat:app.vault.config.useMarkdownLinks?"markdown":"markdown+wikilinks_title_after_pipe"},B=c.type==="custom"&&c.showCommandOutput,w=c.openExportedFileLocation??u.openExportedFileLocation,j=c.openExportedFile??u.openExportedFile;if(i&&Ft.existsSync(Q)){const _=await ye.remote.dialog.showSaveDialog({title:b.overwriteConfirmationDialog.title(me),defaultPath:Q,properties:["showOverwriteConfirmation","createDirectory"]});if(_.canceled)return;V.outputPath=_.filePath,V.outputDir=ce.dirname(V.outputPath),V.outputFileFullName=ce.basename(V.outputPath),V.outputFileName=ce.basename(V.outputFileFullName,ce.extname(V.outputFileFullName))}let k;m&&(k=Hc.show(b.preparing(V.outputFileFullName)));const L=V.env=tn(Ze(u.env)??{},V);let D=mt.normalizePath(Ze(u.pandocPath));if(Xt.platform==="win32"){D=D.replaceAll("\\","/");const _=["pluginDir","luaDir","outputDir","outputPath","currentDir","currentPath","attachmentFolderPath","vaultDir","embedDirs"];for(const te of _){const Ne=V[te];V[te]=Ne.replaceAll("\\","/")}}const Y=c.type==="pandoc"?`${D} "\${currentPath}" ${c.arguments??""} ${c.customArguments??""}`:c.command,re=Lt(Y,V),yt=nt(re.match(/(?:[^\s"]+|"[^"]*")+/g),{alias:{output:["o"]}}),Le=ce.normalize(En(yt.output)),He=ce.dirname(Le);Ft.existsSync(He)||Ft.mkdirSync(He);try{console.log(`[${e.manifest.name}]: export command and options:`,{cmd:re,options:{cwd:V.currentDir,env:L}}),await jt(re,{cwd:V.currentDir,env:L}),k==null||k();const _=async()=>{if(w&&setTimeout(()=>{ye.remote.shell.showItemInFolder(Le)},1e3),j&&await ye.remote.shell.openPath(Le),c.type==="pandoc"&&c.runCommand===!0&&c.command){const te=Lt(c.command,V);await jt(te,{cwd:V.currentDir,env:L})}s&&s()};if(B){const te=new Yl(app,b.exportCommandOutputMessage(re));te.onClose=_,te.open()}else new ue.Notice(b.exportSuccessNotice(V.outputFileFullName),1500),await _()}catch(_){k==null||k(),new Yl(app,b.exportErrorOutputMessage(re,_)).open(),a&&a()}}const Dt=e=>{const l=new ue.Modal(e.app);let t=[],n=!1;return Ye(()=>{se(l.titleEl,()=>e.title)}),Ye(()=>{se(l.contentEl,()=>e.children)}),Ye(()=>{const c=Object.entries(e.classList??{}).filter(([,i])=>i).map(([i])=>i);t.length>0&&l.containerEl.removeClasses(t),c.length>0&&l.containerEl.addClasses(c),t=c}),Ye(()=>{l.containerEl.style.display=e.hidden?"None":""}),l.onClose=()=>{n||(n=!0,e.onClose())},cn(()=>l.open()),ze(()=>{n||l.close()}),document.createTextNode("")};var Fo=Ge("<button>");const _t=e=>(()=>{var l=Fo();return ll(l,"click",e.onClick,!0),se(l,()=>e.children),ne(()=>l.classList.toggle("mod-cta",!!e.cta)),l})();tl(["click"]);var Ho=Ge("<div><div class=setting-item-info><div class=setting-item-name></div><div class=setting-item-description></div></div><div class=setting-item-control>"),No=Ge("<div class=checkbox-container><input type=checkbox>"),vo=Ge("<div class=setting-editor-extra-setting-button>"),ko=Ge("<input type=text>"),wo=Ge("<textarea>"),So=Ge("<select class=dropdown>"),Ko=Ge("<option>");const Jn=Mn(),Eo=()=>Tn(Jn),z=e=>{const l={settingEl:null};return I(Jn.Provider,{value:l,get children(){var t=Ho(),n=t.firstChild,c=n.firstChild,i=c.nextSibling,o=n.nextSibling;return Vt(s=>l.settingEl=s,t),se(c,()=>e.name),se(i,()=>e.description),se(o,()=>e.children),ne(s=>{var a=`setting-item ${e.class??""}`.trimEnd(),Z=!!e.heading,u=!!e.disabled;return a!==s.e&&mn(t,s.e=a),Z!==s.t&&t.classList.toggle("setting-item-heading",s.t=Z),u!==s.a&&t.classList.toggle("is-disable",s.a=u),s},{e:void 0,t:void 0,a:void 0}),t}})},Ce=e=>{const l=Eo();return cn(()=>{l.settingEl.addClass("mod-toggle")}),ze(()=>{l.settingEl.removeClass("mod-toggle")}),(()=>{var t=No();return t.$$click=()=>e.onChange&&e.onChange(!e.checked),ne(()=>t.classList.toggle("is-enabled",!!e.checked)),t})()},Be=e=>(()=>{var l=vo();return ll(l,"click",e.onClick,!0),Vt(t=>e.icon&&Kn.setIcon(t,e.icon),l),ne(t=>{var n=!!(e.icon&&e.onClick),c=e.tooltip;return n!==t.e&&l.classList.toggle("clickable-icon",t.e=n),c!==t.t&&xe(l,"aria-label",t.t=c),t},{e:void 0,t:void 0}),l})(),ge=e=>(()=>{var l=ko();return l.addEventListener("change",t=>{var n;return(n=e.onChange)==null?void 0:n.call(e,t.target.value)}),ne(t=>{var n=e.title,c=e.readOnly,i=e.placeholder,o=e.spellcheck??!1,s=e.style,a=e.disabled;return n!==t.e&&xe(l,"title",t.e=n),c!==t.t&&(l.readOnly=t.t=c),i!==t.a&&xe(l,"placeholder",t.a=i),o!==t.o&&xe(l,"spellcheck",t.o=o),t.i=nl(l,s,t.i),a!==t.n&&(l.disabled=t.n=a),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),ne(()=>l.value=e.value),l})(),Qo=e=>(()=>{var l=wo();return l.addEventListener("change",t=>{var n;return(n=e.onChange)==null?void 0:n.call(e,t.target.value)}),ne(t=>{var n=e.placeholder,c=e.spellcheck??!1,i=e.style,o=e.disabled;return n!==t.e&&xe(l,"placeholder",t.e=n),c!==t.t&&xe(l,"spellcheck",t.t=c),t.a=nl(l,i,t.a),o!==t.o&&(l.disabled=t.o=o),t},{e:void 0,t:void 0,a:void 0,o:void 0}),ne(()=>l.value=e.value),l})(),De=e=>(()=>{var l=So();return l.addEventListener("change",t=>{var n;return(n=e.onChange)==null?void 0:n.call(e,t.target.value,t.target.selectedIndex)}),l.autofocus=!0,se(l,I(bn,{get each(){return e.options},children:t=>(()=>{var n=Ko();return se(n,()=>t.name??t.value),ne(()=>n.selected=t.value===e.selected),ne(()=>n.value=t.value),n})()})),l})();tl(["click"]);var zo=Ge("<div>Unsupported <!> ");const dt={checkbox:e=>I(z,{get name(){return e.meta.title},get description(){return e.meta.description},get children(){return I(Ce,{get checked(){return Oe(e.meta)},get onChange(){return e.onChange}})}}),textInput:e=>I(z,{get name(){return e.meta.title},get description(){return e.meta.description},get children(){return I(ge,{get value(){return Oe(e.meta)},get onChange(){return e.onChange}})}}),dropdown:e=>I(z,{get name(){return e.meta.title},get description(){return e.meta.description},get children(){return I(De,{get selected(){return Oe(e.meta)},get options(){return e.meta.options},onChange:l=>e.onChange(l)})}}),fileSelectDialog:e=>{const[l,t]=de(Oe(e.meta)),n=async()=>{const c=await _l.remote.dialog.showOpenDialog({properties:["openFile"],filters:e.meta.filters});!c.canceled&&c.filePaths.length>0&&(t(c.filePaths[0]),e.onChange&&e.onChange(P(l)))};return I(z,{get name(){return e.meta.title},get description(){return e.meta.description},get children(){return[I(ge,{get value(){return l()??""},readOnly:!0}),I(Be,{icon:"folder",onClick:n})]}})}},Uo=(e,l)=>{switch(e.type){case"checkbox":{const t=dt[e.type];return I(t,{meta:e,onChange:l})}case"dropdown":{const t=dt[e.type];return I(t,{meta:e,onChange:l})}case"textInput":{const t=dt[e.type];return I(t,{meta:e,onChange:l})}case"fileSelectDialog":{const t=dt[e.type];return I(t,{meta:e,onChange:l})}default:return(()=>{var t=zo(),n=t.firstChild,c=n.nextSibling;return c.nextSibling,se(t,()=>JSON.stringify(e),c),t})()}},jo=e=>{let l={};Ye(()=>l=e.value??xn(e.meta));const t=(c,i)=>{l[c]=i,e.onChange&&e.onChange(l,c)},n=(c,i)=>{const o=a=>t(c,a);let s;return e.customEditor&&(s=e.customEditor(i,o),s)?s:Uo(i,o)};return I(bn,{get each(){return Object.entries(e.meta)},children:([c,i])=>n(c,i)})},xn=e=>Object.fromEntries(Object.entries(e).map(([l,t])=>[l,Oe(t)])),Oe=e=>{if(e.default)return e.default instanceof Function?e.default():e.default};var Lo=Ge("<div class=modal-button-container>");const Mo=e=>{var h;const{plugin:{app:l,settings:t,lang:n},currentFile:c}=e,[i,o]=de(!1),[s,a]=de(t.showOverwriteConfirmation),[Z,u]=de(t.lastExportType??((h=t.items.first())==null?void 0:h.name)),[b,N]=de({}),f=le(()=>t.items.find(W=>W.name===Z())),J=le(()=>en(f())),U=le(()=>n.exportDialog.title(f().name)),m=le(()=>Un(f().optionsMeta)),[E,S]=de(`${Ze(t.lastExportDirectory)??ye.remote.app.getPath("documents")}`),[K,T]=de(`${c.basename}${J()}`);Ye(()=>{const W=m();N(W?xn(W):{})}),Ye(()=>{let W=P(K);W=W.includes(".")?W.substring(0,W.lastIndexOf(".")):W,T(`${W}${J()}`)});const Q=t.items.map(W=>({name:W.name,value:W.name})).sort((W,R)=>W.name.localeCompare(R.name));if(t.defaultExportDirectoryMode==="Same"){const W=c.vault.adapter.getBasePath()+"/"+c.parent.path;S(W)}else t.defaultExportDirectoryMode==="Custom"&&S(Ze(t.customDefaultExportDirectory));const be=async()=>{var R;const W=await ye.remote.dialog.showOpenDialog({title:n.exportDialog.selectExportFolder,defaultPath:E(),properties:["createDirectory","openDirectory"]});!W.canceled&&((R=W.filePaths)==null?void 0:R.length)>0&&S(W.filePaths[0])},me=async()=>{const W=e.plugin;o(!0),await Yn(W,c,P(E),P(K),P(f),P(s),b(),async()=>{t.showOverwriteConfirmation=P(s),t.lastExportDirectory=Ae(t.lastExportDirectory,P(E)),t.lastExportType=P(f).name,await W.saveSettings(),e.onClose&&e.onClose()},()=>{o(!1)})};return I(Dt,{app:l,get title(){return U()},get hidden(){return i()},get onClose(){return e.onClose},get children(){return[I(z,{get name(){return n.exportDialog.type},get children(){return I(De,{options:Q,onChange:W=>u(W),get selected(){return Z()}})}}),I(z,{get name(){return n.exportDialog.fileName},get children(){return I(ge,{get title(){return K()},get value(){return K()},onChange:W=>T(W)})}}),I(bt,{get when(){return m()},get children(){return I(jo,{get meta(){return m()},get value(){return b()},onChange:W=>N(W)})}}),I(z,{get name(){return n.exportDialog.exportTo},get children(){return[I(ge,{get title(){return E()},get value(){return E()},disabled:!0}),I(Be,{icon:"folder",onClick:be})]}}),I(z,{get name(){return n.exportDialog.overwriteConfirmation},class:"mod-toggle",get children(){return I(Ce,{get checked(){return s()},onChange:a})}}),(()=>{var W=Lo();return se(W,I(_t,{cta:!0,onClick:me,get children(){return n.exportDialog.export}})),W})()]}})},To=(e,l)=>we(t=>{let n=!1;const c=()=>{n||(n=!0,t())},i=se(document.body,()=>I(Mo,{onClose:c,plugin:e,currentFile:l}));return ze(()=>{i instanceof Node&&document.body.contains(i)&&document.body.removeChild(i)}),c}),Ut={show:To},Wt=Symbol("store-raw"),Se=Symbol("store-node"),Ve=Symbol("store-has"),Bn=Symbol("store-self");function yn(e){let l=e[Xe];if(!l&&(Object.defineProperty(e,Xe,{value:l=new Proxy(e,Po)}),!Array.isArray(e))){const t=Object.keys(e),n=Object.getOwnPropertyDescriptors(e);for(let c=0,i=t.length;c<i;c++){const o=t[c];n[o].get&&Object.defineProperty(e,o,{enumerable:n[o].enumerable,get:n[o].get.bind(l)})}}return l}function Ke(e){let l;return e!=null&&typeof e=="object"&&(e[Xe]||!(l=Object.getPrototypeOf(e))||l===Object.prototype||Array.isArray(e))}function Ee(e,l=new Set){let t,n,c,i;if(t=e!=null&&e[Wt])return t;if(!Ke(e)||l.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):l.add(e);for(let o=0,s=e.length;o<s;o++)c=e[o],(n=Ee(c,l))!==c&&(e[o]=n)}else{Object.isFrozen(e)?e=Object.assign({},e):l.add(e);const o=Object.keys(e),s=Object.getOwnPropertyDescriptors(e);for(let a=0,Z=o.length;a<Z;a++)i=o[a],!s[i].get&&(c=e[i],(n=Ee(c,l))!==c&&(e[i]=n))}return e}function ht(e,l){let t=e[l];return t||Object.defineProperty(e,l,{value:t=Object.create(null)}),t}function et(e,l,t){if(e[l])return e[l];const[n,c]=de(t,{equals:!1,internal:!0});return n.$=c,e[l]=n}function $o(e,l){const t=Reflect.getOwnPropertyDescriptor(e,l);return!t||t.get||!t.configurable||l===Xe||l===Se||(delete t.value,delete t.writable,t.get=()=>e[Xe][l]),t}function Fn(e){Tt()&&et(ht(e,Se),Bn)()}function Oo(e){return Fn(e),Reflect.ownKeys(e)}const Po={get(e,l,t){if(l===Wt)return e;if(l===Xe)return t;if(l===Mt)return Fn(e),t;const n=ht(e,Se),c=n[l];let i=c?c():e[l];if(l===Se||l===Ve||l==="__proto__")return i;if(!c){const o=Object.getOwnPropertyDescriptor(e,l);Tt()&&(typeof i!="function"||e.hasOwnProperty(l))&&!(o&&o.get)&&(i=et(n,l,i)())}return Ke(i)?yn(i):i},has(e,l){return l===Wt||l===Xe||l===Mt||l===Se||l===Ve||l==="__proto__"?!0:(Tt()&&et(ht(e,Ve),l)(),l in e)},set(){return!0},deleteProperty(){return!0},ownKeys:Oo,getOwnPropertyDescriptor:$o};function Qe(e,l,t,n=!1){if(!n&&e[l]===t)return;const c=e[l],i=e.length;t===void 0?(delete e[l],e[Ve]&&e[Ve][l]&&c!==void 0&&e[Ve][l].$()):(e[l]=t,e[Ve]&&e[Ve][l]&&c===void 0&&e[Ve][l].$());let o=ht(e,Se),s;if((s=et(o,l,c))&&s.$(()=>t),Array.isArray(e)&&e.length!==i){for(let a=e.length;a<i;a++)(s=o[a])&&s.$();(s=et(o,"length",i))&&s.$(e.length)}(s=o[Bn])&&s.$()}function Hn(e,l){const t=Object.keys(l);for(let n=0;n<t.length;n+=1){const c=t[n];Qe(e,c,l[c])}}function Do(e,l){if(typeof l=="function"&&(l=l(e)),l=Ee(l),Array.isArray(l)){if(e===l)return;let t=0,n=l.length;for(;t<n;t++){const c=l[t];e[t]!==c&&Qe(e,t,c)}Qe(e,"length",n)}else Hn(e,l)}function Pe(e,l,t=[]){let n,c=e;if(l.length>1){n=l.shift();const o=typeof n,s=Array.isArray(e);if(Array.isArray(n)){for(let a=0;a<n.length;a++)Pe(e,[n[a]].concat(l),t);return}else if(s&&o==="function"){for(let a=0;a<e.length;a++)n(e[a],a)&&Pe(e,[a].concat(l),t);return}else if(s&&o==="object"){const{from:a=0,to:Z=e.length-1,by:u=1}=n;for(let b=a;b<=Z;b+=u)Pe(e,[b].concat(l),t);return}else if(l.length>1){Pe(e[n],l,[n].concat(t));return}c=e[n],t=[n].concat(t)}let i=l[0];typeof i=="function"&&(i=i(c,t),i===c)||n===void 0&&i==null||(i=Ee(i),n===void 0||Ke(c)&&Ke(i)&&!Array.isArray(i)?Hn(c,i):Qe(e,n,i))}function _o(...[e,l]){const t=Ee(e||{}),n=Array.isArray(t),c=yn(t);function i(...o){Zt(()=>{n&&o.length===1?Do(t,o[0]):Pe(t,o)})}return[c,i]}const pt=new WeakMap,Nn={get(e,l){if(l===Wt)return e;const t=e[l];let n;return Ke(t)?pt.get(t)||(pt.set(t,n=new Proxy(t,Nn)),n):t},set(e,l,t){return Qe(e,l,Ee(t)),!0},deleteProperty(e,l){return Qe(e,l,void 0,!0),!0}};function qo(e){return l=>{if(Ke(l)){let t;(t=pt.get(l))||pt.set(l,t=new Proxy(l,Nn)),e(t)}return l}}var Ol=Ge("<div class=modal-button-container>");const ea=e=>{const{plugin:l,lang:t}=e,[n,c]=_o(l.settings),[i,o]=de(),s=le(()=>Object.entries(Object.assign({},Ze(_e),Ze(n.env)??{})).map(([h,W])=>`${h}="${W}"`).join(`
+`)),a=(...h)=>{c(...h),l.saveSettings()},Z=h=>{try{const W={};for(let R of h.split(`
+`)){R=R.trim();const v=R.indexOf("=");if(v>0){const q=R.substring(0,v);let C=R.substring(v+1).trim();C.startsWith('"')&&C.endsWith('"')&&(C=C.substring(1,C.length-1)),W[q]=C}}a("env",Ae(n.env??{},W))}catch(W){alert(W)}},u=le(()=>n.items.find(h=>h.name===n.lastEditName)??n.items.first()),b=h=>{const W=u();return h===void 0||h===W.type?W:void 0},N=le(()=>Ze(n.customDefaultExportDirectory)),f=h=>{const W=n.items.findIndex(R=>R.name===n.lastEditName);a("items",W===-1?0:W,qo(R=>(h(R),R)))},J=le(()=>{const h=i();return h?app.vault.config.useMarkdownLinks&&h.compare(mt.requiredVersion)===-1?t.settingTab.pandocVersionWithWarning(mt.requiredVersion):t.settingTab.pandocVersion(h):t.settingTab.pandocNotFound}),[U,m]=de(),E=()=>{const[h,W]=de(Object.keys(gt)[0]),[R,v]=de(),q=()=>{const C=JSON.parse(JSON.stringify(gt[h()]));C.name=R(),Zt(()=>{a("items",p=>[...p,C]),a("lastEditName",C.name)}),m(void 0)};return I(Dt,{app,get title(){return t.settingTab.new},onClose:()=>m(void 0),get children(){return[I(z,{get name(){return t.settingTab.template},get children(){return I(De,{get options(){return Object.entries(gt).map(([C,p])=>({name:p.name,value:C})).sort((C,p)=>C.name.localeCompare(p.name))},get selected(){return R()??h()},onChange:C=>W(C)})}}),I(z,{get name(){return t.settingTab.name},get children(){return I(ge,{get value(){return R()??""},onChange:C=>v(C)})}}),(()=>{var C=Ol();return se(C,I(_t,{cta:!0,onClick:q,get children(){return t.settingTab.save}})),C})()]}})},S=()=>{const[h,W]=de(b().name),R=()=>{Zt(()=>{f(v=>v.name=h()),a("lastEditName",h())}),m(void 0)};return I(Dt,{app,get title(){return t.settingTab.rename},onClose:()=>m(void 0),get children(){return[I(z,{get name(){return t.settingTab.name},get children(){return I(ge,{get value(){return h()??""},onChange:v=>W(v)})}}),(()=>{var v=Ol();return se(v,I(_t,{cta:!0,onClick:R,get children(){return t.settingTab.add}})),v})()]}})},K=()=>{const h=()=>b("pandoc"),W=R=>{f(v=>v.type==="pandoc"?R(v):void 0)};return[I(z,{get name(){return t.settingTab.arguments},get children(){return I(ge,{style:"width: 100%",get value(){return h().arguments??""},onChange:R=>W(v=>v.arguments=R)})}}),I(z,{get name(){return t.settingTab.extraArguments},get children(){return I(ge,{style:"width: 100%",get value(){return h().customArguments??""},get title(){return h().customArguments},onChange:R=>W(v=>v.customArguments=R)})}}),I(z,{get name(){return t.settingTab.afterExport},heading:!0}),I(z,{get name(){return t.settingTab.openExportedFileLocation},get children(){return I(Ce,{get checked(){return h().openExportedFileLocation??!1},onChange:R=>W(v=>v.openExportedFileLocation=R)})}}),I(z,{get name(){return t.settingTab.openExportedFile},get children(){return I(Ce,{get checked(){return h().openExportedFile??!1},onChange:R=>W(v=>v.openExportedFile=R)})}}),I(z,{get name(){return t.settingTab.runCommand},get children(){return I(Ce,{get checked(){return h().runCommand},onChange:R=>W(v=>v.runCommand=R)})}}),I(bt,{get when(){return h().runCommand},get children(){return I(z,{get children(){return I(ge,{style:"width: 100%",get value(){return h().command??""},onChange:R=>W(v=>v.command=R)})}})}})]},T=()=>{const h=()=>b("custom"),W=R=>{f(v=>v.type==="custom"?R(v):void 0)};return[I(z,{get name(){return t.settingTab.command},get children(){return I(ge,{style:"width: 100%",get value(){return h().command},onChange:R=>W(v=>v.command=R)})}}),I(z,{get name(){return t.settingTab.targetFileExtensions},get children(){return I(ge,{get value(){return h().targetFileExtensions??""},onChange:R=>W(v=>v.targetFileExtensions=R)})}}),I(z,{get name(){return t.settingTab.afterExport},heading:!0}),I(z,{get name(){return t.settingTab.showCommandOutput},get children(){return I(Ce,{get checked(){return h().showCommandOutput??!1},onChange:R=>W(v=>v.showCommandOutput=R)})}}),I(z,{get name(){return t.settingTab.openExportedFileLocation},get children(){return I(Ce,{get checked(){return h().openExportedFileLocation??!1},onChange:R=>W(v=>v.openExportedFileLocation=R)})}}),I(z,{get name(){return t.settingTab.openExportedFile},get children(){return I(Ce,{get checked(){return h().openExportedFile??!1},onChange:R=>W(v=>v.openExportedFile=R)})}})]},Q=async()=>{await l.resetSettings(),a(l.settings)},be=async()=>{const h=await ye.remote.dialog.showOpenDialog({defaultPath:N()??ye.remote.app.getPath("documents"),properties:["createDirectory","openDirectory"]});!h.canceled&&h.filePaths.length>0&&a("customDefaultExportDirectory",W=>Ae(W,h.filePaths[0]))},me=async()=>{const h=await ye.remote.dialog.showOpenDialog({filters:Xt.platform=="win32"?[{extensions:["exe"],name:"pandoc"}]:void 0,properties:["openFile"]});!h.canceled&&h.filePaths.length>0&&a("pandocPath",W=>Ae(W,h.filePaths[0]))};return Ye(async()=>{try{const h=tn(Ze(n.env)??{});o(await mt.getVersion(Ze(n.pandocPath),h))}catch{o(void 0)}}),[I(z,{get name(){return t.settingTab.general},heading:!0,get children(){return I(Be,{icon:"reset",onClick:Q})}}),I(z,{get name(){return t.settingTab.pandocPath},get description(){return J()},get children(){return[I(ge,{get placeholder(){return t.settingTab.pandocPathPlaceholder},get value(){return Ze(n.pandocPath)??""},onChange:h=>a("pandocPath",W=>Ae(W,h))}),I(Be,{icon:"folder",onClick:me})]}}),I(z,{get name(){return t.settingTab.defaultFolderForExportedFile},get children(){return I(De,{get options(){return[{name:t.settingTab.auto,value:"Auto"},{name:t.settingTab.sameFolderWithCurrentFile,value:"Same"},{name:t.settingTab.customLocation,value:"Custom"}]},get selected(){return n.defaultExportDirectoryMode},onChange:h=>a("defaultExportDirectoryMode",h)})}}),I(bt,{get when(){return n.defaultExportDirectoryMode==="Custom"},get children(){return I(z,{get children(){return[I(ge,{get value(){return N()??""},get title(){return N()}}),I(Be,{icon:"folder",onClick:be})]}})}}),I(z,{get name(){return t.settingTab.openExportedFileLocation},get children(){return I(Ce,{get checked(){return n.openExportedFileLocation},onChange:h=>a("openExportedFileLocation",h)})}}),I(z,{get name(){return t.settingTab.openExportedFile},get children(){return I(Ce,{get checked(){return n.openExportedFile},onChange:h=>a("openExportedFile",h)})}}),I(z,{get name(){return t.settingTab.ShowExportProgressBar},get children(){return I(Ce,{get checked(){return n.showExportProgressBar},onChange:h=>a("showExportProgressBar",h)})}}),I(z,{get name(){return t.settingTab.editCommandTemplate},heading:!0}),I(z,{get name(){return t.settingTab.chooseCommandTemplate},get children(){return[I(De,{get options(){return n.items.map(h=>({name:h.name,value:h.name})).sort((h,W)=>h.name.localeCompare(W.name))},get selected(){return n.lastEditName},onChange:h=>a("lastEditName",h)}),I(Be,{icon:"plus",get tooltip(){return t.settingTab.add},onClick:()=>m(()=>E)}),I(Be,{icon:"pencil",get tooltip(){return t.settingTab.rename},onClick:()=>m(()=>S)}),I(Be,{icon:"trash",get tooltip(){return t.settingTab.remove},onClick:()=>Zt(()=>{var h;a("items",W=>W.filter(R=>{var v;return R.name!==((v=b())==null?void 0:v.name)})),a("lastEditName",(h=n.items.first())==null?void 0:h.name)})})]}}),I(lc,{get children(){return[I(Wl,{get when(){return b("pandoc")},get children(){return I(K,{})}}),I(Wl,{get when(){return b("custom")},get children(){return I(T,{})}})]}}),I(z,{get name(){return t.settingTab.advanced},heading:!0}),I(z,{get name(){return t.settingTab.environmentVariables},get description(){return t.settingTab.environmentVariablesDesc},get children(){return I(Qo,{style:"width: 100%;height: 5em",get value(){return s()},onChange:Z})}}),I(bt,{get when(){return U()},get children(){return I(pc,{get component(){return U()},ref:h=>document.body.appendChild(h)})}})]};var tt;class ta extends ue.PluginSettingTab{constructor(t){super(t.app,t);ul(this,tt);this.plugin=t,this.name=this.plugin.lang.settingTab.title}get lang(){return this.plugin.lang}display(){Gl(this,tt,we(t=>{const n=this;return se(this.containerEl,I(ea,{get plugin(){return n.plugin},get lang(){return n.lang}})),ze(()=>{this.containerEl.empty()}),t}))}hide(){ml(this,tt).call(this)}}tt=new WeakMap;const la=Uint8Array.from(atob("LS0gY3JlZGl0cyB0byB0YXJsZWIg4oCUIFN0YWNrRXhjaGFuZ2U6IGh0dHBzOi8vdGV4LnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8zOTIwNzAvcGFuZG9jLW1hcmtkb3duLWNyZWF0ZS1zZWxmLWNvbnRhaW5lZC1iaWItZmlsZS1mcm9tLWNpdGVkLXJlZmVyZW5jZXMKZnVuY3Rpb24gUGFuZG9jKGQpCiAgZC5tZXRhLnJlZmVyZW5jZXMgPSBwYW5kb2MudXRpbHMucmVmZXJlbmNlcyhkKQogIGQubWV0YS5iaWJsaW9ncmFwaHkgPSBuaWwKICByZXR1cm4gZAplbmQK"),e=>e.charCodeAt(0)),na=Object.freeze(Object.defineProperty({__proto__:null,default:la},Symbol.toStringTag,{value:"Module"})),ca=Uint8Array.from(atob("cGFja2FnZS5wYXRoPXBhY2thZ2UucGF0aC4uIjsiIC4uZGVidWcuZ2V0aW5mbygxKS5zb3VyY2U6bWF0Y2goIiguKlsvXFxdKSIpOnN1YigyKSAuLiAiPy5sdWEiCgpNb2RlPSdodWdvJwoKcmVxdWlyZSgnbWFya2Rvd24nKQ=="),e=>e.charCodeAt(0)),ia=Object.freeze(Object.defineProperty({__proto__:null,default:ca},Symbol.toStringTag,{value:"Module"})),sa=Uint8Array.from(atob("cGFja2FnZS5wYXRoPWRlYnVnLmdldGluZm8oMSkuc291cmNlOmdzdWIoJ0AnLCcnKTpzdWIoMCk6bWF0Y2goJyguKlsvXFxdKScpOnN1YigwKSAuLiAnPy5sdWEnIC4uICc7JyAuLiBwYWNrYWdlLnBhdGgKCnJlcXVpcmUoInBvbHlmaWxsIikKbG9jYWwgdXJsID0gcmVxdWlyZSgndXJsJykKCmxvY2FsIHBhbmRvYz1wYW5kb2MKbG9jYWwgUEFORE9DX1NUQVRFPVBBTkRPQ19TVEFURQoKUEFORE9DX1ZFUlNJT046bXVzdF9iZV9hdF9sZWFzdCAnMy4xLjcnCgpvcy50ZXh0ID0gcGFuZG9jLnRleHQKCmxvY2FsIFBBVEggPSBwYW5kb2MucGF0aApsb2NhbCBkb2NfZGlyID0gbmlsCmxvY2FsIG1lZGlhX2RpciA9IG5pbAoKaWYgTW9kZSA9PSBuaWwgdGhlbgogIE1vZGUgPSAnZGVmYXVsdCcKZW5kCgotLSBwcmludCgiTW9kZTogIi4uTW9kZSkKCmlmIFBBTkRPQ19TVEFURS5vdXRwdXRfZmlsZSB0aGVuCiAgbG9jYWwgb3V0cHV0X2ZpbGUgPSBQQU5ET0NfU1RBVEUub3V0cHV0X2ZpbGUKICBkb2NfZGlyID0gUEFUSC5kaXJlY3Rvcnkob3V0cHV0X2ZpbGUpCiAgaWYgUEFORE9DX1dSSVRFUl9PUFRJT05TLnZhcmlhYmxlc1sibWVkaWFfZGlyIl0gdGhlbgogICAgbWVkaWFfZGlyID0gdG9zdHJpbmcoUEFORE9DX1dSSVRFUl9PUFRJT05TLnZhcmlhYmxlc1sibWVkaWFfZGlyIl0pCiAgZWxzZQogICAgbWVkaWFfZGlyID0gUEFUSC5zcGxpdF9leHRlbnNpb24ob3V0cHV0X2ZpbGUpCiAgICBpZiBNb2RlIH49ICdodWdvJyB0aGVuCiAgICAgIG1lZGlhX2RpciA9IG1lZGlhX2RpciAuLiAnLW1lZGlhJwogICAgZW5kCiAgZW5kCmVuZAphc3NlcnQoZG9jX2RpciwgImRvY19kaXIgaXMgbmlsIikKYXNzZXJ0KG1lZGlhX2RpciwgIm1lZGlhX2RpciBpcyBuaWwiKQoKCmxvY2FsIGZ1bmN0aW9uIGdldF9hYnNvbHV0ZV9wYXRoKGZpbGVfcGF0aCkKICBpZiBQQVRILmlzX2Fic29sdXRlKGZpbGVfcGF0aCkgdGhlbgogICAgcmV0dXJuIGZpbGVfcGF0aAogIGVuZAogIGZvciBfLCBkaXIgaW4gcGFpcnMoUEFORE9DX1NUQVRFLnJlc291cmNlX3BhdGgpIGRvCiAgICBsb2NhbCBmdWxsX3BhdGggPSBQQVRILmpvaW4oe2RpciwgZmlsZV9wYXRofSkKICAgIGlmIG9zLmV4aXN0cyhmdWxsX3BhdGgpIHRoZW4KICAgICAgcmV0dXJuIGZ1bGxfcGF0aAogICAgZW5kCiAgZW5kCiAgZm9yIF8sIGZpbGUgaW4gcGFpcnMoUEFORE9DX1NUQVRFLmlucHV0X2ZpbGVzKSBkbwogICAgaWYgbm90IFBBVEguaXNfYWJzb2x1dGUoZmlsZSkgdGhlbgogICAgICBmaWxlID0gUEFUSC5qb2luKHtwYW5kb2Muc3lzdGVtLmdldF93b3JraW5nX2RpcmVjdG9yeSgpLCBmaWxlX3BhdGh9KQogICAgZW5kCiAgICBsb2NhbCBkaXIgPSBQQVRILmRpcmVjdG9yeShmaWxlKQogICAgbG9jYWwgZnVsbF9wYXRoID0gUEFUSC5qb2luKHtkaXIsIGZpbGVfcGF0aH0pCiAgICBpZiBvcy5leGlzdHMoZnVsbF9wYXRoKSB0aGVuCiAgICAgIHJldHVybiBmdWxsX3BhdGgKICAgIGVuZAogIGVuZAogIHJldHVybiBuaWwKZW5kCgpsb2NhbCBmdW5jdGlvbiBnZXRfb3V0cHV0X2ZpbGUoZmlsZV9wYXRoKQogIGlmIG1lZGlhX2RpciB0aGVuCiAgICBsb2NhbCBuZXdfZmlsZV9uYW1lID0gcGFuZG9jLnV0aWxzLnNoYTEoZmlsZV9wYXRoKQogICAgbG9jYWwgXywgbmV3X2ZpbGVfZXh0ID0gUEFUSC5zcGxpdF9leHRlbnNpb24oZmlsZV9wYXRoKQogICAgZmlsZV9wYXRoID0gbmV3X2ZpbGVfbmFtZSAuLiBuZXdfZmlsZV9leHQKICAgIGxvY2FsIGZ1bGxfcGF0aCA9IFBBVEguam9pbih7bWVkaWFfZGlyLCBmaWxlX3BhdGh9KQogICAgcmV0dXJuIGZ1bGxfcGF0aAogIGVsc2UKICAgIHJldHVybiBuaWwKICBlbmQKZW5kCgpsb2NhbCBmdW5jdGlvbiBleHRyYWN0X21lZGlhKGZpbGVfcGF0aCkKICBvcy5ta2RpcihtZWRpYV9kaXIpCiAgZmlsZV9wYXRoID0gdXJsLmRlY29kZShmaWxlX3BhdGgpCiAgbG9jYWwgYWJzX3BhdGggPSBnZXRfYWJzb2x1dGVfcGF0aChmaWxlX3BhdGgpCiAgbG9jYWwgZmlsZSA9IGdldF9vdXRwdXRfZmlsZShmaWxlX3BhdGgpCiAgaWYgYWJzX3BhdGggYW5kIGZpbGUgdGhlbgogICAgaWYgbm90IG9zLmV4aXN0cyhmaWxlKSB0aGVuCiAgICAgIG9zLmNvcHkoYWJzX3BhdGgsIGZpbGUpCiAgICBlbmQKICAgIGxvY2FsIHJlbF9wYXRoID0gUEFUSC5tYWtlX3JlbGF0aXZlKGZpbGUsIGRvY19kaXIsIGZhbHNlKQogICAgbG9jYWwgcGFydHMgPSBQQVRILnNwbGl0KHJlbF9wYXRoKQogICAgZm9yIGksdiBpbiBpcGFpcnMocGFydHMpIGRvCiAgICAgIHBhcnRzW2ldID0gdXJsLmVuY29kZSh2KQogICAgZW5kCiAgICBsb2NhbCBlbmNvZGVkX3JlbF9wYXRoID0gdGFibGUuY29uY2F0KHBhcnRzLCAiLyIpCiAgICBpZiBNb2RlID09ICdodWdvJyB0aGVuCiAgICAgIGVuY29kZWRfcmVsX3BhdGggPSAnLi4vJyAuLiBlbmNvZGVkX3JlbF9wYXRoCiAgICBlbmQKICAgIHJldHVybiBlbmNvZGVkX3JlbF9wYXRoCiAgZW5kCmVuZAoKbG9jYWwgZnVuY3Rpb24gcmF3KHMpCiAgcmV0dXJuIHBhbmRvYy5SYXdJbmxpbmUoJ21hcmtkb3duJywgcykKZW5kCgpmdW5jdGlvbiBJbWFnZShlbCkKICBsb2NhbCBzcmMgPSBleHRyYWN0X21lZGlhKGVsLnNyYykKICBpZiBzcmMgdGhlbgogICAgZWwuc3JjID0gc3JjCiAgZW5kCiAgcmV0dXJuIGVsCmVuZAoKZnVuY3Rpb24gU3BhY2UoKQogIHJldHVybiByYXcoJyAnKQplbmQKCmZ1bmN0aW9uIFNvZnRCcmVhaygpCiAgcmV0dXJuIHJhdygnXG4nKQplbmQKCmZ1bmN0aW9uIFJhd0lubGluZShlbCkKICBpZiBlbC5mb3JtYXQgPT0gImh0bWwiIHRoZW4KICAgIGVsLmZvcm1hdCA9ICdtYXJrZG93bicKICAgIGVsLnRleHQgPSBzdHJpbmcuZ3N1YihlbC50ZXh0LCAnPGltZ1tePl0rPicsIGZ1bmN0aW9uKGltZykKICAgICAgcmV0dXJuIHN0cmluZy5nc3ViKGltZywgJ3NyYz0iKFteIl0rKSInLCBmdW5jdGlvbih1cmwpCiAgICAgICAgaWYgc3RyaW5nLmZpbmQodXJsLCAnXltIaF1bVHRdW1R0XVtQcF1bU3NdPzovLycpID09IG5pbCAgdGhlbgogICAgICAgICAgbG9jYWwgZXh0cmFjdF9tZWRpYV91cmwgPSBleHRyYWN0X21lZGlhKHVybCkKICAgICAgICAgIGlmIGV4dHJhY3RfbWVkaWFfdXJsIHRoZW4KICAgICAgICAgICAgcmV0dXJuICdzcmM9IicgLi4gZXh0cmFjdF9tZWRpYV91cmwgLi4gJyInCiAgICAgICAgICBlbmQKICAgICAgICAgIHJldHVybiAnMTIzJwogICAgICAgIGVuZAogICAgICAgIHJldHVybiAnc3JjPSInIC4uIHVybCAuLiAnIicKICAgICAgZW5kKQogICAgZW5kKQogIGVuZAogIHJldHVybiBlbAplbmQKCmZ1bmN0aW9uIFJhd0Jsb2NrKGVsKQogIGlmIGVsLmZvcm1hdCA9PSAiaHRtbCIgdGhlbgogICAgZWwuZm9ybWF0ID0gJ21hcmtkb3duJwogIGVuZAogIHJldHVybiBlbAplbmQKCmZ1bmN0aW9uIE1hdGgoZWwpCiAgaWYgTW9kZSA9PSAnaHVnbycgdGhlbgogICAgaWYgZWwubWF0aHR5cGUgPT0gJ0Rpc3BsYXlNYXRoJyB0aGVuCiAgICAgIHJldHVybiByYXcoJ3t7PCBtYXRoamF4ID59fVxuJCQnICAuLiBlbC50ZXh0IC4uICckJFxue3s8L21hdGhqYXggPn19JykKICAgIGVsc2UKICAgICAgZWwudGV4dCA9IHN0cmluZy5nc3ViKGVsLnRleHQsICdcXFtcXHtcXH1dJywgZnVuY3Rpb24gKHYpCiAgICAgICAgcmV0dXJuICdcXCcgLi4gdgogICAgICBlbmQpCiAgICAgIGVsLnRleHQgPSBzdHJpbmcuZ3N1YihlbC50ZXh0LCAnXycsIGZ1bmN0aW9uICh2KQogICAgICAgIHJldHVybiAnXFwnIC4uIHYKICAgICAgZW5kKQogICAgZW5kCiAgZW5kCiAgcmV0dXJuIGVsCmVuZAoKbG9jYWwgZnVuY3Rpb24gaGVhZGVyTGluayhpbnB1dCkKICAtLSBnaXRodWIgc3R5bGUgc2VjdGlvbiBsaW5rCiAgcmV0dXJuICIjIi4uaW5wdXQ6Z3N1YignICcsICctJykKZW5kCgoKbG9jYWwgZnVuY3Rpb24gaW5zZXJ0TGluayhjb250ZW50LCBsaW5rRGVzY3JpcHRpb24pCiAgbG9jYWwgZGVzY3JpcHRpb25UZXh0ID0gdGFibGUuY29uY2F0KGxpbmtEZXNjcmlwdGlvbiwgIiIpCgogIGlmIHN0cmluZy5maW5kKGRlc2NyaXB0aW9uVGV4dCwgJ3wnKSB0aGVuCiAgICBsb2NhbCB0YXJnZXQsIGRlc2MgPSBkZXNjcmlwdGlvblRleHQ6bWF0Y2goIiguKil8KC4qKSIpCiAgICB0YWJsZS5pbnNlcnQoY29udGVudCwgcGFuZG9jLkxpbmsoZGVzYywgaGVhZGVyTGluayh0YXJnZXQpKSkKICBlbHNlCiAgICB0YWJsZS5pbnNlcnQoY29udGVudCwgcGFuZG9jLkxpbmsoZGVzY3JpcHRpb25UZXh0LCBoZWFkZXJMaW5rKGRlc2NyaXB0aW9uVGV4dCkpKQogIGVuZAplbmQKCmZ1bmN0aW9uIFBhcmEoZWwpCiAgbG9jYWwgY29udGVudCA9IGVsLmNvbnRlbnQKICBjb250ZW50ID0gUHJvY2Vzc01hdGgoY29udGVudCkKICBjb250ZW50ID0gUHJvY2Vzc0ludGVybmFsTGlua3MoY29udGVudCkKICBlbC5jb250ZW50ID0gY29udGVudAogIHJldHVybiBlbAplbmQKCmZ1bmN0aW9uIFByb2Nlc3NNYXRoKGVsZW1lbnRzKQogIGxvY2FsIGNvbnRlbnQgPSB7fQogIGxvY2FsIGluX2Rpc3BsYXlfbWF0aCA9IGZhbHNlCiAgZm9yIF8sIGl0ZW0gaW4gcGFpcnMoZWxlbWVudHMpIGRvCiAgICBpZiBpdGVtLnQgPT0gJ1N0cidhbmQgaXRlbS50ZXh0ID09ICIkJCIgdGhlbgogICAgICBpbl9kaXNwbGF5X21hdGggPSBub3QgaW5fZGlzcGxheV9tYXRoCiAgICBlbHNlCiAgICAgIGlmIGluX2Rpc3BsYXlfbWF0aCB0aGVuCiAgICAgICAgaWYgaXRlbS50ID09ICdSYXdJbmxpbmUnIGFuZCBpdGVtLmZvcm1hdCA9PSAndGV4JyB0aGVuCiAgICAgICAgICBsb2NhbCBuID0gcGFuZG9jLk1hdGgoJ0Rpc3BsYXlNYXRoJywgJ1xuJyAuLiBpdGVtLnRleHQgLi4gJ1xuJykKICAgICAgICAgIHRhYmxlLmluc2VydChjb250ZW50LCBNYXRoKG4pKQogICAgICAgIGVsc2UKICAgICAgICAgIHRhYmxlLmluc2VydChjb250ZW50LCBpdGVtKQogICAgICAgIGVuZAogICAgICBlbHNlCiAgICAgICAgdGFibGUuaW5zZXJ0KGNvbnRlbnQsIGl0ZW0pCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCiAgcmV0dXJuIGNvbnRlbnQKZW5kCgpmdW5jdGlvbiBQcm9jZXNzSW50ZXJuYWxMaW5rcyhlbGVtZW50cykKICBsb2NhbCBjb250ZW50ID0ge30KICBsb2NhbCBpbl9zZWN0aW9uX2xpbmsgPSBmYWxzZQogIGxvY2FsIGxpbmtEZXNjcmlwdGlvbiA9IHt9CgogIGZvciBfLCBpdGVtIGluIHBhaXJzKGVsZW1lbnRzKSBkbwogICAgaWYgaXRlbS50ID09ICdTdHInIGFuZCBzdHJpbmcuc3RhcnRzX3dpdGgoaXRlbS50ZXh0LCAnW1sjJykgdGhlbgogICAgICBpbl9zZWN0aW9uX2xpbmsgPSB0cnVlCiAgICAgIHRhYmxlLmluc2VydChsaW5rRGVzY3JpcHRpb24sIHN0cmluZy5zdWIoaXRlbS50ZXh0LCA0KSkKICAgIGVsc2VpZiBpbl9zZWN0aW9uX2xpbmsgdGhlbgogICAgICBpZiBzdHJpbmcuZW5kc193aXRoKGl0ZW0udGV4dCwgJ11dJykgdGhlbgogICAgICAgIHRhYmxlLmluc2VydChsaW5rRGVzY3JpcHRpb24sIHN0cmluZy5zdWIoaXRlbS50ZXh0LCAxLCAtMykpCiAgICAgICAgaW5zZXJ0TGluayhjb250ZW50LCBsaW5rRGVzY3JpcHRpb24pCiAgICAgICAgaW5fc2VjdGlvbl9saW5rID0gZmFsc2UKICAgICAgICBsaW5rRGVzY3JpcHRpb24gPSB7fQogICAgICBlbHNlCiAgICAgICAgdGFibGUuaW5zZXJ0KGxpbmtEZXNjcmlwdGlvbiwgaXRlbS50ZXh0KQogICAgICBlbmQKICAgIGVsc2UKICAgICAgdGFibGUuaW5zZXJ0KGNvbnRlbnQsIGl0ZW0pCiAgICBlbmQKICBlbmQKICByZXR1cm4gY29udGVudAplbmQKCmZ1bmN0aW9uIFBsYWluKGVsKQogIGVsLmNvbnRlbnQgPSBQcm9jZXNzSW50ZXJuYWxMaW5rcyhlbC5jb250ZW50KQogIHJldHVybiBlbAplbmQKCmZ1bmN0aW9uIFBhbmRvYyhlbCkKICByZXR1cm4gZWwKZW5kCg=="),e=>e.charCodeAt(0)),oa=Object.freeze(Object.defineProperty({__proto__:null,default:sa},Symbol.toStringTag,{value:"Module"})),aa=Uint8Array.from(atob("dHJhdmVyc2UgPSAndG9wZG93bicKCm1hdGhfYmxvY2tfdGV4dCA9IG5pbApmdW5jdGlvbiBwcm9jZXNzKGVsKQoKICAgLS0gTWF0aEJsb2NrIHN0YXJ0IG9yIGVuZAogICBpZiBlbC50ID09ICdTdHInIGFuZCBlbC50ZXh0ID09ICckJCcgdGhlbgogICAgIGlmIG1hdGhfYmxvY2tfdGV4dCA9PSBuaWwgdGhlbiAgICAgICAgICAgIC0tIHN0YXJ0CiAgICAgICBtYXRoX2Jsb2NrX3RleHQgPSAnJwogICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGVuZAogICAgICAgbG9jYWwgbWF0aF9ibG9jayA9IHBhbmRvYy5NYXRoKCdEaXNwbGF5TWF0aCcsICdcbicgLi4gbWF0aF9ibG9ja190ZXh0IC4uICdcbicpCiAgICAgICBtYXRoX2Jsb2NrX3RleHQgPSBuaWwKICAgICAgIHJldHVybiBtYXRoX2Jsb2NrCiAgICAgZW5kCiAgICAgcmV0dXJuIHt9CiAgIGVuZAoKICBpZiBtYXRoX2Jsb2NrX3RleHQgdGhlbgogICAgaWYgKGVsLnQgPT0gJ1Jhd0lubGluZScgb3IgZWwudCA9PSAnUmF3QmxvY2snKSBhbmQgZWwuZm9ybWF0ID09ICd0ZXgnIHRoZW4KICAgICAgbWF0aF9ibG9ja190ZXh0ID0gbWF0aF9ibG9ja190ZXh0IC4uIGVsLnRleHQKICAgICAgcmV0dXJuIHt9CiAgICBlbHNlaWYgZWwudCA9PSAnU3RyJyB0aGVuCiAgICAgIG1hdGhfYmxvY2tfdGV4dCA9IG1hdGhfYmxvY2tfdGV4dCAuLiBlbC50ZXh0CiAgICAgIHJldHVybiB7fQogICAgZWxzZWlmIGVsLnQgPT0gJ1NvZnRCcmVhaycgb3IgZWwudCA9PSAnQnVsbGV0TGlzdCcgdGhlbgogICAgICByZXR1cm4ge30KICAgIGVuZAogIGVuZAogIHJldHVybiBlbAplbmQKCmZ1bmN0aW9uIFJhd0lubGluZShlbCkgCiAgcmV0dXJuIHByb2Nlc3MoZWwpCmVuZAoKZnVuY3Rpb24gUmF3QmxvY2soZWwpIAogIHJldHVybiBwcm9jZXNzKGVsKQplbmQKCmZ1bmN0aW9uIFN0cihlbCkKICByZXR1cm4gcHJvY2VzcyhlbCkKZW5kCgpmdW5jdGlvbiBTb2Z0QnJlYWsoZWwpCiAgcmV0dXJuIHByb2Nlc3MoZWwpCmVuZAoKZnVuY3Rpb24gSGVhZGVyKGVsKQogIHJldHVybiBwcm9jZXNzKGVsKQplbmQKCmZ1bmN0aW9uIFBhcmEoZWwpCiAgcmV0dXJuIHByb2Nlc3MoZWwpCmVuZAoKZnVuY3Rpb24gUGxhaW4oZWwpCiAgcmV0dXJuIHByb2Nlc3MoZWwpCmVuZAoKZnVuY3Rpb24gQnVsbGV0TGlzdChlbCkKICByZXR1cm4gcHJvY2VzcyhlbCkKZW5kCgoKCgoKCg=="),e=>e.charCodeAt(0)),ra=Object.freeze(Object.defineProperty({__proto__:null,default:aa},Symbol.toStringTag,{value:"Module"})),da=Uint8Array.from(atob("LS0gbWluaW11bSBzdXBwb3J0ZWQgdmVyc2lvbiBmb3IgZnVsbCBlbnZpcm9ubWVudAotLSBzdXBwb3J0IGlzIDMuOC51bmtvd24geWV0IHRvIGJlIHJlbGVhc2VkIGJ1dCBwcm9iYWJseSAzCmxvY2FsIGVudmlyb25tZW50X2Z1bGx5X3N1cHBvcnRlZF92ZXJzaW9uID0gcGFuZG9jLnR5cGVzLlZlcnNpb24oJzMuOC4zJykKbG9jYWwgZW52aXJvbm1lbnRfcGFydGlhbGx5X3N1cHBvcnRlZF92ZXJzaW9uID0gcGFuZG9jLnR5cGVzLlZlcnNpb24oJzMuOC4wJykKbG9jYWwgaXNfcGFydGlhbGx5X3N1cHBvcnRlZCA9IFBBTkRPQ19WRVJTSU9OID49IGVudmlyb25tZW50X3BhcnRpYWxseV9zdXBwb3J0ZWRfdmVyc2lvbgpsb2NhbCBwcm9ibGFtYXRpY19lbnZpcm9ubWVudHMgPSB7CiAgICBkaXNwbGF5bWF0aCA9IHRydWUsCiAgICBtYXRoID0gdHJ1ZSwKICAgIGVxdWF0aW9uID0gdHJ1ZSwKICAgIFsiZXF1YXRpb24qIl0gPSB0cnVlLAogICAgZ2F0aGVyID0gdHJ1ZSwKICAgIFsiZ2F0aGVyKiJdID0gdHJ1ZSwKICAgIG11bHRsaW5lID0gdHJ1ZSwKICAgIFsibXVsdGxpbmUqIl0gPSB0cnVlLAogICAgZXFuYXJyYXkgPSB0cnVlLAogICAgWyJlcW5hcnJheSoiXSA9IHRydWUsCiAgICBhbGlnbiA9IHRydWUsCiAgICBbImFsaWduKiJdID0gdHJ1ZSwKICAgIGFsaWduYXQgPSB0cnVlLAogICAgWyJhbGlnbmF0KiJdID0gdHJ1ZSwKICAgIGZsYWxpZ24gPSB0cnVlLAogICAgWyJmbGFsaWduKiJdID0gdHJ1ZSwKfQppZiBpc19wYXJ0aWFsbHlfc3VwcG9ydGVkIHRoZW4KICAgIHJldHVybiB7CiAgICAgICAgewogICAgICAgICAgICBNYXRoID0gZnVuY3Rpb24oZWxlbSkKICAgICAgICAgICAgICAgIGlmIGVsZW0udGV4dDpmaW5kKCJeJXMqXFxiZWdpbnsiKSB+PSBuaWwgdGhlbgogICAgICAgICAgICAgICAgICAgIGxvY2FsIHJlcGxhY2VtZW50ID0gcGFuZG9jLnRleHQ6Z3N1YihlbGVtLnRleHQsICJeJXMqXFxiZWdpbnsoLi0pfSIsICJcXGJlZ2lueyUxfSIpOmdzdWIoIlxcZW5keyguLSl9JXMqJCIsICJcXGVuZHslMX0iKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBwYW5kb2MuTWF0aChyZXBsYWNlbWVudCwgZWxlbS5tYXRodHlwZSkKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbQogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGVuZCwKICAgICAgICB9CiAgICB9CmVsc2VpZiBub3QgZW52aXJvbm1lbnRfZnVsbHlfc3VwcG9ydGVkX3ZlcnNpb24gdGhlbgogICAgcmV0dXJuIHsKICAgICAgICB7CiAgICAgICAgICAgIE1hdGggPSBmdW5jdGlvbihlbGVtKQogICAgICAgICAgICAgICAgbG9jYWwgcmVzdWx0ID0gZWxlbS50ZXh0Om1hdGNoKCJeJXMqXFxiZWdpbnsoJWErJSo/KX0iKQogICAgICAgICAgICAgICAgaWYgcmVzdWx0IH49IG5pbCBhbmQgcHJvYmxhbWF0aWNfZW52aXJvbm1lbnRzW3Jlc3VsdF0gfj0gbmlsIHRoZW4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFuZG9jLlJhd0lubGluZSgndGV4JywgZWxlbS50ZXh0KQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZW5kLAogICAgICAgIH0KICAgIH0KZW5kCg=="),e=>e.charCodeAt(0)),ga=Object.freeze(Object.defineProperty({__proto__:null,default:da},Symbol.toStringTag,{value:"Module"})),Za=Uint8Array.from(atob("b3MucGxhdGZvcm0gPSBuaWwKaWYgb3MucGxhdGZvcm0gPT0gbmlsIHRoZW4KICBsb2NhbCBsaWJFeHQgPSBwYWNrYWdlLmNwYXRoOm1hdGNoKCIlcFtcXHwvXT9cXC4lcCglYSspIikKICBpZiBsaWJFeHQgPT0gJ2RsbCcgdGhlbgogICAgb3MucGxhdGZvcm0gPSAiV2luZG93cyIKICBlbHNlaWYgbGliRXh0ID09ICdzbycgdGhlbgogICAgb3MucGxhdGZvcm0gPSAiTGludXgiCiAgZWxzZWlmIGxpYkV4dCA9PSAnZHlsaWInIHRoZW4KICAgIG9zLnBsYXRmb3JtID0gIk1hY09TIgogIGVuZAplbmQKCgpvcy5jb3B5ID0gZnVuY3Rpb24oc3JjLCBkZXN0KQogIGlmIG9zLnBsYXRmb3JtID09ICJXaW5kb3dzIiB0aGVuCiAgICBzcmMgPSBzdHJpbmcuZ3N1YihzcmMsICIvIiwgIlxcIikKICAgIHNyYyA9IG9zLnRleHQudG9lbmNvZGluZyhzcmMpCiAgICBkZXN0ID0gb3MudGV4dC50b2VuY29kaW5nKGRlc3QpCiAgICBvcy5leGVjdXRlKCdjb3B5ICInIC4uIHNyYyAuLiAnIiAiJyAuLiBkZXN0IC4uICciID5OVUwnKQogIGVsc2UKICAgIG9zLmV4ZWN1dGUoJ2NwICInIC4uIHNyYyAuLiAnIiAiJyAuLiBkZXN0IC4uICciJykKICBlbmQKZW5kCgpvcy5ta2RpciA9IGZ1bmN0aW9uKGRpcikKICBpZiBvcy5leGlzdHMoZGlyKSB0aGVuCiAgICByZXR1cm4KICBlbmQKICBpZiBvcy5wbGF0Zm9ybSA9PSAiV2luZG93cyIgdGhlbgogICAgZGlyID0gb3MudGV4dC50b2VuY29kaW5nKGRpcikKICAgIG9zLmV4ZWN1dGUoJ21rZGlyICInIC4uIGRpciAuLiAnIicpCiAgZWxzZQogICAgb3MuZXhlY3V0ZSgnbWtkaXIgLXAgIicgLi4gZGlyIC4uICciJykKICBlbmQKZW5kCgpvcy5leGlzdHMgPSBmdW5jdGlvbihwYXRoKQogIGlmIG9zLnBsYXRmb3JtID09ICJXaW5kb3dzIiB0aGVuCiAgICBwYXRoID0gc3RyaW5nLmdzdWIocGF0aCwgIi8iLCAiXFwiKQogICAgcGF0aCA9IG9zLnRleHQudG9lbmNvZGluZyhwYXRoKQogICAgbG9jYWwgXywgXywgY29kZSA9IG9zLmV4ZWN1dGUoJ2lmIGV4aXN0ICInIC4uIHBhdGggLi4gJyIgKGV4aXQgMCkgZWxzZSAoZXhpdCAxKScpCiAgICByZXR1cm4gY29kZSA9PSAwCiAgZWxzZQogICAgbG9jYWwgXywgXywgY29kZSA9IG9zLmV4ZWN1dGUoJ3Rlc3QgLWUgIicgLi4gcGF0aCAuLiAnIicpCiAgICByZXR1cm4gY29kZSA9PSAwCiAgZW5kCmVuZAoKc3RyaW5nLnN0YXJ0c193aXRoID0gZnVuY3Rpb24oc3RyLCBzdGFydCkKICAgcmV0dXJuIHN0cjpzdWIoMSwgI3N0YXJ0KSA9PSBzdGFydAplbmQKCnN0cmluZy5lbmRzX3dpdGggPSBmdW5jdGlvbihzdHIsIGVuZGluZykKICAgcmV0dXJuIGVuZGluZyA9PSAiIiBvciBzdHI6c3ViKC0jZW5kaW5nKSA9PSBlbmRpbmcKZW5kCgoKcmV0dXJuIHsKICBvcyA9IG9zLAogIHN0cmluZyA9IHN0cmluZwp9"),e=>e.charCodeAt(0)),ba=Object.freeze(Object.defineProperty({__proto__:null,default:Za},Symbol.toStringTag,{value:"Module"})),ma=Uint8Array.from(atob("bG9jYWwgZnVuY3Rpb24gZW5jb2RlIChzdHIpCiAgc3RyID0gc3RyaW5nLmdzdWIgKHN0ciwgIihbXjAtOWEtekEtWiAhJygpKi5ffi1dKSIsIC0tIGxvY2FsZSBpbmRlcGVuZGVudAogICAgZnVuY3Rpb24gKGMpIHJldHVybiBzdHJpbmcuZm9ybWF0ICgiJSUlMDJYIiwgc3RyaW5nLmJ5dGUoYykpIGVuZCkKICBzdHIgPSBzdHJpbmcuZ3N1YiAoc3RyLCAiICIsICIlJTIwIikKICByZXR1cm4gc3RyCiBlbmQKCgpsb2NhbCBmdW5jdGlvbiBkZWNvZGUgKHN0cikKICBzdHIgPSBzdHJpbmcuZ3N1YiAoc3RyLCAiJSUyMCIsICIgIikKICBzdHIgPSBzdHJpbmcuZ3N1YiAoc3RyLCAiJSUoJXgleCkiLCBmdW5jdGlvbihoKSByZXR1cm4gc3RyaW5nLmNoYXIodG9udW1iZXIoaCwxNikpIGVuZCkKICByZXR1cm4gc3RyCmVuZAoKcmV0dXJuIHsKICBlbmNvZGUgPSBlbmNvZGUsCiAgZGVjb2RlID0gZGVjb2RlCn0="),e=>e.charCodeAt(0)),ua=Object.freeze(Object.defineProperty({__proto__:null,default:ma},Symbol.toStringTag,{value:"Module"})),Ga=Uint8Array.from(atob("JSUKJSBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDIzLCBQYXNjYWwgV2FnbGVyOwolIENvcHlyaWdodCAoYykgMjAxNCAtIDIwMjMsIEpvaG4gTWFjRmFybGFuZQolCiUgQWxsIHJpZ2h0cyByZXNlcnZlZC4KJQolIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAolIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwolIGFyZSBtZXQ6CiUKJSAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiUgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgolCiUgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAolIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKJSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgolCiUgLSBOZWl0aGVyIHRoZSBuYW1lIG9mIEpvaG4gTWFjRmFybGFuZSBub3IgdGhlIG5hbWVzIG9mIG90aGVyCiUgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCiUgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgolCiUgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwolICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiUgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKJSBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQolIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKJSBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLAolIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKJSBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCiUgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCiUgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4KJSBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKJSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KJSUKCiUlCiUgVGhpcyBpcyB0aGUgRWlzdm9nZWwgcGFuZG9jIExhVGVYIHRlbXBsYXRlLgolCiUgRm9yIHVzYWdlIGluZm9ybWF0aW9uIGFuZCBleGFtcGxlcyB2aXNpdCB0aGUgb2ZmaWNpYWwgR2l0SHViIHBhZ2U6CiUgaHR0cHM6Ly9naXRodWIuY29tL1dhbmRtYWxmYXJiZS9wYW5kb2MtbGF0ZXgtdGVtcGxhdGUKJSUKCiUgT3B0aW9ucyBmb3IgcGFja2FnZXMgbG9hZGVkIGVsc2V3aGVyZQpcUGFzc09wdGlvbnNUb1BhY2thZ2V7dW5pY29kZSRmb3IoaHlwZXJyZWZvcHRpb25zKSQsJGh5cGVycmVmb3B0aW9ucyQkZW5kZm9yJH17aHlwZXJyZWZ9ClxQYXNzT3B0aW9uc1RvUGFja2FnZXtoeXBoZW5zfXt1cmx9ClxQYXNzT3B0aW9uc1RvUGFja2FnZXtkdmlwc25hbWVzLHN2Z25hbWVzLHgxMW5hbWVzLHRhYmxlfXt4Y29sb3J9CiRpZihDSkttYWluZm9udCkkClxQYXNzT3B0aW9uc1RvUGFja2FnZXtzcGFjZX17eGVDSkt9Clx1c2VwYWNrYWdle2RhdGV0aW1lfQoKJGVuZGlmJAolClxkb2N1bWVudGNsYXNzWwokaWYoZm9udHNpemUpJAogICRmb250c2l6ZSQsCiRlbmRpZiQKJGlmKHBhcGVyc2l6ZSkkCiAgJHBhcGVyc2l6ZSRwYXBlciwKJGVsc2UkCiAgcGFwZXI9YTQsCiRlbmRpZiQKJGlmKGJlYW1lcikkCiAgaWdub3Jlbm9uZnJhbWV0ZXh0LAokaWYoaGFuZG91dCkkCiAgaGFuZG91dCwKJGVuZGlmJAokaWYoYXNwZWN0cmF0aW8pJAogIGFzcGVjdHJhdGlvPSRhc3BlY3RyYXRpbyQsCiRlbmRpZiQKJGVuZGlmJAokZm9yKGNsYXNzb3B0aW9uKSQKICAkY2xhc3NvcHRpb24kJHNlcCQsCiRlbmRmb3IkCiAgLGNhcHRpb25zPXRhYmxlaGVhZGluZwpdeyRpZihiZWFtZXIpJCRkb2N1bWVudGNsYXNzJCRlbHNlJCRpZihib29rKSRzY3Jib29rJGVsc2Ukc2NyYXJ0Y2wkZW5kaWYkJGVuZGlmJH0KJGlmKGJlYW1lcikkCiRpZihiYWNrZ3JvdW5kLWltYWdlKSQKXHVzZWJhY2tncm91bmR0ZW1wbGF0ZXslCiAgXGluY2x1ZGVncmFwaGljc1t3aWR0aD1ccGFwZXJ3aWR0aF17JGJhY2tncm91bmQtaW1hZ2UkfSUKfQolIEluIGJlYW1lciBiYWNrZ3JvdW5kLWltYWdlIGRvZXMgbm90IHdvcmsgd2VsbCB3aGVuIG90aGVyIGltYWdlcyBhcmUgdXNlZCwgc28gdGhpcyBpcyB0aGUgd29ya2Fyb3VuZApccGdmZGVjbGFyZWltYWdlW3dpZHRoPVxwYXBlcndpZHRoLGhlaWdodD1ccGFwZXJoZWlnaHRde2JhY2tncm91bmR9eyRiYWNrZ3JvdW5kLWltYWdlJH0KXHVzZWJhY2tncm91bmR0ZW1wbGF0ZXtccGdmdXNlaW1hZ2V7YmFja2dyb3VuZH19CiRlbmRpZiQKXHVzZXBhY2thZ2V7cGdmcGFnZXN9ClxzZXRiZWFtZXJ0ZW1wbGF0ZXtjYXB0aW9ufVtudW1iZXJlZF0KXHNldGJlYW1lcnRlbXBsYXRle2NhcHRpb24gbGFiZWwgc2VwYXJhdG9yfXs6IH0KXHNldGJlYW1lcmNvbG9ye2NhcHRpb24gbmFtZX17Zmc9bm9ybWFsIHRleHQuZmd9ClxiZWFtZXJ0ZW1wbGF0ZW5hdmlnYXRpb25zeW1ib2xzJGlmKG5hdmlnYXRpb24pJCRuYXZpZ2F0aW9uJCRlbHNlJGVtcHR5JGVuZGlmJAokZm9yKGJlYW1lcm9wdGlvbikkClxzZXRiZWFtZXJvcHRpb257JGJlYW1lcm9wdGlvbiR9CiRlbmRmb3IkCiUgUHJldmVudCBzbGlkZSBicmVha3MgaW4gdGhlIG1pZGRsZSBvZiBhIHBhcmFncmFwaApcd2lkb3dwZW5hbHRpZXMgMSAxMDAwMApccmFnZ2VkYm90dG9tCiRpZihzZWN0aW9uLXRpdGxlcykkClxzZXRiZWFtZXJ0ZW1wbGF0ZXtwYXJ0IHBhZ2V9ewogIFxjZW50ZXJpbmcKICBcYmVnaW57YmVhbWVyY29sb3Jib3h9W3NlcD0xNnB0LGNlbnRlcl17cGFydCB0aXRsZX0KICAgIFx1c2ViZWFtZXJmb250e3BhcnQgdGl0bGV9XGluc2VydHBhcnRccGFyCiAgXGVuZHtiZWFtZXJjb2xvcmJveH0KfQpcc2V0YmVhbWVydGVtcGxhdGV7c2VjdGlvbiBwYWdlfXsKICBcY2VudGVyaW5nCiAgXGJlZ2lue2JlYW1lcmNvbG9yYm94fVtzZXA9MTJwdCxjZW50ZXJde3BhcnQgdGl0bGV9CiAgICBcdXNlYmVhbWVyZm9udHtzZWN0aW9uIHRpdGxlfVxpbnNlcnRzZWN0aW9uXHBhcgogIFxlbmR7YmVhbWVyY29sb3Jib3h9Cn0KXHNldGJlYW1lcnRlbXBsYXRle3N1YnNlY3Rpb24gcGFnZX17CiAgXGNlbnRlcmluZwogIFxiZWdpbntiZWFtZXJjb2xvcmJveH1bc2VwPThwdCxjZW50ZXJde3BhcnQgdGl0bGV9CiAgICBcdXNlYmVhbWVyZm9udHtzdWJzZWN0aW9uIHRpdGxlfVxpbnNlcnRzdWJzZWN0aW9uXHBhcgogIFxlbmR7YmVhbWVyY29sb3Jib3h9Cn0KXEF0QmVnaW5QYXJ0ewogIFxmcmFtZXtccGFydHBhZ2V9Cn0KXEF0QmVnaW5TZWN0aW9uewogIFxpZmJpYmxpb2dyYXBoeQogIFxlbHNlCiAgICBcZnJhbWV7XHNlY3Rpb25wYWdlfQogIFxmaQp9ClxBdEJlZ2luU3Vic2VjdGlvbnsKICBcZnJhbWV7XHN1YnNlY3Rpb25wYWdlfQp9CiRlbmRpZiQKJGVuZGlmJAokaWYoYmVhbWVyYXJ0aWNsZSkkClx1c2VwYWNrYWdle2JlYW1lcmFydGljbGV9ICUgbmVlZHMgdG8gYmUgbG9hZGVkIGZpcnN0CiRlbmRpZiQKXHVzZXBhY2thZ2V7YW1zbWF0aCxhbXNzeW1ifQokaWYobGluZXN0cmV0Y2gpJApcdXNlcGFja2FnZXtzZXRzcGFjZX0KJGVsc2UkCiUgVXNlIHNldHNwYWNlIGFueXdheSBiZWNhdXNlIHdlIGNoYW5nZSB0aGUgZGVmYXVsdCBsaW5lIHNwYWNpbmcuCiUgVGhlIHNwYWNpbmcgaXMgY2hhbmdlZCBlYXJseSB0byBhZmZlY3QgdGhlIHRpdGxlcGFnZSBhbmQgdGhlIFRPQy4KXHVzZXBhY2thZ2V7c2V0c3BhY2V9ClxzZXRzdHJldGNoezEuMn0KJGVuZGlmJApcdXNlcGFja2FnZXtpZnRleH0KXGlmUERGVGVYCiAgXHVzZXBhY2thZ2VbJGlmKGZvbnRlbmMpJCRmb250ZW5jJCRlbHNlJFQxJGVuZGlmJF17Zm9udGVuY30KICBcdXNlcGFja2FnZVt1dGY4XXtpbnB1dGVuY30KICBcdXNlcGFja2FnZXt0ZXh0Y29tcH0gJSBwcm92aWRlIGV1cm8gYW5kIG90aGVyIHN5bWJvbHMKXGVsc2UgJSBpZiBsdWF0ZXggb3IgeGV0ZXgKJGlmKG1hdGhzcGVjKSQKICBcaWZYZVRlWAogICAgXHVzZXBhY2thZ2V7bWF0aHNwZWN9ICUgdGhpcyBhbHNvIGxvYWRzIGZvbnRzcGVjCiAgXGVsc2UKICAgIFx1c2VwYWNrYWdle3VuaWNvZGUtbWF0aH0gJSB0aGlzIGFsc28gbG9hZHMgZm9udHNwZWMKICBcZmkKJGVsc2UkCiAgXHVzZXBhY2thZ2V7dW5pY29kZS1tYXRofSAlIHRoaXMgYWxzbyBsb2FkcyBmb250c3BlYwokZW5kaWYkCiAgXGRlZmF1bHRmb250ZmVhdHVyZXN7U2NhbGU9TWF0Y2hMb3dlcmNhc2V9JC0tIG11c3QgY29tZSBiZWZvcmUgQmVhbWVyIHRoZW1lCiAgXGRlZmF1bHRmb250ZmVhdHVyZXNbXHJtZmFtaWx5XXtMaWdhdHVyZXM9VGVYLFNjYWxlPTF9ClxmaQokaWYoZm9udGZhbWlseSkkCiRlbHNlJAokLS0gU2V0IGRlZmF1bHQgZm9udCBiZWZvcmUgQmVhbWVyIHRoZW1lIHNvIHRoZSB0aGVtZSBjYW4gb3ZlcnJpZGUgaXQKXHVzZXBhY2thZ2V7bG1vZGVybn0KJGVuZGlmJAokLS0gU2V0IEJlYW1lciB0aGVtZSBiZWZvcmUgdXNlciBmb250IHNldHRpbmdzIHNvIHRoZXkgY2FuIG92ZXJyaWRlIHRoZW1lCiRpZihiZWFtZXIpJAokaWYodGhlbWUpJApcdXNldGhlbWVbJGZvcih0aGVtZW9wdGlvbnMpJCR0aGVtZW9wdGlvbnMkJHNlcCQsJGVuZGZvciRdeyR0aGVtZSR9CiRlbmRpZiQKJGlmKGNvbG9ydGhlbWUpJApcdXNlY29sb3J0aGVtZXskY29sb3J0aGVtZSR9CiRlbmRpZiQKJGlmKGZvbnR0aGVtZSkkClx1c2Vmb250dGhlbWV7JGZvbnR0aGVtZSR9CiRlbmRpZiQKJGlmKG1haW5mb250KSQKXHVzZWZvbnR0aGVtZXtzZXJpZn0gJSB1c2UgbWFpbmZvbnQgcmF0aGVyIHRoYW4gc2Fuc2ZvbnQgZm9yIHNsaWRlIHRleHQKJGVuZGlmJAokaWYoaW5uZXJ0aGVtZSkkClx1c2Vpbm5lcnRoZW1leyRpbm5lcnRoZW1lJH0KJGVuZGlmJAokaWYob3V0ZXJ0aGVtZSkkClx1c2VvdXRlcnRoZW1leyRvdXRlcnRoZW1lJH0KJGVuZGlmJAokZW5kaWYkCiQtLSBVc2VyIGZvbnQgc2V0dGluZ3MgKG11c3QgY29tZSBhZnRlciBkZWZhdWx0IGZvbnQgYW5kIEJlYW1lciB0aGVtZSkKJGlmKGZvbnRmYW1pbHkpJApcdXNlcGFja2FnZVskZm9yKGZvbnRmYW1pbHlvcHRpb25zKSQkZm9udGZhbWlseW9wdGlvbnMkJHNlcCQsJGVuZGZvciRdeyRmb250ZmFtaWx5JH0KJGVuZGlmJApcaWZQREZUZVhcZWxzZQogICUgeGV0ZXgvbHVhdGV4IGZvbnQgc2VsZWN0aW9uCiRpZihtYWluZm9udCkkCiAgXHNldG1haW5mb250WyRmb3IobWFpbmZvbnRvcHRpb25zKSQkbWFpbmZvbnRvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskbWFpbmZvbnQkfQokZW5kaWYkCiRpZihzYW5zZm9udCkkCiAgXHNldHNhbnNmb250WyRmb3Ioc2Fuc2ZvbnRvcHRpb25zKSQkc2Fuc2ZvbnRvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskc2Fuc2ZvbnQkfQokZW5kaWYkCiRpZihtb25vZm9udCkkCiAgXHNldG1vbm9mb250WyRmb3IobW9ub2ZvbnRvcHRpb25zKSQkbW9ub2ZvbnRvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskbW9ub2ZvbnQkfQokZW5kaWYkCiRmb3IoZm9udGZhbWlsaWVzKSQKICBcbmV3Zm9udGZhbWlseXskZm9udGZhbWlsaWVzLm5hbWUkfVskZm9yKGZvbnRmYW1pbGllcy5vcHRpb25zKSQkZm9udGZhbWlsaWVzLm9wdGlvbnMkJHNlcCQsJGVuZGZvciRdeyRmb250ZmFtaWxpZXMuZm9udCR9CiRlbmRmb3IkCiRpZihtYXRoZm9udCkkCiRpZihtYXRoc3BlYykkCiAgXGlmWGVUZVgKICAgIFxzZXRtYXRoZm9udChEaWdpdHMsTGF0aW4sR3JlZWspWyRmb3IobWF0aGZvbnRvcHRpb25zKSQkbWF0aGZvbnRvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskbWF0aGZvbnQkfQogIFxlbHNlCiAgICBcc2V0bWF0aGZvbnRbJGZvcihtYXRoZm9udG9wdGlvbnMpJCRtYXRoZm9udG9wdGlvbnMkJHNlcCQsJGVuZGZvciRdeyRtYXRoZm9udCR9CiAgXGZpCiRlbHNlJAogIFxzZXRtYXRoZm9udFskZm9yKG1hdGhmb250b3B0aW9ucykkJG1hdGhmb250b3B0aW9ucyQkc2VwJCwkZW5kZm9yJF17JG1hdGhmb250JH0KJGVuZGlmJAokZW5kaWYkCiRpZihDSkttYWluZm9udCkkCiAgXGlmWGVUZVgKICAgIFx1c2VwYWNrYWdle3hlQ0pLfQogICAgXHNldENKS21haW5mb250WyRmb3IoQ0pLb3B0aW9ucykkJENKS29wdGlvbnMkJHNlcCQsJGVuZGZvciRdeyRDSkttYWluZm9udCR9CiAgICAkaWYoQ0pLc2Fuc2ZvbnQpJAogICAgICBcc2V0Q0pLc2Fuc2ZvbnRbJGZvcihDSktvcHRpb25zKSQkQ0pLb3B0aW9ucyQkc2VwJCwkZW5kZm9yJF17JENKS3NhbnNmb250JH0KICAgICRlbmRpZiQKICAgICRpZihDSkttb25vZm9udCkkCiAgICAgIFxzZXRDSkttb25vZm9udFskZm9yKENKS29wdGlvbnMpJCRDSktvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskQ0pLbW9ub2ZvbnQkfQogICAgJGVuZGlmJAogIFxmaQokZW5kaWYkCiRpZihsdWF0ZXhqYXByZXNldG9wdGlvbnMpJAogIFxpZkx1YVRlWAogICAgXHVzZXBhY2thZ2VbJGZvcihsdWF0ZXhqYXByZXNldG9wdGlvbnMpJCRsdWF0ZXhqYXByZXNldG9wdGlvbnMkJHNlcCQsJGVuZGZvciRde2x1YXRleGphLXByZXNldH0KICBcZmkKJGVuZGlmJAokaWYoQ0pLbWFpbmZvbnQpJAogIFxpZkx1YVRlWAogICAgXHVzZXBhY2thZ2VbJGZvcihsdWF0ZXhqYWZvbnRzcGVjb3B0aW9ucykkJGx1YXRleGphZm9udHNwZWNvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXtsdWF0ZXhqYS1mb250c3BlY30KICAgIFxzZXRtYWluamZvbnRbJGZvcihDSktvcHRpb25zKSQkQ0pLb3B0aW9ucyQkc2VwJCwkZW5kZm9yJF17JENKS21haW5mb250JH0KICBcZmkKJGVuZGlmJApcZmkKJGlmKHplcm8td2lkdGgtbm9uLWpvaW5lcikkCiUlIFN1cHBvcnQgZm9yIHplcm8td2lkdGggbm9uLWpvaW5lciBjaGFyYWN0ZXJzLgpcbWFrZWF0bGV0dGVyClxkZWZcemVyb3dpZHRobm9uam9pbmVyeyUKICAlIFByZXZlbnQgbGlnYXR1cmVzIGFuZCBhZGp1c3Qga2VybmluZywgYnV0IHN0aWxsIHN1cHBvcnQgaHlwaGVuYXRpbmcuCiAgXHRleG9ycGRmc3RyaW5neyUKICAgIFxUZXh0T3JNYXRoe1xub2JyZWFrXGRpc2NyZXRpb25hcnl7LX17fXtca2Vybi4wM2VtfSUKICAgICAgXGlmdm1vZGVcZWxzZVxub2JyZWFrXGhza2lwXHpAc2tpcFxmaX17fSUKICB9e30lCn0KXG1ha2VhdG90aGVyClxpZlBERlRlWAogIFxEZWNsYXJlVW5pY29kZUNoYXJhY3RlcnsyMDBDfXtcemVyb3dpZHRobm9uam9pbmVyfQpcZWxzZQogIFxjYXRjb2RlYF5eXl4yMDBjPVxhY3RpdmUKICBccHJvdGVjdGVkXGRlZiBeXl5eMjAwY3tcemVyb3dpZHRobm9uam9pbmVyfQpcZmkKJSUgRW5kIG9mIFpXTkogc3VwcG9ydAokZW5kaWYkCiUgVXNlIHVwcXVvdGUgaWYgYXZhaWxhYmxlLCBmb3Igc3RyYWlnaHQgcXVvdGVzIGluIHZlcmJhdGltIGVudmlyb25tZW50cwpcSWZGaWxlRXhpc3Rze3VwcXVvdGUuc3R5fXtcdXNlcGFja2FnZXt1cHF1b3RlfX17fQpcSWZGaWxlRXhpc3Rze21pY3JvdHlwZS5zdHl9eyUgdXNlIG1pY3JvdHlwZSBpZiBhdmFpbGFibGUKICBcdXNlcGFja2FnZVskZm9yKG1pY3JvdHlwZW9wdGlvbnMpJCRtaWNyb3R5cGVvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXttaWNyb3R5cGV9CiAgXFVzZU1pY3JvdHlwZVNldFtwcm90cnVzaW9uXXtiYXNpY21hdGh9ICUgZGlzYWJsZSBwcm90cnVzaW9uIGZvciB0dCBmb250cwp9e30KJGlmKGluZGVudCkkCiRlbHNlJAoKXHVzZXBhY2thZ2V7cGdmcGFnZXN9IApcdXNlcGFja2FnZVtleHBvcnRde2FkanVzdGJveH0KXHVzZXBhY2thZ2V7Z3JhcGhpY3h9Clx1c2VwYWNrYWdle3JhZ2dlZDJlfQpcbWFrZWF0bGV0dGVyClxAaWZ1bmRlZmluZWR7S09NQUNsYXNzTmFtZX17JSBpZiBub24tS09NQSBjbGFzcwogIFxJZkZpbGVFeGlzdHN7cGFyc2tpcC5zdHl9eyUKICAgIFx1c2VwYWNrYWdle3BhcnNraXB9CiAgfXslIGVsc2UKICAgIFxzZXRsZW5ndGh7XHBhcmluZGVudH17MHB0fQogICAgXHNldGxlbmd0aHtccGFyc2tpcH17NnB0IHBsdXMgMnB0IG1pbnVzIDFwdH19Cn17JSBpZiBLT01BIGNsYXNzCiAgXEtPTUFvcHRpb25ze3BhcnNraXA9aGFsZn19ClxtYWtlYXRvdGhlcgokZW5kaWYkCiRpZih2ZXJiYXRpbS1pbi1ub3RlKSQKXHVzZXBhY2thZ2V7ZmFuY3l2cmJ9CiRlbmRpZiQKXHVzZXBhY2thZ2V7eGNvbG9yfQpcZGVmaW5lY29sb3J7ZGVmYXVsdC1saW5rY29sb3J9e0hUTUx9e0E1MDAwMH0KXGRlZmluZWNvbG9ye2RlZmF1bHQtZmlsZWNvbG9yfXtIVE1MfXtBNTAwMDB9ClxkZWZpbmVjb2xvcntkZWZhdWx0LWNpdGVjb2xvcn17SFRNTH17NDA3N0MwfQpcZGVmaW5lY29sb3J7ZGVmYXVsdC11cmxjb2xvcn17SFRNTH17NDA3N0MwfQokaWYoZm9vdG5vdGVzLXByZXR0eSkkCiUgbG9hZCBmb290bWlzYyBpbiBvcmRlciB0byBjdXN0b21pemUgZm9vdG5vdGVzIChmb290bWlzYyBoYXMgdG8gYmUgbG9hZGVkIGJlZm9yZSBoeXBlcnJlZiwgY2YuIGh0dHBzOi8vdGV4LnN0YWNrZXhjaGFuZ2UuY29tL2EvMTY5MTI0LzE0NDA4NykKXHVzZXBhY2thZ2VbaGFuZyxmbHVzaG1hcmdpbixib3R0b20sbXVsdGlwbGVde2Zvb3RtaXNjfQpcc2V0bGVuZ3Roe1xmb290bm90ZW1hcmdpbn17MC44ZW19ICUgc2V0IHNwYWNlIGJldHdlZW4gZm9vdG5vdGUgbnIgYW5kIHRleHQKXHNldGxlbmd0aHtcZm9vdG5vdGVzZXB9e1xiYXNlbGluZXNraXB9ICUgc2V0IHNwYWNlIGJldHdlZW4gbXVsdGlwbGUgZm9vdG5vdGVzClxzZXRsZW5ndGh7XHNraXBcZm9vdGluc317MC4zY219ICUgc2V0IHNwYWNlIGJldHdlZW4gcGFnZSBjb250ZW50IGFuZCBmb290bm90ZQpcc2V0bGVuZ3Roe1xmb290c2tpcH17MC45Y219ICUgc2V0IHNwYWNlIGJldHdlZW4gZm9vdG5vdGUgYW5kIHBhZ2UgYm90dG9tCiRlbmRpZiQKJGlmKGdlb21ldHJ5KSQKJGlmKGJlYW1lcikkClxnZW9tZXRyeXskZm9yKGdlb21ldHJ5KSQkZ2VvbWV0cnkkJHNlcCQsJGVuZGZvciR9CiRlbHNlJApcdXNlcGFja2FnZVskZm9yKGdlb21ldHJ5KSQkZ2VvbWV0cnkkJHNlcCQsJGVuZGZvciRde2dlb21ldHJ5fQokZW5kaWYkCiRlbHNlJAokaWYoYmVhbWVyKSQKJGVsc2UkClx1c2VwYWNrYWdlW21hcmdpbj0yLjVjbSxpbmNsdWRlaGVhZD10cnVlLGluY2x1ZGVmb290PXRydWUsY2VudGVyaW5nLCRmb3IoZ2VvbWV0cnkpJCRnZW9tZXRyeSQkc2VwJCwkZW5kZm9yJF17Z2VvbWV0cnl9CiRlbmRpZiQKJGVuZGlmJAokaWYodGl0bGVwYWdlLWxvZ28pJApcdXNlcGFja2FnZVtleHBvcnRde2FkanVzdGJveH0KXHVzZXBhY2thZ2V7Z3JhcGhpY3h9CiRlbmRpZiQKJGlmKGJlYW1lcikkClxuZXdpZlxpZmJpYmxpb2dyYXBoeQokZW5kaWYkCiRpZihsaXN0aW5ncykkClx1c2VwYWNrYWdle2xpc3RpbmdzfQpcbmV3Y29tbWFuZHtccGFzc3Rocm91Z2h9WzFdeyMxfQpcbHN0c2V0e2RlZmF1bHRkaWFsZWN0PVs1LjNdTHVhfQpcbHN0c2V0e2RlZmF1bHRkaWFsZWN0PVt4ODZtYXNtXUFzc2VtYmxlcn0KJGVuZGlmJAokaWYobGlzdGluZ3Mtbm8tcGFnZS1icmVhaykkClx1c2VwYWNrYWdle2V0b29sYm94fQpcQmVmb3JlQmVnaW5FbnZpcm9ubWVudHtsc3RsaXN0aW5nfXtccGFyXG5vaW5kZW50XGJlZ2lue21pbmlwYWdlfXtcbGluZXdpZHRofX0KXEFmdGVyRW5kRW52aXJvbm1lbnR7bHN0bGlzdGluZ317XGVuZHttaW5pcGFnZX1ccGFyXGFkZHZzcGFjZXtcdG9wc2tpcH19CiRlbmRpZiQKJGlmKGxocykkClxsc3RuZXdlbnZpcm9ubWVudHtjb2RlfXtcbHN0c2V0e2xhbmd1YWdlPUhhc2tlbGwsYmFzaWNzdHlsZT1cc21hbGxcdHRmYW1pbHl9fXt9CiRlbmRpZiQKJGlmKGhpZ2hsaWdodGluZy1tYWNyb3MpJAokaGlnaGxpZ2h0aW5nLW1hY3JvcyQKCiUgV29ya2Fyb3VuZC9idWdmaXggZnJvbSBqYW5uaWNrMC4KJSBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2pnbS9wYW5kb2MvaXNzdWVzLzQzMDIjaXNzdWVjb21tZW50LTM2MDY2OTAxMykKJSBvciBodHRwczovL2dpdGh1Yi5jb20vV2FuZG1hbGZhcmJlL3BhbmRvYy1sYXRleC10ZW1wbGF0ZS9pc3N1ZXMvMgolCiUgUmVkZWZpbmUgdGhlIHZlcmJhdGltIGVudmlyb25tZW50ICdIaWdobGlnaHRpbmcnIHRvIGJyZWFrIGxvbmcgbGluZXMgKHdpdGgKJSB0aGUgaGVscCBvZiBmdmV4dHJhKS4gUmVkZWZpbml0aW9uIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IGlzIHVubGlrZWx5IHRoYXQKJSBwYW5kb2MgaW5jbHVkZXMgZnZleHRyYSBpbiB0aGUgZGVmYXVsdCB0ZW1wbGF0ZS4KXHVzZXBhY2thZ2V7ZnZleHRyYX0KXERlZmluZVZlcmJhdGltRW52aXJvbm1lbnR7SGlnaGxpZ2h0aW5nfXtWZXJiYXRpbX17YnJlYWtsaW5lcyxmb250c2l6ZT0kaWYoY29kZS1ibG9jay1mb250LXNpemUpJCRjb2RlLWJsb2NrLWZvbnQtc2l6ZSQkZWxzZSRcc21hbGwkZW5kaWYkLGNvbW1hbmRjaGFycz1cXFx7XH19CgokZW5kaWYkCiRpZih0YWJsZXMpJApcdXNlcGFja2FnZXtsb25ndGFibGUsYm9va3RhYnMsYXJyYXl9CiRpZihtdWx0aXJvdykkClx1c2VwYWNrYWdle211bHRpcm93fQokZW5kaWYkClx1c2VwYWNrYWdle2NhbGN9ICUgZm9yIGNhbGN1bGF0aW5nIG1pbmlwYWdlIHdpZHRocwokaWYoYmVhbWVyKSQKXHVzZXBhY2thZ2V7Y2FwdGlvbn0KJSBNYWtlIGNhcHRpb24gcGFja2FnZSB3b3JrIHdpdGggbG9uZ3RhYmxlClxtYWtlYXRsZXR0ZXIKXGRlZlxmbnVtQHRhYmxle1x0YWJsZW5hbWV+XHRoZXRhYmxlfQpcbWFrZWF0b3RoZXIKJGVsc2UkCiUgQ29ycmVjdCBvcmRlciBvZiB0YWJsZXMgYWZ0ZXIgXHBhcmFncmFwaCBvciBcc3VicGFyYWdyYXBoClx1c2VwYWNrYWdle2V0b29sYm94fQpcbWFrZWF0bGV0dGVyClxwYXRjaGNtZFxsb25ndGFibGV7XHBhcn17XGlmQG5vc2tpcHNlY1xtYm94e31cZmlccGFyfXt9e30KXG1ha2VhdG90aGVyCiUgQWxsb3cgZm9vdG5vdGVzIGluIGxvbmd0YWJsZSBoZWFkL2Zvb3QKXElmRmlsZUV4aXN0c3tmb290bm90ZWh5cGVyLnN0eX17XHVzZXBhY2thZ2V7Zm9vdG5vdGVoeXBlcn19e1x1c2VwYWNrYWdle2Zvb3Rub3RlfX0KXG1ha2VzYXZlbm90ZWVudntsb25ndGFibGV9CiRlbmRpZiQKJGVuZGlmJAolIGFkZCBiYWNrbGlua3MgdG8gZm9vdG5vdGUgcmVmZXJlbmNlcywgY2YuIGh0dHBzOi8vdGV4LnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8zMDIyNjYvbWFrZS1mb290bm90ZS1jbGlja2FibGUtYm90aC13YXlzCiRpZihmb290bm90ZXMtZGlzYWJsZS1iYWNrbGlua3MpJAokZWxzZSQKXHVzZXBhY2thZ2V7Zm9vdG5vdGViYWNrcmVmfQokZW5kaWYkCiRpZihncmFwaGljcykkClx1c2VwYWNrYWdle2dyYXBoaWN4fQpcbWFrZWF0bGV0dGVyClxuZXdzYXZlYm94XHBhbmRvY0Bib3gKXG5ld2NvbW1hbmQqXHBhbmRvY2JvdW5kZWRbMV17JSBzY2FsZXMgaW1hZ2UgdG8gZml0IGluIHRleHQgaGVpZ2h0L3dpZHRoCiAgXHNib3hccGFuZG9jQGJveHsjMX0lCiAgXEdzY2FsZUBkaXZcQHRlbXBhe1x0ZXh0aGVpZ2h0fXtcZGltZXhwclxodFxwYW5kb2NAYm94K1xkcFxwYW5kb2NAYm94XHJlbGF4fSUKICBcR3NjYWxlQGRpdlxAdGVtcGJ7XGxpbmV3aWR0aH17XHdkXHBhbmRvY0Bib3h9JQogIFxpZmRpbVxAdGVtcGJccEA8XEB0ZW1wYVxwQFxsZXRcQHRlbXBhXEB0ZW1wYlxmaSUgc2VsZWN0IHRoZSBzbWFsbGVyIG9mIGJvdGgKICBcaWZkaW1cQHRlbXBhXHBAPFxwQFxzY2FsZWJveHtcQHRlbXBhfXtcdXNlYm94XHBhbmRvY0Bib3h9JQogIFxlbHNlXHVzZWJveHtccGFuZG9jQGJveH0lCiAgXGZpJQp9CiUgU2V0IGRlZmF1bHQgZmlndXJlIHBsYWNlbWVudCB0byBodGJwCiUgTWFrZSB1c2Ugb2YgZmxvYXQtcGFja2FnZSBhbmQgc2V0IGRlZmF1bHQgcGxhY2VtZW50IGZvciBmaWd1cmVzIHRvIEguCiUgVGhlIG9wdGlvbiBIIG1lYW5zICdQVVQgSVQgSEVSRScgKGFzICBvcHBvc2VkIHRvIHRoZSBzdGFuZGFyZCBoIG9wdGlvbiB3aGljaCBtZWFucyAnWW91IG1heSBwdXQgaXQgaGVyZSBpZiB5b3UgbGlrZScpLgpcdXNlcGFja2FnZXtmbG9hdH0KXGZsb2F0cGxhY2VtZW50e2ZpZ3VyZX17JGlmKGZsb2F0LXBsYWNlbWVudC1maWd1cmUpJCRmbG9hdC1wbGFjZW1lbnQtZmlndXJlJCRlbHNlJEgkZW5kaWYkfQpcbWFrZWF0b3RoZXIKJGVuZGlmJAokaWYoc3ZnKSQKXHVzZXBhY2thZ2V7c3ZnfQokZW5kaWYkCiRpZihzdHJpa2VvdXQpJAokLS0gYWxzbyB1c2VkIGZvciB1bmRlcmxpbmUKXGlmTHVhVGVYCiAgXHVzZXBhY2thZ2V7bHVhY29sb3J9CiAgXHVzZXBhY2thZ2Vbc291bF17bHVhLXVsfQpcZWxzZQpcdXNlcGFja2FnZXtzb3VsfQokaWYoQ0pLbWFpbmZvbnQpJAogIFxpZlhlVGVYCiAgICAlIHNvdWwncyBcc3QgZG9lc24ndCB3b3JrIGZvciBDSks6CiAgICBcdXNlcGFja2FnZXt4ZUNKS2ZudGVmfQogICAgXHJlbmV3Y29tbWFuZHtcc3R9WzFde1xzb3V0eyMxfX0KICBcZmkKJGVuZGlmJApcZmkKJGVuZGlmJApcc2V0bGVuZ3Roe1xlbWVyZ2VuY3lzdHJldGNofXszZW19ICUgcHJldmVudCBvdmVyZnVsbCBsaW5lcwpccHJvdmlkZWNvbW1hbmR7XHRpZ2h0bGlzdH17JQogIFxzZXRsZW5ndGh7XGl0ZW1zZXB9ezBwdH1cc2V0bGVuZ3Roe1xwYXJza2lwfXswcHR9fQokaWYobnVtYmVyc2VjdGlvbnMpJApcc2V0Y291bnRlcntzZWNudW1kZXB0aH17JGlmKHNlY251bWRlcHRoKSQkc2VjbnVtZGVwdGgkJGVsc2UkNSRlbmRpZiR9CiRlbHNlJApcc2V0Y291bnRlcntzZWNudW1kZXB0aH17LVxtYXhkaW1lbn0gJSByZW1vdmUgc2VjdGlvbiBudW1iZXJpbmcKJGVuZGlmJAokaWYoc3ViZmlndXJlKSQKXHVzZXBhY2thZ2V7c3ViY2FwdGlvbn0KJGVuZGlmJAokaWYoYmVhbWVyKSQKJGVsc2UkCiRpZihibG9jay1oZWFkaW5ncykkCiUgTWFrZSBccGFyYWdyYXBoIGFuZCBcc3VicGFyYWdyYXBoIGZyZWUtc3RhbmRpbmcKXGlmeFxwYXJhZ3JhcGhcdW5kZWZpbmVkXGVsc2UKICBcbGV0XG9sZHBhcmFncmFwaFxwYXJhZ3JhcGgKICBccmVuZXdjb21tYW5ke1xwYXJhZ3JhcGh9WzFde1xvbGRwYXJhZ3JhcGh7IzF9XG1ib3h7fX0KXGZpClxpZnhcc3VicGFyYWdyYXBoXHVuZGVmaW5lZFxlbHNlCiAgXGxldFxvbGRzdWJwYXJhZ3JhcGhcc3VicGFyYWdyYXBoCiAgXHJlbmV3Y29tbWFuZHtcc3VicGFyYWdyYXBofVsxXXtcb2xkc3VicGFyYWdyYXBoeyMxfVxtYm94e319ClxmaQokZW5kaWYkCiRlbmRpZiQKJGlmKHBhZ2VzdHlsZSkkClxwYWdlc3R5bGV7JHBhZ2VzdHlsZSR9CiRlbmRpZiQKJGlmKGNzbC1yZWZzKSQKJSBkZWZpbml0aW9ucyBmb3IgY2l0ZXByb2MgY2l0YXRpb25zClxOZXdEb2N1bWVudENvbW1hbmRcY2l0ZXByb2N0ZXh0e317fQpcTmV3RG9jdW1lbnRDb21tYW5kXGNpdGVwcm9je21tfXslCiAgXGJlZ2luZ3JvdXBcZGVmXGNpdGVwcm9jdGV4dHsjMn1cY2l0ZXsjMX1cZW5kZ3JvdXB9ClxtYWtlYXRsZXR0ZXIKICUgYWxsb3cgY2l0YXRpb25zIHRvIGJyZWFrIGFjcm9zcyBsaW5lcwogXGxldFxAY2l0ZUBvZm10XEBmaXJzdG9mb25lCiAlIGF2b2lkIGJyYWNrZXRzIGFyb3VuZCB0ZXh0IGZvciBcY2l0ZToKIFxkZWZcQGJpYmxhYmVsIzF7fQogXGRlZlxAY2l0ZSMxIzJ7eyMxXGlmQHRlbXBzd2EgLCAjMlxmaX19ClxtYWtlYXRvdGhlcgpcbmV3bGVuZ3Roe1xjc2xoYW5naW5kZW50fQpcc2V0bGVuZ3Roe1xjc2xoYW5naW5kZW50fXsxLjVlbX0KXG5ld2xlbmd0aHtcY3NsbGFiZWx3aWR0aH0KXHNldGxlbmd0aHtcY3NsbGFiZWx3aWR0aH17M2VtfQpcbmV3ZW52aXJvbm1lbnR7Q1NMUmVmZXJlbmNlc31bMl0gJSAjMSBoYW5naW5nLWluZGVudCwgIzIgZW50cnktc3BhY2luZwogIHtcYmVnaW57bGlzdH17fXslCiAgIFxzZXRsZW5ndGh7XGl0ZW1pbmRlbnR9ezBwdH0KICAgXHNldGxlbmd0aHtcbGVmdG1hcmdpbn17MHB0fQogICBcc2V0bGVuZ3Roe1xwYXJzZXB9ezBwdH0KICAgJSB0dXJuIG9uIGhhbmdpbmcgaW5kZW50IGlmIHBhcmFtIDEgaXMgMQogICBcaWZvZGQgIzEKICAgIFxzZXRsZW5ndGh7XGxlZnRtYXJnaW59e1xjc2xoYW5naW5kZW50fQogICAgXHNldGxlbmd0aHtcaXRlbWluZGVudH17LTFcY3NsaGFuZ2luZGVudH0KICAgXGZpCiAgICUgc2V0IGVudHJ5IHNwYWNpbmcKICAgXHNldGxlbmd0aHtcaXRlbXNlcH17IzJcYmFzZWxpbmVza2lwfX19CiAge1xlbmR7bGlzdH19Clx1c2VwYWNrYWdle2NhbGN9ClxuZXdjb21tYW5ke1xDU0xCbG9ja31bMV17XGhmaWxsXGJyZWFrXHBhcmJveFt0XXtcbGluZXdpZHRofXtcc3RydXRcaWdub3Jlc3BhY2VzIzFcc3RydXR9fQpcbmV3Y29tbWFuZHtcQ1NMTGVmdE1hcmdpbn1bMV17XHBhcmJveFt0XXtcY3NsbGFiZWx3aWR0aH17XHN0cnV0IzFcc3RydXR9fQpcbmV3Y29tbWFuZHtcQ1NMUmlnaHRJbmxpbmV9WzFde1xwYXJib3hbdF17XGxpbmV3aWR0aCAtIFxjc2xsYWJlbHdpZHRofXtcc3RydXQjMVxzdHJ1dH19ClxuZXdjb21tYW5ke1xDU0xJbmRlbnR9WzFde1xoc3BhY2V7XGNzbGhhbmdpbmRlbnR9IzF9CiRlbmRpZiQKJGlmKGxhbmcpJApcaWZMdWFUZVgKXHVzZXBhY2thZ2VbYmlkaT1iYXNpY117YmFiZWx9ClxlbHNlClx1c2VwYWNrYWdlW2JpZGk9ZGVmYXVsdF17YmFiZWx9ClxmaQokaWYoYmFiZWwtbGFuZykkClxiYWJlbHByb3ZpZGVbbWFpbixpbXBvcnRdeyRiYWJlbC1sYW5nJH0KJGlmKG1haW5mb250KSQKXGlmUERGVGVYClxlbHNlClxiYWJlbGZvbnR7cm19WyRmb3IobWFpbmZvbnRvcHRpb25zKSQkbWFpbmZvbnRvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXskbWFpbmZvbnQkfQpcZmkKJGVuZGlmJAokZW5kaWYkCiRmb3IoYmFiZWwtb3RoZXJsYW5ncykkClxiYWJlbHByb3ZpZGVbaW1wb3J0XXskYmFiZWwtb3RoZXJsYW5ncyR9CiRlbmRmb3IkCiRmb3IoYmFiZWxmb250cy9wYWlycykkClxiYWJlbGZvbnRbJGJhYmVsZm9udHMua2V5JF17cm19eyRiYWJlbGZvbnRzLnZhbHVlJH0KJGVuZGZvciQKJSBnZXQgcmlkIG9mIGxhbmd1YWdlLXNwZWNpZmljIHNob3J0aGFuZHMgKHNlZSAjNjgxNyk6ClxsZXRcTGFuZ3VhZ2VTaG9ydEhhbmRzXGxhbmd1YWdlc2hvcnRoYW5kcwpcZGVmXGxhbmd1YWdlc2hvcnRoYW5kcyMxe30KJGVuZGlmJAokZm9yKGhlYWRlci1pbmNsdWRlcykkCiRoZWFkZXItaW5jbHVkZXMkCiRlbmRmb3IkClxpZkx1YVRlWAogIFx1c2VwYWNrYWdle3NlbG5vbGlnfSAgJSBkaXNhYmxlIGlsbGVnYWwgbGlnYXR1cmVzClxmaQokaWYoZGlyKSQKXGlmUERGVGVYCiAgXFRlWFhlVHN0YXRlPTEKICBcbmV3Y29tbWFuZHtcUkx9WzFde1xiZWdpblIgIzFcZW5kUn0KICBcbmV3Y29tbWFuZHtcTFJ9WzFde1xiZWdpbkwgIzFcZW5kTH0KICBcbmV3ZW52aXJvbm1lbnR7UlRMfXtcYmVnaW5SfXtcZW5kUn0KICBcbmV3ZW52aXJvbm1lbnR7TFRSfXtcYmVnaW5MfXtcZW5kTH0KXGZpCiRlbmRpZiQKJGlmKG5hdGJpYikkClx1c2VwYWNrYWdlWyRuYXRiaWJvcHRpb25zJF17bmF0YmlifQpcYmlibGlvZ3JhcGh5c3R5bGV7JGlmKGJpYmxpby1zdHlsZSkkJGJpYmxpby1zdHlsZSQkZWxzZSRwbGFpbm5hdCRlbmRpZiR9CiRlbmRpZiQKJGlmKGJpYmxhdGV4KSQKXHVzZXBhY2thZ2VbJGlmKGJpYmxpby1zdHlsZSkkc3R5bGU9JGJpYmxpby1zdHlsZSQsJGVuZGlmJCRmb3IoYmlibGF0ZXhvcHRpb25zKSQkYmlibGF0ZXhvcHRpb25zJCRzZXAkLCRlbmRmb3IkXXtiaWJsYXRleH0KJGZvcihiaWJsaW9ncmFwaHkpJApcYWRkYmlicmVzb3VyY2V7JGJpYmxpb2dyYXBoeSR9CiRlbmRmb3IkCiRlbmRpZiQKJGlmKG5vY2l0ZS1pZHMpJApcbm9jaXRleyRmb3Iobm9jaXRlLWlkcykkJGl0JCRzZXAkLCAkZW5kZm9yJH0KJGVuZGlmJAokaWYoY3NxdW90ZXMpJApcdXNlcGFja2FnZXtjc3F1b3Rlc30KJGVuZGlmJApcSWZGaWxlRXhpc3Rze2Jvb2ttYXJrLnN0eX17XHVzZXBhY2thZ2V7Ym9va21hcmt9fXtcdXNlcGFja2FnZXtoeXBlcnJlZn19ClxJZkZpbGVFeGlzdHN7eHVybC5zdHl9e1x1c2VwYWNrYWdle3h1cmx9fXt9ICUgYWRkIFVSTCBsaW5lIGJyZWFrcyBpZiBhdmFpbGFibGUKXHVybHN0eWxleyRpZih1cmxzdHlsZSkkJHVybHN0eWxlJCRlbHNlJHNhbWUkZW5kaWYkfQokaWYobGlua3MtYXMtbm90ZXMpJAolIE1ha2UgbGlua3MgZm9vdG5vdGVzIGluc3RlYWQgb2YgaG90bGlua3M6ClxEZWNsYXJlUm9idXN0Q29tbWFuZHtcaHJlZn1bMl17IzJcZm9vdG5vdGV7XHVybHsjMX19fQokZW5kaWYkCiRpZih2ZXJiYXRpbS1pbi1ub3RlKSQKXFZlcmJhdGltRm9vdG5vdGVzICUgYWxsb3cgdmVyYmF0aW0gdGV4dCBpbiBmb290bm90ZXMKJGVuZGlmJApcaHlwZXJzZXR1cHsKJGlmKHRpdGxlLW1ldGEpJAogIHBkZnRpdGxlPXskdGl0bGUtbWV0YSR9LAokZW5kaWYkCiRpZihhdXRob3ItbWV0YSkkCiAgcGRmYXV0aG9yPXskYXV0aG9yLW1ldGEkfSwKJGVuZGlmJAokaWYobGFuZykkCiAgcGRmbGFuZz17JGxhbmckfSwKJGVuZGlmJAokaWYoc3ViamVjdCkkCiAgcGRmc3ViamVjdD17JHN1YmplY3QkfSwKJGVuZGlmJAokaWYoa2V5d29yZHMpJAogIHBkZmtleXdvcmRzPXskZm9yKGtleXdvcmRzKSQka2V5d29yZHMkJHNlcCQsICRlbmRmb3IkfSwKJGVuZGlmJAokaWYoY29sb3JsaW5rcykkCiAgY29sb3JsaW5rcz10cnVlLAogIGxpbmtjb2xvcj17JGlmKGxpbmtjb2xvcikkJGxpbmtjb2xvciQkZWxzZSRkZWZhdWx0LWxpbmtjb2xvciRlbmRpZiR9LAogIGZpbGVjb2xvcj17JGlmKGZpbGVjb2xvcikkJGZpbGVjb2xvciQkZWxzZSRkZWZhdWx0LWZpbGVjb2xvciRlbmRpZiR9LAogIGNpdGVjb2xvcj17JGlmKGNpdGVjb2xvcikkJGNpdGVjb2xvciQkZWxzZSRkZWZhdWx0LWNpdGVjb2xvciRlbmRpZiR9LAogIHVybGNvbG9yPXskaWYodXJsY29sb3IpJCR1cmxjb2xvciQkZWxzZSRkZWZhdWx0LXVybGNvbG9yJGVuZGlmJH0sCiRlbHNlJAogIGhpZGVsaW5rcywKJGVuZGlmJAogIGJyZWFrbGlua3M9dHJ1ZSwKICBwZGZjcmVhdG9yPXtMYVRlWCB2aWEgcGFuZG9jIHdpdGggdGhlIEVpc3ZvZ2VsIHRlbXBsYXRlfX0KJGlmKHRpdGxlKSQKXHRpdGxleyRpZih0aXRsZSkkJHRpdGxlJCRlbHNlJFNldCB1cCBUaXRsZSBpbiBGcm9udG1hdHRlciAoc2VlIGFic3RyYWN0KSRlbmRpZiR9CiRlbmRpZiQKJGlmKHN1YnRpdGxlKSQKJGlmKGJlYW1lcikkCiRlbHNlJApcdXNlcGFja2FnZXtldG9vbGJveH0KXG1ha2VhdGxldHRlcgpccHJvdmlkZWNvbW1hbmR7XHN1YnRpdGxlfVsxXXslIGFkZCBzdWJ0aXRsZSB0byBcbWFrZXRpdGxlCiAgXGFwcHRvY21ke1xAdGl0bGV9e1xwYXIge1xsYXJnZSAjMSBccGFyfX17fXt9Cn0KXG1ha2VhdG90aGVyCiRlbmRpZiQKXHN1YnRpdGxleyRzdWJ0aXRsZSR9CiRlbmRpZiQKXGF1dGhvcnskZm9yKGF1dGhvcikkJGF1dGhvciQkc2VwJCBcYW5kICRlbmRmb3IkfQokaWYoZGF0ZSkkCiAgXGRhdGV7JGRhdGUkfQokZWxzZSQKICBcZGF0ZXtcdG9kYXl9CiRlbmRpZiQKCiRpZihiZWFtZXIpJAokaWYoaW5zdGl0dXRlKSQKXGluc3RpdHV0ZXskZm9yKGluc3RpdHV0ZSkkJGluc3RpdHV0ZSQkc2VwJCBcYW5kICRlbmRmb3IkfQokZW5kaWYkCiRpZih0aXRsZWdyYXBoaWMpJApcdGl0bGVncmFwaGlje1xpbmNsdWRlZ3JhcGhpY3N7JHRpdGxlZ3JhcGhpYyR9fQokZW5kaWYkCiRpZihsb2dvKSQKXGxvZ297XGluY2x1ZGVncmFwaGljc3skbG9nbyR9fQokZW5kaWYkCiRlbmRpZiQKCgoKJSUKJSUgYWRkZWQKJSUKCiRpZihwYWdlLWJhY2tncm91bmQpJApcdXNlcGFja2FnZVtwYWdlcz1hbGxde2JhY2tncm91bmR9CiRlbmRpZiQKCiUKJSBmb3IgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRpdGxlIHBhZ2UKJQokaWYobm90aXRsZXBhZ2UpJAoKJGVsc2UkClx1c2VwYWNrYWdle3BhZ2Vjb2xvcn0KXHVzZXBhY2thZ2V7YWZ0ZXJwYWdlfQokaWYodGl0bGVwYWdlLWJhY2tncm91bmQpJApcdXNlcGFja2FnZXt0aWt6fQokZW5kaWYkCiRpZihnZW9tZXRyeSkkCiRlbHNlJApcdXNlcGFja2FnZVttYXJnaW49Mi41Y20saW5jbHVkZWhlYWQ9dHJ1ZSxpbmNsdWRlZm9vdD10cnVlLGNlbnRlcmluZ117Z2VvbWV0cnl9CiRlbmRpZiQKJGVuZGlmJAoKJQolIGJyZWFrIHVybHMKJQpcUGFzc09wdGlvbnNUb1BhY2thZ2V7aHlwaGVuc317dXJsfQoKJQolIFdoZW4gdXNpbmcgYmFiZWwgb3IgcG9seWdsb3NzaWEgd2l0aCBiaWJsYXRleCwgbG9hZGluZyBjc3F1b3RlcyBpcyByZWNvbW1lbmRlZAolIHRvIGVuc3VyZSB0aGF0IHF1b3RlZCB0ZXh0cyBhcmUgdHlwZXNldCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHlvdXIgbWFpbiBsYW5ndWFnZS4KJQpcdXNlcGFja2FnZXtjc3F1b3Rlc30KCiUKJSBjYXB0aW9ucwolClxkZWZpbmVjb2xvcntjYXB0aW9uLWNvbG9yfXtIVE1MfXs3Nzc3Nzd9CiRpZihiZWFtZXIpJAokZWxzZSQKXHVzZXBhY2thZ2VbZm9udD17c3RyZXRjaD0xLjJ9LCB0ZXh0Zm9udD17Y29sb3I9Y2FwdGlvbi1jb2xvcn0sIHBvc2l0aW9uPXRvcCwgc2tpcD00bW0sIGxhYmVsZm9udD1iZiwgc2luZ2xlbGluZWNoZWNrPWZhbHNlLCBqdXN0aWZpY2F0aW9uPSRpZihjYXB0aW9uLWp1c3RpZmljYXRpb24pJCRjYXB0aW9uLWp1c3RpZmljYXRpb24kJGVsc2UkanVzdGlmaWVkJGVuZGlmJF17Y2FwdGlvbn0KXHNldGNhcGluZGVudHswZW19CiRlbmRpZiQKCiUKJSBibG9ja3F1b3RlCiUKXGRlZmluZWNvbG9ye2Jsb2NrcXVvdGUtYm9yZGVyfXtSR0J9ezIyMSwyMjEsMjIxfQpcZGVmaW5lY29sb3J7YmxvY2txdW90ZS10ZXh0fXtSR0J9ezExOSwxMTksMTE5fQpcdXNlcGFja2FnZXttZGZyYW1lZH0KXG5ld21kZW52W3JpZ2h0bGluZT1mYWxzZSxib3R0b21saW5lPWZhbHNlLHRvcGxpbmU9ZmFsc2UsbGluZXdpZHRoPTNwdCxsaW5lY29sb3I9YmxvY2txdW90ZS1ib3JkZXIsc2tpcGFib3ZlPVxwYXJza2lwXXtjdXN0b21ibG9ja3F1b3RlfQpccmVuZXdlbnZpcm9ubWVudHtxdW90ZX17XGJlZ2lue2N1c3RvbWJsb2NrcXVvdGV9XGxpc3R7fXtccmlnaHRtYXJnaW49MGVtXGxlZnRtYXJnaW49MGVtfSUKXGl0ZW1ccmVsYXhcY29sb3J7YmxvY2txdW90ZS10ZXh0fVxpZ25vcmVzcGFjZXN9e1x1bnNraXBcdW5za2lwXGVuZGxpc3RcZW5ke2N1c3RvbWJsb2NrcXVvdGV9fQoKJQolIFNvdXJjZSBTYW5zIFBybyBhcyB0aGUgZGXCrWZhdWx0IGZvbnQgZmFtwq1pbHkKJSBTb3VyY2UgQ29kZSBQcm8gZm9yIG1vbm9zcGFjZSB0ZXh0CiUKJSAnZGVmYXVsdCcgb3B0aW9uIHNldHMgdGhlIGRlZmF1bHQKJSBmb250IGZhbWlseSB0byBTb3VyY2UgU2FucyBQcm8sIG5vdCBcc2ZkZWZhdWx0LgolClxpZm51bSAwXGlmeGV0ZXggMVxmaVxpZmx1YXRleCAxXGZpPTAgJSBpZiBwZGZ0ZXgKICAkaWYoZm9udGZhbWlseSkkCiAgJGVsc2UkCiAgXHVzZXBhY2thZ2VbZGVmYXVsdF17c291cmNlc2Fuc3Byb30KICBcdXNlcGFja2FnZXtzb3VyY2Vjb2RlcHJvfQogICRlbmRpZiQKXGVsc2UgJSBpZiBub3QgcGRmdGV4CiAgJGlmKG1haW5mb250KSQKICAkZWxzZSQKICBcdXNlcGFja2FnZVtkZWZhdWx0XXtzb3VyY2VzYW5zcHJvfQogIFx1c2VwYWNrYWdle3NvdXJjZWNvZGVwcm99CgogICUgWGVMYVRlWCBzcGVjaWZpYyBhZGp1c3RtZW50cyBmb3Igc3RyYWlnaHQgcXVvdGVzOiBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNvbS9hLzM1NDg4NwogICUgVGhpcyBpc3N1ZSBpcyBhbHJlYWR5IGZpeGVkIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3NpbGtlaC9sYXRleC1zb3VyY2Vjb2RlcHJvL3B1bGwvNSkgYnV0IHRoZQogICUgZml4IGlzIHN0aWxsIHVucmVsZWFzZWQuCiAgJSBUT0RPOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIHdoZW4gdGhlIG5ldyB2ZXJzaW9uIG9mIHNvdXJjZWNvZGVwcm8gaXMgcmVsZWFzZWQgb24gQ1RBTi4KICBcaWZ4ZXRleAogICAgXG1ha2VhdGxldHRlcgogICAgXGRlZmF1bHRmb250ZmVhdHVyZXNbXHR0ZmFtaWx5XQogICAgICB7IE51bWJlcnMgICA9IFxzb3VyY2Vjb2RlcHJvQGZpZ3VyZXN0eWxlLAogICAgICAgIFNjYWxlICAgICA9IFxTb3VyY2VDb2RlUHJvQHNjYWxlLAogICAgICAgIEV4dGVuc2lvbiA9IC5vdGYgfQogICAgXHNldG1vbm9mb250CiAgICAgIFsgVXByaWdodEZvbnQgICAgPSAqLVxzb3VyY2Vjb2RlcHJvQHJlZ3N0eWxlLAogICAgICAgIEl0YWxpY0ZvbnQgICAgID0gKi1cc291cmNlY29kZXByb0ByZWdzdHlsZSBJdCwKICAgICAgICBCb2xkRm9udCAgICAgICA9ICotXHNvdXJjZWNvZGVwcm9AYm9sZHN0eWxlLAogICAgICAgIEJvbGRJdGFsaWNGb250ID0gKi1cc291cmNlY29kZXByb0Bib2xkc3R5bGUgSXQgXQogICAgICB7U291cmNlQ29kZVByb30KICAgIFxtYWtlYXRvdGhlcgogIFxmaQogICRlbmRpZiQKXGZpCgolCiUgaGVhZGluZyBjb2xvcgolClxkZWZpbmVjb2xvcntoZWFkaW5nLWNvbG9yfXtSR0J9ezQwLDQwLDQwfQokaWYoYmVhbWVyKSQKJGVsc2UkClxhZGR0b2tvbWFmb250e3NlY3Rpb259e1xjb2xvcntoZWFkaW5nLWNvbG9yfX0KJGVuZGlmJAolIFdoZW4gdXNpbmcgdGhlIGNsYXNzZXMgcmVwb3J0LCBzY3JyZXBydCwgYm9vaywKJSBzY3Jib29rIG9yIG1lbW9pciwgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZS4KJVxhZGR0b2tvbWFmb250e2NoYXB0ZXJ9e1xjb2xvcntoZWFkaW5nLWNvbG9yfX0KCiUKJSB2YXJpYWJsZXMgZm9yIHRpdGxlLCBhdXRob3IgYW5kIGRhdGUKJQokaWYoYmVhbWVyKSQKJGVsc2UkClx1c2VwYWNrYWdle3RpdGxpbmd9Clx0aXRsZXskdGl0bGUkfQpcYXV0aG9yeyRmb3IoYXV0aG9yKSQkYXV0aG9yJCRzZXAkLCAkZW5kZm9yJH0KXGRhdGV7JGRhdGUkfQokZW5kaWYkCgolCiUgdGFibGVzCiUKJGlmKHRhYmxlcykkCgpcZGVmaW5lY29sb3J7dGFibGUtcm93LWNvbG9yfXtIVE1MfXtGNUY1RjV9ClxkZWZpbmVjb2xvcnt0YWJsZS1ydWxlLWNvbG9yfXtIVE1MfXs5OTk5OTl9CgolXGFycmF5cnVsZWNvbG9ye2JsYWNrITQwfQpcYXJyYXlydWxlY29sb3J7dGFibGUtcnVsZS1jb2xvcn0gICAgICUgY29sb3Igb2YgXHRvcHJ1bGUsIFxtaWRydWxlLCBcYm90dG9tcnVsZQpcc2V0bGVuZ3RoXGhlYXZ5cnVsZXdpZHRoezAuM2V4fSAgICAgICUgdGhpY2tuZXNzIG9mIFx0b3BydWxlLCBcYm90dG9tcnVsZQpccmVuZXdjb21tYW5ke1xhcnJheXN0cmV0Y2h9ezEuM30gICAgICUgc3BhY2luZyAocGFkZGluZykKCiRpZih0YWJsZS11c2Utcm93LWNvbG9ycykkCiUgVE9ETzogVGhpcyBkb2Vzbid0IHdvcmsgYW55bW9yZS4gSSBkb24ndCBrbm93IHdoeS4KJSBSZXNldCByb3dudW0gY291bnRlciBzbyB0aGF0IGVhY2ggdGFibGUKJSBzdGFydHMgd2l0aCB0aGUgc2FtZSByb3cgY29sb3JzLgolIGh0dHBzOi8vdGV4LnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xNzA2MzcvcmVzdGFydGluZy1yb3djb2xvcnMKJQolIFVuZm9ydHVuYXRlbHkgdGhlIGNvbG9yZWQgY2VsbHMgZXh0ZW5kIGJleW9uZCB0aGUgZWRnZSBvZiB0aGUKJSB0YWJsZSBiZWNhdXNlIHBhbmRvYyB1c2VzIEAtZXhwcmVzc2lvbnMgKEB7fSkgbGlrZSBzbzoKJQolIFxiZWdpbntsb25ndGFibGV9W117QHt9bGxAe319CiUgXGVuZHtsb25ndGFibGV9CiUKJSBodHRwczovL2VuLndpa2lib29rcy5vcmcvd2lraS9MYVRlWC9UYWJsZXMjLjQwLWV4cHJlc3Npb25zClx1c2VwYWNrYWdle2V0b29sYm94fQpcQXRCZWdpbkVudmlyb25tZW50e2xvbmd0YWJsZX17XHJvd2NvbG9yc3syfXt9e3RhYmxlLXJvdy1jb2xvciExMDB9fQpccHJldG97XHRvcHJ1bGV9e1xoaWRlcm93Y29sb3JzfXt9e30KXGFwcHRve1xlbmRoZWFkfXtcc2hvd3Jvd2NvbG9yc317fXt9ClxhcHB0b3tcZW5kZmlyc3RoZWFkfXtcc2hvd3Jvd2NvbG9yc317fXt9CiRlbmRpZiQKJGVuZGlmJAoKJQolIHJlbW92ZSBwYXJhZ3JhcGggaW5kZW50YXRpb24KJQpcc2V0bGVuZ3Roe1xwYXJpbmRlbnR9ezBwdH0KXHNldGxlbmd0aHtccGFyc2tpcH17NnB0IHBsdXMgMnB0IG1pbnVzIDFwdH0KXHNldGxlbmd0aHtcZW1lcmdlbmN5c3RyZXRjaH17M2VtfSAgJSBwcmV2ZW50IG92ZXJmdWxsIGxpbmVzCgolCiUKJSBMaXN0aW5ncwolCiUKCiRpZihsaXN0aW5ncykkCgolCiUgZ2VuZXJhbCBsaXN0aW5nIGNvbG9ycwolClxkZWZpbmVjb2xvcntsaXN0aW5nLWJhY2tncm91bmR9e0hUTUx9e0Y3RjdGN30KXGRlZmluZWNvbG9ye2xpc3RpbmctcnVsZX17SFRNTH17QjNCMkIzfQpcZGVmaW5lY29sb3J7bGlzdGluZy1udW1iZXJzfXtIVE1MfXtCM0IyQjN9ClxkZWZpbmVjb2xvcntsaXN0aW5nLXRleHQtY29sb3J9e0hUTUx9ezAwMDAwMH0KXGRlZmluZWNvbG9ye2xpc3Rpbmcta2V5d29yZH17SFRNTH17NDM1NDg5fQpcZGVmaW5lY29sb3J7bGlzdGluZy1rZXl3b3JkLTJ9e0hUTUx9ezEyODRDQX0gJSBhZGRpdGlvbmFsIGtleXdvcmRzClxkZWZpbmVjb2xvcntsaXN0aW5nLWtleXdvcmQtM317SFRNTH17OTEzN0NCfSAlIGFkZGl0aW9uYWwga2V5d29yZHMKXGRlZmluZWNvbG9ye2xpc3RpbmctaWRlbnRpZmllcn17SFRNTH17NDM1NDg5fQpcZGVmaW5lY29sb3J7bGlzdGluZy1zdHJpbmd9e0hUTUx9ezAwOTk5QX0KXGRlZmluZWNvbG9ye2xpc3RpbmctY29tbWVudH17SFRNTH17OEU4RThFfQoKXGxzdGRlZmluZXN0eWxle2Vpc3ZvZ2VsX2xpc3Rpbmdfc3R5bGV9ewogIGxhbmd1YWdlICAgICAgICAgPSBqYXZhLAokaWYobGlzdGluZ3MtZGlzYWJsZS1saW5lLW51bWJlcnMpJAogIHhsZWZ0bWFyZ2luICAgICAgPSAwLjZlbSwKICBmcmFtZXhsZWZ0bWFyZ2luID0gMC40ZW0sCiRlbHNlJAogIG51bWJlcnMgICAgICAgICAgPSBsZWZ0LAogIHhsZWZ0bWFyZ2luICAgICAgPSAyLjdlbSwKICBmcmFtZXhsZWZ0bWFyZ2luID0gMi41ZW0sCiRlbmRpZiQKICBiYWNrZ3JvdW5kY29sb3IgID0gXGNvbG9ye2xpc3RpbmctYmFja2dyb3VuZH0sCiAgYmFzaWNzdHlsZSAgICAgICA9IFxjb2xvcntsaXN0aW5nLXRleHQtY29sb3J9XGxpbmVzcHJlYWR7MS4wfSUKICAgICAgICAgICAgICAgICAgICAgIFxsc3RAaWZkaXNwbGF5c3R5bGUlCiAgICAgICAgICAgICAgICAgICAgICAkaWYoY29kZS1ibG9jay1mb250LXNpemUpJCRjb2RlLWJsb2NrLWZvbnQtc2l6ZSQkZWxzZSRcc21hbGwkZW5kaWYkJQogICAgICAgICAgICAgICAgICAgICAgXGZpXHR0ZmFtaWx5e30sCiAgYnJlYWtsaW5lcyAgICAgICA9IHRydWUsCiAgZnJhbWUgICAgICAgICAgICA9IHNpbmdsZSwKICBmcmFtZXNlcCAgICAgICAgID0gMC4xOWVtLAogIHJ1bGVjb2xvciAgICAgICAgPSBcY29sb3J7bGlzdGluZy1ydWxlfSwKICBmcmFtZXJvdW5kICAgICAgID0gZmZmZiwKICB0YWJzaXplICAgICAgICAgID0gNCwKICBudW1iZXJzdHlsZSAgICAgID0gXGNvbG9ye2xpc3RpbmctbnVtYmVyc30sCiAgYWJvdmVza2lwICAgICAgICA9IDEuMGVtLAogIGJlbG93c2tpcCAgICAgICAgPSAwLjFlbSwKICBhYm92ZWNhcHRpb25za2lwID0gMGVtLAogIGJlbG93Y2FwdGlvbnNraXAgPSAxLjBlbSwKICBrZXl3b3Jkc3R5bGUgICAgID0ge1xjb2xvcntsaXN0aW5nLWtleXdvcmR9XGJmc2VyaWVzfSwKICBrZXl3b3Jkc3R5bGUgICAgID0ge1syXVxjb2xvcntsaXN0aW5nLWtleXdvcmQtMn1cYmZzZXJpZXN9LAogIGtleXdvcmRzdHlsZSAgICAgPSB7WzNdXGNvbG9ye2xpc3Rpbmcta2V5d29yZC0zfVxiZnNlcmllc1xpdHNoYXBlfSwKICBzZW5zaXRpdmUgICAgICAgID0gdHJ1ZSwKICBpZGVudGlmaWVyc3R5bGUgID0gXGNvbG9ye2xpc3RpbmctaWRlbnRpZmllcn0sCiAgY29tbWVudHN0eWxlICAgICA9IFxjb2xvcntsaXN0aW5nLWNvbW1lbnR9LAogIHN0cmluZ3N0eWxlICAgICAgPSBcY29sb3J7bGlzdGluZy1zdHJpbmd9LAogIHNob3dzdHJpbmdzcGFjZXMgPSBmYWxzZSwKICBlc2NhcGVpbnNpZGUgICAgID0gey8qQH17QCovfSwgJSBBbGxvdyBMYVRlWCBpbnNpZGUgdGhlc2Ugc3BlY2lhbCBjb21tZW50cwogIGxpdGVyYXRlICAgICAgICAgPQogIHvDoX17e1wnYX19MSB7w6l9e3tcJ2V9fTEge8OtfXt7XCdpfX0xIHvDs317e1wnb319MSB7w7p9e3tcJ3V9fTEKICB7w4F9e3tcJ0F9fTEge8OJfXt7XCdFfX0xIHvDjX17e1wnSX19MSB7w5N9e3tcJ099fTEge8OafXt7XCdVfX0xCiAge8OgfXt7XGBhfX0xIHvDqH17e1xgZX19MSB7w6x9e3tcYGl9fTEge8OyfXt7XGBvfX0xIHvDuX17e1xgdX19MQogIHvDgH17e1xgQX19MSB7w4h9e3tcYEV9fTEge8OMfXt7XGBJfX0xIHvDkn17e1xgT319MSB7w5l9e3tcYFV9fTEKICB7w6R9e3tcImF9fTEge8OrfXt7XCJlfX0xIHvDr317e1wiaX19MSB7w7Z9e3tcIm99fTEge8O8fXt7XCJ1fX0xCiAge8OEfXt7XCJBfX0xIHvDi317e1wiRX19MSB7w499e3tcIkl9fTEge8OWfXt7XCJPfX0xIHvDnH17e1wiVX19MQogIHvDon17e1xeYX19MSB7w6p9e3tcXmV9fTEge8OufXt7XF5pfX0xIHvDtH17e1xeb319MSB7w7t9e3tcXnV9fTEKICB7w4J9e3tcXkF9fTEge8OKfXt7XF5FfX0xIHvDjn17e1xeSX19MSB7w5R9e3tcXk99fTEge8ObfXt7XF5VfX0xCiAge8WTfXt7XG9lfX0xIHvFkn17e1xPRX19MSB7w6Z9e3tcYWV9fTEge8OGfXt7XEFFfX0xIHvDn317e1xzc319MQogIHvDp317e1xjIGN9fTEge8OHfXt7XGMgQ319MSB7w7h9e3tcb319MSB7w6V9e3tcciBhfX0xIHvDhX17e1xyIEF9fTEKICB74oKsfXt7XEVVUn19MSB7wqN9e3tccG91bmRzfX0xIHvCq317e1xndWlsbGVtb3RsZWZ0fX0xCiAge8K7fXt7XGd1aWxsZW1vdHJpZ2h0fX0xIHvDsX17e1x+bn19MSB7w5F9e3tcfk59fTEge8K/fXt7P2B9fTEKICB74oCmfXt7XGxkb3RzfX0xIHviiaV9e3s+PX19MSB74omkfXt7PD19fTEge+KAnn17e1xnbHFxfX0xIHvigJx9e3tcZ3JxcX19MQogIHvigJ19e3snJ319MQp9Clxsc3RzZXR7c3R5bGU9ZWlzdm9nZWxfbGlzdGluZ19zdHlsZX0KCiUKJSBKYXZhIChKYXZhIFNFIDEyLCAyMDE5LTA2LTIyKQolClxsc3RkZWZpbmVsYW5ndWFnZXtKYXZhfXsKICBtb3Jla2V5d29yZHM9ewogICAgJSBub3JtYWwga2V5d29yZHMgKHdpdGhvdXQgZGF0YSB0eXBlcykKICAgIGFic3RyYWN0LGFzc2VydCxicmVhayxjYXNlLGNhdGNoLGNsYXNzLGNvbnRpbnVlLGRlZmF1bHQsCiAgICBkbyxlbHNlLGVudW0sZXhwb3J0cyxleHRlbmRzLGZpbmFsLGZpbmFsbHksZm9yLGlmLGltcGxlbWVudHMsCiAgICBpbXBvcnQsaW5zdGFuY2VvZixpbnRlcmZhY2UsbW9kdWxlLG5hdGl2ZSxuZXcscGFja2FnZSxwcml2YXRlLAogICAgcHJvdGVjdGVkLHB1YmxpYyxyZXF1aXJlcyxyZXR1cm4sc3RhdGljLHN0cmljdGZwLHN1cGVyLHN3aXRjaCwKICAgIHN5bmNocm9uaXplZCx0aGlzLHRocm93LHRocm93cyx0cmFuc2llbnQsdHJ5LHZvbGF0aWxlLHdoaWxlLAogICAgJSB2YXIgaXMgYW4gaWRlbnRpZmllcgogICAgdmFyCiAgfSwKICBtb3Jla2V5d29yZHM9e1syXSAlIGRhdGEgdHlwZXMKICAgICUgcHJpbWl0aXZlIGRhdGEgdHlwZXMKICAgIGJvb2xlYW4sYnl0ZSxjaGFyLGRvdWJsZSxmbG9hdCxpbnQsbG9uZyxzaG9ydCwKICAgICUgU3RyaW5nCiAgICBTdHJpbmcsCiAgICAlIHByaW1pdGl2ZSB3cmFwcGVyIHR5cGVzCiAgICBCb29sZWFuLEJ5dGUsQ2hhcmFjdGVyLERvdWJsZSxGbG9hdCxJbnRlZ2VyLExvbmcsU2hvcnQKICAgICUgbnVtYmVyIHR5cGVzCiAgICBOdW1iZXIsQXRvbWljSW50ZWdlcixBdG9taWNMb25nLEJpZ0RlY2ltYWwsQmlnSW50ZWdlcixEb3VibGVBY2N1bXVsYXRvcixEb3VibGVBZGRlcixMb25nQWNjdW11bGF0b3IsTG9uZ0FkZGVyLFNob3J0LAogICAgJSBvdGhlcgogICAgT2JqZWN0LFZvaWQsdm9pZAogIH0sCiAgbW9yZWtleXdvcmRzPXtbM10gJSBsaXRlcmFscwogICAgJSByZXNlcnZlZCB3b3JkcyBmb3IgbGl0ZXJhbCB2YWx1ZXMKICAgIG51bGwsdHJ1ZSxmYWxzZSwKICB9LAogIHNlbnNpdGl2ZSwKICBtb3JlY29tbWVudCAgPSBbbF0vLywKICBtb3JlY29tbWVudCAgPSBbc117Lyp9eyovfSwKICBtb3JlY29tbWVudCAgPSBbc117LyoqfXsqL30sCiAgbW9yZXN0cmluZyAgID0gW2JdIiwKICBtb3Jlc3RyaW5nICAgPSBbYl0nLAp9CgpcbHN0ZGVmaW5lbGFuZ3VhZ2V7WE1MfXsKICBtb3Jlc3RyaW5nICAgICAgPSBbYl0iLAogIG1vcmVkZWxpbSAgICAgICA9IFtzXVtcYmZzZXJpZXNcY29sb3J7bGlzdGluZy1rZXl3b3JkfV17PH17XCB9LAogIG1vcmVkZWxpbSAgICAgICA9IFtzXVtcYmZzZXJpZXNcY29sb3J7bGlzdGluZy1rZXl3b3JkfV17PC99ez59LAogIG1vcmVkZWxpbSAgICAgICA9IFtsXVtcYmZzZXJpZXNcY29sb3J7bGlzdGluZy1rZXl3b3JkfV17Lz59LAogIG1vcmVkZWxpbSAgICAgICA9IFtsXVtcYmZzZXJpZXNcY29sb3J7bGlzdGluZy1rZXl3b3JkfV17Pn0sCiAgbW9yZWNvbW1lbnQgICAgID0gW3Ndezw/fXs/Pn0sCiAgbW9yZWNvbW1lbnQgICAgID0gW3NdezwhLS19ey0tPn0sCiAgY29tbWVudHN0eWxlICAgID0gXGNvbG9ye2xpc3RpbmctY29tbWVudH0sCiAgc3RyaW5nc3R5bGUgICAgID0gXGNvbG9ye2xpc3Rpbmctc3RyaW5nfSwKICBpZGVudGlmaWVyc3R5bGUgPSBcY29sb3J7bGlzdGluZy1pZGVudGlmaWVyfQp9CiRlbmRpZiQKCiUKJSBoZWFkZXIgYW5kIGZvb3RlcgolCiRpZihiZWFtZXIpJAokZWxzZSQKJGlmKGRpc2FibGUtaGVhZGVyLWFuZC1mb290ZXIpJAokZWxzZSQKXHVzZXBhY2thZ2VbaGVhZHNlcGxpbmUsZm9vdHNlcGxpbmVde3NjcmxheWVyLXNjcnBhZ2V9CgpcbmV3cGFpcm9mcGFnZXN0eWxlc3tlaXN2b2dlbC1oZWFkZXItZm9vdGVyfXsKICBcY2xlYXJwYWlyb2ZwYWdlc3R5bGVzCiAgXGloZWFkKnskaWYoaGVhZGVyLWxlZnQpJCRoZWFkZXItbGVmdCQkZWxzZSQkdGl0bGUkJGVuZGlmJH0KICBcY2hlYWQqeyRpZihoZWFkZXItY2VudGVyKSQkaGVhZGVyLWNlbnRlciQkZWxzZSQkZW5kaWYkfQogIFxvaGVhZCp7JGlmKGhlYWRlci1yaWdodCkkJGhlYWRlci1yaWdodCQkZWxzZSQkZGF0ZSQkZW5kaWYkfQogIFxpZm9vdCp7JGlmKGZvb3Rlci1sZWZ0KSQkZm9vdGVyLWxlZnQkJGVsc2UkJGZvcihhdXRob3IpJCRhdXRob3IkJHNlcCQsICRlbmRmb3IkJGVuZGlmJH0KICBcY2Zvb3QqeyRpZihmb290ZXItY2VudGVyKSQkZm9vdGVyLWNlbnRlciQkZWxzZSQkZW5kaWYkfQogIFxvZm9vdCp7JGlmKGZvb3Rlci1yaWdodCkkJGZvb3Rlci1yaWdodCQkZWxzZSRcdGhlcGFnZSRlbmRpZiR9CiAgXGFkZHRva29tYWZvbnR7cGFnZWhlYWRmb290fXtcdXBzaGFwZX0KfQpccGFnZXN0eWxle2Vpc3ZvZ2VsLWhlYWRlci1mb290ZXJ9CgokaWYoYm9vaykkClxkZWZ0cmlwc3R5bGV7Q2hhcHRlclN0eWxlfXt9e317fXt9e1xwYWdlbWFya317fQpccmVuZXdjb21tYW5kKntcY2hhcHRlcnBhZ2VzdHlsZX17Q2hhcHRlclN0eWxlfQokZW5kaWYkCgokaWYocGFnZS1iYWNrZ3JvdW5kKSQKXGJhY2tncm91bmRzZXR1cHsKc2NhbGU9MSwKY29sb3I9YmxhY2ssCm9wYWNpdHk9JGlmKHBhZ2UtYmFja2dyb3VuZC1vcGFjaXR5KSQkcGFnZS1iYWNrZ3JvdW5kLW9wYWNpdHkkJGVsc2UkMC4yJGVuZGlmJCwKYW5nbGU9MCwKY29udGVudHM9eyUKICBcaW5jbHVkZWdyYXBoaWNzW3dpZHRoPVxwYXBlcndpZHRoLGhlaWdodD1ccGFwZXJoZWlnaHRdeyRwYWdlLWJhY2tncm91bmQkfQogIH0lCn0KJGVuZGlmJAokZW5kaWYkCiRlbmRpZiQKCiUlCiUlIGVuZCBhZGRlZAolJQpcdXNlcGFja2FnZXtwZ2ZwYWdlc30KXHVzZXBhY2thZ2VbZXhwb3J0XXthZGp1c3Rib3h9Clx1c2VwYWNrYWdle2dyYXBoaWN4fQpcdXNlcGFja2FnZXtyYWdnZWQyZX0KCgpcYmVnaW57ZG9jdW1lbnR9CgolJQolJSBiZWdpbiB0aXRsZXBhZ2UKJSUKJGlmKGJlYW1lcikkCiRlbHNlJAokaWYobm90aXRsZXBhZ2UpJAokZWxzZSQKXGJlZ2lue3RpdGxlcGFnZX0KJGlmKHRpdGxlcGFnZS1iYWNrZ3JvdW5kKSQKXG5ld2dlb21ldHJ5e3RvcD0yY20sIHJpZ2h0PTRjbSwgYm90dG9tPTNjbSwgbGVmdD00Y219CiRlbHNlJAokZW5kaWYkCiRpZih0aXRsZXBhZ2UtY29sb3IpJApcZGVmaW5lY29sb3J7dGl0bGVwYWdlLWNvbG9yfXtIVE1MfXskdGl0bGVwYWdlLWNvbG9yJH0KXG5ld3BhZ2Vjb2xvcnt0aXRsZXBhZ2UtY29sb3J9XGFmdGVycGFnZXtccmVzdG9yZXBhZ2Vjb2xvcn0KJGVuZGlmJAokaWYodGl0bGVwYWdlLWJhY2tncm91bmQpJApcdGlreltyZW1lbWJlciBwaWN0dXJlLG92ZXJsYXldIFxub2RlW2lubmVyIHNlcD0wcHRdIGF0IChjdXJyZW50IHBhZ2UuY2VudGVyKXtcaW5jbHVkZWdyYXBoaWNzW3dpZHRoPVxwYXBlcndpZHRoLGhlaWdodD1ccGFwZXJoZWlnaHRdeyR0aXRsZXBhZ2UtYmFja2dyb3VuZCR9fTsKJGVuZGlmJApcbmV3Y29tbWFuZHtcY29sb3JSdWxlfVszXVtibGFja117XHRleHRjb2xvcltIVE1MXXsjMX17XHJ1bGV7IzJ9eyMzfX19ClxiZWdpbntmbHVzaGxlZnR9Clxub2luZGVudApcXFstMWVtXQpcY29sb3JbSFRNTF17JGlmKHRpdGxlcGFnZS10ZXh0LWNvbG9yKSQkdGl0bGVwYWdlLXRleHQtY29sb3IkJGVsc2UkMDAwMDAwJGVuZGlmJH0KXG1ha2Vib3hbMHB0XVtsXXtcY29sb3JSdWxlWyRpZih0aXRsZXBhZ2UtcnVsZS1jb2xvcikkJHRpdGxlcGFnZS1ydWxlLWNvbG9yJCRlbHNlJEZGRkZGRiRlbmRpZiRdezEuM1x0ZXh0d2lkdGh9eyRpZih0aXRsZXBhZ2UtcnVsZS1oZWlnaHQpJCR0aXRsZXBhZ2UtcnVsZS1oZWlnaHQkJGVsc2UkMCRlbmRpZiRwdH19ClxwYXIKXG5vaW5kZW50CgokaWYodGl0bGVwYWdlLWJhY2tncm91bmQpJAolIFRoZSB0aXRsZXBhZ2Ugd2l0aCBhIGJhY2tncm91bmQgaW1hZ2UgaGFzIG90aGVyIHRleHQgc3BhY2luZyBhbmQgdGV4dCBzaXplCnsKICBcc2V0c3RyZXRjaHsyfQogIFx2ZmlsbAogIFx2c2tpcCAtOGVtCiAgXG5vaW5kZW50IHtcaHVnZSBcdGV4dGJme1x0ZXh0c2Z7CiAgJGlmKHRpdGxlKSQKICAgICR0aXRsZSQKICAkZWxzZSQKICAgIFNldCB1cCBUaXRsZSBpbiBGcm9udG1hdHRlciAoc2VlIEFic3RyYWN0KQogICRlbmRpZiQKfX19CiAgJGlmKHN1YnRpdGxlKSQKICBcdnNraXAgMWVtCiAge1xMYXJnZSBcdGV4dHNmeyRzdWJ0aXRsZSR9fQogICRlbmRpZiQKICBcdnNraXAgMmVtCiAgXG5vaW5kZW50IHtcTGFyZ2UgXHRleHRpdHskZm9yKGF1dGhvcikkJGF1dGhvciQkc2VwJCwgJGVuZGZvciR9IFx2c2tpcCAwLjZlbSBcdGV4dHNmeyRkYXRlJH19CiAgXHZmaWxsCn0KJGVsc2UkCnsKICBcYmVnaW57Y2VudGVyfQogIFxzZXRzdHJldGNoezEuNH0KICBcdmZpbGwKICBcbm9pbmRlbnQge1xodWdlIFx0ZXh0YmZ7XHRleHRzZnsKICAkaWYodGl0bGUpJAogICAgJHRpdGxlJAogICRlbHNlJAogICAgU2V0IHVwIFRpdGxlIGluIEZyb250bWF0dGVyIChzZWUgQWJzdHJhY3QpCiAgJGVuZGlmJAp9fX0KICAkaWYoc3VidGl0bGUpJAogIFx2c2tpcCAxZW0KICB7XExhcmdlIFx0ZXh0c2Z7JHN1YnRpdGxlJH19CiAgJGVuZGlmJAogIFx2c2tpcCAyZW0KICBcbm9pbmRlbnQge1xMYXJnZSBcdGV4dGl0eyRmb3IoYXV0aG9yKSQkYXV0aG9yJCRzZXAkLCAkZW5kZm9yJH19CiAgXHZmaWxsCiAgXGVuZHtjZW50ZXJ9Cn0KJGVuZGlmJAoKJGlmKHRpdGxlcGFnZS1sb2dvKSQKXG5vaW5kZW50ClxiZWdpbntjZW50ZXJ9ClxpbmNsdWRlZ3JhcGhpY3Nbd2lkdGg9JGlmKGxvZ28td2lkdGgpJCRsb2dvLXdpZHRoJCRlbHNlJDM1bW0kZW5kaWYkXXskdGl0bGVwYWdlLWxvZ28kfQpcZW5ke2NlbnRlcn0KJGVuZGlmJAokaWYodGV4dDEpJApcYmVnaW57Y2VudGVyfQp7XGxhcmdlIFx0ZXh0c2Z7JHRleHQxJH19ClxlbmR7Y2VudGVyfQokZW5kaWYkCiRpZih0ZXh0MikkClxiZWdpbntjZW50ZXJ9CntcbGFyZ2UgXHRleHRzZnskdGV4dDIkfX0KXGVuZHtjZW50ZXJ9CiRlbmRpZiQKJGlmKHRleHQzKSQKXGJlZ2lue2NlbnRlcn0Ke1xsYXJnZSBcdGV4dHNmeyR0ZXh0MyR9fQpcZW5ke2NlbnRlcn0KJGVuZGlmJAokaWYodGV4dDQpJApcYmVnaW57Y2VudGVyfQp7XGxhcmdlIFx0ZXh0c2Z7JHRleHQ0JH19ClxlbmR7Y2VudGVyfQokZW5kaWYkCiRpZih0aXRsZXBhZ2UtYmFja2dyb3VuZCkkCiRlbHNlJAokZW5kaWYkClxlbmR7Zmx1c2hsZWZ0fQpcZW5ke3RpdGxlcGFnZX0KXHJlc3RvcmVnZW9tZXRyeQpccGFnZW51bWJlcmluZ3thcmFiaWN9IAokZW5kaWYkCiRlbmRpZiQKCiUlCiUlIGVuZCB0aXRsZXBhZ2UKJSUKCiRpZihoYXMtZnJvbnRtYXR0ZXIpJApcZnJvbnRtYXR0ZXIKXGZyYW1le1x0aXRsZXBhZ2V9CiUgZG9uJ3QgZ2VuZXJhdGUgdGhlIGRlZmF1bHQgdGl0bGUKJSAkZWxzZSQKJSBcbWFrZXRpdGxlClxwYWdlbnVtYmVyaW5ne1JvbWFufSAlIHNldCB0aGUgbnVtYmVyaW5nIHN0eWxlIHRvIGxvd2VyY2FzZSBsZXR0ZXIKClxiZWdpbntjZW50ZXJ9CiB7XExBUkdFIFx0ZXh0YmZ7XHRleHRzZntBYnN0cmFjdH19fQpcZW5ke2NlbnRlcn0KClxiZWdpbnthYnN0cmFjdH0KXGJlZ2lue2p1c3RpZnl9CiAgJGlmKGFic3RyYWN0KSQKICAkYWJzdHJhY3QkCiAgJGVsc2UkCiAgQWRkIHlvdXIgYWJzdHJhY3QgYXQgdGhlIGJlZ2lubmluZyBvZiB5b3VyIG1hcmtkb3duIGZpbGUgbGlrZSB0aGlzIAogIFxiZWdpbnt2ZXJiYXRpbX0KICAtLS0KICB0aXRsZTogIllvdXIgVGl0bGUiIAogIGFic3RyYWN0OiAieW91ciBhYnN0cmFjdCBoZXJlIgogIGF1dGhvcjogTGVvbmFyZG8gVi4gQ2FzdG9yaW5hLCBBbm90aGVyIDEsIEFub3RoZXIgMgogIHRpdGxlcGFnZS1sb2dvOiAvYWJzb2x1dGUvcGF0aC90by9sb2dvLnBkZgogIGFja25vd2xlZGdlbWVudHM6ICJJIHdvdWxkIGxpa2UgdG8gdGhhbmsgbXkgZG9nIERhdGEuIgogIGRlY2xhcmF0aW9uOiAiSSBkZWNsYXJlIHRoYXQgdGhpcyB0aGVzaXMgd2FzIGNvbXBvc2VkIGJ5IG15c2VsZi4iCiAgLS0tCiAgXGVuZHt2ZXJiYXRpbX0KICBUaGlzIGlzIGNhbGxlZCBZQU1MIGZyb250bWF0dGVyLiAgTWFrZSBzdXJlIHRvIHNldCB1cCBhIHRpdGxlISBJZiB5b3Ugc2V0IHlvdXIgYWJzdHJhY3QgY29ycmVjdGx5IHlvdSBzaG91bGQgbm90IHNlZSB0aGlzIG1lc3NhZ2UuCgogIE9wdGlvbmFsbHkgeW91IGNhbiBzZXQgdXAgXHRleHR0dHt0aXRsZXBhZ2UtbG9nb30gZm9yIGEgbG9nbyBpbiB0aGUgY292ZXIgcGFnZSwgXHRleHR0dHthY2tub3dsZWRnZW1lbnRzfSBzZWN0aW9uLCBhbmQgIFx0ZXh0dHR7ZGVjbGFyYXRpb259IHNlY3Rpb24uCgogICRlbmRpZiQKXGVuZHtqdXN0aWZ5fQpcZW5ke2Fic3RyYWN0fQpccGFnZWJyZWFrCgoKJGlmKGFja25vd2xlZGdlbWVudHMpJApcYmVnaW57Y2VudGVyfQoge1xMQVJHRSBcdGV4dGJme1x0ZXh0c2Z7QWNrbm93bGVkZ2VtZW50c319fQpcZW5ke2NlbnRlcn0KClxiZWdpbnthYnN0cmFjdH0KXGJlZ2lue2p1c3RpZnl9CiRhY2tub3dsZWRnZW1lbnRzJApcZW5ke2p1c3RpZnl9ClxlbmR7YWJzdHJhY3R9ClxwYWdlYnJlYWsKCiRlbmRpZiQKCiRpZihkZWNsYXJhdGlvbikkClxiZWdpbntjZW50ZXJ9CiB7XExBUkdFIFx0ZXh0YmZ7XHRleHRzZntEZWNsYXJhdGlvbn19fQpcZW5ke2NlbnRlcn0KClxiZWdpbnthYnN0cmFjdH0KXGJlZ2lue2p1c3RpZnl9CiAgJGRlY2xhcmF0aW9uJCBccGFyCiAgIFx2c3BhY2V7MWlufVxyYWdnZWRsZWZ0KHtcZW0gJGF1dGhvciRcL30pClxlbmR7anVzdGlmeX0KXGVuZHthYnN0cmFjdH0KXHBhZ2VicmVhawoKCgokZW5kaWYkClxwYWdlbnVtYmVyaW5ne2FyYWJpY30gJSBzZXQgdGhlIG51bWJlcmluZyBzdHlsZSB0byBsb3dlcmNhc2UgbGV0dGVyClxzZXRjb3VudGVye3BhZ2V9ezB9ICUgU2V0IHRoZSBwYWdlIGNvdW50ZXIgdG8gMwoKCiRpZihmaXJzdC1jaGFwdGVyKSQKXHNldGNvdW50ZXJ7Y2hhcHRlcn17JGZpcnN0LWNoYXB0ZXIkfQpcYWRkdG9jb3VudGVye2NoYXB0ZXJ9ey0xfQokZW5kaWYkCgokZm9yKGluY2x1ZGUtYmVmb3JlKSQKJGluY2x1ZGUtYmVmb3JlJAoKJGVuZGZvciQKJGlmKG5vLXRvYykkCiRlbHNlJApccmVuZXdjb21tYW5kKlxjb250ZW50c25hbWV7JHRvYy10aXRsZSR9ClxyZW5ld2NvbW1hbmQqXGNvbnRlbnRzbmFtZXtUYWJsZSBvZiBDb250ZW50c30KJGVuZGlmJAokaWYoYmVhbWVyKSQKXGJlZ2lue2ZyYW1lfVthbGxvd2ZyYW1lYnJlYWtzXQokaWYodG9jLXRpdGxlKSQKICBcZnJhbWV0aXRsZXskdG9jLXRpdGxlJH0KJGVuZGlmJAogIFx0YWJsZW9mY29udGVudHNbaGlkZWFsbHN1YnNlY3Rpb25zXQpcZW5ke2ZyYW1lfQpcbmV3cGFnZQokZWxzZSQKewokaWYoY29sb3JsaW5rcykkClxoeXBlcnNldHVwe2xpbmtjb2xvcj0kaWYodG9jY29sb3IpJCR0b2Njb2xvciQkZWxzZSQkZW5kaWYkfQokZW5kaWYkClxzZXRjb3VudGVye3RvY2RlcHRofXskdG9jLWRlcHRoJH0KXHRhYmxlb2Zjb250ZW50cwpcbmV3cGFnZQp9CiRlbmRpZiQKJGVuZGlmJAokaWYobG9mKSQKXGxpc3RvZmZpZ3VyZXMKJGVuZGlmJAokaWYobG90KSQKXGxpc3RvZnRhYmxlcwokZW5kaWYkCiRpZihsaW5lc3RyZXRjaCkkClxzZXRzdHJldGNoeyRsaW5lc3RyZXRjaCR9CiRlbmRpZiQKJGlmKGhhcy1mcm9udG1hdHRlcikkClxtYWlubWF0dGVyCiRlbmRpZiQKJGJvZHkkCgokaWYoaGFzLWZyb250bWF0dGVyKSQKXGJhY2ttYXR0ZXIKJGVuZGlmJAokaWYobmF0YmliKSQKJGlmKGJpYmxpb2dyYXBoeSkkCiRpZihiaWJsaW8tdGl0bGUpJAokaWYoaGFzLWNoYXB0ZXJzKSQKXHJlbmV3Y29tbWFuZFxiaWJuYW1leyRiaWJsaW8tdGl0bGUkfQokZWxzZSQKXHJlbmV3Y29tbWFuZFxyZWZuYW1leyRiaWJsaW8tdGl0bGUkfQokZW5kaWYkCiRlbmRpZiQKJGlmKGJlYW1lcikkClxiZWdpbntmcmFtZX1bYWxsb3dmcmFtZWJyZWFrc117JGJpYmxpby10aXRsZSR9CiAgXGJpYmxpb2dyYXBoeXRydWUKJGVuZGlmJAogIFxiaWJsaW9ncmFwaHl7JGZvcihiaWJsaW9ncmFwaHkpJCRiaWJsaW9ncmFwaHkkJHNlcCQsJGVuZGZvciR9CiRpZihiZWFtZXIpJApcZW5ke2ZyYW1lfQokZW5kaWYkCgokZW5kaWYkCiRlbmRpZiQKJGlmKGJpYmxhdGV4KSQKJGlmKGJlYW1lcikkClxiZWdpbntmcmFtZX1bYWxsb3dmcmFtZWJyZWFrc117JGJpYmxpby10aXRsZSR9CiAgXGJpYmxpb2dyYXBoeXRydWUKICBccHJpbnRiaWJsaW9ncmFwaHlbaGVhZGluZz1ub25lXQpcZW5ke2ZyYW1lfQokZWxzZSQKXHByaW50YmlibGlvZ3JhcGh5JGlmKGJpYmxpby10aXRsZSkkW3RpdGxlPSRiaWJsaW8tdGl0bGUkXSRlbmRpZiQKJGVuZGlmJAoKJGVuZGlmJAokZm9yKGluY2x1ZGUtYWZ0ZXIpJAokaW5jbHVkZS1hZnRlciQKCiRlbmRmb3IkClxlbmR7ZG9jdW1lbnR9"),e=>e.charCodeAt(0)),Ia=Object.freeze(Object.defineProperty({__proto__:null,default:Ga},Symbol.toStringTag,{value:"Module"})),Ca=Uint8Array.from(atob("JSBwYXJ0aWFsIHJld3JpdGUgb2YgdGhlIExhVGVYMmUgcGFja2FnZSBmb3Igc3VibWlzc2lvbnMgdG8gdGhlCiUgQ29uZmVyZW5jZSBvbiBOZXVyYWwgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBTeXN0ZW1zIChOZXVySVBTKToKJQolIC0gdXNlcyBtb3JlIExhVGVYIGNvbnZlbnRpb25zCiUgLSBsaW5lIG51bWJlcnMgYXQgc3VibWlzc2lvbiB0aW1lIHJlcGxhY2VkIHdpdGggYWxpZ25lZCBudW1iZXJzIGZyb20KJSAgIGxpbmVubyBwYWNrYWdlCiUgLSBcbmlwc2ZpbmFsY29weSByZXBsYWNlZCB3aXRoIFtmaW5hbF0gcGFja2FnZSBvcHRpb24KJSAtIGF1dG9tYXRpY2FsbHkgbG9hZHMgdGltZXMgcGFja2FnZSBmb3IgYXV0aG9ycwolIC0gbG9hZHMgbmF0YmliIGF1dG9tYXRpY2FsbHk7IHRoaXMgY2FuIGJlIHN1cHByZXNzZWQgd2l0aCB0aGUKJSAgIFtub25hdGJpYl0gcGFja2FnZSBvcHRpb24KJSAtIGFkZHMgZm9vdCBsaW5lIHRvIGZpcnN0IHBhZ2UgaWRlbnRpZnlpbmcgdGhlIGNvbmZlcmVuY2UKJSAtIGFkZHMgcHJlcHJpbnQgb3B0aW9uIGZvciBzdWJtaXNzaW9uIHRvIGUuZy4gYXJYaXYKJSAtIGNvbmZlcmVuY2UgYWNyb255bSBtb2RpZmllZAolCiUgUm9tYW4gR2FybmV0dCAoZ2FybmV0dEB3dXN0bC5lZHUpIGFuZCB0aGUgbWFueSBhdXRob3JzIG9mCiUgbmlwczE1c3VibWl0X2Uuc3R5LCBpbmNsdWRpbmcgTUsgYW5kIGRyc3RyaXBAc2FuZGlhCiUKJSBsYXN0IHJldmlzaW9uOiBNYXJjaCAyMDIzCgpcTmVlZHNUZVhGb3JtYXR7TGFUZVgyZX0KXFByb3ZpZGVzUGFja2FnZXtuZXVyaXBzfVsyMDIzLzAzLzMxIE5ldXJJUFMgMjAyMyBzdWJtaXNzaW9uL2NhbWVyYS1yZWFkeSBzdHlsZSBmaWxlXQoKJSBkZWNsYXJlIGZpbmFsIG9wdGlvbiwgd2hpY2ggY3JlYXRlcyBjYW1lcmEtcmVhZHkgY29weQpcbmV3aWZcaWZAbmV1cmlwc2ZpbmFsXEBuZXVyaXBzZmluYWxmYWxzZQpcRGVjbGFyZU9wdGlvbntmaW5hbH17CiAgXEBuZXVyaXBzZmluYWx0cnVlCn0KCiUgZGVjbGFyZSBub25hdGJpYiBvcHRpb24sIHdoaWNoIGRvZXMgbm90IGxvYWQgbmF0YmliIGluIGNhc2Ugb2YKJSBwYWNrYWdlIGNsYXNoICh1c2VycyBjYW4gcGFzcyBvcHRpb25zIHRvIG5hdGJpYiB2aWEKJSBcUGFzc09wdGlvbnNUb1BhY2thZ2UpClxuZXdpZlxpZkBuYXRiaWJcQG5hdGJpYnRydWUKXERlY2xhcmVPcHRpb257bm9uYXRiaWJ9ewogIFxAbmF0YmliZmFsc2UKfQoKJSBkZWNsYXJlIHByZXByaW50IG9wdGlvbiwgd2hpY2ggY3JlYXRlcyBhIHByZXByaW50IHZlcnNpb24gcmVhZHkgZm9yCiUgdXBsb2FkIHRvLCBlLmcuLCBhclhpdgpcbmV3aWZcaWZAcHJlcHJpbnRcQHByZXByaW50ZmFsc2UKXERlY2xhcmVPcHRpb257cHJlcHJpbnR9ewogIFxAcHJlcHJpbnR0cnVlCn0KClxQcm9jZXNzT3B0aW9uc1xyZWxheAoKJSBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGFuIGFub255bWl6ZWQgc3VibWlzc2lvbgpcbmV3aWZcaWZAc3VibWlzc2lvblxAc3VibWlzc2lvbnRydWUKXGlmQG5ldXJpcHNmaW5hbFxAc3VibWlzc2lvbmZhbHNlXGZpClxpZkBwcmVwcmludFxAc3VibWlzc2lvbmZhbHNlXGZpCgolIGZvbnRzClxyZW5ld2NvbW1hbmR7XHJtZGVmYXVsdH17cHRtfQpccmVuZXdjb21tYW5ke1xzZmRlZmF1bHR9e3Bodn0KCiUgY2hhbmdlIHRoaXMgZXZlcnkgeWVhciBmb3Igbm90aWNlIHN0cmluZyBhdCBib3R0b20KXG5ld2NvbW1hbmR7XEBuZXVyaXBzb3JkaW5hbH17fQpcbmV3Y29tbWFuZHtcQG5ldXJpcHN5ZWFyfXtcdGhlXHllYXJ9ClxuZXdjb21tYW5ke1xAbmV1cmlwc2xvY2F0aW9ufXt9CgolIGFja25vd2xlZGdtZW50cwpcdXNlcGFja2FnZXtlbnZpcm9ufQpcbmV3Y29tbWFuZHtcYWNrc2VjdGlvbn17XHNlY3Rpb24qe0Fja25vd2xlZGdtZW50cyBhbmQgRGlzY2xvc3VyZSBvZiBGdW5kaW5nfX0KXE5ld0Vudmlyb257YWNrfXslCiAgXGFja3NlY3Rpb24KICBcQk9EWQp9CgoKJSBsb2FkIG5hdGJpYiB1bmxlc3MgdG9sZCBvdGhlcndpc2UKXGlmQG5hdGJpYgogIFxSZXF1aXJlUGFja2FnZXtuYXRiaWJ9ClxmaQoKJSBzZXQgcGFnZSBnZW9tZXRyeQpcdXNlcGFja2FnZVt2ZXJib3NlPXRydWUsbGV0dGVycGFwZXJde2dlb21ldHJ5fQpcQXRCZWdpbkRvY3VtZW50ewogIFxuZXdnZW9tZXRyeXsKICAgIHRleHRoZWlnaHQ9OWluLAogICAgdGV4dHdpZHRoPTUuNWluLAogICAgdG9wPTFpbiwKICAgIGhlYWRoZWlnaHQ9MTJwdCwKICAgIGhlYWRzZXA9MjVwdCwKICAgIGZvb3Rza2lwPTMwcHQKICB9CiAgXEBpZnBhY2thZ2Vsb2FkZWR7ZnVsbHBhZ2V9CiAgICB7XFBhY2thZ2VXYXJuaW5ne25ldXJpcHNfMjAyM317ZnVsbHBhZ2UgcGFja2FnZSBub3QgYWxsb3dlZCEgT3ZlcndyaXRpbmcgZm9ybWF0dGluZy59fQogICAge30KfQoKXHdpZG93cGVuYWx0eT0xMDAwMApcY2x1YnBlbmFsdHk9MTAwMDAKXGZsdXNoYm90dG9tClxzbG9wcHkKCgolIGZvbnQgc2l6ZXMgd2l0aCByZWR1Y2VkIGxlYWRpbmcKXHJlbmV3Y29tbWFuZHtcbm9ybWFsc2l6ZX17JQogIFxAc2V0Zm9udHNpemVcbm9ybWFsc2l6ZVxAeHB0XEB4aXB0CiAgXGFib3ZlZGlzcGxheXNraXAgICAgICA3XHBAIFxAcGx1cyAyXHBAIFxAbWludXMgNVxwQAogIFxhYm92ZWRpc3BsYXlzaG9ydHNraXAgXHpAIFxAcGx1cyAzXHBACiAgXGJlbG93ZGlzcGxheXNraXAgICAgICBcYWJvdmVkaXNwbGF5c2tpcAogIFxiZWxvd2Rpc3BsYXlzaG9ydHNraXAgNFxwQCBcQHBsdXMgM1xwQCBcQG1pbnVzIDNccEAKfQpcbm9ybWFsc2l6ZQpccmVuZXdjb21tYW5ke1xzbWFsbH17JQogIFxAc2V0Zm9udHNpemVcc21hbGxcQGl4cHRcQHhwdAogIFxhYm92ZWRpc3BsYXlza2lwICAgICAgNlxwQCBcQHBsdXMgMS41XHBAIFxAbWludXMgNFxwQAogIFxhYm92ZWRpc3BsYXlzaG9ydHNraXAgXHpAICBcQHBsdXMgMlxwQAogIFxiZWxvd2Rpc3BsYXlza2lwICAgICAgXGFib3ZlZGlzcGxheXNraXAKICBcYmVsb3dkaXNwbGF5c2hvcnRza2lwIDNccEAgXEBwbHVzIDJccEAgICBcQG1pbnVzIDJccEAKfQpccmVuZXdjb21tYW5ke1xmb290bm90ZXNpemV9e1xAc2V0Zm9udHNpemVcZm9vdG5vdGVzaXplXEBpeHB0XEB4cHR9ClxyZW5ld2NvbW1hbmR7XHNjcmlwdHNpemV9e1xAc2V0Zm9udHNpemVcc2NyaXB0c2l6ZVxAdmlpcHRcQHZpaWlwdH0KXHJlbmV3Y29tbWFuZHtcdGlueX17XEBzZXRmb250c2l6ZVx0aW55XEB2aXB0XEB2aWlwdH0KXHJlbmV3Y29tbWFuZHtcbGFyZ2V9e1xAc2V0Zm9udHNpemVcbGFyZ2VcQHhpaXB0ezE0fX0KXHJlbmV3Y29tbWFuZHtcTGFyZ2V9e1xAc2V0Zm9udHNpemVcTGFyZ2VcQHhpdnB0ezE2fX0KXHJlbmV3Y29tbWFuZHtcTEFSR0V9e1xAc2V0Zm9udHNpemVcTEFSR0VcQHh2aWlwdHsyMH19ClxyZW5ld2NvbW1hbmR7XGh1Z2V9e1xAc2V0Zm9udHNpemVcaHVnZVxAeHhwdHsyM319ClxyZW5ld2NvbW1hbmR7XEh1Z2V9e1xAc2V0Zm9udHNpemVcSHVnZVxAeHh2cHR7Mjh9fQoKJSBzZWN0aW9ucyB3aXRoIGxlc3Mgc3BhY2UKXHByb3ZpZGVjb21tYW5ke1xzZWN0aW9ufXt9ClxyZW5ld2NvbW1hbmR7XHNlY3Rpb259eyUKICBcQHN0YXJ0c2VjdGlvbntzZWN0aW9ufXsxfXtcekB9JQogICAgICAgICAgICAgICAgey0yLjBleCBcQHBsdXMgLTAuNWV4IFxAbWludXMgLTAuMmV4fSUKICAgICAgICAgICAgICAgIHsgMS41ZXggXEBwbHVzICAwLjNleCBcQG1pbnVzICAwLjJleH0lCiAgICAgICAgICAgICAgICB7XGxhcmdlXGJmXHJhZ2dlZHJpZ2h0fSUKfQpccHJvdmlkZWNvbW1hbmR7XHN1YnNlY3Rpb259e30KXHJlbmV3Y29tbWFuZHtcc3Vic2VjdGlvbn17JQogIFxAc3RhcnRzZWN0aW9ue3N1YnNlY3Rpb259ezJ9e1x6QH0lCiAgICAgICAgICAgICAgICB7LTEuOGV4IFxAcGx1cyAtMC41ZXggXEBtaW51cyAtMC4yZXh9JQogICAgICAgICAgICAgICAgeyAwLjhleCBcQHBsdXMgIDAuMmV4fSUKICAgICAgICAgICAgICAgIHtcbm9ybWFsc2l6ZVxiZlxyYWdnZWRyaWdodH0lCn0KXHByb3ZpZGVjb21tYW5ke1xzdWJzdWJzZWN0aW9ufXt9ClxyZW5ld2NvbW1hbmR7XHN1YnN1YnNlY3Rpb259eyUKICBcQHN0YXJ0c2VjdGlvbntzdWJzdWJzZWN0aW9ufXszfXtcekB9JQogICAgICAgICAgICAgICAgey0xLjVleCBcQHBsdXMgLTAuNWV4IFxAbWludXMgLTAuMmV4fSUKICAgICAgICAgICAgICAgIHsgMC41ZXggXEBwbHVzICAwLjJleH0lCiAgICAgICAgICAgICAgICB7XG5vcm1hbHNpemVcYmZccmFnZ2VkcmlnaHR9JQp9Clxwcm92aWRlY29tbWFuZHtccGFyYWdyYXBofXt9ClxyZW5ld2NvbW1hbmR7XHBhcmFncmFwaH17JQogIFxAc3RhcnRzZWN0aW9ue3BhcmFncmFwaH17NH17XHpAfSUKICAgICAgICAgICAgICAgIHsxLjVleCBcQHBsdXMgMC41ZXggXEBtaW51cyAwLjJleH0lCiAgICAgICAgICAgICAgICB7LTFlbX0lCiAgICAgICAgICAgICAgICB7XG5vcm1hbHNpemVcYmZ9JQp9Clxwcm92aWRlY29tbWFuZHtcc3VicGFyYWdyYXBofXt9ClxyZW5ld2NvbW1hbmR7XHN1YnBhcmFncmFwaH17JQogIFxAc3RhcnRzZWN0aW9ue3N1YnBhcmFncmFwaH17NX17XHpAfSUKICAgICAgICAgICAgICAgIHsxLjVleCBcQHBsdXMgMC41ZXggXEBtaW51cyAwLjJleH0lCiAgICAgICAgICAgICAgICB7LTFlbX0lCiAgICAgICAgICAgICAgICB7XG5vcm1hbHNpemVcYmZ9JQp9Clxwcm92aWRlY29tbWFuZHtcc3Vic3Vic3Vic2VjdGlvbn17fQpccmVuZXdjb21tYW5ke1xzdWJzdWJzdWJzZWN0aW9ufXslCiAgXHZza2lwNXB0e1xub2luZGVudFxub3JtYWxzaXplXHJtXHJhZ2dlZHJpZ2h0fSUKfQoKJSBmbG9hdCBwbGFjZW1lbnQKXHJlbmV3Y29tbWFuZHtcdG9wZnJhY3Rpb24gICAgICB9ezAuODV9ClxyZW5ld2NvbW1hbmR7XGJvdHRvbWZyYWN0aW9uICAgfXswLjR9ClxyZW5ld2NvbW1hbmR7XHRleHRmcmFjdGlvbiAgICAgfXswLjF9ClxyZW5ld2NvbW1hbmR7XGZsb2F0cGFnZWZyYWN0aW9ufXswLjd9CgpcbmV3bGVuZ3Roe1xAbmV1cmlwc2Fib3ZlY2FwdGlvbnNraXB9XHNldGxlbmd0aHtcQG5ldXJpcHNhYm92ZWNhcHRpb25za2lwfXs3XHBAfQpcbmV3bGVuZ3Roe1xAbmV1cmlwc2JlbG93Y2FwdGlvbnNraXB9XHNldGxlbmd0aHtcQG5ldXJpcHNiZWxvd2NhcHRpb25za2lwfXtcekB9Cgpcc2V0bGVuZ3Roe1xhYm92ZWNhcHRpb25za2lwfXtcQG5ldXJpcHNhYm92ZWNhcHRpb25za2lwfQpcc2V0bGVuZ3Roe1xiZWxvd2NhcHRpb25za2lwfXtcQG5ldXJpcHNiZWxvd2NhcHRpb25za2lwfQoKJSBzd2FwIGFib3ZlL2JlbG93Y2FwdGlvbnNraXAgbGVuZ3RocyBmb3IgdGFibGVzClxyZW5ld2Vudmlyb25tZW50e3RhYmxlfQogIHtcc2V0bGVuZ3Roe1xhYm92ZWNhcHRpb25za2lwfXtcQG5ldXJpcHNiZWxvd2NhcHRpb25za2lwfSUKICAgXHNldGxlbmd0aHtcYmVsb3djYXB0aW9uc2tpcH17XEBuZXVyaXBzYWJvdmVjYXB0aW9uc2tpcH0lCiAgIFxAZmxvYXR7dGFibGV9fQogIHtcZW5kQGZsb2F0fQoKJSBmb290bm90ZSBmb3JtYXR0aW5nClxzZXRsZW5ndGh7XGZvb3Rub3Rlc2VwIH17Ni42NVxwQH0KXHNldGxlbmd0aHtcc2tpcFxmb290aW5zfXs5XHBAIFxAcGx1cyA0XHBAIFxAbWludXMgMlxwQH0KXHJlbmV3Y29tbWFuZHtcZm9vdG5vdGVydWxlfXtca2Vybi0zXHBAIFxocnVsZSB3aWR0aCAxMnBjIFxrZXJuIDIuNlxwQH0KXHNldGNvdW50ZXJ7Zm9vdG5vdGV9ezB9CgolIHBhcmFncmFwaCBmb3JtYXR0aW5nClxzZXRsZW5ndGh7XHBhcmluZGVudH17XHpAfQpcc2V0bGVuZ3Roe1xwYXJza2lwICB9ezUuNVxwQH0KCiUgbGlzdCBmb3JtYXR0aW5nClxzZXRsZW5ndGh7XHRvcHNlcCAgICAgICB9ezRccEAgXEBwbHVzIDFccEAgICBcQG1pbnVzIDJccEB9ClxzZXRsZW5ndGh7XHBhcnRvcHNlcCAgICB9ezFccEAgXEBwbHVzIDAuNVxwQCBcQG1pbnVzIDAuNVxwQH0KXHNldGxlbmd0aHtcaXRlbXNlcCAgICAgIH17MlxwQCBcQHBsdXMgMVxwQCAgIFxAbWludXMgMC41XHBAfQpcc2V0bGVuZ3Roe1xwYXJzZXAgICAgICAgfXsyXHBAIFxAcGx1cyAxXHBAICAgXEBtaW51cyAwLjVccEB9ClxzZXRsZW5ndGh7XGxlZnRtYXJnaW4gICB9ezNwY30KXHNldGxlbmd0aHtcbGVmdG1hcmdpbmkgIH17XGxlZnRtYXJnaW59ClxzZXRsZW5ndGh7XGxlZnRtYXJnaW5paSB9ezJlbX0KXHNldGxlbmd0aHtcbGVmdG1hcmdpbmlpaX17MS41ZW19ClxzZXRsZW5ndGh7XGxlZnRtYXJnaW5pdiB9ezEuMGVtfQpcc2V0bGVuZ3Roe1xsZWZ0bWFyZ2ludiAgfXswLjVlbX0KXGRlZlxAbGlzdGkgIHtcbGVmdG1hcmdpblxsZWZ0bWFyZ2luaX0KXGRlZlxAbGlzdGlpIHtcbGVmdG1hcmdpblxsZWZ0bWFyZ2luaWkKICAgICAgICAgICAgICBcbGFiZWx3aWR0aFxsZWZ0bWFyZ2luaWkKICAgICAgICAgICAgICBcYWR2YW5jZVxsYWJlbHdpZHRoLVxsYWJlbHNlcAogICAgICAgICAgICAgIFx0b3BzZXAgIDJccEAgXEBwbHVzIDFccEAgICAgXEBtaW51cyAwLjVccEAKICAgICAgICAgICAgICBccGFyc2VwICAxXHBAIFxAcGx1cyAwLjVccEAgXEBtaW51cyAwLjVccEAKICAgICAgICAgICAgICBcaXRlbXNlcCBccGFyc2VwfQpcZGVmXEBsaXN0aWlpe1xsZWZ0bWFyZ2luXGxlZnRtYXJnaW5paWkKICAgICAgICAgICAgICBcbGFiZWx3aWR0aFxsZWZ0bWFyZ2luaWlpCiAgICAgICAgICAgICAgXGFkdmFuY2VcbGFiZWx3aWR0aC1cbGFiZWxzZXAKICAgICAgICAgICAgICBcdG9wc2VwICAgIDFccEAgXEBwbHVzIDAuNVxwQCBcQG1pbnVzIDAuNVxwQAogICAgICAgICAgICAgIFxwYXJzZXAgICAgXHpACiAgICAgICAgICAgICAgXHBhcnRvcHNlcCAwLjVccEAgXEBwbHVzIDBccEAgXEBtaW51cyAwLjVccEAKICAgICAgICAgICAgICBcaXRlbXNlcCBcdG9wc2VwfQpcZGVmXEBsaXN0aXYge1xsZWZ0bWFyZ2luXGxlZnRtYXJnaW5pdgogICAgICAgICAgICAgIFxsYWJlbHdpZHRoXGxlZnRtYXJnaW5pdgogICAgICAgICAgICAgIFxhZHZhbmNlXGxhYmVsd2lkdGgtXGxhYmVsc2VwfQpcZGVmXEBsaXN0diAge1xsZWZ0bWFyZ2luXGxlZnRtYXJnaW52CiAgICAgICAgICAgICAgXGxhYmVsd2lkdGhcbGVmdG1hcmdpbnYKICAgICAgICAgICAgICBcYWR2YW5jZVxsYWJlbHdpZHRoLVxsYWJlbHNlcH0KXGRlZlxAbGlzdHZpIHtcbGVmdG1hcmdpblxsZWZ0bWFyZ2ludmkKICAgICAgICAgICAgICBcbGFiZWx3aWR0aFxsZWZ0bWFyZ2ludmkKICAgICAgICAgICAgICBcYWR2YW5jZVxsYWJlbHdpZHRoLVxsYWJlbHNlcH0KCiUgY3JlYXRlIHRpdGxlClxwcm92aWRlY29tbWFuZHtcbWFrZXRpdGxlfXt9ClxyZW5ld2NvbW1hbmR7XG1ha2V0aXRsZX17JQogIFxwYXIKICBcYmVnaW5ncm91cAogICAgXHJlbmV3Y29tbWFuZHtcdGhlZm9vdG5vdGV9e1xmbnN5bWJvbHtmb290bm90ZX19CiAgICAlIGZvciBwZXJmZWN0IGF1dGhvciBuYW1lIGNlbnRlcmluZwogICAgXHJlbmV3Y29tbWFuZHtcQG1ha2Vmbm1hcmt9e1xoYm94IHRvIFx6QHskXntcQHRoZWZubWFya30kXGhzc319CiAgICAlIFRoZSBmb290bm90ZS1tYXJrIHdhcyBvdmVybGFwcGluZyB0aGUgZm9vdG5vdGUtdGV4dCwKICAgICUgYWRkZWQgdGhlIGZvbGxvd2luZyB0byBmaXggdGhpcyBwcm9ibGVtICAgICAgICAgICAgICAgKE1LKQogICAgXGxvbmdcZGVmXEBtYWtlZm50ZXh0IyMxeyUKICAgICAgXHBhcmluZGVudCAxZW1cbm9pbmRlbnQKICAgICAgXGhib3ggdG8gMS44ZW17XGhzcyAkXG1AdGggXntcQHRoZWZubWFya30kfSMjMQogICAgfQogICAgXHRoaXNwYWdlc3R5bGV7ZW1wdHl9CiAgICBcQG1ha2V0aXRsZQogICAgXEB0aGFua3MKICAgIFxAbm90aWNlCiAgXGVuZGdyb3VwCiAgXGxldFxtYWtldGl0bGVccmVsYXgKICBcbGV0XHRoYW5rc1xyZWxheAp9CgolIHJ1bGVzIGZvciB0aXRsZSBib3ggYXQgdG9wIG9mIGZpcnN0IHBhZ2UKXG5ld2NvbW1hbmR7XEB0b3B0aXRsZWJhcn17CiAgXGhydWxlIGhlaWdodCA0XHBACiAgXHZza2lwIDAuMjVpbgogIFx2c2tpcCAtXHBhcnNraXAlCn0KXG5ld2NvbW1hbmR7XEBib3R0b210aXRsZWJhcn17CiAgXHZza2lwIDAuMjlpbgogIFx2c2tpcCAtXHBhcnNraXAKICBcaHJ1bGUgaGVpZ2h0IDFccEAKICBcdnNraXAgMC4wOWluJQp9CgolIGNyZWF0ZSB0aXRsZSAoaW5jbHVkZXMgYm90aCBhbm9ueW1pemVkIGFuZCBub24tYW5vbnltaXplZCB2ZXJzaW9ucykKXHByb3ZpZGVjb21tYW5ke1xAbWFrZXRpdGxlfXt9ClxyZW5ld2NvbW1hbmR7XEBtYWtldGl0bGV9eyUKICBcdmJveHslCiAgICBcaHNpemVcdGV4dHdpZHRoCiAgICBcbGluZXdpZHRoXGhzaXplCiAgICBcdnNraXAgMC4xaW4KICAgIFxAdG9wdGl0bGViYXIKICAgIFxjZW50ZXJpbmcKICAgIHtcTEFSR0VcYmYgXEB0aXRsZVxwYXJ9CiAgICBcQGJvdHRvbXRpdGxlYmFyCiAgICBcaWZAc3VibWlzc2lvbgogICAgICBcYmVnaW57dGFidWxhcn1bdF17Y31cYmZccnVsZXtcekB9ezI0XHBAfQogICAgICAgIEFub255bW91cyBBdXRob3IocykgXFwKICAgICAgICBBZmZpbGlhdGlvbiBcXAogICAgICAgIEFkZHJlc3MgXFwKICAgICAgICBcdGV4dHR0e2VtYWlsfSBcXAogICAgICBcZW5ke3RhYnVsYXJ9JQogICAgXGVsc2UKICAgICAgXGRlZlxBbmR7JQogICAgICAgIFxlbmR7dGFidWxhcn1caGZpbFxsaW5lYnJlYWtbMF1caGZpbCUKICAgICAgICBcYmVnaW57dGFidWxhcn1bdF17Y31cYmZccnVsZXtcekB9ezI0XHBAfVxpZ25vcmVzcGFjZXMlCiAgICAgIH0KICAgICAgXGRlZlxBTkR7JQogICAgICAgIFxlbmR7dGFidWxhcn1caGZpbFxsaW5lYnJlYWtbNF1caGZpbCUKICAgICAgICBcYmVnaW57dGFidWxhcn1bdF17Y31cYmZccnVsZXtcekB9ezI0XHBAfVxpZ25vcmVzcGFjZXMlCiAgICAgIH0KICAgICAgXGJlZ2lue3RhYnVsYXJ9W3Rde2N9XGJmXHJ1bGV7XHpAfXsyNFxwQH1cQGF1dGhvclxlbmR7dGFidWxhcn0lCiAgICBcZmkKICAgIFx2c2tpcCAwLjNpbiBcQG1pbnVzIDAuMWluCiAgfQp9CgolIGFkZCBjb25mZXJlbmNlIG5vdGljZSB0byBib3R0b20gb2YgZmlyc3QgcGFnZQpcbmV3Y29tbWFuZHtcZnR5cGVAbm90aWNlYm94fXs4fQpcbmV3Y29tbWFuZHtcQG5vdGljZX17JQogICUgZ2l2ZSBhIGJpdCBvZiBleHRyYSByb29tIGJhY2sgdG8gYXV0aG9ycyBvbiBmaXJzdCBwYWdlCiAgXGVubGFyZ2V0aGlzcGFnZXsyXGJhc2VsaW5lc2tpcH0lCiAgXEBmbG9hdHtub3RpY2Vib3h9W2JdJQogICAgXGZvb3Rub3Rlc2l6ZVxAbm90aWNlc3RyaW5nJQogIFxlbmRAZmxvYXQlCn0KCiUgYWJzdHJhY3Qgc3R5bGluZwpccmVuZXdlbnZpcm9ubWVudHthYnN0cmFjdH0lCnslCiAgXHZza2lwIDAuMDc1aW4lCiAgXGNlbnRlcmxpbmUlCiAge1xsYXJnZVxiZiBBYnN0cmFjdH0lCiAgXHZzcGFjZXswLjVleH0lCiAgXGJlZ2lue3F1b3RlfSUKfQp7CiAgXHBhciUKICBcZW5ke3F1b3RlfSUKICBcdnNraXAgMWV4JQp9CgolIGhhbmRsZSB0d2Vha3MgZm9yIGNhbWVyYS1yZWFkeSBjb3B5IHZzLiBzdWJtaXNzaW9uIGNvcHkKXGlmQHByZXByaW50CiAgXG5ld2NvbW1hbmR7XEBub3RpY2VzdHJpbmd9eyUKICAgIFByZXByaW50LiBVbmRlciByZXZpZXcuJQogIH0KXGVsc2UKICBcaWZAbmV1cmlwc2ZpbmFsCiAgICBcbmV3Y29tbWFuZHtcQG5vdGljZXN0cmluZ317JQogICAgICAoXEBuZXVyaXBzeWVhcikgXEB0aXRsZSAKICAgIH0KICBcZWxzZQogICAgXG5ld2NvbW1hbmR7XEBub3RpY2VzdHJpbmd9eyUKICAgICAoXEBuZXVyaXBzeWVhcikgXEB0aXRsZSAlCiAgICB9CgogICAgJSBoaWRlIHRoZSBhY2tub3dsZWRnZW1lbnRzCiAgICBcTmV3RW52aXJvbntoaWRlfXt9CiAgICBcbGV0XGFja1xoaWRlCiAgICBcbGV0XGVuZGFja1xlbmRoaWRlCgogICAgJSBsaW5lIG51bWJlcnMgZm9yIHN1Ym1pc3Npb24KICAgIFxSZXF1aXJlUGFja2FnZXtsaW5lbm99CiAgICBcbGluZW51bWJlcnMKCiAgICAlIGZpeCBpbmNvbXBhdGliaWxpdGllcyBiZXR3ZWVuIGxpbmVubyBhbmQgYW1zbWF0aCwgaWYgcmVxdWlyZWQsIGJ5CiAgICAlIHRyYW5zcGFyZW50bHkgd3JhcHBpbmcgbGluZW5vbWF0aCBlbnZpcm9ubWVudHMgYXJvdW5kIGFtc21hdGgKICAgICUgZW52aXJvbm1lbnRzCiAgICBcQXRCZWdpbkRvY3VtZW50eyUKICAgICAgXEBpZnBhY2thZ2Vsb2FkZWR7YW1zbWF0aH17JQogICAgICAgIFxuZXdjb21tYW5kKlxwYXRjaEFtc01hdGhFbnZpcm9ubWVudEZvckxpbmVub1sxXXslCiAgICAgICAgICBcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSBvbGQjMVxleHBhbmRhZnRlclxlbmRjc25hbWVcY3NuYW1lICMxXGVuZGNzbmFtZQogICAgICAgICAgXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgb2xkZW5kIzFcZXhwYW5kYWZ0ZXJcZW5kY3NuYW1lXGNzbmFtZSBlbmQjMVxlbmRjc25hbWUKICAgICAgICAgIFxyZW5ld2Vudmlyb25tZW50eyMxfSUKICAgICAgICAgICAgICAgICAgICAgICAgICB7XGxpbmVub21hdGhcY3NuYW1lIG9sZCMxXGVuZGNzbmFtZX0lCiAgICAgICAgICAgICAgICAgICAgICAgICAge1xjc25hbWUgb2xkZW5kIzFcZW5kY3NuYW1lXGVuZGxpbmVub21hdGh9JQogICAgICAgIH0lCiAgICAgICAgXG5ld2NvbW1hbmQqXHBhdGNoQm90aEFtc01hdGhFbnZpcm9ubWVudHNGb3JMaW5lbm9bMV17JQogICAgICAgICAgXHBhdGNoQW1zTWF0aEVudmlyb25tZW50Rm9yTGluZW5veyMxfSUKICAgICAgICAgIFxwYXRjaEFtc01hdGhFbnZpcm9ubWVudEZvckxpbmVub3sjMSp9JQogICAgICAgIH0lCiAgICAgICAgXHBhdGNoQm90aEFtc01hdGhFbnZpcm9ubWVudHNGb3JMaW5lbm97ZXF1YXRpb259JQogICAgICAgIFxwYXRjaEJvdGhBbXNNYXRoRW52aXJvbm1lbnRzRm9yTGluZW5ve2FsaWdufSUKICAgICAgICBccGF0Y2hCb3RoQW1zTWF0aEVudmlyb25tZW50c0ZvckxpbmVub3tmbGFsaWdufSUKICAgICAgICBccGF0Y2hCb3RoQW1zTWF0aEVudmlyb25tZW50c0ZvckxpbmVub3thbGlnbmF0fSUKICAgICAgICBccGF0Y2hCb3RoQW1zTWF0aEVudmlyb25tZW50c0ZvckxpbmVub3tnYXRoZXJ9JQogICAgICAgIFxwYXRjaEJvdGhBbXNNYXRoRW52aXJvbm1lbnRzRm9yTGluZW5ve211bHRsaW5lfSUKICAgICAgfQogICAgICB7fQogICAgfQogIFxmaQpcZmkKCgpcZW5kaW5wdXQK"),e=>e.charCodeAt(0)),Wa=Object.freeze(Object.defineProperty({__proto__:null,default:Ca},Symbol.toStringTag,{value:"Module"})),ha=Uint8Array.from(atob("JSBUaGlzIHRlbXBsYXRlIHdhcyB0ZXN0ZWQgd2l0aCBQYW5kb2MgMy40IGFuZCBwYW5kb2MtY3Jvc3NyZWYgdjAuMy4xOC4wLiBJdCBzaG91bGQgYmUgYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aCBvbGRlciB2ZXJzaW9uIG9mIHBhbmRvYy4uClxkb2N1bWVudGNsYXNze2FydGljbGV9CgoKJSBpZiB5b3UgbmVlZCB0byBwYXNzIG9wdGlvbnMgdG8gbmF0YmliLCB1c2UsIGUuZy46CiUgICAgIFxQYXNzT3B0aW9uc1RvUGFja2FnZXtudW1iZXJzLCBjb21wcmVzc317bmF0YmlifQolIGJlZm9yZSBsb2FkaW5nIG5ldXJpcHNfMjAyMwoKCiUgcmVhZHkgZm9yIHN1Ym1pc3Npb24KXHVzZXBhY2thZ2VbZmluYWwsbm9uYXRiaWJde25ldXJpcHN9CgoKJSB0byBjb21waWxlIGEgcHJlcHJpbnQgdmVyc2lvbiwgZS5nLiwgZm9yIHN1Ym1pc3Npb24gdG8gYXJYaXYsIGFkZCBhZGQgdGhlCiUgW3ByZXByaW50XSBvcHRpb246CiUgICAgIFx1c2VwYWNrYWdlW3ByZXByaW50XXtuZXVyaXBzXzIwMjN9CgoKJSB0byBjb21waWxlIGEgY2FtZXJhLXJlYWR5IHZlcnNpb24sIGFkZCB0aGUgW2ZpbmFsXSBvcHRpb24sIGUuZy46CiUgICAgIFx1c2VwYWNrYWdlW2ZpbmFsXXtuZXVyaXBzXzIwMjN9CgoKJSB0byBhdm9pZCBsb2FkaW5nIHRoZSBuYXRiaWIgcGFja2FnZSwgYWRkIG9wdGlvbiBub25hdGJpYjoKJSAgICBcdXNlcGFja2FnZVtub25hdGJpYl17bmV1cmlwc18yMDIzfQoKClx1c2VwYWNrYWdlW3V0Zjhde2lucHV0ZW5jfSAlIGFsbG93IHV0Zi04IGlucHV0Clx1c2VwYWNrYWdlW1QxXXtmb250ZW5jfSAgICAlIHVzZSA4LWJpdCBUMSBmb250cwpcdXNlcGFja2FnZXtoeXBlcnJlZn0gICAgICAgJSBoeXBlcmxpbmtzClx1c2VwYWNrYWdle3VybH0gICAgICAgICAgICAlIHNpbXBsZSBVUkwgdHlwZXNldHRpbmcKXHVzZXBhY2thZ2V7Ym9va3RhYnN9ICAgICAgICUgcHJvZmVzc2lvbmFsLXF1YWxpdHkgdGFibGVzClx1c2VwYWNrYWdle2Ftc2ZvbnRzfSAgICAgICAlIGJsYWNrYm9hcmQgbWF0aCBzeW1ib2xzClx1c2VwYWNrYWdle25pY2VmcmFjfSAgICAgICAlIGNvbXBhY3Qgc3ltYm9scyBmb3IgMS8yLCBldGMuClx1c2VwYWNrYWdle21pY3JvdHlwZX0gICAgICAlIG1pY3JvdHlwb2dyYXBoeQpcdXNlcGFja2FnZXt4Y29sb3J9ICAgICAgICAgJSBjb2xvcnMKXHVzZXBhY2thZ2V7Z3JhcGhpY3h9Clx1c2VwYWNrYWdle2xvbmd0YWJsZX0gJSBBZGQgc3VwcG9ydCBmb3IgUGFuZG9jJ3MgbG9uZ3RhYmxlIGlmIG5lZWRlZApcdXNlcGFja2FnZXthcnJheX0gICAgICUgRm9yIHRhYmxlIGFsaWdubWVudCBpbXByb3ZlbWVudHMKXHVzZXBhY2thZ2V7YW1zbWF0aH0KXHVzZXBhY2thZ2V7dGV4dGNvbXB9ClxzZXRsZW5ndGh7XExUY2Fwd2lkdGh9e1x0ZXh0d2lkdGh9ICUgVG8gbWFrZSBjYXB0aW9ucyBmaXQgd2l0aGluIHBhZ2Ugd2lkdGgKClxtYWtlYXRsZXR0ZXIKXG5ld3NhdmVib3hccGFuZG9jQGJveApcbmV3Y29tbWFuZCpccGFuZG9jYm91bmRlZFsxXXslIHNjYWxlcyBpbWFnZSB0byBmaXQgaW4gdGV4dCBoZWlnaHQvd2lkdGgKICBcc2JveFxwYW5kb2NAYm94eyMxfSUKICBcR3NjYWxlQGRpdlxAdGVtcGF7XHRleHRoZWlnaHR9e1xkaW1leHByXGh0XHBhbmRvY0Bib3grXGRwXHBhbmRvY0Bib3hccmVsYXh9JQogIFxHc2NhbGVAZGl2XEB0ZW1wYntcbGluZXdpZHRofXtcd2RccGFuZG9jQGJveH0lCiAgXGlmZGltXEB0ZW1wYlxwQDxcQHRlbXBhXHBAXGxldFxAdGVtcGFcQHRlbXBiXGZpJSBzZWxlY3QgdGhlIHNtYWxsZXIgb2YgYm90aAogIFxpZmRpbVxAdGVtcGFccEA8XHBAXHNjYWxlYm94e1xAdGVtcGF9e1x1c2Vib3hccGFuZG9jQGJveH0lCiAgXGVsc2VcdXNlYm94e1xwYW5kb2NAYm94fSUKICBcZmklCn0KXG1ha2VhdG90aGVyClxtYWtlYXRsZXR0ZXIKXGRlZlxtYXh3aWR0aHtcaWZkaW1cR2luQG5hdEB3aWR0aD5cbGluZXdpZHRoXGxpbmV3aWR0aFxlbHNlXEdpbkBuYXRAd2lkdGhcZml9ClxkZWZcbWF4aGVpZ2h0e1xpZmRpbVxHaW5AbmF0QGhlaWdodD5cdGV4dGhlaWdodFx0ZXh0aGVpZ2h0XGVsc2VcR2luQG5hdEBoZWlnaHRcZml9ClxtYWtlYXRvdGhlcgolIFNjYWxlIGltYWdlcyBpZiBuZWNlc3NhcnksIHNvIHRoYXQgdGhleSB3aWxsIG5vdCBvdmVyZmxvdyB0aGUgcGFnZQolIG1hcmdpbnMgYnkgZGVmYXVsdCwgYW5kIGl0IGlzIHN0aWxsIHBvc3NpYmxlIHRvIG92ZXJ3cml0ZSB0aGUgZGVmYXVsdHMKJSB1c2luZyBleHBsaWNpdCBvcHRpb25zIGluIFxpbmNsdWRlZ3JhcGhpY3Nbd2lkdGgsIGhlaWdodCwgLi4uXXt9ClxzZXRrZXlze0dpbn17d2lkdGg9XG1heHdpZHRoLGhlaWdodD1cbWF4aGVpZ2h0LGtlZXBhc3BlY3RyYXRpb30KJSBTZXQgZGVmYXVsdCBmaWd1cmUgcGxhY2VtZW50IHRvIGh0YnAKXG1ha2VhdGxldHRlcgpcZGVmXGZwc0BmaWd1cmV7aHRicH0KXG1ha2VhdG90aGVyCgokaWYoY3NsLXJlZnMpJAolIGRlZmluaXRpb25zIGZvciBjaXRlcHJvYyBjaXRhdGlvbnMKXE5ld0RvY3VtZW50Q29tbWFuZFxjaXRlcHJvY3RleHR7fXt9ClxOZXdEb2N1bWVudENvbW1hbmRcY2l0ZXByb2N7bW19eyUKXGJlZ2luZ3JvdXBcZGVmXGNpdGVwcm9jdGV4dHsjMn1cY2l0ZXsjMX1cZW5kZ3JvdXB9ClxtYWtlYXRsZXR0ZXIKJSBhbGxvdyBjaXRhdGlvbnMgdG8gYnJlYWsgYWNyb3NzIGxpbmVzClxsZXRcQGNpdGVAb2ZtdFxAZmlyc3RvZm9uZQolIGF2b2lkIGJyYWNrZXRzIGFyb3VuZCB0ZXh0IGZvciBcY2l0ZToKXGRlZlxAYmlibGFiZWwjMXt9ClxkZWZcQGNpdGUjMSMye3sjMVxpZkB0ZW1wc3dhICwgIzJcZml9fQpcbWFrZWF0b3RoZXIKXG5ld2xlbmd0aHtcY3NsaGFuZ2luZGVudH0KXHNldGxlbmd0aHtcY3NsaGFuZ2luZGVudH17MS41ZW19ClxuZXdsZW5ndGh7XGNzbGxhYmVsd2lkdGh9ClxzZXRsZW5ndGh7XGNzbGxhYmVsd2lkdGh9ezNlbX0KXG5ld2Vudmlyb25tZW50e0NTTFJlZmVyZW5jZXN9WzJdICUgIzEgaGFuZ2luZy1pbmRlbnQsICMyIGVudHJ5LXNwYWNpbmcKe1xiZWdpbntsaXN0fXt9eyUKCVxzZXRsZW5ndGh7XGl0ZW1pbmRlbnR9ezBwdH0KCVxzZXRsZW5ndGh7XGxlZnRtYXJnaW59ezBwdH0KCVxzZXRsZW5ndGh7XHBhcnNlcH17MHB0fQoJJSB0dXJuIG9uIGhhbmdpbmcgaW5kZW50IGlmIHBhcmFtIDEgaXMgMQoJXGlmb2RkICMxCglcc2V0bGVuZ3Roe1xsZWZ0bWFyZ2lufXtcY3NsaGFuZ2luZGVudH0KCVxzZXRsZW5ndGh7XGl0ZW1pbmRlbnR9ey0xXGNzbGhhbmdpbmRlbnR9CglcZmkKCSUgc2V0IGVudHJ5IHNwYWNpbmcKCVxzZXRsZW5ndGh7XGl0ZW1zZXB9eyMyXGJhc2VsaW5lc2tpcH19fQp7XGVuZHtsaXN0fX0KXHVzZXBhY2thZ2V7Y2FsY30KXG5ld2NvbW1hbmR7XENTTEJsb2NrfVsxXXtcaGZpbGxcYnJlYWtccGFyYm94W3Rde1xsaW5ld2lkdGh9e1xzdHJ1dFxpZ25vcmVzcGFjZXMjMVxzdHJ1dH19ClxuZXdjb21tYW5ke1xDU0xMZWZ0TWFyZ2lufVsxXXtccGFyYm94W3Rde1xjc2xsYWJlbHdpZHRofXtcc3RydXQjMVxzdHJ1dH19ClxuZXdjb21tYW5ke1xDU0xSaWdodElubGluZX1bMV17XHBhcmJveFt0XXtcbGluZXdpZHRoIC0gXGNzbGxhYmVsd2lkdGh9e1xzdHJ1dCMxXHN0cnV0fX0KXG5ld2NvbW1hbmR7XENTTEluZGVudH1bMV17XGhzcGFjZXtcY3NsaGFuZ2luZGVudH0jMX0KJGVuZGlmJApccHJvdmlkZWNvbW1hbmR7XHRpZ2h0bGlzdH17JQogIFxzZXRsZW5ndGh7XGl0ZW1zZXB9ezBwdH1cc2V0bGVuZ3Roe1xwYXJza2lwfXswcHR9fQpcdGl0bGV7JHRpdGxlJH0KCgolIEl0ZXJhdGUgdGhyb3VnaCB0aGUgYXV0aG9ycyBleGNlcHQgbGFzdCB0byBhZGQgXEFuZC4gCgpcYXV0aG9yeyUKJGZvcihhdXRob3JzL2FsbGJ1dGxhc3QpJAogICRhdXRob3JzLm5hbWUkXFwkYXV0aG9ycy5hZmZpbGlhdGlvbiRcXCRhdXRob3JzLmluc3RpdHV0aW9uJFxcJGF1dGhvcnMuZW1haWwkXFwkYXV0aG9ycy5hZGRyZXNzJCBcQW5kCiRlbmRmb3IkCiRmb3IoYXV0aG9ycy9sYXN0KSQKICAkYXV0aG9ycy5uYW1lJFxcJGF1dGhvcnMuYWZmaWxpYXRpb24kXFwkYXV0aG9ycy5pbnN0aXR1dGlvbiRcXCRhdXRob3JzLmVtYWlsJFxcJGF1dGhvcnMuYWRkcmVzcyQKJGVuZGZvciQKfQoKJSBcYXV0aG9yeyUKJSAgIERhdmlkIFMufkhpcHBvY2FtcHVzIFxcCiUgICBEZXBhcnRtZW50IG9mIENvbXB1dGVyIFNjaWVuY2VcXAolICAgQ3JhbmJlcnJ5LUxlbW9uIFVuaXZlcnNpdHlcXAolICAgUGl0dHNidXJnaCwgUEEgMTUyMTMgXFwKJSAgIFx0ZXh0dHR7aGlwcG9AY3MuY3JhbmJlcnJ5LWxlbW9uLmVkdX0gXFwKJSAgICUgZXhhbXBsZXMgb2YgbW9yZSBhdXRob3JzCiUgICAlIFxBbmQKJSAgICUgQ29hdXRob3IgXFwKJSAgICUgQWZmaWxpYXRpb24gXFwKJSAgICUgQWRkcmVzcyBcXAolICAgJSBcdGV4dHR0e2VtYWlsfSBcXAolICAgJSBcQU5ECiUgICAlIENvYXV0aG9yIFxcCiUgICAlIEFmZmlsaWF0aW9uIFxcCiUgICAlIEFkZHJlc3MgXFwKJSAgICUgXHRleHR0dHtlbWFpbH0gXFwKJSAgICUgXEFuZAolICAgJSBDb2F1dGhvciBcXAolICAgJSBBZmZpbGlhdGlvbiBcXAolICAgJSBBZGRyZXNzIFxcCiUgICAlIFx0ZXh0dHR7ZW1haWx9IFxcCiUgICAlIFxBbmQKJSAgICUgQ29hdXRob3IgXFwKJSAgICUgQWZmaWxpYXRpb24gXFwKJSAgICUgQWRkcmVzcyBcXAolICAgJSBcdGV4dHR0e2VtYWlsfSBcXAolIH0KCgpcYmVnaW57ZG9jdW1lbnR9CgoKXG1ha2V0aXRsZQoKClxiZWdpbnthYnN0cmFjdH0KICAkaWYoYWJzdHJhY3QpJAogICRhYnN0cmFjdCQKICAkZWxzZSQKICBBZGQgeW91ciBhYnN0cmFjdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHlvdXIgbWFya2Rvd24gZmlsZSBsaWtlIHRoaXMgCiAgXGJlZ2lue3ZlcmJhdGltfQogIC0tLSAKICB0aXRsZTogIllvdXIgVGl0bGUiIAogIGFic3RyYWN0OiAieW91ciBhYnN0cmFjdCBoZXJlIgogIGF1dGhvcnM6CiAgLSBuYW1lOiBMZW9uYXJkbyBWLiBDYXN0b3JpbmEKICAgIGFmZmlsaWF0aW9uOiBTY2hvb2wgb2YgSW5mb3JtYXRpY3MKICAgIGluc3RpdHV0aW9uOiBVbml2ZXJzaXR5IG9mIEVkaW5idXJnaAogICAgZW1haWw6IGp1c3RhbmVtYWlsQGRvbWFpbi5leHQKICAgIGFkZHJlc3M6IEVkaW5idXJnaAogIC0gbmFtZTogQ29hdXRob3IKICAgIGFmZmlsaWF0aW9uOiBBZmZpbGlhdGlvbgogICAgaW5zdGl0dXRpb246IEluc3RpdHV0aW9uCiAgICBlbWFpbDogY29hdXRob3JAZXhhbXBsZS5jb20KICAgIGFkZHJlc3M6IEFkZHJlc3MKICAtLS0KICBcZW5ke3ZlcmJhdGltfQogIFRoaXMgaXMgY2FsbGVkIFlBTUwgZnJvbnRtYXR0ZXIuIElmIHlvdSBzZXQgeW91ciBhYnN0cmFjdCBjb3JyZWN0bHkgeW91IHNob3VsZCBub3Qgc2VlIHRoaXMgbWVzc2FnZS4KICAkZW5kaWYkClxlbmR7YWJzdHJhY3R9CgoKJGJvZHkkCgolJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUKCgpcZW5ke2RvY3VtZW50fQo="),e=>e.charCodeAt(0)),pa=Object.freeze(Object.defineProperty({__proto__:null,default:ha},Symbol.toStringTag,{value:"Module"})),Pl=(e,l)=>[e,Object.entries(l).map(([t,n])=>[t.substring(e.length+3),n.default])],Dl=[Pl("lua",Object.assign({"../lua/citefilter.lua":na,"../lua/markdown+hugo.lua":ia,"../lua/markdown.lua":oa,"../lua/math_block.lua":ra,"../lua/pdf.lua":ga,"../lua/polyfill.lua":ba,"../lua/url.lua":ua})),Pl("textemplate",Object.assign({"../textemplate/dissertation.tex":Ia,"../textemplate/neurips.sty":Wa,"../textemplate/neurips.tex":pa}))];class Xa extends ue.Plugin{constructor(l,t){super(l,t),this.lang=Cn.current,this.saveSettings=ue.debounce(this.saveSettings.bind(this),1e3,!0)}async onload(){await this.releaseResources(),await this.loadSettings();const{lang:l}=this;this.addSettingTab(new ta(this)),this.addCommand({id:"obsidian-enhancing-export:export",name:l.exportToOo,icon:"document",callback:()=>{const t=this.app.workspace.getActiveFile();t?Ut.show(this,t):new ue.Notice(l.pleaseOpenFile,2e3)}}),this.addCommand({id:"obsidian-enhancing-export:export-with-previous",name:l.exportWithPrevious,icon:"document",callback:async()=>{const t=this.app.workspace.getActiveFile();if(t){if(this.settings.lastExportType&&this.settings.lastExportDirectory){const n=this.settings.items.find(c=>c.name===this.settings.lastExportType);if(n){await Yn(this,t,Ze(this.settings.lastExportDirectory),void 0,n);return}}Ut.show(this,t)}else new ue.Notice(l.pleaseOpenFile,2e3)}}),this.registerEvent(this.app.workspace.on("file-menu",(t,n)=>{n instanceof ue.TFile&&t.addItem(c=>{c.setTitle(l.exportToOo).setIcon("document").onClick(()=>{Ut.show(this,n)})}).addSeparator()}))}async resetSettings(){this.settings={...JSON.parse(JSON.stringify(Me)),lastExportDirectory:this.settings.lastExportDirectory},await this.saveSettings()}async loadSettings(){const l=Object.assign({},Me,await this.loadData());l.items.forEach(t=>{Object.assign(t,Object.assign({},Me.items.find(n=>n.name===t.name)??{},t))});for(const t of Me.items)l.items.every(n=>n.name!==t.name)&&l.items.push(t);this.settings=l}async saveSettings(){console.log("[obsidian-enhancing-export] saveSettings",this.settings);const l=JSON.parse(JSON.stringify(this.settings));if(l.items.forEach(t=>{const n=Me.items.find(c=>c.name===t.name);n&&Object.keys(t).forEach(c=>{c!=="name"&&JSON.stringify(t[c])===JSON.stringify(n[c])&&delete t[c]})}),l.env)for(const t of Object.keys(l.env)){const n=l.env[t];if(JSON.stringify(n)===JSON.stringify(_e[t])){delete l.env[t];continue}const c=Ze(_e,t);for(const[i,o]of Object.entries(n))o===c[i]&&delete n[i];Object.keys(n).length===0&&delete l.env[t]}await this.saveData(l)}async releaseResources(){const{adapter:l}=this.app.vault;for(const[t,n]of Dl){const c=ce.join(this.manifest.dir,t);await l.mkdir(c);for(const[i,o]of n){const s=ce.join(c,i);await l.writeBinary(s,o)}}Dl.length=0}}exports.default=Xa;
+
+/* nosourcemap */
\ No newline at end of file
diff --git a/.obsidian/plugins/obsidian-enhancing-export/manifest.json b/.obsidian/plugins/obsidian-enhancing-export/manifest.json
new file mode 100644
index 0000000..9bf9af1
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/manifest.json
@@ -0,0 +1,10 @@
+{
+ "id": "obsidian-enhancing-export",
+ "name": "Enhancing Export",
+ "version": "1.10.11",
+ "minAppVersion": "1.6.3",
+ "description": "This is a enhancing export plugin for Obsidian. It allows to export to formats like Html, DOCX, ePub and PDF or Markdown(Hugo) etc.",
+ "author": "YISH",
+ "authorUrl": "https://github.com/mokeyish",
+ "isDesktopOnly": true
+}
\ No newline at end of file
diff --git a/.obsidian/plugins/obsidian-enhancing-export/styles.css b/.obsidian/plugins/obsidian-enhancing-export/styles.css
new file mode 100644
index 0000000..ff46f32
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/styles.css
@@ -0,0 +1 @@
+.setting-item.ex-setting-item{border-top:unset;padding-top:0}*[hidden]{display:none}
diff --git a/.obsidian/plugins/obsidian-enhancing-export/textemplate/dissertation.tex b/.obsidian/plugins/obsidian-enhancing-export/textemplate/dissertation.tex
new file mode 100644
index 0000000..1ade873
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/textemplate/dissertation.tex
@@ -0,0 +1,1210 @@
+%%
+% Copyright (c) 2017 - 2023, Pascal Wagler;
+% Copyright (c) 2014 - 2023, John MacFarlane
+%
+% All rights reserved.
+%
+% Redistribution and use in source and binary forms, with or without
+% modification, are permitted provided that the following conditions
+% are met:
+%
+% - Redistributions of source code must retain the above copyright
+% notice, this list of conditions and the following disclaimer.
+%
+% - Redistributions in binary form must reproduce the above copyright
+% notice, this list of conditions and the following disclaimer in the
+% documentation and/or other materials provided with the distribution.
+%
+% - Neither the name of John MacFarlane nor the names of other
+% contributors may be used to endorse or promote products derived
+% from this software without specific prior written permission.
+%
+% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+% "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+% FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+% COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+% INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+% BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+% LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+% ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+% POSSIBILITY OF SUCH DAMAGE.
+%%
+
+%%
+% This is the Eisvogel pandoc LaTeX template.
+%
+% For usage information and examples visit the official GitHub page:
+% https://github.com/Wandmalfarbe/pandoc-latex-template
+%%
+
+% Options for packages loaded elsewhere
+\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref}
+\PassOptionsToPackage{hyphens}{url}
+\PassOptionsToPackage{dvipsnames,svgnames,x11names,table}{xcolor}
+$if(CJKmainfont)$
+\PassOptionsToPackage{space}{xeCJK}
+\usepackage{datetime}
+
+$endif$
+%
+\documentclass[
+$if(fontsize)$
+ $fontsize$,
+$endif$
+$if(papersize)$
+ $papersize$paper,
+$else$
+ paper=a4,
+$endif$
+$if(beamer)$
+ ignorenonframetext,
+$if(handout)$
+ handout,
+$endif$
+$if(aspectratio)$
+ aspectratio=$aspectratio$,
+$endif$
+$endif$
+$for(classoption)$
+ $classoption$$sep$,
+$endfor$
+ ,captions=tableheading
+]{$if(beamer)$$documentclass$$else$$if(book)$scrbook$else$scrartcl$endif$$endif$}
+$if(beamer)$
+$if(background-image)$
+\usebackgroundtemplate{%
+ \includegraphics[width=\paperwidth]{$background-image$}%
+}
+% In beamer background-image does not work well when other images are used, so this is the workaround
+\pgfdeclareimage[width=\paperwidth,height=\paperheight]{background}{$background-image$}
+\usebackgroundtemplate{\pgfuseimage{background}}
+$endif$
+\usepackage{pgfpages}
+\setbeamertemplate{caption}[numbered]
+\setbeamertemplate{caption label separator}{: }
+\setbeamercolor{caption name}{fg=normal text.fg}
+\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$
+$for(beameroption)$
+\setbeameroption{$beameroption$}
+$endfor$
+% Prevent slide breaks in the middle of a paragraph
+\widowpenalties 1 10000
+\raggedbottom
+$if(section-titles)$
+\setbeamertemplate{part page}{
+ \centering
+ \begin{beamercolorbox}[sep=16pt,center]{part title}
+ \usebeamerfont{part title}\insertpart\par
+ \end{beamercolorbox}
+}
+\setbeamertemplate{section page}{
+ \centering
+ \begin{beamercolorbox}[sep=12pt,center]{part title}
+ \usebeamerfont{section title}\insertsection\par
+ \end{beamercolorbox}
+}
+\setbeamertemplate{subsection page}{
+ \centering
+ \begin{beamercolorbox}[sep=8pt,center]{part title}
+ \usebeamerfont{subsection title}\insertsubsection\par
+ \end{beamercolorbox}
+}
+\AtBeginPart{
+ \frame{\partpage}
+}
+\AtBeginSection{
+ \ifbibliography
+ \else
+ \frame{\sectionpage}
+ \fi
+}
+\AtBeginSubsection{
+ \frame{\subsectionpage}
+}
+$endif$
+$endif$
+$if(beamerarticle)$
+\usepackage{beamerarticle} % needs to be loaded first
+$endif$
+\usepackage{amsmath,amssymb}
+$if(linestretch)$
+\usepackage{setspace}
+$else$
+% Use setspace anyway because we change the default line spacing.
+% The spacing is changed early to affect the titlepage and the TOC.
+\usepackage{setspace}
+\setstretch{1.2}
+$endif$
+\usepackage{iftex}
+\ifPDFTeX
+ \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
+ \usepackage[utf8]{inputenc}
+ \usepackage{textcomp} % provide euro and other symbols
+\else % if luatex or xetex
+$if(mathspec)$
+ \ifXeTeX
+ \usepackage{mathspec} % this also loads fontspec
+ \else
+ \usepackage{unicode-math} % this also loads fontspec
+ \fi
+$else$
+ \usepackage{unicode-math} % this also loads fontspec
+$endif$
+ \defaultfontfeatures{Scale=MatchLowercase}$-- must come before Beamer theme
+ \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
+\fi
+$if(fontfamily)$
+$else$
+$-- Set default font before Beamer theme so the theme can override it
+\usepackage{lmodern}
+$endif$
+$-- Set Beamer theme before user font settings so they can override theme
+$if(beamer)$
+$if(theme)$
+\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$}
+$endif$
+$if(colortheme)$
+\usecolortheme{$colortheme$}
+$endif$
+$if(fonttheme)$
+\usefonttheme{$fonttheme$}
+$endif$
+$if(mainfont)$
+\usefonttheme{serif} % use mainfont rather than sansfont for slide text
+$endif$
+$if(innertheme)$
+\useinnertheme{$innertheme$}
+$endif$
+$if(outertheme)$
+\useoutertheme{$outertheme$}
+$endif$
+$endif$
+$-- User font settings (must come after default font and Beamer theme)
+$if(fontfamily)$
+\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
+$endif$
+\ifPDFTeX\else
+ % xetex/luatex font selection
+$if(mainfont)$
+ \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
+$endif$
+$if(sansfont)$
+ \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
+$endif$
+$if(monofont)$
+ \setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$}
+$endif$
+$for(fontfamilies)$
+ \newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$}
+$endfor$
+$if(mathfont)$
+$if(mathspec)$
+ \ifXeTeX
+ \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
+ \else
+ \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
+ \fi
+$else$
+ \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
+$endif$
+$endif$
+$if(CJKmainfont)$
+ \ifXeTeX
+ \usepackage{xeCJK}
+ \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
+ $if(CJKsansfont)$
+ \setCJKsansfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKsansfont$}
+ $endif$
+ $if(CJKmonofont)$
+ \setCJKmonofont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmonofont$}
+ $endif$
+ \fi
+$endif$
+$if(luatexjapresetoptions)$
+ \ifLuaTeX
+ \usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
+ \fi
+$endif$
+$if(CJKmainfont)$
+ \ifLuaTeX
+ \usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
+ \setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
+ \fi
+$endif$
+\fi
+$if(zero-width-non-joiner)$
+%% Support for zero-width non-joiner characters.
+\makeatletter
+\def\zerowidthnonjoiner{%
+ % Prevent ligatures and adjust kerning, but still support hyphenating.
+ \texorpdfstring{%
+ \TextOrMath{\nobreak\discretionary{-}{}{\kern.03em}%
+ \ifvmode\else\nobreak\hskip\z@skip\fi}{}%
+ }{}%
+}
+\makeatother
+\ifPDFTeX
+ \DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner}
+\else
+ \catcode`^^^^200c=\active
+ \protected\def ^^^^200c{\zerowidthnonjoiner}
+\fi
+%% End of ZWNJ support
+$endif$
+% Use upquote if available, for straight quotes in verbatim environments
+\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
+\IfFileExists{microtype.sty}{% use microtype if available
+ \usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
+ \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
+}{}
+$if(indent)$
+$else$
+
+\usepackage{pgfpages}
+\usepackage[export]{adjustbox}
+\usepackage{graphicx}
+\usepackage{ragged2e}
+\makeatletter
+\@ifundefined{KOMAClassName}{% if non-KOMA class
+ \IfFileExists{parskip.sty}{%
+ \usepackage{parskip}
+ }{% else
+ \setlength{\parindent}{0pt}
+ \setlength{\parskip}{6pt plus 2pt minus 1pt}}
+}{% if KOMA class
+ \KOMAoptions{parskip=half}}
+\makeatother
+$endif$
+$if(verbatim-in-note)$
+\usepackage{fancyvrb}
+$endif$
+\usepackage{xcolor}
+\definecolor{default-linkcolor}{HTML}{A50000}
+\definecolor{default-filecolor}{HTML}{A50000}
+\definecolor{default-citecolor}{HTML}{4077C0}
+\definecolor{default-urlcolor}{HTML}{4077C0}
+$if(footnotes-pretty)$
+% load footmisc in order to customize footnotes (footmisc has to be loaded before hyperref, cf. https://tex.stackexchange.com/a/169124/144087)
+\usepackage[hang,flushmargin,bottom,multiple]{footmisc}
+\setlength{\footnotemargin}{0.8em} % set space between footnote nr and text
+\setlength{\footnotesep}{\baselineskip} % set space between multiple footnotes
+\setlength{\skip\footins}{0.3cm} % set space between page content and footnote
+\setlength{\footskip}{0.9cm} % set space between footnote and page bottom
+$endif$
+$if(geometry)$
+$if(beamer)$
+\geometry{$for(geometry)$$geometry$$sep$,$endfor$}
+$else$
+\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
+$endif$
+$else$
+$if(beamer)$
+$else$
+\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering,$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
+$endif$
+$endif$
+$if(titlepage-logo)$
+\usepackage[export]{adjustbox}
+\usepackage{graphicx}
+$endif$
+$if(beamer)$
+\newif\ifbibliography
+$endif$
+$if(listings)$
+\usepackage{listings}
+\newcommand{\passthrough}[1]{#1}
+\lstset{defaultdialect=[5.3]Lua}
+\lstset{defaultdialect=[x86masm]Assembler}
+$endif$
+$if(listings-no-page-break)$
+\usepackage{etoolbox}
+\BeforeBeginEnvironment{lstlisting}{\par\noindent\begin{minipage}{\linewidth}}
+\AfterEndEnvironment{lstlisting}{\end{minipage}\par\addvspace{\topskip}}
+$endif$
+$if(lhs)$
+\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
+$endif$
+$if(highlighting-macros)$
+$highlighting-macros$
+
+% Workaround/bugfix from jannick0.
+% See https://github.com/jgm/pandoc/issues/4302#issuecomment-360669013)
+% or https://github.com/Wandmalfarbe/pandoc-latex-template/issues/2
+%
+% Redefine the verbatim environment 'Highlighting' to break long lines (with
+% the help of fvextra). Redefinition is necessary because it is unlikely that
+% pandoc includes fvextra in the default template.
+\usepackage{fvextra}
+\DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,fontsize=$if(code-block-font-size)$$code-block-font-size$$else$\small$endif$,commandchars=\\\{\}}
+
+$endif$
+$if(tables)$
+\usepackage{longtable,booktabs,array}
+$if(multirow)$
+\usepackage{multirow}
+$endif$
+\usepackage{calc} % for calculating minipage widths
+$if(beamer)$
+\usepackage{caption}
+% Make caption package work with longtable
+\makeatletter
+\def\fnum@table{\tablename~\thetable}
+\makeatother
+$else$
+% Correct order of tables after \paragraph or \subparagraph
+\usepackage{etoolbox}
+\makeatletter
+\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
+\makeatother
+% Allow footnotes in longtable head/foot
+\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
+\makesavenoteenv{longtable}
+$endif$
+$endif$
+% add backlinks to footnote references, cf. https://tex.stackexchange.com/questions/302266/make-footnote-clickable-both-ways
+$if(footnotes-disable-backlinks)$
+$else$
+\usepackage{footnotebackref}
+$endif$
+$if(graphics)$
+\usepackage{graphicx}
+\makeatletter
+\newsavebox\pandoc@box
+\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
+ \sbox\pandoc@box{#1}%
+ \Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
+ \Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
+ \ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
+ \ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
+ \else\usebox{\pandoc@box}%
+ \fi%
+}
+% Set default figure placement to htbp
+% Make use of float-package and set default placement for figures to H.
+% The option H means 'PUT IT HERE' (as opposed to the standard h option which means 'You may put it here if you like').
+\usepackage{float}
+\floatplacement{figure}{$if(float-placement-figure)$$float-placement-figure$$else$H$endif$}
+\makeatother
+$endif$
+$if(svg)$
+\usepackage{svg}
+$endif$
+$if(strikeout)$
+$-- also used for underline
+\ifLuaTeX
+ \usepackage{luacolor}
+ \usepackage[soul]{lua-ul}
+\else
+\usepackage{soul}
+$if(CJKmainfont)$
+ \ifXeTeX
+ % soul's \st doesn't work for CJK:
+ \usepackage{xeCJKfntef}
+ \renewcommand{\st}[1]{\sout{#1}}
+ \fi
+$endif$
+\fi
+$endif$
+\setlength{\emergencystretch}{3em} % prevent overfull lines
+\providecommand{\tightlist}{%
+ \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
+$if(numbersections)$
+\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
+$else$
+\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
+$endif$
+$if(subfigure)$
+\usepackage{subcaption}
+$endif$
+$if(beamer)$
+$else$
+$if(block-headings)$
+% Make \paragraph and \subparagraph free-standing
+\ifx\paragraph\undefined\else
+ \let\oldparagraph\paragraph
+ \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
+\fi
+\ifx\subparagraph\undefined\else
+ \let\oldsubparagraph\subparagraph
+ \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
+\fi
+$endif$
+$endif$
+$if(pagestyle)$
+\pagestyle{$pagestyle$}
+$endif$
+$if(csl-refs)$
+% definitions for citeproc citations
+\NewDocumentCommand\citeproctext{}{}
+\NewDocumentCommand\citeproc{mm}{%
+ \begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
+\makeatletter
+ % allow citations to break across lines
+ \let\@cite@ofmt\@firstofone
+ % avoid brackets around text for \cite:
+ \def\@biblabel#1{}
+ \def\@cite#1#2{{#1\if@tempswa , #2\fi}}
+\makeatother
+\newlength{\cslhangindent}
+\setlength{\cslhangindent}{1.5em}
+\newlength{\csllabelwidth}
+\setlength{\csllabelwidth}{3em}
+\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
+ {\begin{list}{}{%
+ \setlength{\itemindent}{0pt}
+ \setlength{\leftmargin}{0pt}
+ \setlength{\parsep}{0pt}
+ % turn on hanging indent if param 1 is 1
+ \ifodd #1
+ \setlength{\leftmargin}{\cslhangindent}
+ \setlength{\itemindent}{-1\cslhangindent}
+ \fi
+ % set entry spacing
+ \setlength{\itemsep}{#2\baselineskip}}}
+ {\end{list}}
+\usepackage{calc}
+\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
+\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
+\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
+\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
+$endif$
+$if(lang)$
+\ifLuaTeX
+\usepackage[bidi=basic]{babel}
+\else
+\usepackage[bidi=default]{babel}
+\fi
+$if(babel-lang)$
+\babelprovide[main,import]{$babel-lang$}
+$if(mainfont)$
+\ifPDFTeX
+\else
+\babelfont{rm}[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
+\fi
+$endif$
+$endif$
+$for(babel-otherlangs)$
+\babelprovide[import]{$babel-otherlangs$}
+$endfor$
+$for(babelfonts/pairs)$
+\babelfont[$babelfonts.key$]{rm}{$babelfonts.value$}
+$endfor$
+% get rid of language-specific shorthands (see #6817):
+\let\LanguageShortHands\languageshorthands
+\def\languageshorthands#1{}
+$endif$
+$for(header-includes)$
+$header-includes$
+$endfor$
+\ifLuaTeX
+ \usepackage{selnolig} % disable illegal ligatures
+\fi
+$if(dir)$
+\ifPDFTeX
+ \TeXXeTstate=1
+ \newcommand{\RL}[1]{\beginR #1\endR}
+ \newcommand{\LR}[1]{\beginL #1\endL}
+ \newenvironment{RTL}{\beginR}{\endR}
+ \newenvironment{LTR}{\beginL}{\endL}
+\fi
+$endif$
+$if(natbib)$
+\usepackage[$natbiboptions$]{natbib}
+\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
+$endif$
+$if(biblatex)$
+\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
+$for(bibliography)$
+\addbibresource{$bibliography$}
+$endfor$
+$endif$
+$if(nocite-ids)$
+\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
+$endif$
+$if(csquotes)$
+\usepackage{csquotes}
+$endif$
+\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
+\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
+\urlstyle{$if(urlstyle)$$urlstyle$$else$same$endif$}
+$if(links-as-notes)$
+% Make links footnotes instead of hotlinks:
+\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
+$endif$
+$if(verbatim-in-note)$
+\VerbatimFootnotes % allow verbatim text in footnotes
+$endif$
+\hypersetup{
+$if(title-meta)$
+ pdftitle={$title-meta$},
+$endif$
+$if(author-meta)$
+ pdfauthor={$author-meta$},
+$endif$
+$if(lang)$
+ pdflang={$lang$},
+$endif$
+$if(subject)$
+ pdfsubject={$subject$},
+$endif$
+$if(keywords)$
+ pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
+$endif$
+$if(colorlinks)$
+ colorlinks=true,
+ linkcolor={$if(linkcolor)$$linkcolor$$else$default-linkcolor$endif$},
+ filecolor={$if(filecolor)$$filecolor$$else$default-filecolor$endif$},
+ citecolor={$if(citecolor)$$citecolor$$else$default-citecolor$endif$},
+ urlcolor={$if(urlcolor)$$urlcolor$$else$default-urlcolor$endif$},
+$else$
+ hidelinks,
+$endif$
+ breaklinks=true,
+ pdfcreator={LaTeX via pandoc with the Eisvogel template}}
+$if(title)$
+\title{$if(title)$$title$$else$Set up Title in Frontmatter (see abstract)$endif$}
+$endif$
+$if(subtitle)$
+$if(beamer)$
+$else$
+\usepackage{etoolbox}
+\makeatletter
+\providecommand{\subtitle}[1]{% add subtitle to \maketitle
+ \apptocmd{\@title}{\par {\large #1 \par}}{}{}
+}
+\makeatother
+$endif$
+\subtitle{$subtitle$}
+$endif$
+\author{$for(author)$$author$$sep$ \and $endfor$}
+$if(date)$
+ \date{$date$}
+$else$
+ \date{\today}
+$endif$
+
+$if(beamer)$
+$if(institute)$
+\institute{$for(institute)$$institute$$sep$ \and $endfor$}
+$endif$
+$if(titlegraphic)$
+\titlegraphic{\includegraphics{$titlegraphic$}}
+$endif$
+$if(logo)$
+\logo{\includegraphics{$logo$}}
+$endif$
+$endif$
+
+
+
+%%
+%% added
+%%
+
+$if(page-background)$
+\usepackage[pages=all]{background}
+$endif$
+
+%
+% for the background color of the title page
+%
+$if(notitlepage)$
+
+$else$
+\usepackage{pagecolor}
+\usepackage{afterpage}
+$if(titlepage-background)$
+\usepackage{tikz}
+$endif$
+$if(geometry)$
+$else$
+\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering]{geometry}
+$endif$
+$endif$
+
+%
+% break urls
+%
+\PassOptionsToPackage{hyphens}{url}
+
+%
+% When using babel or polyglossia with biblatex, loading csquotes is recommended
+% to ensure that quoted texts are typeset according to the rules of your main language.
+%
+\usepackage{csquotes}
+
+%
+% captions
+%
+\definecolor{caption-color}{HTML}{777777}
+$if(beamer)$
+$else$
+\usepackage[font={stretch=1.2}, textfont={color=caption-color}, position=top, skip=4mm, labelfont=bf, singlelinecheck=false, justification=$if(caption-justification)$$caption-justification$$else$justified$endif$]{caption}
+\setcapindent{0em}
+$endif$
+
+%
+% blockquote
+%
+\definecolor{blockquote-border}{RGB}{221,221,221}
+\definecolor{blockquote-text}{RGB}{119,119,119}
+\usepackage{mdframed}
+\newmdenv[rightline=false,bottomline=false,topline=false,linewidth=3pt,linecolor=blockquote-border,skipabove=\parskip]{customblockquote}
+\renewenvironment{quote}{\begin{customblockquote}\list{}{\rightmargin=0em\leftmargin=0em}%
+\item\relax\color{blockquote-text}\ignorespaces}{\unskip\unskip\endlist\end{customblockquote}}
+
+%
+% Source Sans Pro as the default font family
+% Source Code Pro for monospace text
+%
+% 'default' option sets the default
+% font family to Source Sans Pro, not \sfdefault.
+%
+\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
+ $if(fontfamily)$
+ $else$
+ \usepackage[default]{sourcesanspro}
+ \usepackage{sourcecodepro}
+ $endif$
+\else % if not pdftex
+ $if(mainfont)$
+ $else$
+ \usepackage[default]{sourcesanspro}
+ \usepackage{sourcecodepro}
+
+ % XeLaTeX specific adjustments for straight quotes: https://tex.stackexchange.com/a/354887
+ % This issue is already fixed (see https://github.com/silkeh/latex-sourcecodepro/pull/5) but the
+ % fix is still unreleased.
+ % TODO: Remove this workaround when the new version of sourcecodepro is released on CTAN.
+ \ifxetex
+ \makeatletter
+ \defaultfontfeatures[\ttfamily]
+ { Numbers = \sourcecodepro@figurestyle,
+ Scale = \SourceCodePro@scale,
+ Extension = .otf }
+ \setmonofont
+ [ UprightFont = *-\sourcecodepro@regstyle,
+ ItalicFont = *-\sourcecodepro@regstyle It,
+ BoldFont = *-\sourcecodepro@boldstyle,
+ BoldItalicFont = *-\sourcecodepro@boldstyle It ]
+ {SourceCodePro}
+ \makeatother
+ \fi
+ $endif$
+\fi
+
+%
+% heading color
+%
+\definecolor{heading-color}{RGB}{40,40,40}
+$if(beamer)$
+$else$
+\addtokomafont{section}{\color{heading-color}}
+$endif$
+% When using the classes report, scrreprt, book,
+% scrbook or memoir, uncomment the following line.
+%\addtokomafont{chapter}{\color{heading-color}}
+
+%
+% variables for title, author and date
+%
+$if(beamer)$
+$else$
+\usepackage{titling}
+\title{$title$}
+\author{$for(author)$$author$$sep$, $endfor$}
+\date{$date$}
+$endif$
+
+%
+% tables
+%
+$if(tables)$
+
+\definecolor{table-row-color}{HTML}{F5F5F5}
+\definecolor{table-rule-color}{HTML}{999999}
+
+%\arrayrulecolor{black!40}
+\arrayrulecolor{table-rule-color} % color of \toprule, \midrule, \bottomrule
+\setlength\heavyrulewidth{0.3ex} % thickness of \toprule, \bottomrule
+\renewcommand{\arraystretch}{1.3} % spacing (padding)
+
+$if(table-use-row-colors)$
+% TODO: This doesn't work anymore. I don't know why.
+% Reset rownum counter so that each table
+% starts with the same row colors.
+% https://tex.stackexchange.com/questions/170637/restarting-rowcolors
+%
+% Unfortunately the colored cells extend beyond the edge of the
+% table because pandoc uses @-expressions (@{}) like so:
+%
+% \begin{longtable}[]{@{}ll@{}}
+% \end{longtable}
+%
+% https://en.wikibooks.org/wiki/LaTeX/Tables#.40-expressions
+\usepackage{etoolbox}
+\AtBeginEnvironment{longtable}{\rowcolors{2}{}{table-row-color!100}}
+\preto{\toprule}{\hiderowcolors}{}{}
+\appto{\endhead}{\showrowcolors}{}{}
+\appto{\endfirsthead}{\showrowcolors}{}{}
+$endif$
+$endif$
+
+%
+% remove paragraph indentation
+%
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{6pt plus 2pt minus 1pt}
+\setlength{\emergencystretch}{3em} % prevent overfull lines
+
+%
+%
+% Listings
+%
+%
+
+$if(listings)$
+
+%
+% general listing colors
+%
+\definecolor{listing-background}{HTML}{F7F7F7}
+\definecolor{listing-rule}{HTML}{B3B2B3}
+\definecolor{listing-numbers}{HTML}{B3B2B3}
+\definecolor{listing-text-color}{HTML}{000000}
+\definecolor{listing-keyword}{HTML}{435489}
+\definecolor{listing-keyword-2}{HTML}{1284CA} % additional keywords
+\definecolor{listing-keyword-3}{HTML}{9137CB} % additional keywords
+\definecolor{listing-identifier}{HTML}{435489}
+\definecolor{listing-string}{HTML}{00999A}
+\definecolor{listing-comment}{HTML}{8E8E8E}
+
+\lstdefinestyle{eisvogel_listing_style}{
+ language = java,
+$if(listings-disable-line-numbers)$
+ xleftmargin = 0.6em,
+ framexleftmargin = 0.4em,
+$else$
+ numbers = left,
+ xleftmargin = 2.7em,
+ framexleftmargin = 2.5em,
+$endif$
+ backgroundcolor = \color{listing-background},
+ basicstyle = \color{listing-text-color}\linespread{1.0}%
+ \lst@ifdisplaystyle%
+ $if(code-block-font-size)$$code-block-font-size$$else$\small$endif$%
+ \fi\ttfamily{},
+ breaklines = true,
+ frame = single,
+ framesep = 0.19em,
+ rulecolor = \color{listing-rule},
+ frameround = ffff,
+ tabsize = 4,
+ numberstyle = \color{listing-numbers},
+ aboveskip = 1.0em,
+ belowskip = 0.1em,
+ abovecaptionskip = 0em,
+ belowcaptionskip = 1.0em,
+ keywordstyle = {\color{listing-keyword}\bfseries},
+ keywordstyle = {[2]\color{listing-keyword-2}\bfseries},
+ keywordstyle = {[3]\color{listing-keyword-3}\bfseries\itshape},
+ sensitive = true,
+ identifierstyle = \color{listing-identifier},
+ commentstyle = \color{listing-comment},
+ stringstyle = \color{listing-string},
+ showstringspaces = false,
+ escapeinside = {/*@}{@*/}, % Allow LaTeX inside these special comments
+ literate =
+ {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
+ {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
+ {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
+ {À}{{\`A}}1 {È}{{\`E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
+ {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
+ {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
+ {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
+ {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
+ {€}{{\EUR}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1
+ {»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1
+ {…}{{\ldots}}1 {≥}{{>=}}1 {≤}{{<=}}1 {„}{{\glqq}}1 {“}{{\grqq}}1
+ {”}{{''}}1
+}
+\lstset{style=eisvogel_listing_style}
+
+%
+% Java (Java SE 12, 2019-06-22)
+%
+\lstdefinelanguage{Java}{
+ morekeywords={
+ % normal keywords (without data types)
+ abstract,assert,break,case,catch,class,continue,default,
+ do,else,enum,exports,extends,final,finally,for,if,implements,
+ import,instanceof,interface,module,native,new,package,private,
+ protected,public,requires,return,static,strictfp,super,switch,
+ synchronized,this,throw,throws,transient,try,volatile,while,
+ % var is an identifier
+ var
+ },
+ morekeywords={[2] % data types
+ % primitive data types
+ boolean,byte,char,double,float,int,long,short,
+ % String
+ String,
+ % primitive wrapper types
+ Boolean,Byte,Character,Double,Float,Integer,Long,Short
+ % number types
+ Number,AtomicInteger,AtomicLong,BigDecimal,BigInteger,DoubleAccumulator,DoubleAdder,LongAccumulator,LongAdder,Short,
+ % other
+ Object,Void,void
+ },
+ morekeywords={[3] % literals
+ % reserved words for literal values
+ null,true,false,
+ },
+ sensitive,
+ morecomment = [l]//,
+ morecomment = [s]{/*}{*/},
+ morecomment = [s]{/**}{*/},
+ morestring = [b]",
+ morestring = [b]',
+}
+
+\lstdefinelanguage{XML}{
+ morestring = [b]",
+ moredelim = [s][\bfseries\color{listing-keyword}]{<}{\ },
+ moredelim = [s][\bfseries\color{listing-keyword}]{</}{>},
+ moredelim = [l][\bfseries\color{listing-keyword}]{/>},
+ moredelim = [l][\bfseries\color{listing-keyword}]{>},
+ morecomment = [s]{<?}{?>},
+ morecomment = [s]{<!--}{-->},
+ commentstyle = \color{listing-comment},
+ stringstyle = \color{listing-string},
+ identifierstyle = \color{listing-identifier}
+}
+$endif$
+
+%
+% header and footer
+%
+$if(beamer)$
+$else$
+$if(disable-header-and-footer)$
+$else$
+\usepackage[headsepline,footsepline]{scrlayer-scrpage}
+
+\newpairofpagestyles{eisvogel-header-footer}{
+ \clearpairofpagestyles
+ \ihead*{$if(header-left)$$header-left$$else$$title$$endif$}
+ \chead*{$if(header-center)$$header-center$$else$$endif$}
+ \ohead*{$if(header-right)$$header-right$$else$$date$$endif$}
+ \ifoot*{$if(footer-left)$$footer-left$$else$$for(author)$$author$$sep$, $endfor$$endif$}
+ \cfoot*{$if(footer-center)$$footer-center$$else$$endif$}
+ \ofoot*{$if(footer-right)$$footer-right$$else$\thepage$endif$}
+ \addtokomafont{pageheadfoot}{\upshape}
+}
+\pagestyle{eisvogel-header-footer}
+
+$if(book)$
+\deftripstyle{ChapterStyle}{}{}{}{}{\pagemark}{}
+\renewcommand*{\chapterpagestyle}{ChapterStyle}
+$endif$
+
+$if(page-background)$
+\backgroundsetup{
+scale=1,
+color=black,
+opacity=$if(page-background-opacity)$$page-background-opacity$$else$0.2$endif$,
+angle=0,
+contents={%
+ \includegraphics[width=\paperwidth,height=\paperheight]{$page-background$}
+ }%
+}
+$endif$
+$endif$
+$endif$
+
+%%
+%% end added
+%%
+\usepackage{pgfpages}
+\usepackage[export]{adjustbox}
+\usepackage{graphicx}
+\usepackage{ragged2e}
+
+
+\begin{document}
+
+%%
+%% begin titlepage
+%%
+$if(beamer)$
+$else$
+$if(notitlepage)$
+$else$
+\begin{titlepage}
+$if(titlepage-background)$
+\newgeometry{top=2cm, right=4cm, bottom=3cm, left=4cm}
+$else$
+$endif$
+$if(titlepage-color)$
+\definecolor{titlepage-color}{HTML}{$titlepage-color$}
+\newpagecolor{titlepage-color}\afterpage{\restorepagecolor}
+$endif$
+$if(titlepage-background)$
+\tikz[remember picture,overlay] \node[inner sep=0pt] at (current page.center){\includegraphics[width=\paperwidth,height=\paperheight]{$titlepage-background$}};
+$endif$
+\newcommand{\colorRule}[3][black]{\textcolor[HTML]{#1}{\rule{#2}{#3}}}
+\begin{flushleft}
+\noindent
+\\[-1em]
+\color[HTML]{$if(titlepage-text-color)$$titlepage-text-color$$else$000000$endif$}
+\makebox[0pt][l]{\colorRule[$if(titlepage-rule-color)$$titlepage-rule-color$$else$FFFFFF$endif$]{1.3\textwidth}{$if(titlepage-rule-height)$$titlepage-rule-height$$else$0$endif$pt}}
+\par
+\noindent
+
+$if(titlepage-background)$
+% The titlepage with a background image has other text spacing and text size
+{
+ \setstretch{2}
+ \vfill
+ \vskip -8em
+ \noindent {\huge \textbf{\textsf{
+ $if(title)$
+ $title$
+ $else$
+ Set up Title in Frontmatter (see Abstract)
+ $endif$
+}}}
+ $if(subtitle)$
+ \vskip 1em
+ {\Large \textsf{$subtitle$}}
+ $endif$
+ \vskip 2em
+ \noindent {\Large \textit{$for(author)$$author$$sep$, $endfor$} \vskip 0.6em \textsf{$date$}}
+ \vfill
+}
+$else$
+{
+ \begin{center}
+ \setstretch{1.4}
+ \vfill
+ \noindent {\huge \textbf{\textsf{
+ $if(title)$
+ $title$
+ $else$
+ Set up Title in Frontmatter (see Abstract)
+ $endif$
+}}}
+ $if(subtitle)$
+ \vskip 1em
+ {\Large \textsf{$subtitle$}}
+ $endif$
+ \vskip 2em
+ \noindent {\Large \textit{$for(author)$$author$$sep$, $endfor$}}
+ \vfill
+ \end{center}
+}
+$endif$
+
+$if(titlepage-logo)$
+\noindent
+\begin{center}
+\includegraphics[width=$if(logo-width)$$logo-width$$else$35mm$endif$]{$titlepage-logo$}
+\end{center}
+$endif$
+$if(text1)$
+\begin{center}
+{\large \textsf{$text1$}}
+\end{center}
+$endif$
+$if(text2)$
+\begin{center}
+{\large \textsf{$text2$}}
+\end{center}
+$endif$
+$if(text3)$
+\begin{center}
+{\large \textsf{$text3$}}
+\end{center}
+$endif$
+$if(text4)$
+\begin{center}
+{\large \textsf{$text4$}}
+\end{center}
+$endif$
+$if(titlepage-background)$
+$else$
+$endif$
+\end{flushleft}
+\end{titlepage}
+\restoregeometry
+\pagenumbering{arabic}
+$endif$
+$endif$
+
+%%
+%% end titlepage
+%%
+
+$if(has-frontmatter)$
+\frontmatter
+\frame{\titlepage}
+% don't generate the default title
+% $else$
+% \maketitle
+\pagenumbering{Roman} % set the numbering style to lowercase letter
+
+\begin{center}
+ {\LARGE \textbf{\textsf{Abstract}}}
+\end{center}
+
+\begin{abstract}
+\begin{justify}
+ $if(abstract)$
+ $abstract$
+ $else$
+ Add your abstract at the beginning of your markdown file like this
+ \begin{verbatim}
+ ---
+ title: "Your Title"
+ abstract: "your abstract here"
+ author: Leonardo V. Castorina, Another 1, Another 2
+ titlepage-logo: /absolute/path/to/logo.pdf
+ acknowledgements: "I would like to thank my dog Data."
+ declaration: "I declare that this thesis was composed by myself."
+ ---
+ \end{verbatim}
+ This is called YAML frontmatter. Make sure to set up a title! If you set your abstract correctly you should not see this message.
+
+ Optionally you can set up \texttt{titlepage-logo} for a logo in the cover page, \texttt{acknowledgements} section, and \texttt{declaration} section.
+
+ $endif$
+\end{justify}
+\end{abstract}
+\pagebreak
+
+
+$if(acknowledgements)$
+\begin{center}
+ {\LARGE \textbf{\textsf{Acknowledgements}}}
+\end{center}
+
+\begin{abstract}
+\begin{justify}
+$acknowledgements$
+\end{justify}
+\end{abstract}
+\pagebreak
+
+$endif$
+
+$if(declaration)$
+\begin{center}
+ {\LARGE \textbf{\textsf{Declaration}}}
+\end{center}
+
+\begin{abstract}
+\begin{justify}
+ $declaration$ \par
+ \vspace{1in}\raggedleft({\em $author$\/})
+\end{justify}
+\end{abstract}
+\pagebreak
+
+
+
+$endif$
+\pagenumbering{arabic} % set the numbering style to lowercase letter
+\setcounter{page}{0} % Set the page counter to 3
+
+
+$if(first-chapter)$
+\setcounter{chapter}{$first-chapter$}
+\addtocounter{chapter}{-1}
+$endif$
+
+$for(include-before)$
+$include-before$
+
+$endfor$
+$if(no-toc)$
+$else$
+\renewcommand*\contentsname{$toc-title$}
+\renewcommand*\contentsname{Table of Contents}
+$endif$
+$if(beamer)$
+\begin{frame}[allowframebreaks]
+$if(toc-title)$
+ \frametitle{$toc-title$}
+$endif$
+ \tableofcontents[hideallsubsections]
+\end{frame}
+\newpage
+$else$
+{
+$if(colorlinks)$
+\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
+$endif$
+\setcounter{tocdepth}{$toc-depth$}
+\tableofcontents
+\newpage
+}
+$endif$
+$endif$
+$if(lof)$
+\listoffigures
+$endif$
+$if(lot)$
+\listoftables
+$endif$
+$if(linestretch)$
+\setstretch{$linestretch$}
+$endif$
+$if(has-frontmatter)$
+\mainmatter
+$endif$
+$body$
+
+$if(has-frontmatter)$
+\backmatter
+$endif$
+$if(natbib)$
+$if(bibliography)$
+$if(biblio-title)$
+$if(has-chapters)$
+\renewcommand\bibname{$biblio-title$}
+$else$
+\renewcommand\refname{$biblio-title$}
+$endif$
+$endif$
+$if(beamer)$
+\begin{frame}[allowframebreaks]{$biblio-title$}
+ \bibliographytrue
+$endif$
+ \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
+$if(beamer)$
+\end{frame}
+$endif$
+
+$endif$
+$endif$
+$if(biblatex)$
+$if(beamer)$
+\begin{frame}[allowframebreaks]{$biblio-title$}
+ \bibliographytrue
+ \printbibliography[heading=none]
+\end{frame}
+$else$
+\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
+$endif$
+
+$endif$
+$for(include-after)$
+$include-after$
+
+$endfor$
+\end{document}
\ No newline at end of file
diff --git a/.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.sty b/.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.sty
new file mode 100644
index 0000000..9f33307
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.sty
@@ -0,0 +1,373 @@
+% partial rewrite of the LaTeX2e package for submissions to the
+% Conference on Neural Information Processing Systems (NeurIPS):
+%
+% - uses more LaTeX conventions
+% - line numbers at submission time replaced with aligned numbers from
+% lineno package
+% - \nipsfinalcopy replaced with [final] package option
+% - automatically loads times package for authors
+% - loads natbib automatically; this can be suppressed with the
+% [nonatbib] package option
+% - adds foot line to first page identifying the conference
+% - adds preprint option for submission to e.g. arXiv
+% - conference acronym modified
+%
+% Roman Garnett (garnett@wustl.edu) and the many authors of
+% nips15submit_e.sty, including MK and drstrip@sandia
+%
+% last revision: March 2023
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{neurips}[2023/03/31 NeurIPS 2023 submission/camera-ready style file]
+
+% declare final option, which creates camera-ready copy
+\newif\if@neuripsfinal\@neuripsfinalfalse
+\DeclareOption{final}{
+ \@neuripsfinaltrue
+}
+
+% declare nonatbib option, which does not load natbib in case of
+% package clash (users can pass options to natbib via
+% \PassOptionsToPackage)
+\newif\if@natbib\@natbibtrue
+\DeclareOption{nonatbib}{
+ \@natbibfalse
+}
+
+% declare preprint option, which creates a preprint version ready for
+% upload to, e.g., arXiv
+\newif\if@preprint\@preprintfalse
+\DeclareOption{preprint}{
+ \@preprinttrue
+}
+
+\ProcessOptions\relax
+
+% determine whether this is an anonymized submission
+\newif\if@submission\@submissiontrue
+\if@neuripsfinal\@submissionfalse\fi
+\if@preprint\@submissionfalse\fi
+
+% fonts
+\renewcommand{\rmdefault}{ptm}
+\renewcommand{\sfdefault}{phv}
+
+% change this every year for notice string at bottom
+\newcommand{\@neuripsordinal}{}
+\newcommand{\@neuripsyear}{\the\year}
+\newcommand{\@neuripslocation}{}
+
+% acknowledgments
+\usepackage{environ}
+\newcommand{\acksection}{\section*{Acknowledgments and Disclosure of Funding}}
+\NewEnviron{ack}{%
+ \acksection
+ \BODY
+}
+
+
+% load natbib unless told otherwise
+\if@natbib
+ \RequirePackage{natbib}
+\fi
+
+% set page geometry
+\usepackage[verbose=true,letterpaper]{geometry}
+\AtBeginDocument{
+ \newgeometry{
+ textheight=9in,
+ textwidth=5.5in,
+ top=1in,
+ headheight=12pt,
+ headsep=25pt,
+ footskip=30pt
+ }
+ \@ifpackageloaded{fullpage}
+ {\PackageWarning{neurips_2023}{fullpage package not allowed! Overwriting formatting.}}
+ {}
+}
+
+\widowpenalty=10000
+\clubpenalty=10000
+\flushbottom
+\sloppy
+
+
+% font sizes with reduced leading
+\renewcommand{\normalsize}{%
+ \@setfontsize\normalsize\@xpt\@xipt
+ \abovedisplayskip 7\p@ \@plus 2\p@ \@minus 5\p@
+ \abovedisplayshortskip \z@ \@plus 3\p@
+ \belowdisplayskip \abovedisplayskip
+ \belowdisplayshortskip 4\p@ \@plus 3\p@ \@minus 3\p@
+}
+\normalsize
+\renewcommand{\small}{%
+ \@setfontsize\small\@ixpt\@xpt
+ \abovedisplayskip 6\p@ \@plus 1.5\p@ \@minus 4\p@
+ \abovedisplayshortskip \z@ \@plus 2\p@
+ \belowdisplayskip \abovedisplayskip
+ \belowdisplayshortskip 3\p@ \@plus 2\p@ \@minus 2\p@
+}
+\renewcommand{\footnotesize}{\@setfontsize\footnotesize\@ixpt\@xpt}
+\renewcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
+\renewcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
+\renewcommand{\large}{\@setfontsize\large\@xiipt{14}}
+\renewcommand{\Large}{\@setfontsize\Large\@xivpt{16}}
+\renewcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{20}}
+\renewcommand{\huge}{\@setfontsize\huge\@xxpt{23}}
+\renewcommand{\Huge}{\@setfontsize\Huge\@xxvpt{28}}
+
+% sections with less space
+\providecommand{\section}{}
+\renewcommand{\section}{%
+ \@startsection{section}{1}{\z@}%
+ {-2.0ex \@plus -0.5ex \@minus -0.2ex}%
+ { 1.5ex \@plus 0.3ex \@minus 0.2ex}%
+ {\large\bf\raggedright}%
+}
+\providecommand{\subsection}{}
+\renewcommand{\subsection}{%
+ \@startsection{subsection}{2}{\z@}%
+ {-1.8ex \@plus -0.5ex \@minus -0.2ex}%
+ { 0.8ex \@plus 0.2ex}%
+ {\normalsize\bf\raggedright}%
+}
+\providecommand{\subsubsection}{}
+\renewcommand{\subsubsection}{%
+ \@startsection{subsubsection}{3}{\z@}%
+ {-1.5ex \@plus -0.5ex \@minus -0.2ex}%
+ { 0.5ex \@plus 0.2ex}%
+ {\normalsize\bf\raggedright}%
+}
+\providecommand{\paragraph}{}
+\renewcommand{\paragraph}{%
+ \@startsection{paragraph}{4}{\z@}%
+ {1.5ex \@plus 0.5ex \@minus 0.2ex}%
+ {-1em}%
+ {\normalsize\bf}%
+}
+\providecommand{\subparagraph}{}
+\renewcommand{\subparagraph}{%
+ \@startsection{subparagraph}{5}{\z@}%
+ {1.5ex \@plus 0.5ex \@minus 0.2ex}%
+ {-1em}%
+ {\normalsize\bf}%
+}
+\providecommand{\subsubsubsection}{}
+\renewcommand{\subsubsubsection}{%
+ \vskip5pt{\noindent\normalsize\rm\raggedright}%
+}
+
+% float placement
+\renewcommand{\topfraction }{0.85}
+\renewcommand{\bottomfraction }{0.4}
+\renewcommand{\textfraction }{0.1}
+\renewcommand{\floatpagefraction}{0.7}
+
+\newlength{\@neuripsabovecaptionskip}\setlength{\@neuripsabovecaptionskip}{7\p@}
+\newlength{\@neuripsbelowcaptionskip}\setlength{\@neuripsbelowcaptionskip}{\z@}
+
+\setlength{\abovecaptionskip}{\@neuripsabovecaptionskip}
+\setlength{\belowcaptionskip}{\@neuripsbelowcaptionskip}
+
+% swap above/belowcaptionskip lengths for tables
+\renewenvironment{table}
+ {\setlength{\abovecaptionskip}{\@neuripsbelowcaptionskip}%
+ \setlength{\belowcaptionskip}{\@neuripsabovecaptionskip}%
+ \@float{table}}
+ {\end@float}
+
+% footnote formatting
+\setlength{\footnotesep }{6.65\p@}
+\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
+\renewcommand{\footnoterule}{\kern-3\p@ \hrule width 12pc \kern 2.6\p@}
+\setcounter{footnote}{0}
+
+% paragraph formatting
+\setlength{\parindent}{\z@}
+\setlength{\parskip }{5.5\p@}
+
+% list formatting
+\setlength{\topsep }{4\p@ \@plus 1\p@ \@minus 2\p@}
+\setlength{\partopsep }{1\p@ \@plus 0.5\p@ \@minus 0.5\p@}
+\setlength{\itemsep }{2\p@ \@plus 1\p@ \@minus 0.5\p@}
+\setlength{\parsep }{2\p@ \@plus 1\p@ \@minus 0.5\p@}
+\setlength{\leftmargin }{3pc}
+\setlength{\leftmargini }{\leftmargin}
+\setlength{\leftmarginii }{2em}
+\setlength{\leftmarginiii}{1.5em}
+\setlength{\leftmarginiv }{1.0em}
+\setlength{\leftmarginv }{0.5em}
+\def\@listi {\leftmargin\leftmargini}
+\def\@listii {\leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep 2\p@ \@plus 1\p@ \@minus 0.5\p@
+ \parsep 1\p@ \@plus 0.5\p@ \@minus 0.5\p@
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \topsep 1\p@ \@plus 0.5\p@ \@minus 0.5\p@
+ \parsep \z@
+ \partopsep 0.5\p@ \@plus 0\p@ \@minus 0.5\p@
+ \itemsep \topsep}
+\def\@listiv {\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep}
+\def\@listv {\leftmargin\leftmarginv
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep}
+\def\@listvi {\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep}
+
+% create title
+\providecommand{\maketitle}{}
+\renewcommand{\maketitle}{%
+ \par
+ \begingroup
+ \renewcommand{\thefootnote}{\fnsymbol{footnote}}
+ % for perfect author name centering
+ \renewcommand{\@makefnmark}{\hbox to \z@{$^{\@thefnmark}$\hss}}
+ % The footnote-mark was overlapping the footnote-text,
+ % added the following to fix this problem (MK)
+ \long\def\@makefntext##1{%
+ \parindent 1em\noindent
+ \hbox to 1.8em{\hss $\m@th ^{\@thefnmark}$}##1
+ }
+ \thispagestyle{empty}
+ \@maketitle
+ \@thanks
+ \@notice
+ \endgroup
+ \let\maketitle\relax
+ \let\thanks\relax
+}
+
+% rules for title box at top of first page
+\newcommand{\@toptitlebar}{
+ \hrule height 4\p@
+ \vskip 0.25in
+ \vskip -\parskip%
+}
+\newcommand{\@bottomtitlebar}{
+ \vskip 0.29in
+ \vskip -\parskip
+ \hrule height 1\p@
+ \vskip 0.09in%
+}
+
+% create title (includes both anonymized and non-anonymized versions)
+\providecommand{\@maketitle}{}
+\renewcommand{\@maketitle}{%
+ \vbox{%
+ \hsize\textwidth
+ \linewidth\hsize
+ \vskip 0.1in
+ \@toptitlebar
+ \centering
+ {\LARGE\bf \@title\par}
+ \@bottomtitlebar
+ \if@submission
+ \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}
+ Anonymous Author(s) \\
+ Affiliation \\
+ Address \\
+ \texttt{email} \\
+ \end{tabular}%
+ \else
+ \def\And{%
+ \end{tabular}\hfil\linebreak[0]\hfil%
+ \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
+ }
+ \def\AND{%
+ \end{tabular}\hfil\linebreak[4]\hfil%
+ \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
+ }
+ \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\@author\end{tabular}%
+ \fi
+ \vskip 0.3in \@minus 0.1in
+ }
+}
+
+% add conference notice to bottom of first page
+\newcommand{\ftype@noticebox}{8}
+\newcommand{\@notice}{%
+ % give a bit of extra room back to authors on first page
+ \enlargethispage{2\baselineskip}%
+ \@float{noticebox}[b]%
+ \footnotesize\@noticestring%
+ \end@float%
+}
+
+% abstract styling
+\renewenvironment{abstract}%
+{%
+ \vskip 0.075in%
+ \centerline%
+ {\large\bf Abstract}%
+ \vspace{0.5ex}%
+ \begin{quote}%
+}
+{
+ \par%
+ \end{quote}%
+ \vskip 1ex%
+}
+
+% handle tweaks for camera-ready copy vs. submission copy
+\if@preprint
+ \newcommand{\@noticestring}{%
+ Preprint. Under review.%
+ }
+\else
+ \if@neuripsfinal
+ \newcommand{\@noticestring}{%
+ (\@neuripsyear) \@title
+ }
+ \else
+ \newcommand{\@noticestring}{%
+ (\@neuripsyear) \@title %
+ }
+
+ % hide the acknowledgements
+ \NewEnviron{hide}{}
+ \let\ack\hide
+ \let\endack\endhide
+
+ % line numbers for submission
+ \RequirePackage{lineno}
+ \linenumbers
+
+ % fix incompatibilities between lineno and amsmath, if required, by
+ % transparently wrapping linenomath environments around amsmath
+ % environments
+ \AtBeginDocument{%
+ \@ifpackageloaded{amsmath}{%
+ \newcommand*\patchAmsMathEnvironmentForLineno[1]{%
+ \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
+ \expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
+ \renewenvironment{#1}%
+ {\linenomath\csname old#1\endcsname}%
+ {\csname oldend#1\endcsname\endlinenomath}%
+ }%
+ \newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{%
+ \patchAmsMathEnvironmentForLineno{#1}%
+ \patchAmsMathEnvironmentForLineno{#1*}%
+ }%
+ \patchBothAmsMathEnvironmentsForLineno{equation}%
+ \patchBothAmsMathEnvironmentsForLineno{align}%
+ \patchBothAmsMathEnvironmentsForLineno{flalign}%
+ \patchBothAmsMathEnvironmentsForLineno{alignat}%
+ \patchBothAmsMathEnvironmentsForLineno{gather}%
+ \patchBothAmsMathEnvironmentsForLineno{multline}%
+ }
+ {}
+ }
+ \fi
+\fi
+
+
+\endinput
diff --git a/.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.tex b/.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.tex
new file mode 100644
index 0000000..46fa7e7
--- /dev/null
+++ b/.obsidian/plugins/obsidian-enhancing-export/textemplate/neurips.tex
@@ -0,0 +1,187 @@
+% This template was tested with Pandoc 3.4 and pandoc-crossref v0.3.18.0. It should be backwards compatible with older version of pandoc..
+\documentclass{article}
+
+
+% if you need to pass options to natbib, use, e.g.:
+% \PassOptionsToPackage{numbers, compress}{natbib}
+% before loading neurips_2023
+
+
+% ready for submission
+\usepackage[final,nonatbib]{neurips}
+
+
+% to compile a preprint version, e.g., for submission to arXiv, add add the
+% [preprint] option:
+% \usepackage[preprint]{neurips_2023}
+
+
+% to compile a camera-ready version, add the [final] option, e.g.:
+% \usepackage[final]{neurips_2023}
+
+
+% to avoid loading the natbib package, add option nonatbib:
+% \usepackage[nonatbib]{neurips_2023}
+
+
+\usepackage[utf8]{inputenc} % allow utf-8 input
+\usepackage[T1]{fontenc} % use 8-bit T1 fonts
+\usepackage{hyperref} % hyperlinks
+\usepackage{url} % simple URL typesetting
+\usepackage{booktabs} % professional-quality tables
+\usepackage{amsfonts} % blackboard math symbols
+\usepackage{nicefrac} % compact symbols for 1/2, etc.
+\usepackage{microtype} % microtypography
+\usepackage{xcolor} % colors
+\usepackage{graphicx}
+\usepackage{longtable} % Add support for Pandoc's longtable if needed
+\usepackage{array} % For table alignment improvements
+\usepackage{amsmath}
+\usepackage{textcomp}
+\setlength{\LTcapwidth}{\textwidth} % To make captions fit within page width
+
+\makeatletter
+\newsavebox\pandoc@box
+\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
+ \sbox\pandoc@box{#1}%
+ \Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
+ \Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
+ \ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
+ \ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
+ \else\usebox{\pandoc@box}%
+ \fi%
+}
+\makeatother
+\makeatletter
+\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
+\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
+\makeatother
+% Scale images if necessary, so that they will not overflow the page
+% margins by default, and it is still possible to overwrite the defaults
+% using explicit options in \includegraphics[width, height, ...]{}
+\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
+% Set default figure placement to htbp
+\makeatletter
+\def\fps@figure{htbp}
+\makeatother
+
+$if(csl-refs)$
+% definitions for citeproc citations
+\NewDocumentCommand\citeproctext{}{}
+\NewDocumentCommand\citeproc{mm}{%
+\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
+\makeatletter
+% allow citations to break across lines
+\let\@cite@ofmt\@firstofone
+% avoid brackets around text for \cite:
+\def\@biblabel#1{}
+\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
+\makeatother
+\newlength{\cslhangindent}
+\setlength{\cslhangindent}{1.5em}
+\newlength{\csllabelwidth}
+\setlength{\csllabelwidth}{3em}
+\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
+{\begin{list}{}{%
+ \setlength{\itemindent}{0pt}
+ \setlength{\leftmargin}{0pt}
+ \setlength{\parsep}{0pt}
+ % turn on hanging indent if param 1 is 1
+ \ifodd #1
+ \setlength{\leftmargin}{\cslhangindent}
+ \setlength{\itemindent}{-1\cslhangindent}
+ \fi
+ % set entry spacing
+ \setlength{\itemsep}{#2\baselineskip}}}
+{\end{list}}
+\usepackage{calc}
+\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
+\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
+\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
+\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
+$endif$
+\providecommand{\tightlist}{%
+ \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
+\title{$title$}
+
+
+% Iterate through the authors except last to add \And.
+
+\author{%
+$for(authors/allbutlast)$
+ $authors.name$\\$authors.affiliation$\\$authors.institution$\\$authors.email$\\$authors.address$ \And
+$endfor$
+$for(authors/last)$
+ $authors.name$\\$authors.affiliation$\\$authors.institution$\\$authors.email$\\$authors.address$
+$endfor$
+}
+
+% \author{%
+% David S.~Hippocampus \\
+% Department of Computer Science\\
+% Cranberry-Lemon University\\
+% Pittsburgh, PA 15213 \\
+% \texttt{hippo@cs.cranberry-lemon.edu} \\
+% % examples of more authors
+% % \And
+% % Coauthor \\
+% % Affiliation \\
+% % Address \\
+% % \texttt{email} \\
+% % \AND
+% % Coauthor \\
+% % Affiliation \\
+% % Address \\
+% % \texttt{email} \\
+% % \And
+% % Coauthor \\
+% % Affiliation \\
+% % Address \\
+% % \texttt{email} \\
+% % \And
+% % Coauthor \\
+% % Affiliation \\
+% % Address \\
+% % \texttt{email} \\
+% }
+
+
+\begin{document}
+
+
+\maketitle
+
+
+\begin{abstract}
+ $if(abstract)$
+ $abstract$
+ $else$
+ Add your abstract at the beginning of your markdown file like this
+ \begin{verbatim}
+ ---
+ title: "Your Title"
+ abstract: "your abstract here"
+ authors:
+ - name: Leonardo V. Castorina
+ affiliation: School of Informatics
+ institution: University of Edinburgh
+ email: justanemail@domain.ext
+ address: Edinburgh
+ - name: Coauthor
+ affiliation: Affiliation
+ institution: Institution
+ email: coauthor@example.com
+ address: Address
+ ---
+ \end{verbatim}
+ This is called YAML frontmatter. If you set your abstract correctly you should not see this message.
+ $endif$
+\end{abstract}
+
+
+$body$
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\end{document}
diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json
index cff3aee..dbb4de5 100644
--- a/.obsidian/workspace.json
+++ b/.obsidian/workspace.json
@@ -11,10 +11,14 @@
"id": "aabb9dcadda95569",
"type": "leaf",
"state": {
- "type": "graph",
- "state": {},
- "icon": "lucide-git-fork",
- "title": "关系图谱"
+ "type": "markdown",
+ "state": {
+ "file": "Help/docs/README.md",
+ "mode": "source",
+ "source": false
+ },
+ "icon": "lucide-file",
+ "title": "README"
}
}
]
@@ -90,6 +94,7 @@
"state": {
"type": "backlink",
"state": {
+ "file": "Help/docs/README.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@@ -99,7 +104,7 @@
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
- "title": "反向链接"
+ "title": "README 的反向链接列表"
}
},
{
@@ -108,11 +113,12 @@
"state": {
"type": "outgoing-link",
"state": {
+ "file": "Help/docs/README.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
- "title": "出链"
+ "title": "README 的出链列表"
}
},
{
@@ -150,12 +156,13 @@
"state": {
"type": "outline",
"state": {
+ "file": "Help/docs/README.md",
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
- "title": "大纲"
+ "title": "README 的大纲"
}
}
]
@@ -179,6 +186,7 @@
},
"active": "aabb9dcadda95569",
"lastOpenFiles": [
+ "README.md",
"Help/docs/README.md",
"Help/docs/Usages/netconfig/netconfig.md",
"Help/docs/about.md"
--
Gitblit v1.8.0